xiuli.gao 2 years ago
parent
commit
8b67782e81

+ 1 - 0
project/src/assets/config/interface_api.js

@@ -57,6 +57,7 @@ var api = {
57 57
   add_tag_group: "/api/tag/addTagGroup",
58 58
   order_tag_group: "/api/tag/updateTagGroupOrder",
59 59
   dele_tag_group: "/api/tag/deleteTagGroup",
60
+  customer_transferCustomer: "/api/customer/transferCustomer",
60 61
 };
61 62
 
62 63
 export { api };

+ 14 - 190
project/src/assets/iconfont/iconfont.css

@@ -1,8 +1,8 @@
1 1
 @font-face {
2
-  font-family: "iconfont"; /* Project id 2897279 */
3
-  src: url('iconfont.woff2?t=1646732990699') format('woff2'),
4
-       url('iconfont.woff?t=1646732990699') format('woff'),
5
-       url('iconfont.ttf?t=1646732990699') format('truetype');
2
+  font-family: "iconfont"; /* Project id 3309691 */
3
+  src: url('iconfont.woff2?t=1649316947886') format('woff2'),
4
+       url('iconfont.woff?t=1649316947886') format('woff'),
5
+       url('iconfont.ttf?t=1649316947886') format('truetype');
6 6
 }
7 7
 
8 8
 .iconfont {
@@ -13,199 +13,23 @@
13 13
   -moz-osx-font-smoothing: grayscale;
14 14
 }
15 15
 
