Bladeren bron

feat: 客服许可 - 批量分配 - 前端页面

zhengxy 2 jaren geleden
bovenliggende
commit
b0b482b2ff

+ 21 - 24
project/src/components/manage/memberComp/batchAssign.vue

@@ -13,7 +13,7 @@
13 13
           <self-input :reset='resetFlag' :hasLabel="false" label_name="成员名称" :inputFlag='true'
14 14
             @inputChange='(val) => { input_keyword = val; userSearch() }' width="270px" style="margin-top:0">
15 15
           </self-input>
16
-          <div class="allMember">全部{{ source == 'chatGroup' ? '群主' : '成员' }}({{ userTotal }}):</div>
16
+          <div class="allMember">全部成员({{ userTotal }}):</div>
17 17
           <div class="memberBoxBig self-scrollbar-3">
18 18
             <template v-for="(item, index) in userList">
19 19
               <div class="memberBox" :key="index + 'userList' + item.department_id">
@@ -48,7 +48,7 @@
48 48
         </div>
49 49
         <div class="line"></div>
50 50
         <div class="propoverItem" style="padding-left:20px">
51
-          <div class="title">已选择的{{ source == 'chatGroup' ? '群主' : '成员' }}</div>
51
+          <div class="title">已选择的成员</div>
52 52
           <div class="choice_result_top">
53 53
             <div class="clear" @click="closeUser(-1)">全部清空</div>
54 54
             <div class="result_num">已选择<span>{{ selectUser && selectUser.length }}</span>人</div>
@@ -75,6 +75,7 @@
75 75
   </div>
76 76
 </template>
77 77
 <script>
78
+import _lodash from 'lodash'
78 79
 import selfInput from '@/components/assembly/screen/input.vue'
79 80
 export default {
80 81
   components: { selfInput },
@@ -100,9 +101,9 @@ export default {
100 101
       type: Boolean,
101 102
       default: false
102 103
     },
103
-    source: {//chatGroup 选择 群主列表
104
-      type: String,
105
-      default: 'channelCode'
104
+    waitForAssignNum: {
105
+      type: Number,
106
+      default: () => 0
106 107
     },
107 108
   },
108 109
   watch: {
@@ -202,18 +203,13 @@ export default {
202 203
       })
203 204
       if (arr.length == 0) {
204 205
         this.$message({
205
-          message: `请选择${this.source == 'chatGroup' ? '群主' : '成员'}`,
206
+          message: `请选择成员`,
206 207
           type: "warning"
207 208
         })
208 209
         return
209 210
       }
210 211
       this.visible = false
211
-      if (this.source == 'channelCode') {
212
-        this.$emit('change', arr, arrName)
213
-      } else {
214
-        this.$emit('change', arr)
215
-      }
216
-
212
+      this.$emit('change', arr)
217 213
     },
218 214
     userSearch () {//模糊搜索
219 215
       let search_user_list = []
@@ -242,18 +238,12 @@ export default {
242 238
     },
243 239
     init (type) {
244 240
       this.loading = true
245
-      let paramsData = {}
246
-      if (this.source == 'channelCode') {
247
-        paramsData = {
248
-          params: {
249
-            status: 1 // 表示只获取激活的客服
250
-          }
241
+      let paramsData = {
242
+        params: {
243
+          status: 1 // 表示只获取激活的客服
251 244
         }
252 245
       }
253 246
       let axios_api = this.URL.userList;
254
-      if (this.source == 'chatGroup') {//群主
255
-        axios_api = this.URL.chatGroup_ownerList
256
-      }
257 247
       this.$axios.get(this.URL.BASEURL + axios_api, paramsData).then((res) => {
258 248
         var res = res.data
259 249
         this.loading = false
@@ -289,8 +279,8 @@ export default {
289 279
       this.$set(this.userList, index, arr)
290 280
     },
291 281
     selectUserEvent (type, main_index, user_index) {
292
-      let selectUser = this.selectUser
293
-      let user_arr = this.userList[main_index];
282
+      let selectUser = _lodash.cloneDeep(this.selectUser)
283
+      let user_arr = _lodash.cloneDeep(this.userList[main_index])
294 284
       if (type == 'all') {//点击部门全选时
295 285
         if (!user_arr.is_select) {
296 286
           selectUser = selectUser.concat(user_arr.user_list)
@@ -312,14 +302,21 @@ export default {
312 302
           selectUser.push(brr)
313 303
         }
314 304
       }
315
-      this.$set(this.userList, main_index, user_arr)
305
+      // this.$set(this.userList, main_index, user_arr)
316 306
       // 去重
317 307
       let tmp = {};
318 308
       selectUser = selectUser.reduce((list, item) => {
319 309
         tmp[item.user_id] ? '' : (tmp[item.user_id] = list.push(item));
320 310
         return list
321 311
       }, []);
312
+
313
+      if (selectUser && (selectUser.length > this.waitForAssignNum)) { // 不能超过“待分配许可人数”
314
+        this.$message.warning(`最多可选${this.waitForAssignNum}名成员`)
315
+        return false
316
+      }
317
+
322 318
       this.selectUser = selectUser
319
+      this.$set(this.userList, main_index, user_arr)
323 320
       this.changeSelect()
324 321
     },
325 322
     changeSelect () {//客服选择发生变化时,部门全选跟着相应的改变

+ 3 - 3
project/src/components/manage/memberManage.vue

@@ -39,7 +39,7 @@
39 39
         </template>
40 40
       </div>
41 41
 
42
-      <batchAssign ref="batchAssign" @change="onChangeBatchAssign" />
42
+      <batchAssign ref="batchAssign" :waitForAssignNum="waitForAssignNum" @change="onChangeBatchAssign" />
43 43
     </div>
44 44
 
45 45
     <div style="display: flex;">
@@ -298,7 +298,7 @@ export default {
298 298
       currentAssignInfo: {}, // 当前需要分配许可的成员信息
299 299
       transferDialogVisible: false, // 控制“转移许可”弹框显示
300 300
       currentTransferInfo: {}, // 当前需要转移许可的成员信息
301
-      assignResultVisible: true, // 控制“批量分配许可结果”弹框显示
301
+      assignResultVisible: false, // 控制“批量分配许可结果”弹框显示
302 302
       currentAssignResult: {}, // 当前分配结果信息
303 303
     }
304 304
   },
@@ -471,7 +471,7 @@ export default {
471 471
           const { data: res = {} } = await this.$axios.get(url, { params })
472 472
           if (res && res.errno == 0) {
473 473
             this.waitForAssignNum = res.rst.count
474
-            this.waitForAssignNum = parseInt(Math.random() * 100) // mock
474
+            this.waitForAssignNum = parseInt(Math.random() * 20) // mock
475 475
             resolve(this.waitForAssignNum)
476 476
           } else if (res.errno != 4002) {
477 477
             this.$message.warning(res.err)