Procházet zdrojové kódy

订单列表外呼

liuyifan %!s(int64=5) %!d(string=před) roky
rodič
revize
d64a6a41ac

+ 1 - 0
CallCenterWeb.UI/src/store/getters.js

@@ -27,6 +27,7 @@ const getters = {
27 27
   telCallNum: state => state.telWebsocket.telCallNum, // 电话号码
28 28
   telCallType: state => state.telWebsocket.telCallType, // 通话类型
29 29
   telIsVisCallout: state => state.telWebsocket.telIsVisCallout, // 外呼操作面板是否显示
30
+  telOutboundScreen: state => state.telWebsocket.telOutboundScreen, // 外呼操作面板是否显示
30 31
   telCallTime: state => state.telWebsocket.telCallTime, // 通话时间
31 32
   telMonitor: state => state.telWebsocket.telMonitor, // 监听操作是否成功
32 33
   monitorState: state => state.telWebsocket.monitorState, //状态监控

+ 11 - 7
CallCenterWeb.UI/src/store/modules/telWebsocket.js

@@ -11,6 +11,7 @@ const telWebsocket = {
11 11
     telCallNum: '', // 顶部电话号码
12 12
     telCallType: 'MakeCall', // 发送的通话类型(默认是外呼)
13 13
     telIsVisCallout: false, // 外呼操作面板是否显示
14
+    telOutboundScreen: true, //是否显示外呼弹屏
14 15
     telIsVisTask: false, // 外呼任务信息是否显示
15 16
     telIsVisTaskFirst: true, // 外呼任务信息是否是第一次弹出
16 17
     telTaskIsRefresh: false, // 是否刷新右上角外呼任务信息/自动外呼监控/外呼分配/我的呼叫任务
@@ -21,7 +22,7 @@ const telWebsocket = {
21 22
     },
22 23
     telMonitor: false, // 监听操作是否成功
23 24
     monitorState: '', //状态监控
24
-    monitorAgent: '' //监控的坐席工号
25
+    monitorAgent: '', //监控的坐席工号
25 26
   },
26 27
   mutations: {
27 28
     SOCKET_CONNECT (state) {
@@ -60,6 +61,9 @@ const telWebsocket = {
60 61
     SOCKET_CALLOUTSCREEN (state, message) {
61 62
       state.telIsVisCallout = message
62 63
     },
64
+    SOCKET_OUTBOUNDSCREEN (state, message) {
65
+      state.telOutboundScreen = message
66
+    },
63 67
     SOCKET_CALLTELTIME (state, message) {
64 68
       state.telCallTime = message
65 69
     },
@@ -83,7 +87,7 @@ const telWebsocket = {
83 87
     },
84 88
     SOCKET_TELTASKISREFRESH (state, message) {
85 89
       state.telTaskIsRefresh = message
86
-    }
90
+    },
87 91
   },
88 92
   actions: {
89 93
     // 建立连接
@@ -127,6 +131,10 @@ const telWebsocket = {
127 131
     UpdateCalloutScreen ({ commit }, msg) {
128 132
       commit('SOCKET_CALLOUTSCREEN', msg)
129 133
     },
134
+    //外呼是否显示外呼弹屏
135
+    UpdateOutboundScreen ({ commit }, msg) {
136
+      commit('SOCKET_OUTBOUNDSCREEN', msg)
137
+    },
130 138
     // 通话时间
131 139
     UpdateCallTime ({ commit }, msg) {
132 140
       commit('SOCKET_CALLTELTIME', msg)
@@ -135,7 +143,6 @@ const telWebsocket = {
135 143
     ChangeTelWSMsg ({ commit }, msg) {
136 144
       commit('SOCKET_MESSAGE', msg)
137 145
     },
138
-
139 146
     // 修改监听操作是否成功
140 147
     ChangeMonitor ({ commit }, msg) {
141 148
       commit('SOCKET_TELMONITOR', msg)
@@ -152,17 +159,14 @@ const telWebsocket = {
152 159
     ChangeTask ({ commit }, msg) {
153 160
       commit('SOCKET_TELISVISTASK', msg)
154 161
     },
155
-
156 162
     // 任务信息是否是第一次弹出
157 163
     ChangeTaskFirst ({ commit }, msg) {
158 164
       commit('SOCKET_TELISVISTASKFIRST', msg)
159 165
     },
160
-
161 166
     // 是否刷新右上角外呼任务信息/自动外呼监控/外呼分配/我的呼叫任务
162 167
     ChangeTaskInfo ({ commit }, msg) {
163 168
       commit('SOCKET_TELTASKISREFRESH', msg)
164
-    }
165
-
169
+    },
166 170
   }
167 171
 }
168 172
 

+ 7 - 3
CallCenterWeb.UI/src/utils/telWebsocket.js

@@ -343,8 +343,12 @@ function IncomingBack (inComingData) {
343 343
     // router.push({ name: 'autoCallScreen', params: { callid: inComingCallId, telInNumber: inComingNumber }})
344 344
     // router.push({ path: '/callScreen', query: { callid: inComingCallId, telInNumber: inComingNumber }})
345 345
   } else if (inComingData.IncomintType === 2) {
346
-    inComingNumber = inComingData.CalleeNumber
347
-    router.push({ name: 'clickCallScreen', params: { callid: inComingCallId, telInNumber: inComingNumber } })
346
+    if (store.getters.telOutboundScreen) {
347
+      inComingNumber = inComingData.CalleeNumber
348
+      router.push({ name: 'clickCallScreen', params: { callid: inComingCallId, telInNumber: inComingNumber } })
349
+    } else {
350
+      store.dispatch('UpdateOutboundScreen', true)
351
+    }
348 352
     // 自动外呼弹屏 TaskIcon值是任务id
349 353
     // router.push({ name: 'autoCallScreen', params: { callid: inComingCallId, telInNumber: inComingNumber, taskId: inComingData.TaskIcon }})
350 354
   }
@@ -376,7 +380,7 @@ function MakeCallBack (callBackData) {
376 380
   const inComingNumber = store.getters.telCallNum
377 381
   const inComingCallId = callBackData.CallID
378 382
   // 点击外呼弹屏
379
-  router.push({ name: 'clickCallScreen', params: { callid: inComingCallId, telInNumber: inComingNumber } })
383
+  // router.push({ name: 'clickCallScreen', params: { callid: inComingCallId, telInNumber: inComingNumber } })
380 384
   // router.push({ name: 'callScreen', params: { callid: inComingCallId, telInNumber: inComingNumber } })
381 385
 }
382 386
 

+ 53 - 1
CallCenterWeb.UI/src/views/orderManagement/orderList/index.vue

@@ -82,7 +82,12 @@
82 82
         </template>
83 83
       </el-table-column>
84 84
       <el-table-column prop="F_Customer" label="客户姓名" align="center" min-width />
85
-      <el-table-column prop="F_CustomerPhone" label="手机号码" align="center" min-width="140" />
85
+      <el-table-column prop="F_CustomerPhone" label="手机号码" align="center" min-width="140">
86
+        <template slot-scope="scope" >
87
+          {{ scope.row.F_CustomerPhone}}
88
+          <i class="el-icon-phone phoneIcon" @click="clickCallOut(scope.row.F_CustomerPhone)"></i>
89
+        </template>
90
+      </el-table-column>
86 91
       <el-table-column label="订购商品" align="center" min-width>
87 92
         <template slot-scope="scope">{{ scope.row.OrderDetailList | judgmentOrderGoods}}</template>
88 93
       </el-table-column>
@@ -135,6 +140,10 @@
135 140
 import { getDictionaryValueList } from '@/api/commonAPI'
136 141
 import { getOrderLists, cancelOrder } from "@/api/orderManagement/orderList";
137 142
 import { pickerOptions, formatterContent } from "@/utils";
143
+import { Send } from "@/utils/telWebsocket";
144
+import { getCallOutprefix } from '@/api/teloperation'
145
+import { mapGetters } from 'vuex'
146
+import store from '@/store'
138 147
 import edit from "./edit";
139 148
 import detail from './detail';
140 149
 import merge from './merge';
@@ -220,6 +229,16 @@ export default {
220 229
       }
221 230
     };
222 231
   },
232
+  computed: {
233
+    ...mapGetters([
234
+      'usercode', // 工号
235
+      'extension', // 分机号
236
+      'sidebar',
237
+      'avatar',
238
+      'telCallType', // 通话类型
239
+      'telIsVisCallout' // 外呼面板是否显示
240
+    ])
241
+  },
223 242
   methods: {
224 243
     getList () {
225 244
       this.loading = true;
@@ -406,6 +425,36 @@ export default {
406 425
         return false
407 426
       }
408 427
     },
428
+    //外呼
429
+    clickCallOut (phoneNumber) {
430
+      this.callOut(phoneNumber)
431
+    },
432
+    // 外呼
433
+    callOut (phoneNumber) {
434
+      if (phoneNumber) {
435
+        getCallOutprefix(phoneNumber).then(response => {
436
+          if (response.state.toLowerCase() === 'success') {
437
+            const res = response.data
438
+            this.scoketDatas = {
439
+              'Type': 'MakeCall',
440
+              'AgentID': this.usercode,
441
+              'AgentExten': this.extension,
442
+              'Header': res.fix, // 号码前缀 用于截断前缀得到真实号码
443
+              'DestinationNumber': res.phone //
444
+            }
445
+            store.dispatch('ChangeCallNum', phoneNumber)
446
+            Send(this.scoketDatas)
447
+            store.dispatch('UpdateCalloutScreen', false)// 关闭外呼面板
448
+            store.dispatch('UpdateOutboundScreen', false)// 关闭外呼弹屏
449
+          }
450
+        })
451
+      } else {
452
+        this.$message({
453
+          message: '请先输入电话号码!',
454
+          type: 'warning'
455
+        })
456
+      }
457
+    },
409 458
   }
410 459
 };
411 460
 </script>
@@ -414,4 +463,7 @@ export default {
414 463
 .el {
415 464
   cursor: pointer;
416 465
 }
466
+.phoneIcon {
467
+  cursor: pointer;
468
+}
417 469
 </style>

+ 8 - 6
CallCenterWeb.UI/src/views/reportFormManagement/staffPerformance/index.vue

@@ -44,6 +44,9 @@
44 44
           {{ scope.row.F_State | judgmentPerformanceState}}
45 45
         </template>
46 46
       </el-table-column>
47
+      <el-table-column prop="F_Month" label="月份" align="center" min-width />
48
+      <el-table-column prop="F_UserName" label="姓名" align="center" min-width />
49
+      <el-table-column prop="F_AlongMoney" label="总金额" align="center" min-width />
47 50
       <el-table-column prop="F_TaskRate" label="任务完成比例" align="center" min-width />
48 51
       <el-table-column prop="F_SignNumber" label="签收单数" align="center" min-width />
49 52
       <el-table-column prop="F_SignMoney" label="签收金额" align="center" min-width />
@@ -53,8 +56,6 @@
53 56
       <el-table-column prop="F_RefuseMoney" label="拒收金额" align="center" min-width />
54 57
       <el-table-column prop="F_SignRate" label="签收率" align="center" min-width />
55 58
       <el-table-column prop="F_ErrorMoney" label="录错信息金额" align="center" min-width />
56
-      <el-table-column prop="F_ErrorNumber" label="录错信息单数" align="center" min-width />
57
-      <el-table-column prop="F_BackNumber" label="售后退款单数" align="center" min-width />
58 59
       <el-table-column prop="F_BackMoney" label="售后退款金额" align="center" min-width />
59 60
       <!-- <el-table-column prop="F_NoSignMoney" label="鞋垫/袜子金额" align="center" min-width /> -->
60 61
       <el-table-column label="操作" width="220" align="center" class-name="oparate_btn" fixed="right">
@@ -93,8 +94,9 @@ export default {
93 94
     Pagination,
94 95
   },
95 96
   filters: {
96
-    judgmentStateName (status) {
97
+    judgmentPerformanceState (status) {
97 98
       const statusMap = {
99
+        '0': '-',
98 100
         '1': '有异议',
99 101
         '5': '已确认',
100 102
       }
@@ -186,7 +188,7 @@ export default {
186 188
           data: { rowid: editId }, // props
187 189
         },
188 190
         area: ["80%", "70%"],
189
-        title: "绩效申诉",
191
+        title: "编辑绩效",
190 192
       });
191 193
     },
192 194
     btn_appeal(appealId) {
@@ -196,8 +198,8 @@ export default {
196 198
           parent: this, // 当前的vue对象
197 199
           data: { rowid: appealId }, // props
198 200
         },
199
-        area: ["80%", "70%"],
200
-        title: "编辑绩效",
201
+        area: ["40%", "40%"],
202
+        title: "申诉绩效",
201 203
       });
202 204
     },
203 205
     btn_detail(editId) {