Bladeren bron

问题修改

liuyifan 5 jaren geleden
bovenliggende
commit
b7065b3431
19 gewijzigde bestanden met toevoegingen van 490 en 248 verwijderingen
  1. 8 0
      CallCenterWeb.UI/src/api/trafficData/trafficData.js
  2. 3 4
      CallCenterWeb.UI/src/components/Dialplate/index.vue
  3. 2 1
      CallCenterWeb.UI/src/components/audioPlayer/index.vue
  4. 177 183
      CallCenterWeb.UI/src/views/afterSaleManagement/afterSaleList/afterSaleDetail.vue
  5. 1 0
      CallCenterWeb.UI/src/views/afterSaleManagement/afterSaleList/index.vue
  6. 4 0
      CallCenterWeb.UI/src/views/afterSaleManagement/afterSaleOrderList/edit.vue
  7. 4 0
      CallCenterWeb.UI/src/views/callScreen/components/createOrder.vue
  8. 9 1
      CallCenterWeb.UI/src/views/custodianManagement/headlessListCustodian/index.vue
  9. 1 0
      CallCenterWeb.UI/src/views/customerServiceManagement/customerServiceChangeCollection/index.vue
  10. 21 28
      CallCenterWeb.UI/src/views/customerServiceManagement/orderListLogistics/goback.vue
  11. 27 8
      CallCenterWeb.UI/src/views/layout/components/Navbar.vue
  12. 17 17
      CallCenterWeb.UI/src/views/mediaCenter/launchManagment/mediaInformation/manage.vue
  13. 2 2
      CallCenterWeb.UI/src/views/memberManagement/memberList/components/addOrEdit.vue
  14. 4 0
      CallCenterWeb.UI/src/views/memberManagement/memberList/components/addOrder.vue
  15. 1 0
      CallCenterWeb.UI/src/views/orderManagement/changeCollectionOrderList/index.vue
  16. 4 0
      CallCenterWeb.UI/src/views/orderManagement/orderList/edit.vue
  17. 2 1
      CallCenterWeb.UI/src/views/orderManagement/salesAfterSaleList/index.vue
  18. 115 3
      CallCenterWeb.UI/src/views/trafficData/callRecord/index.vue
  19. 88 0
      CallCenterWeb.UI/src/views/trafficData/callRecord/returnvisit.vue

+ 8 - 0
CallCenterWeb.UI/src/api/trafficData/trafficData.js

@@ -89,3 +89,11 @@ export function getIVRCalloutRecord (params) {
89 89
     params
90 90
   })
91 91
 }
92
+
93
+export function returnVisitCallRecords(params) {
94
+  return request({
95
+    url: 'api/CallRecords/Returnvisit',
96
+    method: 'get',
97
+    params
98
+  })
99
+}

+ 3 - 4
CallCenterWeb.UI/src/components/Dialplate/index.vue

@@ -18,8 +18,8 @@
18 18
       </el-row>
19 19
       <el-button v-waves class="btn_call" type="success" round @click="callOut">拨打</el-button>
20 20
       <!-- 右侧 通话记录和通讯录  -->
21
-      <svg-icon v-popover:popover class="btn_yonghu" icon-class="yonghu" />
22
-      <el-popover
21
+      <!-- <svg-icon v-popover:popover class="btn_yonghu" icon-class="yonghu" /> -->
22
+      <!-- <el-popover
23 23
         ref="popover"
24 24
         :value="telIsVisCallout"
25 25
         visible-arrow
@@ -29,7 +29,6 @@
29 29
         trigger="click"
30 30
         transition="fade-in-linear"
31 31
       >
32
-        <!-- @show="getTelHisList" -->
33 32
         <el-tabs v-model="tabActiveName" stretch class="phnoe_tabs" @tab-click="handleClick">
34 33
           <el-input v-model="s_keywords" size="mini" placeholder="搜索" prefix-icon="el-icon-search" />
35 34
           <el-tab-pane label="历史记录" name="first">
@@ -93,7 +92,7 @@
93 92
             </el-scrollbar>
94 93
           </el-tab-pane>
95 94
         </el-tabs>
96
-      </el-popover>
95
+      </el-popover> -->
97 96
     </div>
98 97
   </div>
99 98
 </template>

+ 2 - 1
CallCenterWeb.UI/src/components/audioPlayer/index.vue

@@ -61,10 +61,11 @@ export default {
61 61
     vaplayer.disableVersionBadge = true
62 62
   },
63 63
   created() {
64
-    this.musicList.artist = this.artists
64
+    this.musicList.artist = this.artists == "" ? "未知坐席" : this.artists
65 65
     this.musicList.src = this.recFiles
66 66
     this.musicList.pic = this.avatar
67 67
     console.log(this.musicList.src)
68
+    console.log("musicList", this.musicList)
68 69
   },
