Browse Source

feat: 邀请入群配置迭代

zhengxy 1 year ago
parent
commit
61310b4909
1 changed files with 157 additions and 2 deletions
  1. 157 2
      project/src/components/manage/InviteIntoGroup/createData.vue

+ 157 - 2
project/src/components/manage/InviteIntoGroup/createData.vue

@@ -29,6 +29,35 @@
29 29
       <!-- S 使用员工 - -->
30 30
 
31 31
 
32
+      <!-- S 选择客户 -->
33
+      <div class="regulations">
34
+        <label><em>*</em>选择客户</label>
35
+        <div>
36
+          <div>
37
+            <el-radio v-model="customer_filter" :disabled="!editFlag" :label="0">全部客户</el-radio>
38
+            <el-radio v-model="customer_filter" :disabled="!editFlag" :label="1">筛选客户</el-radio>
39
+          </div>
40
+          <div class="screeningCustomers" v-show="customer_filter == 1">
41
+            <div class="screeningItem">
42
+              <label>快捷筛选:</label>
43
+              <div class="add-days-wrap">
44
+                <span>添加客服</span>
45
+                <el-input
46
+                  v-model.trim="add_time_later"
47
+                  size="mini" placeholder="请输入"
48
+                  maxlength="5" clearable
49
+                  :disabled="!editFlag"
50
+                  @input="onInputAddDaysLater"
51
+                />
52
+                <span>小时后</span>
53
+              </div>
54
+            </div>
55
+          </div>
56
+        </div>
57
+      </div>
58
+      <!-- E 选择客户 -->
59
+
60
+
32 61
 
33 62
       <!-- 选择群聊 -->
34 63
       <div class="regulations">
@@ -98,6 +127,27 @@
98 127
       <!-- E 群管理表格 -->
99 128
 
100 129
 
130
+      <div class="regulations">
131
+        <label><em>*</em>邀请类型</label>
132
+        <div>
133
+          <el-radio v-model="invite_type" :disabled="!editFlag" :label="1">立即邀请</el-radio>
134
+          <el-radio v-model="invite_type" :disabled="!editFlag" :label="2">定时邀请</el-radio>
135
+        </div>
136
+      </div>
137
+      <div class="regulations" v-show="invite_type == 2">
138
+        <label><em>*</em>邀请时间点</label>
139
+        <div class="send-time-item">
140
+          <div class="timeNums-wrap">
141
+            <div class="timeNums" v-for="(item, idx) in invite_time_list" :key="idx">
142
+              <el-time-picker v-model="invite_time_list[idx]" size="mini" placeholder="请选择" value-format="HH:mm" format="HH:mm" :clearable="false" />
143
+              <i v-if="idx !== 0" class="el-icon-error" @click="onClickDelInviteTime(idx)" />
144
+            </div>
145
+          </div>
146
+          <span class="add-btn" @click="onClickAddInviteTime"><i class="el-icon-circle-plus-outline" />新增时间点</span>
147
+        </div>
148
+      </div>
149
+
150
+
101 151
       <div class="button_box">
102 152
         <button class="button" v-if="editFlag" @click="massMsg_set">确定</button>
103 153
       </div>
@@ -108,7 +158,7 @@
108 158
 import selfCustomerservice from '@/components/assembly/screen/customerService.vue'
109 159
 import _lodash from 'lodash'
110 160
 import Sortable from 'sortablejs'
111
-import { getIntegerNumber } from '@/assets/js/common'
161
+import { getIntegerNumber, isJSON } from '@/assets/js/common'
112 162
 import chatGroupOptions from './chatGroupOptions.vue'
113 163
 
114 164
 export default {
@@ -127,6 +177,11 @@ export default {
127 177
         is_limit:0
128 178
       },
129 179
       deleteChart: {},
180
+
181
+      customer_filter: 0, // 筛选
182
+      add_time_later: '', // 快捷筛选
183
+      invite_type: 1, // 邀请类型
184
+      invite_time_list: [''], // 邀请时间点
130 185
     }
131 186
   },