16
-.icon-shujuguanli:before {
17
-  content: "\e670";
16
+.icon-kehuguanli_icon:before {
17
+  content: "\e677";
18 18
 }
19 19
 
20
-.icon-ku:before {
21
-  content: "\e67b";
22
-}
23
-
24
-.icon-toufng:before {
25
-  content: "\e66f";
26
-}
27
-
28
-.icon-shangpinguanli:before {
29
-  content: "\e66b";
30
-}
31
-
32
-.icon-a-1:before {
33
-  content: "\e673";
34
-}
35
-
36
-.icon-a-6:before {
37
-  content: "\e674";
38
-}
39
-
40
-.icon-a-5:before {
41
-  content: "\e66c";
42
-}
43
-
44
-.icon-xitong_icon:before {
45
-  content: "\e66d";
46
-}
47
-
48
-.icon-a-2:before {
49
-  content: "\e671";
50
-}
51
-
52
-.icon-shenhe_icon1:before {
53
-  content: "\e672";
54
-}
55
-
56
-.icon-a-toufang1x:before {
57
-  content: "\e66e";
58
-}
59
-
60
-.icon-nianlingfenbu_icon:before {
61
-  content: "\e669";
62
-}
63
-
64
-.icon-xingbie_icon:before {
65
-  content: "\e66a";
66
-}
67
-
68
-.icon-jiagexuqiu_icon:before {
69
-  content: "\e666";
70
-}
71
-
72
-.icon-pinleixuqiu:before {
73
-  content: "\e667";
74
-}
75
-
76
-.icon-diyufenbu_icon:before {
77
-  content: "\e668";
78
-}
79
-
80
-.icon-xiazai_icon:before {
81
-  content: "\e665";
82
-}
83
-
84
-.icon-baocun_icon:before {
85
-  content: "\e664";
86
-}
87
-
88
-.icon-fuzeren_icon:before {
89
-  content: "\e661";
90
-}
91
-
92
-.icon-changkong_icon:before {
93
-  content: "\e662";
94
-}
95
-
96
-.icon-toushou_icon:before {
97
-  content: "\e663";
98
-}
99
-
100
-.icon-shanchu_icon:before {
101
-  content: "\e660";
102
-}
103
-
104
-.icon-shenhe_icon:before {
105
-  content: "\e65f";
106
-}
107
-
108
-.icon-guanli_icon:before {
109
-  content: "\e65e";
20
+.icon-kehuyunying_icon:before {
21
+  content: "\e678";
110 22
 }
111 23
 
112
-.icon-zanwu_icon:before {
113
-  content: "\e65d";
24
+.icon-shouye_icon:before {
25
+  content: "\e679";
114 26
 }
115 27
 
116
-.icon-sousuo_icon:before {
117
-  content: "\e65c";
28
+.icon-kehushuxing_icon:before {
29
+  content: "\e67a";
118 30
 }
119 31
 
120
-.icon-yuangong_icon:before {
121
-  content: "\e65a";
122
-}
123
-
124
-.icon-a-3:before {
125
-  content: "\e657";
126
-}
127
-
128
-.icon-a-4:before {
129
-  content: "\e658";
130
-}
131
-
132
-.icon-xiaoshoue_icon:before {
133
-  content: "\e655";
134
-}
135
-
136
-.icon-daochu_icon:before {
137
-  content: "\e651";
138
-}
139
-
140
-.icon-zhiboxiaoliang_icon:before {
141
-  content: "\e652";
142
-}
143
-
144
-.icon-zhibo_icon1:before {
145
-  content: "\e653";
146
-}
147
-
148
-.icon-uv_icon:before {
149
-  content: "\e654";
150
-}
151
-
152
-.icon-shichangfenbu_icon:before {
153
-  content: "\e647";
154
-}
155
-
156
-.icon-kaiboshijian_icon:before {
157
-  content: "\e648";
158
-}
159
-
160
-.icon-zhubo_icon:before {
161
-  content: "\e649";
162
-}
163
-
164
-.icon-zhanghaozhubo_icon:before {
165
-  content: "\e64a";
166
-}
167
-
168
-.icon-guankanrenshu_icon:before {
169
-  content: "\e64d";
170
-}
171
-
172
-.icon-tingliushichang_icon:before {
173
-  content: "\e64e";
174
-}
175
-
176
-.icon-xiaoshoushuju_icon:before {
177
-  content: "\e64f";
178
-}
179
-
180
-.icon-zhanghaoyunying_icon:before {
181
-  content: "\e650";
182
-}
183
-
184
-.icon-rili_icon:before {
185
-  content: "\e646";
186
-}
187
-
188
-.icon-down_icon:before {
189
-  content: "\e644";
190
-}
191
-
192
-.icon-up_icon:before {
193
-  content: "\e645";
194
-}
195
-
196
-.icon-left_icon:before {
197
-  content: "\e63f";
198
-}
199
-
200
-.icon-right_icon:before {
201
-  content: "\e63e";
202
-}
203
-
204
-.icon-wenhao_icon:before {
205
-  content: "\e63c";
206
-}
207
-
208
-.icon-quanping_icon:before {
209
-  content: "\e63d";
32
+.icon-shezhiguanli_icon:before {
33
+  content: "\e67b";
210 34
 }
211 35
 

BIN
project/src/assets/iconfont/iconfont.ttf


BIN
project/src/assets/iconfont/iconfont.woff


BIN
project/src/assets/iconfont/iconfont.woff2


+ 2 - 2
project/src/components/Index/index.vue

@@ -8,7 +8,7 @@
8 8
             <div v-for="(item,index) in sideList" :key="index" class="menuMain">
9 9
               <el-submenu :index="'big'+index" v-if="item.is_main == 1 && !item.path" :class="item.viewName == fatherMenu && fatherMenu!='' ? 'nowFatherMenu':''">
10 10
                 <template slot="title">
11
-                  <i :class="['icon',item.icon]"></i>
11
+                  <i :class="['icon','iconfont',item.icon]"></i>
12 12
                   <span>{{item.viewName}}</span>
13 13
                 </template>
14 14
                 <template v-for="(it,ind) in item.small_menu">
@@ -16,7 +16,7 @@
16 16
                 </template>
17 17
               </el-submenu>
18 18
               <el-menu-item :index="item.path" v-if="item.is_main == 1 && item.path">
19
-                <i :class="['icon',item.icon]"></i>
19
+                <i :class="['icon','iconfont',item.icon]"></i>
20 20
                 <span slot="title">{{item.viewName}}</span>
21 21
               </el-menu-item>
22 22
             </div>

+ 111 - 16
project/src/components/customManage/customerTransfer.vue

@@ -2,8 +2,8 @@
2 2
   <div v-loading="loading">
3 3
     <div class="topTagBox flex">
4 4
       <div class="left flex-align-center">
5
-        <div :class="['tagItem',type==1?'tagItem_active':'']" @click="changeType(1);">离职迁移</div>
6
-        <div :class="['tagItem',type==2?'tagItem_active':'']" @click="changeType(2);">在职迁移</div>
5
+        <div :class="['tagItem',type==2?'tagItem_active':'']" @click="changeType(2);">离职迁移</div>
6
+        <div :class="['tagItem',type==1?'tagItem_active':'']" @click="changeType(1);">在职迁移</div>
7 7
       </div>
8 8
       <div class="right">
9 9
         <el-button type="primary" size="mini" @click="goReord"><i class="el-icon-document"></i> 分配记录</el-button>
@@ -46,7 +46,7 @@
46 46
           <!-- <div class="smalLine"></div> -->
47 47
           <!-- <el-button type="primary" plain size="mini"><i class="el-icon-refresh-right"></i> 更新数据</el-button> -->
48 48
         </div>
49
-        <div class="selectCustom">已择{{multipleArr.length}}个客户</div>
49
+        <div class="selectCustom">已择{{selectTotal}}个客户</div>
50 50
       </div>
51 51
       <div class="flex">
52 52
         <el-button type="primary" size="mini" @click="toDistribution">分配</el-button>
@@ -102,6 +102,7 @@
102 102
         <template slot-scope="scope">
103 103
           <span v-if="scope.row.customer_enable==0" style="color:#FF0002">禁用</span>
104 104
           <span v-if="scope.row.customer_enable==1">可用</span>
105
+          <span v-if="scope.row.customer_enable==2">被客服删除</span>
105 106
           <span v-if="scope.row.customer_enable==3" style="color:#00B38A">已流失</span>
106 107
         </template>
107 108
       </el-table-column>
@@ -145,7 +146,7 @@
145 146
 
146 147
     <!-- 分配客户 -->
147 148
     <el-dialog title="分配客户" :visible.sync="distributionUserVisible" width="600px" center>
148
-      <distribution-user :userType='type' @closeToast='distributionUserVisible=false'></distribution-user>
149
+      <distribution-user :userType='type' @closeToast='distributionUserVisible=false' @transferCustomerEvent="transferCustomerEvent"></distribution-user>
149 150
     </el-dialog>
150 151
   </div>
151 152
 </template>
@@ -165,7 +166,7 @@ export default {
165 166
   components: { distributionUser, detial, selfInput, selfCustomerservice, enterpriseTag, datePicker, selfChannel, selfGender, lossBody, screenPay, shieldingUser },
166 167
   data () {
167 168
     return {
168
-      type: 1,
169
+      type: 2,
169 170
       drawerSize: '60%',
170 171
       detialDrawer: false,
171 172
       rowPro: {},//去详情的此条对象
@@ -199,13 +200,14 @@ export default {
199 200
       multipleSelection: {},
200 201
       exclude_multiple_selection: {},
201 202
       multipleArr: [],
203
+      filter_multipleArr: [],
202 204
       isAll: false,//是否选择全部
203
-      distributionUserVisible: false
205
+      distributionUserVisible: false,
206
+      selectTotal: 0
204 207
     }
205 208
   },
206 209
   created () {
207
-    console.log(localStorage.getItem('transter'));
208
-    localStorage.getItem('transter') == 'off' ? this.type = 1 : this.type = 2;
210
+    localStorage.getItem('transter') == 'off' ? this.type = 2 : this.type = 1;
209 211
     this.init(1)
210 212
   },
211 213
   methods: {
@@ -225,13 +227,86 @@ export default {
225 227
       })
226 228
     },
227 229
     goReord () {
228
-      if (this.type == 1) {
230
+      if (this.type == 2) {
229 231
         this.$router.push({ path: '/transferRecord/off' })
230 232
       }
231
-      if (this.type == 2) {
233
+      if (this.type == 1) {
232 234
         this.$router.push({ path: '/transferRecord/on' })
233 235
       }
234 236
     },
237
+    transferCustomerEvent (data) {//分配接口
238
+      this.distributionUserVisible = false
239
+      let external_user_list = []
240
+      let filter_customer_list = []
241
+      if (this.isAll) {//全选
242
+        this.filter_multipleArr.forEach((item) => {
243
+          filter_customer_list.push({
244
+            handover_userid: item.user_id,
245
+            external_userid: item.external_userid
246
+          })
247
+        })
248
+      } else {
249
+        this.multipleArr.forEach((item) => {
250
+          external_user_list.push({
251
+            handover_userid: item.user_id,
252
+            external_userid: item.external_userid
253
+          })
254
+        })
255
+      }
256
+
257
+      this.$loading(this.$loadingConfig);
258
+      this.$axios.post(this.URL.BASEURL + this.URL.customer_transferCustomer, {
259
+        user_id_list: this.user_id_list,
260
+        customer_name: this.input_keyword,
261
+        add_date_start: this.add_date_start,
262
+        add_date_end: this.add_date_end,
263
+        add_way: this.add_way,
264
+        pay_status: this.pay_status,
265
+        pay_num_min: this.pay_num_min,
266
+        pay_num_max: this.pay_num_max,
267
+        tag_type: this.tag_type,
268
+        tag_id_list: this.tag_id_list,
269
+        loss_status: this.loss_status,
270
+
271
+        type: this.type,
272
+        takeover_userid: data.takeover_userid,
273
+        transfer_success_msg: data.transfer_success_msg,
274
+        portrait_inheritance: data.portrait_inheritance,
275
+        external_user_list: external_user_list,
276
+        select_all: this.isAll ? 1 : 0,
277
+        filter_customer_list: filter_customer_list
278
+      }).then((res) => {
279
+        var res = res.data
280
+        this.$loading(this.$loadingConfig).close();
281
+        if (res && res.errno == 0) {
282
+          this.multipleSelection = {};
283
+          this.exclude_multiple_selection = {};
284
+          this.multipleArr = [];
285
+          this.filter_multipleArr = [];
286
+          this.selectTotal = 0;
287
+          this.isAll = false;
288
+          this.$confirm('迁移申请成功!请移步分配纪录查看分配进程', '提示', {
289
+            confirmButtonText: '确定',
290
+            type: 'warning'
291
+          }).then(() => {
292
+
293
+          }).catch(() => {
294
+
295
+          });
296
+        } else if (res.errno != 4002) {
297
+          this.$message({
298
+            message: res.err,
299
+            type: "warning"
300
+          })
301
+        }
302
+      }).catch((err) => {
303
+        this.$message({
304
+          message: '迁移失败,服务器错误!',
305
+          type: "warning"
306
+        })
307
+        this.$loading(this.$loadingConfig).close();
308
+      });
309
+    },
235 310
     resetEvent () {//重置
236 311
       this.resetFlag = !this.resetFlag
237 312
       this.input_keyword = '';
@@ -248,7 +323,7 @@ export default {
248 323
       this.init(1)
249 324
     },
250 325
     changeType (type) {
251
-      if (type == 1) {
326
+      if (type == 2) {
252 327
         localStorage.setItem('transter', 'off')
253 328
       } else {
254 329
         localStorage.setItem('transter', 'on')
@@ -257,10 +332,20 @@ export default {
257 332
       this.multipleSelection = {};
258 333
       this.exclude_multiple_selection = {};
259 334
       this.multipleArr = [];
335
+      this.filter_multipleArr = [];
336
+      this.selectTotal = 0;
260 337
       this.isAll = false;
261 338
       this.resetEvent()
262 339
     },
263 340
     toDistribution () {//去分配
341
+      this.userChange()
342
+      if (this.selectTotal <= 0) {
343
+        this.$message({
344
+          message: '请选择客户!',
345
+          type: "warning"
346
+        })
347
+        return
348
+      }
264 349
       this.distributionUserVisible = true
265 350
     },
266 351
     shieldingUserCancel (type) {
@@ -319,7 +404,7 @@ export default {
319 404
       this.page = page ? page : this.page;
320 405
       this.loading = true
321 406
       let axios_api = this.URL.customerList;
322
-      if (this.type == 1) {//离职(待分配客户)迁移
407
+      if (this.type == 2) {//离职(待分配客户)迁移
323 408
         axios_api = this.URL.unassignedCustomerList
324 409
       }
325 410
       this.$axios.get(this.URL.BASEURL + axios_api, {
@@ -342,7 +427,7 @@ export default {
342 427
         var res = res.data
343 428
         this.loading = false
344 429
         if (res && res.errno == 0) {
345
-          if (this.type == 1) {
430
+          if (this.type == 2) {
346 431
             this.tableData = res.rst.data;
347 432
           } else {
348 433
             this.tableData = res.rst.data.list;
@@ -357,7 +442,7 @@ export default {
357 442
 
358 443
           // 回显选择
359 444
           let page_multiple_data = [];
360
-          if (this.isAll && (!this.multipleSelection[this.page])) {
445
+          if (this.isAll && (this.multipleSelection[this.page] === undefined)) {
361 446
             page_multiple_data = this.tableData
362 447
           } else {
363 448
             let multiple_id = this.multipleSelection[this.page] ? this.multipleSelection[this.page].map((v) => {
@@ -395,7 +480,7 @@ export default {
395 480
           return v.user_id + '-' + v.customer_id
396 481
         }) : []
397 482
         this.tableData.forEach((item) => {
398
-          if (multiple_id.indexOf((item.user_id + '-' + item.customer_id)) != -1) {
483
+          if (multiple_id.indexOf((item.user_id + '-' + item.customer_id)) == -1) {
399 484
             page_multiple_data.push(item)
400 485
           }
401 486
         })
@@ -432,9 +517,19 @@ export default {
432 517
     userChange () {
433 518
       let multipleArr = []
434 519
       for (var i in this.multipleSelection) {
435
-        multipleArr = multipleArr.concat(this.multipleSelection[1] ? this.multipleSelection[1] : [])
520
+        multipleArr = multipleArr.concat(this.multipleSelection[i] ? this.multipleSelection[i] : [])
436 521
       }
437 522
       this.multipleArr = multipleArr;
523
+      if (this.isAll) {//全选
524
+        let filter_multipleArr = []
525
+        for (var i in this.exclude_multiple_selection) {
526
+          filter_multipleArr = filter_multipleArr.concat(this.exclude_multiple_selection[i] ? this.exclude_multiple_selection[i] : [])
527
+        }
528
+        this.filter_multipleArr = filter_multipleArr
529
+        this.selectTotal = Number(this.total) - filter_multipleArr.length
530
+      } else {
531
+        this.selectTotal = this.multipleArr.length
532
+      }
438 533
     },
439 534
   }
440 535
 }

+ 68 - 9
project/src/components/customManage/distributionUser.vue

@@ -12,7 +12,7 @@
12 12
       <el-button type="primary" plain size="mini" @click="$emit('closeToast')">取消</el-button>
13 13
       <el-button type="primary" size="mini" @click="defineEvent">确定</el-button>
14 14
     </div>
15
-
15
+    <!-- 客户看到的消息 -->
16 16
     <el-dialog title="分配客户" :visible.sync="infoVisible" :close-on-click-modal="false" width="600px" append-to-body center top="15vh">
17 17
       <div class="self-hint" style="border:none;">
18 18
         <i class="el-icon-message-solid"></i>
@@ -30,15 +30,16 @@
30 30
             </div>
31 31
             <div class="con">{{reason}}</div>
32 32
           </div>
33
-          <div class="userHint">由于工作变更,<span>{{user_replace_info.name}}@{{enterprise.corp_full_name?enterprise.corp_full_name:enterprise.corp_name}}</span>将在24小时后添加为你的企业微信联系人,接替 高秀丽@几门成都见公司 继续为你提供服务。</div>
33
+          <div class="userHint">由于工作变更,<span>{{user_replace_info.name}}@{{enterprise.corp_full_name?enterprise.corp_full_name:enterprise.corp_name}}</span>将在24小时后添加为你的企业微信联系人,接替 XXX@{{enterprise.corp_full_name?enterprise.corp_full_name:enterprise.corp_name}} 继续为您提供服务。</div>
34 34
           <div class="userHint"><span>暂不添加</span></div>
35 35
         </div>
36 36
       </div>
37 37
       <div class="buttons">
38
-        <el-button type="primary" plain size="mini" @click="userChangeVisible=false">返回</el-button>
39
-        <el-button type="primary" size="mini" @click="userChangeVisible=false;reason=changeReason;">保存</el-button>
38
+        <el-button type="primary" plain size="mini" @click="infoVisible=false">返回</el-button>
39
+        <el-button type="primary" size="mini" @click="setUpVisible=true;">确定</el-button>
40 40
       </div>
41 41
     </el-dialog>
42
+    <!-- 修改客户看到的消息 -->
42 43
     <el-dialog title="分配客户" :visible.sync="userChangeVisible" :close-on-click-modal="false" width="600px" append-to-body center top="15vh">
43 44
       <div class="self-hint">
44 45
         <i class="el-icon-message-solid"></i>
@@ -50,11 +51,29 @@
50 51
       <textarea class="textarea" autocomplete="off" placeholder="请输入客户收到的消息" v-model="changeReason"></textarea>
51 52
       <div class="buttons">
52 53
         <el-button type="primary" plain size="mini" @click="userChangeVisible=false">返回</el-button>
53
-        <el-button type="primary" size="mini" @click="userChangeVisible=false;reason=changeReason;">保存</el-button>
54
+        <el-button type="primary" size="mini" @click="infoDefine">保存</el-button>
54 55
       </div>
55 56
     </el-dialog>
57
+    <!-- 继承设置 -->
56 58
     <el-dialog title="设置" :visible.sync="setUpVisible" :close-on-click-modal="false" width="600px" append-to-body center top="15vh">
57
-
59
+      <div class="self-hint">
60
+        <i class="el-icon-message-solid"></i>
61
+        <span>若继承客户之前已添加继承员工,客户画像信息将不会继承</span>
62
+      </div>
63
+      <div class="jc_con">
64
+        <label>客户画像继承:</label>
65
+        <div class="jc_con_con">
66
+          <div>
67
+            <el-switch v-model="portrait_inheritance" active-color="#43B083" inactive-color="#ccc"></el-switch>
68
+            <span>{{portrait_inheritance?'已开启':''}}</span>
69
+          </div>
70
+          <div class="jc_hint">开启后企业通过在职继承或离职继承客户,将同步客户信息至继承员工客户画像,方便员工跟进客户。</div>
71
+        </div>
72
+      </div>
73
+      <div class="buttons">
74
+        <el-button type="primary" plain size="mini" @click="setUpVisible=false;">返回</el-button>
75
+        <el-button type="primary" size="mini" @click="setUpVisible=false;infoVisible=false;submitEvent()">确定</el-button>
76
+      </div>
58 77
     </el-dialog>
59 78
   </div>
60 79
 </template>
@@ -71,17 +90,21 @@ export default {
71 90
     return {
72 91
       user_replace_info: {},
73 92
       userChangeVisible: false,
74
-      reason: '您好,您的服务已升级,后续将由我的同事 高秀丽@几门成都见公司 接替我的工作,继续为您服务。',
75
-      changeReason: '您好,您的服务已升级,后续将由我的同事 高秀丽@几门成都见公司 接替我的工作,继续为您服务。',
93
+      reason: '',
94
+      changeReason: '',
76 95
       setUpVisible: false,
77 96
       infoVisible: false,
78
-      enterprise: {}
97
+      enterprise: {},
98
+      portrait_inheritance: true
79 99
     }
80 100
   },
81 101
   created () {
82 102
     this.enterprise = JSON.parse(this.$localSelfStore.getLocal('defaultCorp'));
83 103
   },
84 104
   methods: {
105
+    submitEvent () {//确定提交
106
+      this.$emit('transferCustomerEvent', { transfer_success_msg: this.reason, takeover_userid: this.user_replace_info.user_id, portrait_inheritance: this.portrait_inheritance ? 1 : 0 })
107
+    },
85 108
     serviceSingleEvent (val) {
86 109
       if (val && val.user_id) {
87 110
         this.user_replace_info = val;
@@ -98,8 +121,21 @@ export default {
98 121
         })
99 122
         return
100 123
       }
124
+      this.reason = `您好,您的服务已升级,后续将由我的同事 ${this.user_replace_info.name}@${this.enterprise.corp_full_name ? this.enterprise.corp_full_name : this.enterprise.corp_name} 接替我的工作,继续为您服务。`;
125
+      this.changeReason = this.reason;
101 126
       this.infoVisible = true
102 127
     },
128
+    infoDefine () {
129
+      if (!this.changeReason || this.changeReason == '') {
130
+        this.$message({
131
+          message: '请编辑客户收到的消息',
132
+          type: "warning"
133
+        })
134
+        return
135
+      }
136
+      this.userChangeVisible = false;
137
+      this.reason = this.changeReason;
138
+    }
103 139
   }
104 140
 }
105 141
 </script>
@@ -191,4 +227,27 @@ export default {
191 227
   font-size: 14px;
192 228
   color: #333333;
193 229
 }
230
+.jc_con {
231
+  display: flex;
232
+  margin-top: 22px;
233
+  label {
234
+    color: #666666;
235
+    font-size: 14px;
236
+    line-height: 20px;
237
+  }
238
+  .jc_con_con {
239
+    flex: 1;
240
+    span {
241
+      color: #666666;
242
+      font-weight: bold;
243
+      line-height: 20px;
244
+    }
245
+    .jc_hint {
246
+      color: #999999;
247
+      font-size: 14px;
248
+      line-height: 20px;
249
+      margin-top: 14px;
250
+    }
251
+  }
252
+}
194 253
 </style>

+ 46 - 21
project/src/components/customManage/manage.vue

@@ -34,7 +34,7 @@
34 34
           <!-- <div class="smalLine"></div> -->
35 35
           <!-- <el-button type="primary" plain size="mini"><i class="el-icon-refresh-right"></i> 更新数据</el-button> -->
36 36
         </div>
37
-        <div class="selectCustom">已择{{multipleArr.length}}个客户</div>
37
+        <div class="selectCustom">已择{{selectTotal}}个客户</div>
38 38
       </div>
39 39
       <div class="flex">
40 40
         <el-button type="primary" plain size="mini" @click="setCustomerTag(1)">批量打标签</el-button>
@@ -92,6 +92,7 @@
92 92
         <template slot-scope="scope">
93 93
           <span v-if="scope.row.customer_enable==0" style="color:#FF0002">禁用</span>
94 94
           <span v-if="scope.row.customer_enable==1">可用</span>
95
+          <span v-if="scope.row.customer_enable==2">被客服删除</span>
95 96
           <span v-if="scope.row.customer_enable==3" style="color:#00B38A">已流失</span>
96 97
         </template>
97 98
       </el-table-column>
@@ -126,7 +127,7 @@
126 127
     <el-dialog title="拉黑原因" :visible.sync="shieldingFlag" width="578px" center>
127 128
       <shielding-user @cancel='shieldingUserCancel' :shieldingData='shieldingData'></shielding-user>
128 129
     </el-dialog>
129
-<!--详情-->
130
+    <!--详情-->
130 131
     <el-drawer :size="drawerSize" :visible.sync="detialDrawer" :with-header="false">
131 132
       <detial @changeDrawerSize="changeDrawerSize" @closeDrawer="closeDrawer" :rowProp="{
132 133
         customer_id:rowPro.customer_id,
@@ -189,6 +190,8 @@ export default {
189 190
       multipleSelection: {},
190 191
       exclude_multiple_selection: {},
191 192
       multipleArr: [],
193
+      filter_multipleArr: [],
194
+      selectTotal: 0,
192 195
       isAll: false,//是否选择全部
193 196
       tagVisible: false,
194 197
       tagType: 1
@@ -217,26 +220,36 @@ export default {
217 220
     closeTagDialog (val) {
218 221
       if (val && val.length != 0) {
219 222
         let customer_list = [];
220
-        customer_list = this.multipleArr.map((v) => {
221
-          return { customer_id: v.customer_id, user_id: v.user_id }
222
-        })
223
+        let filter_customer_list = []
224
+        if (this.isAll) {//全选
225
+          filter_customer_list = this.filter_multipleArr.map((v) => {
226
+            return { customer_id: v.customer_id, user_id: v.user_id }
227
+          })
228
+        } else {
229
+          customer_list = this.multipleArr.map((v) => {
230
+            return { customer_id: v.customer_id, user_id: v.user_id }
231
+          })
232
+        }
233
+
223 234
         this.$loading(this.$loadingConfig);
224 235
         this.$axios.post(this.URL.BASEURL + this.URL.customer_setCustomerTag, {
225
-          // user_id_list: this.user_id_list,
226
-          // customer_name: this.input_keyword,
227
-          // add_date_start: this.add_date_start,
228
-          // add_date_end: this.add_date_end,
229
-          // add_way: this.add_way,
230
-          // pay_status: this.pay_status,
231
-          // pay_num_min: this.pay_num_min,
232
-          // pay_num_max: this.pay_num_max,
233
-          // tag_type: this.tag_type,
234
-          // tag_id_list: this.tag_id_list,
235
-          // loss_status: this.loss_status,
236
+          user_id_list: this.user_id_list,
237
+          customer_name: this.input_keyword,
238
+          add_date_start: this.add_date_start,
239
+          add_date_end: this.add_date_end,
240
+          add_way: this.add_way,
241
+          pay_status: this.pay_status,
242
+          pay_num_min: this.pay_num_min,
243
+          pay_num_max: this.pay_num_max,
244
+          tag_type: this.tag_type,
245
+          tag_id_list: this.tag_id_list,
246
+          loss_status: this.loss_status,
236 247
 
237 248
           type: this.tagType,
238 249
           tag_list: val,
239
-          customer_list: customer_list
250
+          customer_list: customer_list,
251
+          select_all: this.isAll ? 1 : 0,
252
+          filter_customer_list: filter_customer_list
240 253
         }).then((res) => {
241 254
           var res = res.data
242 255
           this.$loading(this.$loadingConfig).close();
@@ -278,6 +291,8 @@ export default {
278 291
             this.multipleSelection = {};
279 292
             this.exclude_multiple_selection = {};
280 293
             this.multipleArr = [];
294
+            this.filter_multipleArr = [];
295
+            this.selectTotal = 0;
281 296
             this.isAll = false;
282 297
             this.init(this.page)
283 298
           } else if (res.rst.status == 3) {
@@ -425,7 +440,7 @@ export default {
425 440
 
426 441
             // 回显选择
427 442
             let page_multiple_data = [];
428
-            if (this.isAll && (!this.multipleSelection[this.page])) {
443
+            if (this.isAll && (this.multipleSelection[this.page] === undefined)) {
429 444
               page_multiple_data = this.tableData
430 445
             } else {
431 446
               let multiple_id = this.multipleSelection[this.page] ? this.multipleSelection[this.page].map((v) => {
@@ -456,14 +471,24 @@ export default {
456 471
     userChange () {
457 472
       let multipleArr = []
458 473
       for (var i in this.multipleSelection) {
459
-        multipleArr = multipleArr.concat(this.multipleSelection[1] ? this.multipleSelection[1] : [])
474
+        multipleArr = multipleArr.concat(this.multipleSelection[i] ? this.multipleSelection[i] : [])
460 475
       }
461 476
       this.multipleArr = multipleArr;
477
+      if (this.isAll) {//全选
478
+        let filter_multipleArr = []
479
+        for (var i in this.exclude_multiple_selection) {
480
+          filter_multipleArr = filter_multipleArr.concat(this.exclude_multiple_selection[i] ? this.exclude_multiple_selection[i] : [])
481
+        }
482
+        this.filter_multipleArr = filter_multipleArr
483
+        this.selectTotal = Number(this.total) - filter_multipleArr.length
484
+      } else {
485
+        this.selectTotal = this.multipleArr.length
486
+      }
462 487
     },
463 488
     setCustomerTag (type) {//批量打标签、移除标签
464 489
       //type 操作类型 1添加标签 2移除标签
465 490
       this.userChange()
466
-      if (this.multipleArr.length == 0) {
491
+      if (this.selectTotal <= 0) {
467 492
         this.$message({
468 493
           message: '请选择客户!',
469 494
           type: "warning"
@@ -492,7 +517,7 @@ export default {
492 517
           return v.user_id + '-' + v.customer_id
493 518
         }) : []
494 519
         this.tableData.forEach((item) => {
495
-          if (multiple_id.indexOf((item.user_id + '-' + item.customer_id)) != -1) {
520
+          if (multiple_id.indexOf((item.user_id + '-' + item.customer_id)) == -1) {
496 521
             page_multiple_data.push(item)
497 522
           }
498 523
         })

+ 1 - 1
project/src/components/customManage/transferRecord.vue

@@ -47,7 +47,7 @@
47 47
       <el-table-column label="操作" align="center">
48 48
         <template slot-scope="scope">
49 49
           <div class="flex" style="justify-content:center">
50
-            <div class="c-00B38A pointer" style="margin:0 6px" v-if="scope.row.status==1" @click="showDetial(scope.row)">详情</div>
50
+            <div class="c-00B38A pointer" style="margin:0 6px" v-if="scope.row.takeover_userid" @click="showDetial(scope.row)">详情</div>
51 51
           </div>
52 52
         </template>
53 53
       </el-table-column>

+ 145 - 152
project/src/components/detials/index.vue

@@ -3,7 +3,7 @@
3 3
     <div class="title padCon">
4 4
       <div class="flex">
5 5
         客户详情
6
-<!--
6
+        <!--
7 7
       <span class="lMar8">
8 8
           <el-tooltip effect="light" content="上一位" placement="bottom">
9 9
             <i class="el-icon-arrow-left f16"></i>
@@ -17,26 +17,26 @@
17 17
 -->
18 18
       </div>
19 19
       <div class="flex-align-center">
20
-        <img src="../../assets/img/fullScreen.png" alt="" style="width: 13px;margin-right: 6px;cursor: pointer"  @click="changeWidth">
20
+        <img src="@/assets/img/fullScreen.png" alt="" style="width: 13px;margin-right: 6px;cursor: pointer" @click="changeWidth">
21 21
         <i class="el-icon-close pointer" @click="close"></i>
22 22
       </div>
23 23
     </div>
24 24
     <div class="splitLine"></div>
25
-    <div class= "padCon">
25
+    <div class="padCon">
26 26
       <el-skeleton :loading="loading" animated>
27 27
         <template slot="template">
28 28
           <div class="infoBox">
29
-            <el-skeleton-item variant="image" style="width: 100px;height: 100px;margin-right: 10px;"/>
29
+            <el-skeleton-item variant="image" style="width: 100px;height: 100px;margin-right: 10px;" />
30 30
             <div style="width: 30%">
31
-              <el-skeleton-item animated/>
32
-              <el-skeleton-item class="tMar20" animated/>
33
-              <el-skeleton-item class="tMar20" animated/>
31
+              <el-skeleton-item animated />
32
+              <el-skeleton-item class="tMar20" animated />
33
+              <el-skeleton-item class="tMar20" animated />
34 34
             </div>
35 35
           </div>
36 36
         </template>
37 37
         <template>
38 38
           <div class="infoBox">
39
-            <div><img :src="resInfo.avatar"  alt="" ></div>
39
+            <div><img v-if="resInfo.avatar" :src="resInfo.avatar" alt=""><img v-else src="@/assets/img/self_head.png" alt=""></div>
40 40
             <div>
41 41
               <div class="name">
42 42
                 <span>{{resInfo&&resInfo.name}}</span>
@@ -47,7 +47,7 @@
47 47
                 <span class="lable_con" v-for="(t,tidx) in resInfo.tag_list" :key="tidx">{{t}}</span>
48 48
                 <span class="bright" @click="init_tag"><i class="el-icon-edit"></i> 编辑</span>
49 49
               </div>
50
-<!--
50
+              <!--
51 51
  <div class="lable">
52 52
                 <span>个人标签:</span>
53 53
                 <span class="bright" @click="selfLableShow = true"><i class="el-icon-edit"></i> 编辑</span>
@@ -68,17 +68,12 @@
68 68
       </div>
69 69
       <customerProfile v-if="acIdx == 0" :rowProp="rowProp" ref="profile"></customerProfile>
70 70
       <customerStatus v-if="acIdx == 1" :rowProp="rowProp"></customerStatus>
71
-<!--      <chatRecord v-if="acIdx == 2"></chatRecord>-->
72
-<!--      <chatGroup v-if="acIdx == 3"></chatGroup>-->
71
+      <!--      <chatRecord v-if="acIdx == 2"></chatRecord>-->
72
+      <!--      <chatGroup v-if="acIdx == 3"></chatGroup>-->
73 73
       <order v-if="acIdx == 4" :rowProp="rowProp"></order>
74 74
     </div>
75 75
 
76
-    <el-dialog
77
-      title="选择企业标签"
78
-      :visible.sync="comLableShow"
79
-      :append-to-body="true"
80
-      class="addLable_dialog"
81
-      width="30%">
76
+    <el-dialog title="选择企业标签" :visible.sync="comLableShow" :append-to-body="true" class="addLable_dialog" width="30%">
82 77
       <div class="addLableBox">
83 78
         <!--后台说先不做-->
84 79
         <template v-if="false">
@@ -109,9 +104,7 @@
109 104
       </div>
110 105
     </el-dialog>
111 106
 
112
-
113
-
114
-<!--
107
+    <!--
115 108
   <el-dialog
116 109
       title="个人标签"
117 110
       :visible.sync="selfLableShow"
@@ -161,26 +154,26 @@ import chatRecord from "./chatRecord";
161 154
 import order from "./order";
162 155
 export default {
163 156
   name: "detialIndex",
164
-  props:['rowProp'],
165
-  data(){
166
-    return{
167
-      addLableVal:'',
168
-      lableArr:[],
169
-      lableArr_checked:[],
170
-      comLableShow:false,
171
-      lableGroup:false,
157
+  props: ['rowProp'],
158
+  data () {
159
+    return {
160
+      addLableVal: '',
161
+      lableArr: [],
162
+      lableArr_checked: [],
163
+      comLableShow: false,
164
+      lableGroup: false,
172 165
       // selfLableShow:false,
173
-      acIdx:0,
174
-      loading:false,
175
-      iptshow:false,
176
-      tabList:[
166
+      acIdx: 0,
167
+      loading: false,
168
+      iptshow: false,
169
+      tabList: [
177 170
         {
178
-          id:0,
179
-          name:'客户概况'
171
+          id: 0,
172
+          name: '客户概况'
180 173
         },
181 174
         {
182
-          id:1,
183
-          name:'客户动态'
175
+          id: 1,
176
+          name: '客户动态'
184 177
         },
185 178
         // {
186 179
         //   id:2,
@@ -191,124 +184,124 @@ export default {
191 184
         //   name:'所在群聊'
192 185
         // },
193 186
         {
194
-          id:4,
195
-          name:'订单'
187
+          id: 4,
188
+          name: '订单'
196 189
         },
197 190
       ],
198
-      scopeVal:0,
199
-      groupName:'',
200
-      moreLable:[
201
-        {id:0,name:''}
191
+      scopeVal: 0,
192
+      groupName: '',
193
+      moreLable: [
194
+        { id: 0, name: '' }
202 195
       ],
203
-      resInfo:{}
196
+      resInfo: {}
204 197
     }
205 198
   },
206
-  directives:{
207
-    focus:{
208
-      inserted : function (el){
199
+  directives: {
200
+    focus: {
201
+      inserted: function (el) {
209 202
         el.querySelector('input').focus()
210 203
       }
211 204
     }
212 205
   },
213
-  components:{
206
+  components: {
214 207
     customerProfile,
215 208
     customerStatus,
216 209
     chatGroup,
217 210
     chatRecord,
218 211
     order,
219 212
   },
220
-  methods:{
221
-    edit_tag(){
213
+  methods: {
214
+    edit_tag () {
222 215
       this.comLableShow = true
223
-      this.$axios.post(this.URL.BASEURL + this.URL.tag_detial_edit,{
224
-        external_userid:this.resInfo.external_userid,
225
-        customer_id:this.rowProp.customer_id,
226
-        user_id:this.rowProp.user_id,
227
-        selected_tag_id_list:this.lableArr_checked
228
-      }).then((res)=>{
229
-        res=res.data
216
+      this.$axios.post(this.URL.BASEURL + this.URL.tag_detial_edit, {
217
+        external_userid: this.resInfo.external_userid,
218
+        customer_id: this.rowProp.customer_id,
219
+        user_id: this.rowProp.user_id,
220
+        selected_tag_id_list: this.lableArr_checked
221
+      }).then((res) => {
222
+        res = res.data
230 223
         this.$message({
231 224
           message: res.err,
232 225
           type: "info"
233 226
         })
234
-        if(res&&res.errno == 0){
227
+        if (res && res.errno == 0) {
235 228
           this.comLableShow = false
236 229
           this.init()
237 230
         }
238 231
 
239 232
       })
240 233
     },
241
-    init_tag(){
234
+    init_tag () {
242 235
       this.comLableShow = true
243
-      this.$axios.get(this.URL.BASEURL + this.URL.tag_detial_list,{
244
-        params:{
245
-          customer_id:this.rowProp.customer_id,
246
-          user_id:this.rowProp.user_id
236
+      this.$axios.get(this.URL.BASEURL + this.URL.tag_detial_list, {
237
+        params: {
238
+          customer_id: this.rowProp.customer_id,
239
+          user_id: this.rowProp.user_id
247 240
         }
248
-      }).then((res)=>{
249
-        res=res.data
241
+      }).then((res) => {
242
+        res = res.data
250 243
         this.lableArr = res.rst
251 244
 
252
-        this.lableArr_checked=[]
253
-        res.rst.forEach(l=>{
254
-          l.tag_list.forEach(t=>{
255
-            if(t.selected == 1){
245
+        this.lableArr_checked = []
246
+        res.rst.forEach(l => {
247
+          l.tag_list.forEach(t => {
248
+            if (t.selected == 1) {
256 249
               this.lableArr_checked.push(t.tag_id)
257 250
             }
258 251
           })
259 252
         })
260
-        console.log(this.lableArr_checked,' this.lableArr_checked');
253
+        console.log(this.lableArr_checked, ' this.lableArr_checked');
261 254
 
262 255
       })
263 256
     },
264
-    init(){
265
-      this.$axios.get(this.URL.BASEURL + this.URL.customerDetail,{
266
-        params:{
267
-          customer_id:this.rowProp.customer_id,
268
-          user_id:this.rowProp.user_id
257
+    init () {
258
+      this.$axios.get(this.URL.BASEURL + this.URL.customerDetail, {
259
+        params: {
260
+          customer_id: this.rowProp.customer_id,
261
+          user_id: this.rowProp.user_id
269 262
         }
270
-      }).then((res)=>{
271
-        res=res.data
263
+      }).then((res) => {
264
+        res = res.data
272 265
         this.resInfo = res.rst
273 266
         this.$refs.profile.init()
274 267
       })
275 268
     },
276
-    changeWidth(){
269
+    changeWidth () {
277 270
       this.$emit('changeDrawerSize')
278 271
     },
279
-    close(){
272
+    close () {
280 273
       this.$emit('closeDrawer')
281 274
     },
282
-    iptBlur(){
275
+    iptBlur () {
283 276
       this.iptshow = false
284
-      if(this.addLableVal){
285
-        this.lableArr.push({id:this.lableArr.length,name:this.addLableVal})
277
+      if (this.addLableVal) {
278
+        this.lableArr.push({ id: this.lableArr.length, name: this.addLableVal })
286 279
       }
287 280
     },
288
-    switchLable(id){
289
-      console.log(this.lableArr_checked,'switchLable');
290
-      if(this.lableArr_checked.indexOf(id) == -1){
281
+    switchLable (id) {
282
+      console.log(this.lableArr_checked, 'switchLable');
283
+      if (this.lableArr_checked.indexOf(id) == -1) {
291 284
         this.lableArr_checked.push(id)
292
-      }else{
293
-        this.lableArr_checked.forEach((i,idx)=>{
294
-          if(i == id){
295
-            this.lableArr_checked.splice(idx,1)
285
+      } else {
286
+        this.lableArr_checked.forEach((i, idx) => {
287
+          if (i == id) {
288
+            this.lableArr_checked.splice(idx, 1)
296 289
           }
297 290
         })
298 291
       }
299 292
     },
300 293
 
301 294
     // 上移
302
-    upClick(index) {
303
-      if(index == 0){return false}
295
+    upClick (index) {
296
+      if (index == 0) { return false }
304 297
       this.moreLable = this.swapItems(this.moreLable, index, index - 1)
305 298
     },
306 299
     // 下移
307
-    downClick(index) {
308
-      if(index == this.moreLable.length-1){return false}
300
+    downClick (index) {
301
+      if (index == this.moreLable.length - 1) { return false }
309 302
       this.moreLable = this.swapItems(this.moreLable, index, index + 1)
310 303
     },
311
-    swapItems(arr, index1, index2) {
304
+    swapItems (arr, index1, index2) {
312 305
       arr[index1] = arr.splice(index2, 1, arr[index1])[0];
313 306
       return arr;
314 307
     },
@@ -316,78 +309,80 @@ export default {
316 309
 }
317 310
 </script>
318 311
 <style lang="scss">
319
-.addLable_dialog{
320
-  .addLableBox{
321
-
322
-    .add{
312
+.addLable_dialog {
313
+  .addLableBox {
314
+    .add {
323 315
       padding: 4px 10px;
324 316
       line-height: 20px;
325 317
       text-align: center;
326
-      border: 1px solid #D2D2D2;
318
+      border: 1px solid #d2d2d2;
327 319
       cursor: pointer;
328 320
       margin-right: 8px;
329 321
       margin-top: 10px;
330 322
     }
331
-    .lableItem_dad{
323
+    .lableItem_dad {
332 324
       display: flex;
333 325
       align-items: center;
334 326
       flex-wrap: wrap;
335 327
     }
336
-    .lableItem{
328
+    .lableItem {
337 329
       line-height: 20px;
338 330
       text-align: center;
339
-      border: 1px solid #D2D2D2;
331
+      border: 1px solid #d2d2d2;
340 332
       padding: 4px 10px;
341 333
       background-color: #fafafa;
342 334
       margin-right: 8px;
343 335
       cursor: pointer;
344 336
       margin-top: 10px;
345 337
     }
346
-    .lableItem:hover{
338
+    .lableItem:hover {
347 339
       //color: #00B38A;
348
-      border: 1px solid #00B38A;
340
+      border: 1px solid #00b38a;
349 341
     }
350
-    .lableItemAc{
351
-      background-color: rgba(0,179,138,0.4);
352
-      border: 1px solid rgba(0,179,138,0.4);
353
-      color: #00B38A;
342
+    .lableItemAc {
343
+      background-color: rgba(0, 179, 138, 0.4);
344
+      border: 1px solid rgba(0, 179, 138, 0.4);
345
+      color: #00b38a;
354 346
     }
355
-    .ipt{
347
+    .ipt {
356 348
       width: 120px;
357 349
       margin-right: 8px;
358 350
       margin-top: 10px;
359
-      .el-input__inner{
351
+      .el-input__inner {
360 352
         height: 30px;
361 353
         line-height: 30px;
362 354
       }
363 355
     }
364 356
   }
365
-  .dialog-footer{
357
+  .dialog-footer {
366 358
     //display: flex;
367 359
     //align-items: center;
368 360
     //justify-content: space-between;
369
-    .addLableGroup{
361
+    .addLableGroup {
370 362
       font-size: 14px;
371
-      color: #00B38A;
363
+      color: #00b38a;
372 364
       cursor: pointer;
373 365
     }
374 366
   }
375
-  .groupCon{
376
-    .group_item{
367
+  .groupCon {
368
+    .group_item {
377 369
       display: flex;
378 370
       align-items: center;
379 371
       margin-top: 20px;
380
-      .lable{
372
+      .lable {
381 373
         width: 24%;
382 374
         text-align: right;
383 375
       }
384
-      .opaArea{
376
+      .opaArea {
385 377
         margin-left: 20px;
386 378
         width: 68%;
387
-        .addIptGroup{
388
-          font-size: 12px;color: #00B38A;cursor: pointer;margin-top: 10px
379
+        .addIptGroup {
380
+          font-size: 12px;
381
+          color: #00b38a;
382
+          cursor: pointer;
383
+          margin-top: 10px;
389 384
         }
390
-        .minusIptGroup{
385
+        .minusIptGroup {
391 386
           display: inline-block;
392 387
           border: 1px solid #333;
393 388
           border-radius: 50%;
@@ -401,13 +396,13 @@ export default {
401 396
           cursor: pointer;
402 397
           flex-shrink: 0;
403 398
         }
404
-        .disCss{
405
-          color: rgba(0,0,0,.25)
399
+        .disCss {
400
+          color: rgba(0, 0, 0, 0.25);
406 401
         }
407 402
       }
408 403
     }
409
-    .ipt_group{
410
-      .el-input__inner{
404
+    .ipt_group {
405
+      .el-input__inner {
411 406
         height: 36px;
412 407
         line-height: 36px;
413 408
       }
@@ -417,11 +412,11 @@ export default {
417 412
 </style>
418 413
 
419 414
 <style lang="scss">
420
-.detialCon{
421
-  .padCon{
415
+.detialCon {
416
+  .padCon {
422 417
     padding: 20px 30px;
423 418
   }
424
-  .title{
419
+  .title {
425 420
     position: sticky;
426 421
     top: 0;
427 422
     z-index: 2;
@@ -432,7 +427,8 @@ export default {
432 427
     font-weight: 600;
433 428
     color: #333;
434 429
     font-size: 20px;
435
-    .el-icon-arrow-left,.el-icon-arrow-right{
430
+    .el-icon-arrow-left,
431
+    .el-icon-arrow-right {
436 432
       width: 20px;
437 433
       height: 20px;
438 434
       line-height: 20px;
@@ -442,73 +438,70 @@ export default {
442 438
       cursor: pointer;
443 439
     }
444 440
   }
445
-  .splitLine{
441
+  .splitLine {
446 442
     width: 100%;
447 443
     height: 10px;
448
-    background: #F5F6F8;
444
+    background: #f5f6f8;
449 445
   }
450
-  .infoBox{
446
+  .infoBox {
451 447
     display: flex;
452 448
     align-items: center;
453
-    img{
449
+    img {
454 450
       width: 80px;
455 451
       height: 80px;
456 452
       margin-right: 10px;
457 453
     }
458
-    .name{
454
+    .name {
459 455
       font-size: 14px;
460 456
       color: #333333;
461
-      .bright{
462
-        color: #2FDF72;
457
+      .bright {
458
+        color: #2fdf72;
463 459
         margin-left: 6px;
464 460
       }
465 461
     }
466
-    .lable{
462
+    .lable {
467 463
       margin-top: 10px;
468 464
       font-size: 13px;
469
-      color: #898D92;
470
-      .bright{
471
-        color: #00B38A;
465
+      color: #898d92;
466
+      .bright {
467
+        color: #00b38a;
472 468
         margin-left: 6px;
473 469
         cursor: pointer;
474 470
       }
475
-      .lable_con{
476
-        background-color: #F5FFFD;
471
+      .lable_con {
472
+        background-color: #f5fffd;
477 473
         color: #787878;
478 474
         font-size: 13px;
479 475
         border-radius: 4px;
480
-        border: 1px solid #00B38A;
476
+        border: 1px solid #00b38a;
481 477
         padding: 6px 7px;
482 478
         margin-left: 6px;
483 479
         display: inline-block;
484 480
       }
485 481
     }
486 482
   }
487
-  .tabCon{
483
+  .tabCon {
488 484
     color: #333;
489
-    .tabCon_bar{
490
-      border-bottom: 1px solid #E9E9E9;
485
+    .tabCon_bar {
486
+      border-bottom: 1px solid #e9e9e9;
491 487
       font-size: 15px;
492 488
       margin-bottom: 20px;
493 489
       display: flex;
494 490
       align-items: center;
495
-      .bor_line{
491
+      .bor_line {
496 492
         border-bottom: 3px solid transparent;
497 493
       }
498
-      .bor_line_ac{
499
-        border-bottom: 3px solid #00B38A;
494
+      .bor_line_ac {
495
+        border-bottom: 3px solid #00b38a;
500 496
         width: 50%;
501 497
         margin: 0 auto;
502 498
       }
503
-      .ac_css{
504
-        color: #00B38A;
499
+      .ac_css {
500
+        color: #00b38a;
505 501
         font-size: 16px;
506 502
         font-weight: 600;
507 503
       }
508 504
     }
509
-
510 505
   }
511
-
512
-
513 506
 }
514 507
 </style>

+ 5 - 5
project/src/router/navList.js

@@ -10,13 +10,13 @@ var navList = [
10 10
     is_main: 1,
11 11
     path: 'home',
12 12
     viewName: '首页',
13
-    icon: 'el-icon-camera',
13
+    icon: 'icon-shouye_icon',
14 14
   },
15 15
   {
16 16
     path: '',
17 17
     is_main: 1,
18 18
     viewName: '客户管理',
19
-    icon: 'el-icon-camera',
19
+    icon: 'icon-kehuguanli_icon',
20 20
     small_menu: [
21 21
       {
22 22
         viewName: '客户管理',
@@ -40,7 +40,7 @@ var navList = [
40 40
     path: '',
41 41
     is_main: 1,
42 42
     viewName: '客户运营',
43
-    icon: 'el-icon-camera',
43
+    icon: 'icon-kehuyunying_icon',
44 44
     small_menu: [
45 45
       {
46 46
         viewName: '客户欢迎语',
@@ -60,7 +60,7 @@ var navList = [
60 60
     path: '',
61 61
     is_main: 1,
62 62
     viewName: '客户属性',
63
-    icon: 'el-icon-camera',
63
+    icon: 'icon-kehushuxing_icon',
64 64
     small_menu: [
65 65
       {
66 66
         viewName: '标签管理',
@@ -72,7 +72,7 @@ var navList = [
72 72
     path: '',
73 73
     is_main: 1,
74 74
     viewName: '设置管理',
75
-    icon: 'el-icon-camera',
75
+    icon: 'icon-shezhiguanli_icon',
76 76
     small_menu: [
77 77
       {
78 78
         viewName: '成员管理',