69 70
   methods: {
70 71
     btn_downlaod() {

+ 177 - 183
CallCenterWeb.UI/src/views/afterSaleManagement/afterSaleList/afterSaleDetail.vue

@@ -7,30 +7,16 @@
7 7
             <h1 class="title"><svg-icon class="title_icon" icon-class="hongqi" />订单号:{{ orderDetailData.F_OrderId }}</h1>
8 8
           </el-col>
9 9
           <el-col :md="24" class="order_detail_content">
10
-            <el-col :md="6" class="order_detail_item">
11
-              售后类型:{{ orderDetailData.F_Type }}
12
-            </el-col>
13
-            <el-col :md="6" class="order_detail_item">
14
-              变动金额:{{ orderDetailData.F_Money }}
15
-            </el-col>
16
-            <el-col :md="6" class="order_detail_item">
17
-              售后原因:{{ orderDetailData.F_ReturnType }}
18
-            </el-col>
10
+            <el-col :md="6" class="order_detail_item"> 售后类型:{{ orderDetailData.F_Type }} </el-col>
11
+            <el-col :md="6" class="order_detail_item"> 变动金额:{{ orderDetailData.F_Money }} </el-col>
12
+            <el-col :md="6" class="order_detail_item"> 售后原因:{{ orderDetailData.F_ReturnType }} </el-col>
19 13
             <!-- <el-col :md="6" class="order_detail_item">
20 14
               售后原因:{{ orderDetailData.F_ReturnDes }}
21 15
             </el-col> -->
22
-            <el-col :md="6" class="order_detail_item">
23
-              退回商品状态:{{ orderDetailData.F_ProductStatus }}
24
-            </el-col>
25
-            <el-col :md="6" class="order_detail_item">
26
-              处理原因:{{ orderDetailData.F_Reason }}
27
-            </el-col>
28
-            <el-col :md="6" class="order_detail_item">
29
-              客户意愿:{{ orderDetailData.F_Aspiration }}
30
-            </el-col>
31
-            <el-col :md="6" class="order_detail_item">
32
-              售后备注:{{ orderDetailData.F_Remark }}
33
-            </el-col>
16
+            <el-col :md="6" class="order_detail_item"> 退回商品状态:{{ orderDetailData.F_ProductStatus }} </el-col>
17
+            <el-col :md="6" class="order_detail_item"> 处理原因:{{ orderDetailData.F_Reason }} </el-col>
18
+            <el-col :md="6" class="order_detail_item"> 客户意愿:{{ orderDetailData.F_Aspiration }} </el-col>
19
+            <el-col :md="6" class="order_detail_item"> 售后备注:{{ orderDetailData.F_Remark }} </el-col>
34 20
             <el-col :md="24">
35 21
               补发商品:
36 22
               <el-table :data="commodityTableData" stripe border style="width: 100%">
@@ -53,21 +39,21 @@
53 39
 </template>
54 40
 
55 41
 <script>
56
-import { getDictionaryValueList } from '@/api/commonAPI'
57
-import { getOrder } from '@/api/orderManagement/orderList'
58
-import { addAfterSaleList, editAfterSaleList, afterSaleListDetail, getAfterSaleOrderCommodityList, } from "@/api/afterSaleManagement/afterSaleList";
42
+import { getDictionaryValueList } from "@/api/commonAPI"
43
+import { getOrder } from "@/api/orderManagement/orderList"
44
+import { addAfterSaleList, editAfterSaleList, afterSaleListDetail, getAfterSaleOrderCommodityList } from "@/api/afterSaleManagement/afterSaleList"
59 45
 
60 46
 export default {
61 47
   name: "AfterSale",
62 48
   props: {
63 49
     rowid: {
64 50
       type: String,
65
-      default: ""
51
+      default: "",
66 52
     },
67 53
     layerid: {
68 54
       type: String,
69
-      default: ""
70
-    }
55
+      default: "",
56
+    },
71 57
   },
72 58
   data() {
73 59
     return {
@@ -75,30 +61,29 @@ export default {
75 61
       oldCommodityTableData: [], //退回商品列表
76 62
       loading: false,
77 63
       orderDetailData: {
78
-        F_Id: '', //售后id
79
-        F_OrderId: '', //订单编号
80
-        F_DetailList: '', //补发产品列表
81
-        F_OldDetailList: '', //退回产品列表
82
-        F_Type: '', //售后类型
83
-        F_Money: '', //变动金额
84
-        F_Remark: '', //售后备注
85
-        F_ReturnType: '', //售后原因类型
86
-        F_ReturnDes: '', //售后原因
87
-        F_ProductStatus: '', //退回商品状态
88
-        F_CheckStateSH: '', //0保存 1提交按钮 2不通过
89
-        F_Reason: '', //处理原因
90
-        F_Aspiration: '', //客户意愿
64
+        F_Id: "", //售后id
65
+        F_OrderId: "", //订单编号
66
+        F_DetailList: "", //补发产品列表
67
+        F_OldDetailList: "", //退回产品列表
68
+        F_Type: "", //售后类型
69
+        F_Money: "", //变动金额
70
+        F_Remark: "", //售后备注
71
+        F_ReturnType: "", //售后原因类型
72
+        F_ReturnDes: "", //售后原因
73
+        F_ProductStatus: "", //退回商品状态
74
+        F_CheckStateSH: "", //0保存 1提交按钮 2不通过
75
+        F_Reason: "", //处理原因
76
+        F_Aspiration: "", //客户意愿
91 77
       },
92
-    };
78
+    }
93 79
   },
94 80
   created() {
95
-    Promise.all([
96
-    ]).then(() => {
81
+    Promise.all([]).then(() => {
97 82
       if (this.rowid) {
98 83
         this.orderDetailData.F_Id = this.rowid
99 84
         this.getDetail(this.rowid)
100 85
       }
101
-    });
86
+    })
102 87
   },
103 88
   methods: {
104 89
     //获取售后订单详情
@@ -106,30 +91,39 @@ export default {
106 91
       const params = {
107 92
         F_Id: rid,
108 93
       }
109
-      afterSaleListDetail(params).then(response => {
110
-        if (response.state.toLowerCase() === 'success') {
94
+      afterSaleListDetail(params).then((response) => {
95
+        if (response.state.toLowerCase() === "success") {
111 96
           const res = response.data
112 97
           this.orderDetailData.F_OrderId = res.F_OrderId //订单编号
113 98
           this.orderDetailData.F_OldDetailList = res.F_OldDetailList //退回产品列表
114
-          switch(res.F_Type){
99
+          switch (res.F_Type) {
115 100
             case 1:
116
-              this.orderDetailData.F_Type='调换货';
117
-              break;
101
+              this.orderDetailData.F_Type = "调换货"
102
+              break
118 103
             case 2:
119
-              this.orderDetailData.F_Type='退货';
120
-              break;
104
+              this.orderDetailData.F_Type = "退货"
105
+              break
121 106
             case 3:
122
-              this.orderDetailData.F_Type='部分退货';
123
-              break;
107
+              this.orderDetailData.F_Type = "部分退货"
108
+              break
124 109
             case 4:
125
-              this.orderDetailData.F_Type='对发货';
126
-              break;
110
+              this.orderDetailData.F_Type = "对发货"
111
+              break
127 112
             case 5:
128
-              this.orderDetailData.F_Type='补发货';
129
-              break;
113
+              this.orderDetailData.F_Type = "补发货"
114
+              break
130 115
             case 6:
131
-              this.orderDetailData.F_Type='补差额';
132
-              break;
116
+              this.orderDetailData.F_Type = "补差额"
117
+              break
118
+            case 7:
119
+              this.orderDetailData.F_Type = "错发"
120
+              break
121
+            case 8:
122
+              this.orderDetailData.F_Type = "漏发"
123
+              break
124
+            case 9:
125
+              this.orderDetailData.F_Type = "改代收"
126
+              break
133 127
           }
134 128
           // this.orderDetailData.F_Type = res.F_Type //售后类型
135 129
           this.orderDetailData.F_Money = res.F_Money //变动金额
@@ -145,9 +139,9 @@ export default {
145 139
       })
146 140
     },
147 141
     getReissueGoods(goodsData) {
148
-      let reissueGoods = goodsData.split('|')
142
+      let reissueGoods = goodsData.split("|")
149 143
       for (let i = 1; i < reissueGoods.length; i++) {
150
-        let reissueGoodsDetail = reissueGoods[i].split(',')
144
+        let reissueGoodsDetail = reissueGoods[i].split(",")
151 145
         let data = {
152 146
           F_ProductId: reissueGoodsDetail[0],
153 147
           F_ProductName: reissueGoodsDetail[2],
@@ -159,162 +153,162 @@ export default {
159 153
     // 售后订单商品列表
160 154
     getAfterSaleOrderCommodity(rid) {
161 155
       const params = {
162
-        orderid: rid
156
+        orderid: rid,
163 157
       }
164
-      getAfterSaleOrderCommodityList(params).then(response => {
165
-        if (response.state.toLowerCase() === 'success') {
158
+      getAfterSaleOrderCommodityList(params).then((response) => {
159
+        if (response.state.toLowerCase() === "success") {
166 160
           const res = response.data
167 161
           this.oldCommodityTableData = res
168 162
         }
169 163
       })
170 164
     },
171
-  }
172
-};
165
+  },
166
+}
173 167
 </script>
174 168
 
175 169
 <style rel="stylesheet/scss" lang="scss">
176 170
 .order_form .form_select {
177 171
   width: 100%;
178 172
 }
179
-.order_detail{
180
-  .el-col{
173
+.order_detail {
174
+  .el-col {
181 175
     margin-bottom: 20px;
182 176
   }
183
-  .el-icon-time{
177
+  .el-icon-time {
184 178
     color: #d81e06;
185 179
   }
186
-  .el-card__header{
180
+  .el-card__header {
187 181
     padding-top: 14px;
188 182
     padding-bottom: 14px;
189
-    background-color: #F5F5F6;
183
+    background-color: #f5f5f6;
190 184
   }
191
-  .order_file{
192
-    .el-card__body{
185
+  .order_file {
186
+    .el-card__body {
193 187
       padding: 22px 0 0 0;
194 188
       text-align: center;
195 189
     }
196 190
   }
197
-  .order_steps{
198
-    .el-step__icon-inner{
191
+  .order_steps {
192
+    .el-step__icon-inner {
199 193
       display: none;
200 194
     }
201 195
   }
202 196
   .order_record {
203
-    .el-card__body{
197
+    .el-card__body {
204 198
       padding: 0;
205 199
     }
206
-    .el-tabs__header{
200
+    .el-tabs__header {
207 201
       padding: 0px 20px;
208
-      background-color: #F5F5F6;
209
-        .el-tabs__item{
210
-          font-size: 16px;
211
-          height: 47px;
212
-          line-height: 47px;
213
-        }
202
+      background-color: #f5f5f6;
203
+      .el-tabs__item {
204
+        font-size: 16px;
205
+        height: 47px;
206
+        line-height: 47px;
207
+      }
214 208
     }
215 209
   }
216 210
 }
217 211
 </style>
218 212
 <style rel="stylesheet/scss" lang="scss" scoped>
219
-	.order_detail{
220
-		.order_detail_body{
221
-			margin-bottom: 20px;
222
-			.round_img{
223
-				width: 90px;
224
-				height: 90px;
225
-				border-radius: 50%;
226
-				overflow: hidden;
227
-				margin: 14px;
228
-				img{
229
-					width: 100%;
230
-					height: 100%;
231
-				}
232
-			}
233
-			.title{
234
-				font-size: 20px;
235
-				.title_icon{
236
-					color: #d81e06;
237
-					font-size: 16px;
238
-					margin-right: 20px;
239
-				}
240
-			}
241
-			.title_sub{
242
-				font-size: 14px;
243
-				color: #666666;
244
-			}
245
-			.order_detail_content{
246
-				background-color: #F5F5F6;
247
-				padding-top: 20px;
248
-				color: #4c4c4c;
249
-				font-size: 14px;
250
-				.order_detail_item{
251
-					margin-bottom: 10px;
252
-					.order_content{
253
-						margin-top: 10px;
254
-					}
255
-					.order_file {
256
-						position: relative;
257
-						cursor: pointer;
258
-						.img_mask {
259
-							display: none;
260
-							position: absolute;
261
-							left: 0px;
262
-							top: 0px;
263
-							background-color: rgba(0, 0, 0, 0.3);
264
-							width: 100%;
265
-							height: 22px;
266
-							text-align: right;
267
-							z-index: 1;
268
-							i {
269
-								font-size: 20px;
270
-								line-height: 22px;
271
-								display: inline-block;
272
-								margin-right: 15px;
273
-								color: #fff;
274
-							}
275
-						}
276
-						p {
277
-							margin-top: 5px;
278
-							padding-left: 14px;
279
-							padding-right: 14px;
280
-							white-space: nowrap;
281
-							overflow: hidden;
282
-							text-overflow: ellipsis;
283
-						}
284
-						.file_icon{
285
-							height: 68px;
286
-							line-height: 68px;
287
-							font-size: 68px;
288
-							color: #409EFF;
289
-						}
290
-					}
291
-					.order_file:hover .img_mask {
292
-						display: block;
293
-					}
294
-				}
295
-			}
296
-		}
297
-		.green {
298
-			color: #00c1de;
299
-		}
300
-		.done {
301
-			color: #198120;
302
-		}
303
-		.red {
304
-			color: #d81e06;
305
-		}
306
-		.yellow{
307
-			color: #e6a23c;
308
-		}
309
-		.order_steps{
310
-			// height: 240px;
311
-			.el-step__icon-inner{
312
-				display: none;
313
-			}
314
-		}
315
-		.tab_body{
316
-			padding: 0 20px 20px 20px;
317
-		}
318
-	}
213
+.order_detail {
214
+  .order_detail_body {
215
+    margin-bottom: 20px;
216
+    .round_img {
217
+      width: 90px;
218
+      height: 90px;
219
+      border-radius: 50%;
220
+      overflow: hidden;
221
+      margin: 14px;
222
+      img {
223
+        width: 100%;
224
+        height: 100%;
225
+      }
226
+    }
227
+    .title {
228
+      font-size: 20px;
229
+      .title_icon {
230
+        color: #d81e06;
231
+        font-size: 16px;
232
+        margin-right: 20px;
233
+      }
234
+    }
235
+    .title_sub {
236
+      font-size: 14px;
237
+      color: #666666;
238
+    }
239
+    .order_detail_content {
240
+      background-color: #f5f5f6;
241
+      padding-top: 20px;
242
+      color: #4c4c4c;
243
+      font-size: 14px;
244
+      .order_detail_item {
245
+        margin-bottom: 10px;
246
+        .order_content {
247
+          margin-top: 10px;
248
+        }
249
+        .order_file {
250
+          position: relative;
251
+          cursor: pointer;
252
+          .img_mask {
253
+            display: none;
254
+            position: absolute;
255
+            left: 0px;
256
+            top: 0px;
257
+            background-color: rgba(0, 0, 0, 0.3);
258
+            width: 100%;
259
+            height: 22px;
260
+            text-align: right;
261
+            z-index: 1;
262
+            i {
263
+              font-size: 20px;
264
+              line-height: 22px;
265
+              display: inline-block;
266
+              margin-right: 15px;
267
+              color: #fff;
268
+            }
269
+          }
270
+          p {
271
+            margin-top: 5px;
272
+            padding-left: 14px;
273
+            padding-right: 14px;
274
+            white-space: nowrap;
275
+            overflow: hidden;
276
+            text-overflow: ellipsis;
277
+          }
278
+          .file_icon {
279
+            height: 68px;
280
+            line-height: 68px;
281
+            font-size: 68px;
282
+            color: #409eff;
283
+          }
284
+        }
285
+        .order_file:hover .img_mask {
286
+          display: block;
287
+        }
288
+      }
289
+    }
290
+  }
291
+  .green {
292
+    color: #00c1de;
293
+  }
294
+  .done {
295
+    color: #198120;
296
+  }
297
+  .red {
298
+    color: #d81e06;
299
+  }
300
+  .yellow {
301
+    color: #e6a23c;
302
+  }
303
+  .order_steps {
304
+    // height: 240px;
305
+    .el-step__icon-inner {
306
+      display: none;
307
+    }
308
+  }
309
+  .tab_body {
310
+    padding: 0 20px 20px 20px;
311
+  }
312
+}
319 313
 </style>
320 314
 

+ 1 - 0
CallCenterWeb.UI/src/views/afterSaleManagement/afterSaleList/index.vue

@@ -107,6 +107,7 @@ export default {
107 107
         6: "补差额",
108 108
         7: "错发",
109 109
         8: "漏发",
110
+        9: "改代收",
110 111
       }
111 112
       return statusMap[status]
112 113
     },

+ 4 - 0
CallCenterWeb.UI/src/views/afterSaleManagement/afterSaleOrderList/edit.vue

@@ -944,9 +944,11 @@ export default {
944 944
       if (val === "货到付款") {
945 945
         this.judgmentIsPayment = false
946 946
         this.disabledIsPayment = false
947
+        this.isSubmitForm = false
947 948
       } else if (val === "全额付款") {
948 949
         this.judgmentIsPayment = true
949 950
         this.disabledIsPayment = true
951
+        this.isSubmitForm = false
950 952
         this.ruleForm.OrderMoney.F_Money = this.totalAmount
951 953
         this.rules.OrderMoney.F_Money[0].required = false
952 954
       } else if (val === "部分付款") {
@@ -1107,6 +1109,8 @@ export default {
1107 1109
             type: "warning",
1108 1110
           })
1109 1111
           this.isSubmitForm = true
1112
+        } else {
1113
+          this.isSubmitForm = false
1110 1114
         }
1111 1115
       } else {
1112 1116
         this.isSubmitForm = false

+ 4 - 0
CallCenterWeb.UI/src/views/callScreen/components/createOrder.vue

@@ -958,9 +958,11 @@ export default {
958 958
       if (val === "货到付款") {
959 959
         this.judgmentIsPayment = false
960 960
         this.disabledIsPayment = false
961
+        this.isSubmitForm = false
961 962
       } else if (val === "全额付款") {
962 963
         this.judgmentIsPayment = true
963 964
         this.disabledIsPayment = true
965
+        this.isSubmitForm = false
964 966
         this.ruleForm.OrderMoney.F_Money = this.totalAmount
965 967
         this.rules.OrderMoney.F_Money[0].required = false
966 968
       } else if (val === "部分付款") {
@@ -1091,6 +1093,8 @@ export default {
1091 1093
             type: "warning",
1092 1094
           })
1093 1095
           this.isSubmitForm = true
1096
+        } else {
1097
+          this.isSubmitForm = false
1094 1098
         }
1095 1099
       } else {
1096 1100
         this.isSubmitForm = false

+ 9 - 1
CallCenterWeb.UI/src/views/custodianManagement/headlessListCustodian/index.vue

@@ -35,7 +35,7 @@
35 35
       </el-table-column>
36 36
       <el-table-column label="操作" width="170" align="center" class-name="oparate_btn" fixed="right">
37 37
         <template slot-scope="scope">
38
-          <!-- <el-button v-permission="'HY_edit'" type="text" @click="btn_edit(scope.row.F_ID)">编辑</el-button> -->
38
+          <el-button v-permission="'HY_edit'" v-if="authority_edit(scope.row.F_State)" type="text" @click="btn_edit(scope.row.F_ID)">编辑</el-button>
39 39
           <el-button v-permission="'HY_delete'" type="text" @click="btn_delete(scope.row.F_ID)">删除</el-button>
40 40
         </template>
41 41
       </el-table-column>
@@ -198,6 +198,14 @@ export default {
198 198
       }
199 199
       this.selectOrderId = ids
200 200
     },
201
+    //编辑权限
202
+    authority_edit(state) {
203
+      if (state == "0") {
204
+        return true
205
+      } else {
206
+        return false
207
+      }
208
+    }
201 209
   },
202 210
 }
203 211
 </script>

+ 1 - 0
CallCenterWeb.UI/src/views/customerServiceManagement/customerServiceChangeCollection/index.vue

@@ -105,6 +105,7 @@ export default {
105 105
         6: "补差额",
106 106
         7: "错发",
107 107
         8: "漏发",
108
+        9: "改代收",
108 109
       }
109 110
       return statusMap[status]
110 111
     },

+ 21 - 28
CallCenterWeb.UI/src/views/customerServiceManagement/orderListLogistics/goback.vue

@@ -2,20 +2,13 @@
2 2
   <div>
3 3
     <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="80px">
4 4
       <el-form-item label="退回" prop="state">
5
-        <el-select
6
-          v-model="ruleForm.state"
7
-          class="form_select"
8
-          filterable
9
-          clearable
10
-          placeholder="请选择退回"
11
-          @change="selectback"
12
-        >
5
+        <el-select v-model="ruleForm.state" class="form_select" filterable clearable placeholder="请选择退回" @change="selectback">
13 6
           <el-option label="退回上一级" value="0" />
14 7
           <el-option label="退回销售" value="1" />
15 8
         </el-select>
16 9
       </el-form-item>
17 10
       <el-form-item v-show="ishow" label="退回原因">
18
-        <el-input v-model="ruleForm.remark" type="textarea" placeholder="退回原因"/>
11
+        <el-input v-model="ruleForm.remark" type="textarea" placeholder="退回原因" />
19 12
       </el-form-item>
20 13
       <el-form-item>
21 14
         <el-button type="primary" @click="submitForm()">提交</el-button>
@@ -24,35 +17,35 @@
24 17
   </div>
25 18
 </template>
26 19
 <script>
27
-import { gobackOrderCustomerService } from '@/api/customerServiceManagement/orderListCustomerService'
20
+import { gobackOrderCustomerService } from "@/api/customerServiceManagement/orderListCustomerService"
28 21
 export default {
29 22
   props: {
30 23
     rowid: {
31 24
       type: String,
32
-      default: ''
25
+      default: "",
33 26
     },
34 27
     layerid: {
35 28
       type: String,
36
-      default: ''
37
-    }
29
+      default: "",
30
+    },
38 31
   },
39 32
   data() {
40 33
     return {
41 34
       ishow: true, // 原因显隐
42 35
       ruleForm: {
43
-        orderids: '', // 订单编号
44
-        remark: '', // 备注
45
-        state: ''
36
+        orderids: "", // 订单编号
37
+        remark: "", // 备注
38
+        state: "",
46 39
       },
47 40
       rules: {
48 41
         state: [
49 42
           {
50 43
             required: true,
51
-            trigger: 'change',
52
-            message: '请选择退回'
53
-          }
54
-        ]
55
-      }
44
+            trigger: "change",
45
+            message: "请选择退回",
46
+          },
47
+        ],
48
+      },
56 49
     }
57 50
   },
58 51
   created() {
@@ -62,14 +55,14 @@ export default {
62 55
   },
63 56
   methods: {
64 57
     submitForm() {
65
-      this.$refs.ruleForm.validate(valid => {
58
+      this.$refs.ruleForm.validate((valid) => {
66 59
         if (valid) {
67 60
           gobackOrderCustomerService(this.ruleForm)
68 61
             .then((response) => {
69
-              if (response.state.toLowerCase() === 'success') {
62
+              if (response.state.toLowerCase() === "success") {
70 63
                 this.$parent.$layer.close(this.layerid)
71 64
                 this.$parent.getList() // 重新加载父级数据
72
-                this.$message.success('恭喜你,订单信息退回成功!')
65
+                this.$message.success("恭喜你,订单信息退回成功!")
73 66
               }
74 67
             })
75 68
             .catch(() => {
@@ -79,17 +72,17 @@ export default {
79 72
       })
80 73
     },
81 74
     selectback(e) {
82
-      if (e === '0') {
75
+      if (e === "0") {
83 76
         this.ishow = false
84 77
       } else {
85 78
         this.ishow = true
86 79
       }
87
-    }
88
-  }
80
+    },
81
+  },
89 82
 }
90 83
 </script>
91 84
 <style lang="scss" scoped>
92 85
 .form_select {
93
-  width: 100%
86
+  width: 100%;
94 87
 }
95 88
 </style>

+ 27 - 8
CallCenterWeb.UI/src/views/layout/components/Navbar.vue

@@ -2,11 +2,17 @@
2 2
   <el-menu class="navbar" mode="horizontal">
3 3
     <teloperation v-if="seatflag" />
4 4
     <!-- <outboundTask v-if="seatflag && telIsLogin" class="navar_item"/> -->
5
+    <div v-if="seatflag" class="navar_item personalInfoWrapper">
6
+      <div class="personalInfoLine">
7
+        <span class="personalInfoText">登陆账号:{{ usercode }}</span>
8
+        <span class="personalInfoText">姓名:{{ username }}</span>
9
+      </div>
10
+      <div class="personalInfoLine">
11
+        <span class="personalInfoText">用户角色:{{ roleName }}</span>
12
+        <span class="personalInfoText">分机号:{{ extension }}</span>
13
+      </div>
14
+    </div>
5 15
     <div v-if="seatflag" class="navar_item telState">
6
-      <span class="personalInfoText">登陆账号:{{ usercode }}</span>
7
-      <span class="personalInfoText">用户角色:{{ roleName }}</span>
8
-      <span class="personalInfoText">姓名:{{ username }}</span>
9
-      <span class="personalInfoText">分机号:{{ extension }}</span>
10 16
       <svg-icon :class="{ state_normal: telTopRightLamp, state_abnormal: !telTopRightLamp }" icon-class="zhuangtai" />
11 17
       {{ telTopRightState }}
12 18
     </div>
@@ -191,10 +197,23 @@ export default {
191 197
       font-size: 16px;
192 198
       vertical-align: -0.17em;
193 199
     }
194
-    .personalInfoText {
195
-      margin-right: 12px;
196
-      font-size: 14px;
197
-      z-index: -1;
200
+  }
201
+  .personalInfoWrapper {
202
+    font-size: 14px;
203
+    width: 280px;
204
+    height: 52px;
205
+    padding-right: 15px;
206
+    right: 270px;
207
+    line-height: 25px;
208
+    color: #ffffff;
209
+    .personalInfoLine {
210
+      width: 280px;
211
+      height: 25px;
212
+      .personalInfoText {
213
+        margin-right: 12px;
214
+        font-size: 14px;
215
+        z-index: -1;
216
+      }
198 217
     }
199 218
   }
200 219
   .seatState {

+ 17 - 17
CallCenterWeb.UI/src/views/mediaCenter/launchManagment/mediaInformation/manage.vue

@@ -231,7 +231,7 @@
231 231
       </el-form>
232 232
     </el-row>
233 233
     <el-row>
234
-      <el-form ref="renderForm" :model="renderForm" label-width="100px">
234
+      <el-form ref="renderForm" :model="renderForm" :rules="rules4" label-width="100px">
235 235
         <el-col :span="24">
236 236
           <el-form-item label="提醒部门设置" label-width="100px"></el-form-item>
237 237
         </el-col>
@@ -242,8 +242,8 @@
242 242
           </el-form-item>
243 243
         </el-col>
244 244
         <el-col :span="6">
245
-          <el-form-item label="提醒部门">
246
-            <el-cascader ref="myCascader" v-model="deptParentids" :options="departmentDatas" :props="props" placeholder="请选择部门" class="form_select" change-on-select clearable filterable @change="handledepartment" />
245
+          <el-form-item label="部门" prop="deptParentids">
246
+            <el-cascader ref="myCascader" v-model="renderForm.deptParentids" :options="departmentDatas" :props="props" placeholder="请选择部门" class="form_select" change-on-select clearable filterable @change="handledepartment" />
247 247
           </el-form-item>
248 248
         </el-col>
249 249
         <el-col :span="6">
@@ -254,7 +254,7 @@
254 254
           </el-form-item>
255 255
         </el-col>
256 256
         <el-col :span="6">
257
-          <el-form-item label="小组" prop="group ">
257
+          <el-form-item label="小组" prop="group">
258 258
             <el-select v-model="renderForm.group" class="form_select" filterable clearable placeholder="请选择小组" @change="handlegrop">
259 259
               <el-option v-for="item in gropData" :key="item.F_Id" :label="item.F_Name" :value="item.F_Id" />
260 260
             </el-select>
@@ -321,6 +321,7 @@ export default {
321 321
       },
322 322
       renderForm: {
323 323
         ReminderTime: "", //提醒时间
324
+        deptParentids: [],
324 325
         deptid: "", //提醒部门
325 326
         dept: "", //部门名称
326 327
         deptteamid: "", // 中心id
@@ -329,7 +330,6 @@ export default {
329 330
         group: "", // 小组名称
330 331
         reminder: "0", //是否提醒
331 332
       },
332
-      deptParentids: [],
333 333
       departmentDatas: [], //部门数据
334 334
       teamData: [], // 中心下拉数据
335 335
       gropData: [], // 小组下拉数据
@@ -422,14 +422,6 @@ export default {
422 422
         this.$message.error("请选择媒体名称")
423 423
         return
424 424
       }
425
-      if (!this.playPlanForm.advertisementName) {
426
-        this.$message.error("请选择广告名称")
427
-        return
428
-      }
429
-      if (!this.changeInfoForm.F_ChangeType) {
430
-        this.$message.error("请选择变更类型")
431
-        return
432
-      }
433 425
       return new Promise((resolve) => {
434 426
         const params = {
435 427
           F_Id: this.rowid,
@@ -442,11 +434,11 @@ export default {
442 434
           F_DailyExpenses: this.form.dailyExpenses - 0, //日费用
443 435
           F_IsRemind: this.renderForm.reminder - 0, //是否提醒
444 436
           F_ReminderTime: this.renderForm.ReminderTime, //提醒时间F_DeptId
445
-          F_DeptId: this.renderForm.deptid, //提醒部门
437
+          F_DeptId: this.renderForm.deptid == "" ? 0 : this.renderForm.deptid, //提醒部门
446 438
           F_DeptName: this.renderForm.dept,
447
-          F_Team: this.renderForm.deptteamid,
439
+          F_Team: this.renderForm.deptteamid == "" ? 0 : this.renderForm.deptteamid,
448 440
           F_TeamName: this.renderForm.deptteam,
449
-          F_Group: this.renderForm.groupid,
441
+          F_Group: this.renderForm.groupid == "" ? 0 : this.renderForm.groupid,
450 442
           F_GroupName: this.renderForm.group,
451 443
           F_PlayPlanList: this.addPlayPlanForm, //计划数据
452 444
           F_MediaChangeList: this.addChangeForm, //变更数据
@@ -472,6 +464,10 @@ export default {
472 464
     },
473 465
     //添加计划方法
474 466
     addPlan() {
467
+      if (!this.playPlanForm.advertisementName) {
468
+        this.$message.error("请选择广告名称")
469
+        return
470
+      }
475 471
       this.addPlayPlanForm.push({
476 472
         F_Type: 0,
477 473
         F_StartTime: this.playPlanForm.startDate && this.playPlanForm.startDate[0],
@@ -509,6 +505,10 @@ export default {
509 505
     },
510 506
     //添加变更方法
511 507
     addChange() {
508
+      if (!this.changeInfoForm.F_ChangeType) {
509
+        this.$message.error("请选择变更类型")
510
+        return
511
+      }
512 512
       if (this.addChangeForm.length !== 1) {
513 513
         this.addChangeForm.push({
514 514
           F_ChangeTime: this.changeInfoForm.changeDate, //变更时间
@@ -626,7 +626,7 @@ export default {
626 626
           this.addChangeForm = response.data.F_MediaChangeList //变更
627 627
           this.renderForm.ReminderTime = response.data.F_ReminderTime //提醒时间
628 628
           this.renderForm.reminder = response.data.F_IsRemind.toString() //是否提醒、
629
-          this.deptParentids.push(response.data.F_DeptId)
629
+          this.renderForm.deptParentids.push(response.data.F_DeptId)
630 630
           this.renderForm.deptid = response.data.F_DeptId
631 631
           this.renderForm.dept = response.data.F_DeptName
632 632
           this.renderForm.deptteamid = response.data.F_Team // 中心

+ 2 - 2
CallCenterWeb.UI/src/views/memberManagement/memberList/components/addOrEdit.vue

@@ -179,7 +179,7 @@
179 179
             </el-select>
180 180
           </el-form-item>
181 181
         </el-col>
182
-        <el-col :span="12">
182
+        <!-- <el-col :span="12">
183 183
           <el-form-item label="累计消费金额" prop="F_Money">
184 184
             <el-input v-model="ruleForm.F_Money" placeholder="请输入累计消费金额" onkeyup="value=value.replace(/[^\d.]/g,'')" :disabled="settingDisabled.disabledMoney" />
185 185
           </el-form-item>
@@ -188,7 +188,7 @@
188 188
           <el-form-item label="累计积分" prop="F_TotalScore">
189 189
             <el-input v-model="ruleForm.F_TotalScore" placeholder="请输入累计积分" onkeyup="value=value.replace(/[^\d.]/g,'')" :disabled="settingDisabled.disabledTotalScore" />
190 190
           </el-form-item>
191
-        </el-col>
191
+        </el-col> -->
192 192
       </el-row>
193 193
       <el-form-item>
194 194
         <el-button type="primary" @click="submitForm">保存</el-button>

+ 4 - 0
CallCenterWeb.UI/src/views/memberManagement/memberList/components/addOrder.vue

@@ -949,11 +949,13 @@ export default {
949 949
       if (val === "货到付款") {
950 950
         this.judgmentIsPayment = false
951 951
         this.disabledIsPayment = false
952
+        this.isSubmitForm = false
952 953
         this.ruleForm.OrderMoney.F_Money = 0
953 954
         this.rules.OrderMoney.F_Money[0].required = false
954 955
       } else if (val === "全额付款") {
955 956
         this.judgmentIsPayment = true
956 957
         this.disabledIsPayment = true
958
+        this.isSubmitForm = false
957 959
         this.ruleForm.OrderMoney.F_Money = this.totalAmount
958 960
         this.rules.OrderMoney.F_Money[0].required = false
959 961
       } else if (val === "部分付款") {
@@ -1109,6 +1111,8 @@ export default {
1109 1111
             type: "warning",
1110 1112
           })
1111 1113
           this.isSubmitForm = true
1114
+        } else {
1115
+          this.isSubmitForm = false
1112 1116
         }
1113 1117
       } else {
1114 1118
         this.isSubmitForm = false

+ 1 - 0
CallCenterWeb.UI/src/views/orderManagement/changeCollectionOrderList/index.vue

@@ -317,6 +317,7 @@ export default {
317 317
         6: "补差额",
318 318
         7: "错发",
319 319
         8: "漏发",
320
+        9: "改代收",
320 321
       }
321 322
       return statusMap[status]
322 323
     },

+ 4 - 0
CallCenterWeb.UI/src/views/orderManagement/orderList/edit.vue

@@ -945,9 +945,11 @@ export default {
945 945
       if (val === "货到付款") {
946 946
         this.judgmentIsPayment = false
947 947
         this.disabledIsPayment = false
948
+        this.isSubmitForm = false
948 949
       } else if (val === "全额付款") {
949 950
         this.judgmentIsPayment = true
950 951
         this.disabledIsPayment = true
952
+        this.isSubmitForm = false
951 953
         this.ruleForm.OrderMoney.F_Money = this.totalAmount
952 954
         this.rules.OrderMoney.F_Money[0].required = false
953 955
       } else if (val === "部分付款") {
@@ -1108,6 +1110,8 @@ export default {
1108 1110
             type: "warning",
1109 1111
           })
1110 1112
           this.isSubmitForm = true
1113
+        } else {
1114
+          this.isSubmitForm = false
1111 1115
         }
1112 1116
       } else {
1113 1117
         this.isSubmitForm = false

+ 2 - 1
CallCenterWeb.UI/src/views/orderManagement/salesAfterSaleList/index.vue

@@ -14,8 +14,9 @@
14 14
         <el-option label="对发货" value="4" />
15 15
         <el-option label="补发货" value="5" />
16 16
         <!-- <el-option label="补差额" value="6"/> -->
17
-        <el-option label="错发" value="7" />
17
+        <!-- <el-option label="错发" value="7" /> -->
18 18
         <!-- <el-option label="漏发" value="8"/> -->
19
+        <!-- <el-option label="改代收" value="9" /> -->
19 20
       </el-select>
20 21
       <el-button
21 22
         type="primary"

+ 115 - 3
CallCenterWeb.UI/src/views/trafficData/callRecord/index.vue

@@ -14,6 +14,10 @@
14 14
         <el-option label="未接通电话" :value="0" />
15 15
         <el-option label="已接通电话" :value="1" />
16 16
       </el-select>
17
+      <el-select v-model="IsReturnvisit" class="filter-item" filterable clearable placeholder="请选择是否回访">
18
+        <el-option label="未回访" :value="0" />
19
+        <el-option label="已回访" :value="1" />
20
+      </el-select>
17 21
       <el-button type="primary" class="filter-item" icon="el-icon-search" @click="btn_search">搜索</el-button>
18 22
       <el-button type="primary" class="filter-item" @click="btn_add_outbound">添加外呼</el-button>
19 23
     </div>
@@ -21,9 +25,19 @@
21 25
     <el-table v-loading="loading" :data="dataLists" border stripe @selection-change="handleSelectionChange">
22 26
       <el-table-column type="selection" width="45" />
23 27
       <el-table-column type="index" label="编号" align="center" fixed width="80"></el-table-column>
24
-      <el-table-column prop="Caller" label="主叫号码" align="center" min-width></el-table-column>
28
+      <el-table-column prop="Caller" label="主叫号码" align="center" min-width>
29
+        <template slot-scope="scope">
30
+          {{ scope.row.Caller }}
31
+          <i v-if="scope.row.CallType == '0'" class="el-icon-phone phoneIcon" @click="clickCallOut(scope.row.Caller, scope.row.Id)" />
32
+        </template>
33
+      </el-table-column>
25 34
       <!-- <el-table-column prop="UserCode" label="坐席工号" align="center" min-width ></el-table-column> -->
26
-      <el-table-column prop="Callee" label="被叫号码" align="center" min-width></el-table-column>
35
+      <el-table-column prop="Callee" label="被叫号码" align="center" min-width>
36
+        <template slot-scope="scope">
37
+          {{ scope.row.Callee }}
38
+          <i v-if="scope.row.CallType == '1'" class="el-icon-phone phoneIcon" @click="clickCallOut(scope.row.Callee, scope.row.Id)" />
39
+        </template>
40
+      </el-table-column>
27 41
       <el-table-column label="呼叫类型" align="center" min-width>
28 42
         <template slot-scope="scope">{{ scope.row.CallType | calltypeFilter }}</template>
29 43
       </el-table-column>
@@ -68,6 +82,14 @@
68 82
       <el-table-column prop="RelayNumber" label="中继号码" align="center" min-width />
69 83
       <el-table-column prop="DeptName" label="部门" align="center" min-width />
70 84
       <el-table-column prop="UserName" label="姓名" align="center" min-width />
85
+      <el-table-column prop="CusCode" label="客户姓名" align="center" min-width />
86
+      <el-table-column prop="Media" label="媒体名称" align="center" min-width />
87
+      <el-table-column prop="IsReturnvisit" label="是否回访" align="center" min-width>
88
+        <template slot-scope="scope">
89
+          <span>{{ scope.row.IsReturnvisit | isReturnvisitFilter }}</span>
90
+          <i class="el-icon-edit phoneIcon" @click="btn_isReturnvisit(scope.row.Id)" />
91
+        </template>
92
+      </el-table-column>
71 93
       <!-- <el-table-column label="外呼类型" align="center" min-width>
72 94
         <template slot-scope="scope">{{ scope.row.callopttype | callopttypeFilter }}</template>
73 95
       </el-table-column>-->
@@ -78,11 +100,17 @@
78 100
 
79 101
 <script>
80 102
 import { getUserAccountLists } from "@/api/systemSetup/roleSetting/userManage"
81
-import { getCallRecords } from "@/api/trafficData/trafficData"
103
+import { getCallRecords, returnVisitCallRecords } from "@/api/trafficData/trafficData"
82 104
 import audioPlayer from "@/components/audioPlayer"
83 105
 import { pickerOptions } from "@/utils"
84 106
 import add from "./add"
85 107
 import Pagination from "@/components/Pagination" // 对el-pagination 二次封装
108
+import { getCallOutprefix } from "@/api/teloperation"
109
+import { Send } from "@/utils/telWebsocket"
110
+import store from "@/store"
111
+import { mapGetters } from "vuex"
112
+import returnvisit from "./returnvisit"
113
+
86 114
 export default {
87 115
   name: "CallRecord",
88 116
   components: {
@@ -144,6 +172,14 @@ export default {
144 172
         return tm
145 173
       }
146 174
     },
175
+    // 是否回访
176
+    isReturnvisitFilter(status) {
177
+      const statusMap = {
178
+        0: "未回访",
179
+        1: "已回访",
180
+      }
181
+      return statusMap[status]
182
+    },
147 183
   },
148 184
   data() {
149 185
     return {
@@ -152,6 +188,7 @@ export default {
152 188
       roleId: "",
153 189
       CallType: "", //呼叫类型
154 190
       CallState: "", //呼叫状态
191
+      IsReturnvisit: "", //是否回访
155 192
       roleOptions: [],
156 193
       searchDate: "",
157 194
       pickerOptions,
@@ -165,6 +202,14 @@ export default {
165 202
       multipleSelection: [], //选中数据
166 203
     }
167 204
   },
205
+  computed: {
206
+    ...mapGetters([
207
+      "token",
208
+      "usercode", // 工号
209
+      "extension", // 分机号
210
+      "telIsVisCallout", // 外呼面板是否显示
211
+    ]),
212
+  },
168 213
   created() {
169 214
     this.getRoleSelects()
170 215
     this.getList()
@@ -185,6 +230,7 @@ export default {
185 230
           UserCode: this.roleId, //	否	string	模糊查询(呼叫号码) CallNumber
186 231
           CallType: this.CallType == null ? "" : this.CallType, //呼叫类型
187 232
           CallState: this.CallState, //呼叫状态
233
+          IsReturnvisit: this.IsReturnvisit, //是否回访
188 234
           SearchStartTime: this.searchDate && this.searchDate[0],
189 235
           SearchEndTime: this.searchDate && this.searchDate[1],
190 236
         }
@@ -216,6 +262,7 @@ export default {
216 262
     },
217 263
     // 播放录音
218 264
     playSound(rec_file, artist) {
265
+      console.log("artist", artist)
219 266
       this.$layer.iframe({
220 267
         content: {
221 268
           content: audioPlayer, // 传递的组件对象
@@ -242,9 +289,74 @@ export default {
242 289
         title: "添加外呼",
243 290
       })
244 291
     },
292
+    // 外呼
293
+    clickCallOut(phoneNumber, id) {
294
+      this.callOut(phoneNumber)
295
+    },
296
+    // 外呼
297
+    callOut(phoneNumber, id) {
298
+      if (phoneNumber) {
299
+        getCallOutprefix(phoneNumber).then((response) => {
300
+          if (response.state.toLowerCase() === "success") {
301
+            const res = response.data
302
+            this.scoketDatas = {
303
+              Type: "MakeCall",
304
+              AgentID: this.usercode,
305
+              AgentExten: this.extension,
306
+              Header: res.fix, // 号码前缀 用于截断前缀得到真实号码
307
+              DestinationNumber: res.phone, //
308
+            }
309
+            store.dispatch("ChangeCallNum", phoneNumber)
310
+            Send(this.scoketDatas)
311
+            store.dispatch("UpdateCalloutScreen", false) // 关闭外呼面板
312
+            store.dispatch("UpdateOutboundScreen", false) // 关闭外呼弹屏
313
+            this.isReturnvisit(id)
314
+          }
315
+        })
316
+      } else {
317
+        this.$message({
318
+          message: "请先输入电话号码!",
319
+          type: "warning",
320
+        })
321
+      }
322
+    },
323
+    btn_isReturnvisit(id) {
324
+      this.$layer.iframe({
325
+        content: {
326
+          content: returnvisit, // 传递的组件对象
327
+          parent: this, // 当前的vue对象
328
+          data: { rowid: id }, // props
329
+        },
330
+        area: ["30%", "30%"],
331
+        title: "回访",
332
+      })
333
+    },
334
+    isReturnvisit(id) {
335
+      this.loading = true
336
+      const params = {
337
+        id: id,
338
+        isvisit: 1, // 已回访
339
+      }
340
+      returnVisitCallRecords(params)
341
+        .then((response) => {
342
+          this.loading = false
343
+          if (response.state.toLowerCase() === "success") {
344
+            this.$parent.$layer.close(this.layerid)
345
+            this.$parent.getList() // 重新加载父级数据
346
+            this.$message.success("修改成功!")
347
+          }
348
+        })
349
+        .catch(() => {
350
+          this.loading = false
351
+        })
352
+      return
353
+    },
245 354
   },
246 355
 }
247 356
 </script>
248 357
 
249 358
 <style rel="stylesheet/scss" lang="scss" scoped>
359
+.phoneIcon {
360
+  cursor: pointer;
361
+}
250 362
 </style>

+ 88 - 0
CallCenterWeb.UI/src/views/trafficData/callRecord/returnvisit.vue

@@ -0,0 +1,88 @@
1
+<template>
2
+  <div v-loading="loading">
3
+    <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="order_form">
4
+      <el-form-item label="是否回访" prop="isvisit">
5
+        <el-select v-model="ruleForm.isvisit" clearable placeholder="请选择是否回访" class="form_select">
6
+          <el-option label="未回访" value="0" />
7
+          <el-option label="已回访" value="1" />
8
+        </el-select>
9
+      </el-form-item>
10
+      <el-form-item>
11
+        <el-button type="primary" @click="submitForm">保存</el-button>
12
+      </el-form-item>
13
+    </el-form>
14
+  </div>
15
+</template>
16
+
17
+<script>
18
+import { returnVisitCallRecords } from "@/api/trafficData/trafficData"
19
+
20
+export default {
21
+  name: 'Returnvisit',
22
+  props: {
23
+    rowid: {
24
+      type: Number,
25
+      default: 0
26
+    },
27
+    layerid: {
28
+      type: String,
29
+      default: ''
30
+    }
31
+  },
32
+  data() {
33
+    return {
34
+      memberClass: [], // 分类数据
35
+      ruleForm: {
36
+        id: "",
37
+        isvisit: "", //会员分类
38
+      },
39
+      rules: {
40
+        isvisit: [{
41
+          required: true,
42
+          trigger: 'change',
43
+          message: '请选择是否回访',
44
+        }]
45
+      },
46
+      loading: false
47
+    }
48
+  },
49
+  created() {
50
+    if (this.rowid) {
51
+      this.ruleForm.id = this.rowid
52
+    }
53
+  },
54
+  methods: {
55
+    submitForm() {
56
+      this.$refs.ruleForm.validate((valid) => {
57
+        if (valid) {
58
+          this.loading = true
59
+          const params = {
60
+            id: this.ruleForm.id,
61
+            isvisit: this.ruleForm.isvisit,
62
+          }
63
+          returnVisitCallRecords(params).then(response => {
64
+            this.loading = false
65
+            if (response.state.toLowerCase() === 'success') {
66
+              this.$parent.$layer.close(this.layerid)
67
+              this.$parent.getList() // 重新加载父级数据
68
+              this.$message.success('修改成功!')
69
+            }
70
+          }).catch(() => {
71
+            this.loading = false
72
+          })
73
+          return
74
+        } else {
75
+          this.$message.error('请输入有效的必填项信息!')
76
+          return false
77
+        }
78
+      })
79
+    },
80
+  }
81
+}
82
+</script>
83
+
84
+<style rel="stylesheet/scss" lang="scss">
85
+.order_form .form_select{
86
+	width: 100%;
87
+}
88
+</style>