132 187
   created () {
@@ -248,6 +303,19 @@ export default {
248 303
           if (res.rst.users && res.rst.users.length > 0) {
249 304
             this.is_for_all = 0
250 305
           }
306
+
307
+          // 筛选客户
308
+          this.customer_filter = res.rst.customer_filter || 0
309
+          this.add_time_later = res.rst.customer_filter ? res.rst.add_time_later : ''
310
+          // 邀请类型
311
+          this.invite_type = res.rst.invite_type || 1
312
+          // 邀请时间点
313
+          if (res.rst.invite_type == 2 && res.rst.invite_time && isJSON(res.rst.invite_time)) {
314
+            this.invite_time_list =  JSON.parse(res.rst.invite_time)
315
+          } else {
316
+            this.invite_time_list = ['']
317
+          }
318
+
251 319
           //群聊
252 320
           this.main_msg_data.chat_group_config = res.rst.invite_config
253 321
           this.main_msg_data.chat_group_config.forEach(item=>{
@@ -283,6 +351,11 @@ export default {
283 351
         return
284 352
       }
285 353
 
354
+      if (this.customer_filter == 1 && !this.add_time_later) {
355
+        this.$message.warning('请输入快捷筛选-添加客服时间')
356
+        return
357
+      }
358
+
286 359
       if (this.name == '') {
287 360
         this.$message({
288 361
           message: '请输入标题!',
@@ -298,6 +371,15 @@ export default {
298 371
         })
299 372
         return
300 373
       }
374
+
375
+      if (this.invite_type == 2) {
376
+        const isEmpty = this.invite_time_list.some(i => !i)
377
+        if (isEmpty) {
378
+          this.$message.warning('请完善邀请时间点')
379
+          return
380
+        }
381
+      }
382
+
301 383
       this.$loading(this.$loadingConfig)
302 384
       let params = {
303 385
         rule_id: this.rule_id ? this.rule_id : '',
@@ -305,7 +387,12 @@ export default {
305 387
         is_for_all:this.is_for_all,
306 388
         users:this.user_id_list&&this.user_id_list.length>0 ? this.user_id_list.join(',') : '',
307 389
         invite_config:JSON.stringify(this.main_msg_data.chat_group_config),
308
-        join_type:this.main_msg_data.join_type
390
+        join_type:this.main_msg_data.join_type,
391
+
392
+        customer_filter: this.customer_filter,
393
+        add_time_later: this.customer_filter == 1 ? this.add_time_later : '',
394
+        invite_type: this.invite_type,
395
+        invite_time: this.invite_type == 2 ? JSON.stringify(this.invite_time_list) : '',
309 396
       }
310 397
       this.$axios.post(this.URL.BASEURL + this.URL.inviteRule_add, params).then((res) => {
311 398
         var res = res.data
@@ -326,6 +413,19 @@ export default {
326 413
         this.$loading(this.$loadingConfig).close()
327 414
       });
328 415
     },
416
+
417
+    // 监听输入"快捷筛选 小时数"
418
+    onInputAddDaysLater(inputVal) {
419
+      this.add_time_later = getIntegerNumber(inputVal)
420
+    },
421
+    // 监听点击新增时间点
422
+    onClickAddInviteTime() {
423
+      this.invite_time_list.push('')
424
+    },
425
+    // 监听点击删除时间点
426
+    onClickDelInviteTime(idx) {
427
+      this.invite_time_list.splice(idx, 1)
428
+    },
329 429
   }
330 430
 }
331 431
 </script>
@@ -499,4 +599,59 @@ export default {
499 599
     margin-left:10px;
500 600
   }
501 601
 }
602
+
603
+.send-time-item {
604
+  display: flex;
605
+  align-items: flex-end;
606
+  flex-wrap: wrap;
607
+  margin-bottom: 20px;
608
+  &:last-child {
609
+    margin-bottom: 0;
610
+  }
611
+  .el-radio {
612
+    width: auto;
613
+    margin-right: 0;
614
+  }
615
+  .text {
616
+    flex-shrink: 0;
617
+  }
618
+  .el-input {
619
+    margin: 0 6px;
620
+    width: 80px;
621
+    font-size: 13px;
622
+  }
623
+  .timeNums-wrap {
624
+    .timeNums {
625
+      margin-top: 6px;
626
+      &:first-child {
627
+        margin-top: 0;
628
+      }
629
+      .el-date-editor {
630
+        width: 120px;
631
+      }
632
+      position: relative;
633
+      .el-icon-error {
634
+        position: absolute;
635
+        right: 0px;
636
+        top: -4px;
637
+        color: #F56C6C;
638
+        font-size: 14px;
639
+        cursor: pointer;
640
+      }
641
+    }
642
+  }
643
+  .add-btn {
644
+    margin-bottom: 6px;
645
+    display: flex;
646
+    align-items: center;
647
+    font-size: 13px;
648
+    color: #555;
649
+    cursor: pointer;
650
+    .el-icon-circle-plus-outline {
651
+      margin-left: 10px;
652
+      margin-right: 6px;
653
+      font-size: 16px;
654
+    }
655
+  }
656
+}
502 657
 </style>