Quellcode durchsuchen

话务状态调整

miaofuhao vor 3 Jahren
Ursprung
Commit
bbacf1d4c0

+ 307 - 273
CallCenterWeb.UI/RMYY/src/utils/telWebsocket.js

3
  * 签入后心跳开始;签出后心跳结束;
3
  * 签入后心跳开始;签出后心跳结束;
4
  * 增加心跳 false 处理(签出)
4
  * 增加心跳 false 处理(签出)
5
  */
5
  */
6
-import { Message, MessageBox, Switch } from 'element-ui'
7
-import store from '@/store'
8
-import router from '@/router'
9
-import { Teljournal } from '@/api/commonAPI'
10
-let ws // websocket 实例
11
-let cls = 0
12
-let lockReconnect = false // 避免重复连接
13
-let websocktTimer // 定时器
14
-let wsUrl = null
6
+import { Message, MessageBox, Switch } from "element-ui";
7
+import store from "@/store";
8
+import router from "@/router";
9
+import { Teljournal } from "@/api/commonAPI";
10
+let ws; // websocket 实例
11
+let cls = 0;
12
+let lockReconnect = false; // 避免重复连接
13
+let websocktTimer; // 定时器
14
+let wsUrl = null;
15
 // const wsUrl = 'ws://' + process.env.SOCKET_IP + ':' + process.env.SOCKET_PORT
15
 // const wsUrl = 'ws://' + process.env.SOCKET_IP + ':' + process.env.SOCKET_PORT
16
 // 创建scoket连接
16
 // 创建scoket连接
17
 export function createWebSocket() {
17
 export function createWebSocket() {
18
   wsUrl =
18
   wsUrl =
19
-    'ws://' +
19
+    "ws://" +
20
     store.getters.serverConfig.SOCKET_IP +
20
     store.getters.serverConfig.SOCKET_IP +
21
-    ':' +
22
-    store.getters.serverConfig.SOCKET_PORT // 请求地址
21
+    ":" +
22
+    store.getters.serverConfig.SOCKET_PORT; // 请求地址
23
   try {
23
   try {
24
-    if ('WebSocket' in window) {
25
-      ws = new WebSocket(wsUrl) // 创建一个websocket实例
26
-      init()
24
+    if ("WebSocket" in window) {
25
+      ws = new WebSocket(wsUrl); // 创建一个websocket实例
26
+      init();
27
     } else {
27
     } else {
28
-      Message.error('当前浏览器不支持Websocket!')
28
+      Message.error("当前浏览器不支持Websocket!");
29
     }
29
     }
30
   } catch (e) {
30
   } catch (e) {
31
-    reconnect()
31
+    reconnect();
32
   }
32
   }
33
 }
33
 }
34
 
34
 
36
 function init() {
36
 function init() {
37
   ws.onopen = function() {
37
   ws.onopen = function() {
38
     // console.groupCollapsed(`telWebsocket:`)
38
     // console.groupCollapsed(`telWebsocket:`)
39
-    console.log(new Date() + '  telWebsocket  ' + '建立连接:' + wsUrl)
39
+    console.log(new Date() + "  telWebsocket  " + "建立连接:" + wsUrl);
40
     // signIn()
40
     // signIn()
41
     // 修改store 中连接状态
41
     // 修改store 中连接状态
42
-    store.dispatch('ConnectWs', true)
42
+    store.dispatch("ConnectWs", true);
43
     // 修改 store 中telwebsocket的数据
43
     // 修改 store 中telwebsocket的数据
44
-    store.dispatch('ChangeTelWSMsg', {
44
+    store.dispatch("ChangeTelWSMsg", {
45
       wsUrl: wsUrl,
45
       wsUrl: wsUrl,
46
-      operationType: '建立连接'
47
-    })
48
-    if (Number(window.sessionStorage.getItem('storageSeatState'))) {
49
-      signIn()
46
+      operationType: "建立连接"
47
+    });
48
+    if (Number(window.sessionStorage.getItem("storageSeatState"))) {
49
+      signIn();
50
     }
50
     }
51
-    if (Number(window.sessionStorage.getItem('telIsLogin'))) {
51
+    if (Number(window.sessionStorage.getItem("telIsLogin"))) {
52
       // heartCheck.reset().start()
52
       // heartCheck.reset().start()
53
       // heartCheck.sendHeart()
53
       // heartCheck.sendHeart()
54
     }
54
     }
55
-  }
55
+  };
56
 
56
 
57
   // 接收到消息的回调方法
57
   // 接收到消息的回调方法
58
   ws.onmessage = function(evt) {
58
   ws.onmessage = function(evt) {
60
     // 拿到任何消息都说明当前连接是正常的
60
     // 拿到任何消息都说明当前连接是正常的
61
     // heartCheck.reset().start()
61
     // heartCheck.reset().start()
62
     console.log(
62
     console.log(
63
-      '%c' +
63
+      "%c" +
64
         new Date() +
64
         new Date() +
65
-        '%c receive%c telWebsocket %ctype:' +
65
+        "%c receive%c telWebsocket %ctype:" +
66
         JSON.parse(evt.data)[0].Type +
66
         JSON.parse(evt.data)[0].Type +
67
-        '%c ' +
67
+        "%c " +
68
         evt.data,
68
         evt.data,
69
-      'color: #111',
70
-      'color: #67C23A',
71
-      'color: #111',
72
-      'color: #67C23A',
73
-      'color: #111'
74
-    )
75
-    dealMsg(JSON.parse(evt.data)[0])
69
+      "color: #111",
70
+      "color: #67C23A",
71
+      "color: #111",
72
+      "color: #67C23A",
73
+      "color: #111"
74
+    );
75
+    dealMsg(JSON.parse(evt.data)[0]);
76
     // 修改 store 中telwebsocket的数据
76
     // 修改 store 中telwebsocket的数据
77
-    const telWSData = JSON.parse(evt.data)
78
-    telWSData.operationType = '接收'
79
-    store.dispatch('ChangeTelWSMsg', telWSData)
80
-  }
77
+    const telWSData = JSON.parse(evt.data);
78
+    telWSData.operationType = "接收";
79
+    store.dispatch("ChangeTelWSMsg", telWSData);
80
+  };
81
 
81
 
82
   // 连接关闭的回调方法
82
   // 连接关闭的回调方法
83
   ws.onclose = function(evt) {
83
   ws.onclose = function(evt) {
84
     if (cls === 0) {
84
     if (cls === 0) {
85
-      cls = 1
86
-      console.log('telWebsocket连接关闭')
85
+      cls = 1;
86
+      console.log("telWebsocket连接关闭");
87
       // console.groupEnd()
87
       // console.groupEnd()
88
       // 修改store 中连接状态
88
       // 修改store 中连接状态
89
-      store.dispatch('ConnectWs', false)
90
-      store.dispatch('ChangeLineState', 1)
89
+      store.dispatch("ConnectWs", false);
90
+      store.dispatch("ChangeLineState", 1);
91
       // 修改 store 中telwebsocket的数据
91
       // 修改 store 中telwebsocket的数据
92
-      store.dispatch('ChangeTelWSMsg', {
92
+      store.dispatch("ChangeTelWSMsg", {
93
         wsUrl: wsUrl,
93
         wsUrl: wsUrl,
94
-        operationType: '连接关闭'
95
-      })
96
-      reconnect()
94
+        operationType: "连接关闭"
95
+      });
96
+      reconnect();
97
     }
97
     }
98
-  }
98
+  };
99
 
99
 
100
   // 连接发生错误的回调方法
100
   // 连接发生错误的回调方法
101
   ws.onerror = function(evt) {
101
   ws.onerror = function(evt) {
110
     // })
110
     // })
111
     // console.warn('telWebsocket连接出现异常!')
111
     // console.warn('telWebsocket连接出现异常!')
112
     // 修改 store 中telwebsocket的数据
112
     // 修改 store 中telwebsocket的数据
113
-    store.dispatch('ChangeTelWSMsg', {
113
+    store.dispatch("ChangeTelWSMsg", {
114
       wsUrl: wsUrl,
114
       wsUrl: wsUrl,
115
-      operationType: '连接异常'
116
-    })
115
+      operationType: "连接异常"
116
+    });
117
     if (ws == null || ws.readyState !== ws.OPEN) {
117
     if (ws == null || ws.readyState !== ws.OPEN) {
118
-      console.log(new Date() + 'telWebsocket开始重连')
118
+      console.log(new Date() + "telWebsocket开始重连");
119
       // 修改 store 中telwebsocket的数据
119
       // 修改 store 中telwebsocket的数据
120
-      store.dispatch('ChangeTelWSMsg', {
120
+      store.dispatch("ChangeTelWSMsg", {
121
         wsUrl: wsUrl,
121
         wsUrl: wsUrl,
122
-        operationType: '开始重连'
123
-      })
124
-      reconnect()
122
+        operationType: "开始重连"
123
+      });
124
+      reconnect();
125
     }
125
     }
126
-  }
126
+  };
127
 }
127
 }
128
 
128
 
129
 /**
129
 /**
130
  * 重新连接
130
  * 重新连接
131
  */
131
  */
132
 function reconnect() {
132
 function reconnect() {
133
-  if (lockReconnect) return
134
-  lockReconnect = true
133
+  if (lockReconnect) return;
134
+  lockReconnect = true;
135
   // 没连接上会一直重连,设置延迟避免请求过多
135
   // 没连接上会一直重连,设置延迟避免请求过多
136
-  websocktTimer && clearTimeout(websocktTimer)
136
+  websocktTimer && clearTimeout(websocktTimer);
137
   websocktTimer = setTimeout(function() {
137
   websocktTimer = setTimeout(function() {
138
-    console.log(new Date() + '    ' + 'telWebsocket重连中……')
138
+    console.log(new Date() + "    " + "telWebsocket重连中……");
139
     // 修改 store 中telwebsocket的数据
139
     // 修改 store 中telwebsocket的数据
140
-    store.dispatch('ChangeTelWSMsg', {
140
+    store.dispatch("ChangeTelWSMsg", {
141
       wsUrl: wsUrl,
141
       wsUrl: wsUrl,
142
-      operationType: '重连中……'
143
-    })
144
-    createWebSocket()
145
-    lockReconnect = false
146
-  }, 2000)
142
+      operationType: "重连中……"
143
+    });
144
+    createWebSocket();
145
+    lockReconnect = false;
146
+  }, 2000);
147
 }
147
 }
148
 
148
 
149
 /**
149
 /**
152
  */
152
  */
153
 export function Send(scoketDatas) {
153
 export function Send(scoketDatas) {
154
   if (ws.readyState !== ws.OPEN) {
154
   if (ws.readyState !== ws.OPEN) {
155
-    reconnect()
155
+    reconnect();
156
   }
156
   }
157
   if (ws.readyState === ws.OPEN) {
157
   if (ws.readyState === ws.OPEN) {
158
     console.log(
158
     console.log(
159
-      '%c' +
159
+      "%c" +
160
         new Date() +
160
         new Date() +
161
-        '%c  send %c telWebsocket  ' +
161
+        "%c  send %c telWebsocket  " +
162
         JSON.stringify(scoketDatas),
162
         JSON.stringify(scoketDatas),
163
-      'color: #111',
164
-      'color: #409EFF',
165
-      'color: #111'
166
-    )
167
-    ws.send(JSON.stringify(scoketDatas))
168
-    scoketDatas.operationType = '发送'
163
+      "color: #111",
164
+      "color: #409EFF",
165
+      "color: #111"
166
+    );
167
+    ws.send(JSON.stringify(scoketDatas));
168
+    scoketDatas.operationType = "发送";
169
     // 修改 store 中telwebsocket的数据
169
     // 修改 store 中telwebsocket的数据
170
-    store.dispatch('ChangeTelWSMsg', scoketDatas)
170
+    store.dispatch("ChangeTelWSMsg", scoketDatas);
171
   }
171
   }
172
 }
172
 }
173
 
173
 
177
   timeoutObj: null,
177
   timeoutObj: null,
178
   serverTimeoutObj: null,
178
   serverTimeoutObj: null,
179
   reset: function() {
179
   reset: function() {
180
-    clearTimeout(this.timeoutObj)
181
-    clearTimeout(this.serverTimeoutObj)
182
-    return this
180
+    clearTimeout(this.timeoutObj);
181
+    clearTimeout(this.serverTimeoutObj);
182
+    return this;
183
   },
183
   },
184
 
184
 
185
   start: function() {
185
   start: function() {
186
-    const _self = this
186
+    const _self = this;
187
     this.timeoutObj = setTimeout(function() {
187
     this.timeoutObj = setTimeout(function() {
188
       // 这里发送一个心跳,后端收到后,返回一个心跳消息,
188
       // 这里发送一个心跳,后端收到后,返回一个心跳消息,
189
       // onmessage拿到返回的心跳就说明连接正常
189
       // onmessage拿到返回的心跳就说明连接正常
190
-      _self.sendHeart()
191
-      _self.aa()
192
-    }, this.timeout)
190
+      _self.sendHeart();
191
+      _self.aa();
192
+    }, this.timeout);
193
   },
193
   },
194
   sendHeart: function() {
194
   sendHeart: function() {
195
     const scoketDatas = {
195
     const scoketDatas = {
196
-      Type: 'Heart',
196
+      Type: "Heart",
197
       Result: true,
197
       Result: true,
198
       AgentID: store.getters.usercode, // 工号
198
       AgentID: store.getters.usercode, // 工号
199
       AgentExten: store.getters.extension, // 分机号
199
       AgentExten: store.getters.extension, // 分机号
200
       // AgentGroup: 1 // 坐席组id
200
       // AgentGroup: 1 // 坐席组id
201
       AgentGroup: store.getters.groupcode // 坐席组id
201
       AgentGroup: store.getters.groupcode // 坐席组id
202
-
203
-    }
204
-    Send(scoketDatas)
202
+    };
203
+    Send(scoketDatas);
205
   }
204
   }
206
-}
205
+};
207
 // 迁入
206
 // 迁入
208
 function signIn() {
207
 function signIn() {
209
   // if(!this.groupcode){
208
   // if(!this.groupcode){
224
   //   return
223
   //   return
225
   // }
224
   // }
226
   const scoketDatas = {
225
   const scoketDatas = {
227
-    Type: 'Login',
226
+    Type: "Login",
228
     AgentID: store.getters.usercode,
227
     AgentID: store.getters.usercode,
229
     AgentExten: store.getters.extension,
228
     AgentExten: store.getters.extension,
230
     // AgentGroup: window.localStorage.getItem("groupCode"), // 坐席组id window.localStorage.getItem('groupCode')
229
     // AgentGroup: window.localStorage.getItem("groupCode"), // 坐席组id window.localStorage.getItem('groupCode')
231
-    AgentGroup: '364',
232
-    AgentType: '0',
233
-    DisposeTime: '0' // 话后处理时长设置,0代表一致话后处理,除非发送置闲 (按照历史习惯,字符串形式)
234
-  }
235
-  Send(scoketDatas)
230
+    AgentGroup: "1",
231
+    AgentType: "0",
232
+    DisposeTime: "0" // 话后处理时长设置,0代表一致话后处理,除非发送置闲 (按照历史习惯,字符串形式)
233
+  };
234
+  Send(scoketDatas);
236
 }
235
 }
237
 /**
236
 /**
238
  * 处理接收的消息
237
  * 处理接收的消息
240
  */
239
  */
241
 function dealMsg(msgData) {
240
 function dealMsg(msgData) {
242
   if (msgData) {
241
   if (msgData) {
243
-    const rlt = msgData.Result
242
+    const rlt = msgData.Result;
244
     if (rlt === true) {
243
     if (rlt === true) {
245
       switch (msgData.Type.toLowerCase()) {
244
       switch (msgData.Type.toLowerCase()) {
246
-        case 'login': // 签入
247
-          LoginBack()
248
-          break
249
-        case 'logout': // 签出
250
-          LogoutBack()
251
-          break
252
-        case 'dropcall': // 挂断
253
-          DropCallBack()
254
-          break
255
-        case 'makecall': // 外呼
256
-          MakeCallBack(msgData)
257
-          break
258
-        case 'setstate': // 置忙 置闲
259
-          SetState(msgData)
260
-          break // 置忙置闲
261
-        case 'meeting': // 会议
262
-          MeetingBack(msgData)
263
-          break
264
-        case 'meetingtakeback':
265
-          MeetingTakeBackFun(msgData)
266
-          break // 多方通话回签
267
-        case 'transfer': // 转移
268
-          TransferBack()
269
-          break
245
+        case "login": // 签入
246
+          LoginBack();
247
+          break;
248
+        case "logout": // 签出
249
+          LogoutBack();
250
+          break;
251
+        case "dropcall": // 挂断
252
+          DropCallBack();
253
+          break;
254
+        case "makecall": // 外呼
255
+          MakeCallBack(msgData);
256
+          break;
257
+        case "setstate": // 置忙 置闲
258
+          SetState(msgData);
259
+          break; // 置忙置闲
260
+        case "meeting": // 会议
261
+          MeetingBack(msgData);
262
+          break;
263
+        case "meetingtakeback":
264
+          MeetingTakeBackFun(msgData);
265
+          break; // 多方通话回签
266
+        case "transfer": // 转移
267
+          TransferBack();
268
+          break;
270
         // case 'consult': // 协商呼叫
269
         // case 'consult': // 协商呼叫
271
         //   ConsultBack()
270
         //   ConsultBack()
272
         //   break
271
         //   break
273
-        case 'hold': // 保持
274
-          HoldBack(msgData)
275
-          break
276
-        case 'retrieve': // 接回
277
-          RetrieveBack()
278
-          break
279
-        case 'incoming': // 来电
280
-          IncomingBack(msgData)
281
-          break
282
-        case 'linestateagent': // 线路状态
283
-          LineStateAgentBack(msgData)
284
-          break
285
-        case 'agentstate': // 线路状态
286
-          updateSeatMonitorlists(msgData)
287
-          break
288
-        case 'getagentlist':
289
-          getAgentList(msgData)
290
-          break
291
-        case 'callid':
292
-          getCallid(msgData)
293
-          break
272
+        case "hold": // 保持
273
+          HoldBack(msgData);
274
+          break;
275
+        case "retrieve": // 接回
276
+          RetrieveBack();
277
+          break;
278
+        case "incoming": // 来电
279
+          IncomingBack(msgData);
280
+          break;
281
+        case "linestateagent": // 线路状态
282
+          LineStateAgentBack(msgData);
283
+          break;
284
+        case "agentstateagent": // 线路状态
285
+          agentstateagentBack(msgData);
286
+
287
+        case "agentstate": // 线路状态
288
+          updateSeatMonitorlists(msgData);
289
+          break;
290
+        case "getagentlist":
291
+          getAgentList(msgData);
292
+          break;
293
+        case "callid":
294
+          getCallid(msgData);
295
+          break;
294
       }
296
       }
295
     } else if (rlt === false) {
297
     } else if (rlt === false) {
296
-      var texs = ''
298
+      var texs = "";
297
       // const errCode = msgData.Error % 10000
299
       // const errCode = msgData.Error % 10000
298
-      if (msgData.Type.toLowerCase() === 'meeting') {
299
-        window.localStorage.setItem('meetingTransfer', 0)
300
-        if(window.localStorage.getItem('meetingType') == '转接'){
301
-          texs = '转接失败'
300
+      if (msgData.Type.toLowerCase() === "meeting") {
301
+        window.localStorage.setItem("meetingTransfer", 0);
302
+        if (window.localStorage.getItem("meetingType") == "转接") {
303
+          texs = "转接失败";
302
         }
304
         }
303
-        if(window.localStorage.getItem('meetingType') == '多方通话'){
304
-          texs = '多方通话失败'
305
+        if (window.localStorage.getItem("meetingType") == "多方通话") {
306
+          texs = "多方通话失败";
305
         }
307
         }
306
-      }else{
307
-        texs = msgData.Type
308
+      } else if (msgData.Type.toLowerCase() === "transfer") {
309
+        texs = "转接失败";
310
+      } else if (msgData.Type.toLowerCase() === "makecall") {
311
+        texs = "外呼失败";
312
+      } else {
313
+        texs = msgData.Type;
308
       }
314
       }
309
       Message({
315
       Message({
310
         dangerouslyUseHTMLString: true,
316
         dangerouslyUseHTMLString: true,
311
         message:
317
         message:
312
           '<div style="font-size:32px;font-weight: 700;text-align: center; width:100%;margin: 0 auto;">' +
318
           '<div style="font-size:32px;font-weight: 700;text-align: center; width:100%;margin: 0 auto;">' +
313
           texs +
319
           texs +
314
-          '</div>',
320
+          "</div>",
315
         offset: 400,
321
         offset: 400,
316
         center: true,
322
         center: true,
317
-        type: 'error',
323
+        type: "error",
318
         duration: 2 * 1000
324
         duration: 2 * 1000
319
-      })
325
+      });
320
     } else {
326
     } else {
321
-      if (msgData.Type.toLowerCase() === 'linestateagent') {
322
-        LineStateAgentBack(msgData)
323
-      } else if (msgData.Type.toLowerCase() === 'monitor') {
324
-        updateSeatMonitorlists(msgData)
325
-      } else if (msgData.Type.toLowerCase() === 'waitcount') {
326
-        console.log(msgData.Type)
327
-        store.dispatch('ChangeWaitcountNumber', msgData.WaitCount)
327
+      if (msgData.Type.toLowerCase() === "linestateagent") {
328
+        LineStateAgentBack(msgData);
329
+      } else if (msgData.Type.toLowerCase() === "monitor") {
330
+        updateSeatMonitorlists(msgData);
331
+      } else if (msgData.Type.toLowerCase() === "waitcount") {
332
+        console.log(msgData.Type);
333
+        store.dispatch("ChangeWaitcountNumber", msgData.WaitCount);
328
       } else {
334
       } else {
329
         // Message.error(`${rlt} !`)
335
         // Message.error(`${rlt} !`)
330
         Message({
336
         Message({
332
           message:
338
           message:
333
             '<div style="font-size:42px;font-weight: 700;text-align: center; width:80%;margin: 0 auto;">' +
339
             '<div style="font-size:42px;font-weight: 700;text-align: center; width:80%;margin: 0 auto;">' +
334
             rlt +
340
             rlt +
335
-            '</div>',
341
+            "</div>",
336
           offset: 400,
342
           offset: 400,
337
           center: true,
343
           center: true,
338
-          type: 'error',
344
+          type: "error",
339
           duration: 2 * 1000
345
           duration: 2 * 1000
340
-        })
346
+        });
341
       }
347
       }
342
     }
348
     }
343
   }
349
   }
344
 }
350
 }
345
 
351
 
346
 function updateSeatMonitorlists(msgData) {
352
 function updateSeatMonitorlists(msgData) {
347
-  store.dispatch('ChangeMonitor', true) // 修改监听操作的返回值
348
-  store.dispatch('ChangeMonitorstate', msgData.State) // 监控状态
349
-  store.dispatch('ChangeMonitoragent', msgData.AgentID) // 监控坐席
350
-  store.dispatch('ChangeMonitorexten', msgData.ExtenID) // 监控坐席
353
+  store.dispatch("ChangeMonitor", true); // 修改监听操作的返回值
354
+  store.dispatch("ChangeMonitorstate", msgData.State); // 监控状态
355
+  store.dispatch("ChangeMonitoragent", msgData.AgentID); // 监控坐席
356
+  store.dispatch("ChangeMonitorexten", msgData.ExtenID); // 监控坐席
351
 }
357
 }
352
 function getCallid(msgData) {
358
 function getCallid(msgData) {
353
-  window.localStorage.setItem('callid', msgData.CurrID)
354
-  console.log(window.localStorage.getItem('callid'), '11')
359
+  window.localStorage.setItem("callid", msgData.CurrID);
360
+  console.log(window.localStorage.getItem("callid"), "11");
355
 }
361
 }
356
 // 签入
362
 // 签入
357
 function LoginBack(reState) {
363
 function LoginBack(reState) {
358
   // 心跳检测开始
364
   // 心跳检测开始
359
   // heartCheck.reset().start()
365
   // heartCheck.reset().start()
360
-  cls = 0
361
-  store.dispatch('LoginWs')
362
-  store.dispatch('ChangeTopRightState', ['空闲', true])
366
+  cls = 0;
367
+  store.dispatch("LoginWs");
368
+  store.dispatch("ChangeTopRightState", ["空闲", true]);
363
   // 弹出任务信息
369
   // 弹出任务信息
364
-  store.dispatch('ChangeTask', true)
365
-  let scoketDatas = {}
366
-  if (Number(window.sessionStorage.getItem('storageSeatState')) === 2) {
370
+  store.dispatch("ChangeTask", true);
371
+  let scoketDatas = {};
372
+  if (Number(window.sessionStorage.getItem("storageSeatState")) === 2) {
367
     scoketDatas = {
373
     scoketDatas = {
368
-      Type: 'SayFree',
369
-      AgentID: window.localStorage.getItem('storageUsercode'),
370
-      AgentExten: window.localStorage.getItem('ext')
371
-    }
372
-    Send(scoketDatas)
373
-  } else if (Number(window.sessionStorage.getItem('storageSeatState')) === 5) {
374
+      Type: "SayFree",
375
+      AgentID: window.localStorage.getItem("storageUsercode"),
376
+      AgentExten: window.localStorage.getItem("ext")
377
+    };
378
+    Send(scoketDatas);
379
+  } else if (Number(window.sessionStorage.getItem("storageSeatState")) === 5) {
374
     scoketDatas = {
380
     scoketDatas = {
375
-      Type: 'SayBusy',
376
-      AgentID: window.localStorage.getItem('storageUsercode'),
377
-      AgentExten: window.localStorage.getItem('ext')
378
-    }
379
-    Send(scoketDatas)
381
+      Type: "SayBusy",
382
+      AgentID: window.localStorage.getItem("storageUsercode"),
383
+      AgentExten: window.localStorage.getItem("ext")
384
+    };
385
+    Send(scoketDatas);
380
   } else {
386
   } else {
381
-    window.sessionStorage.setItem('storageSeatState', 2)
387
+    window.sessionStorage.setItem("storageSeatState", 2);
382
   }
388
   }
383
 }
389
 }
384
 
390
 
386
 function LogoutBack(reState) {
392
 function LogoutBack(reState) {
387
   // 心跳检测关闭
393
   // 心跳检测关闭
388
   // heartCheck.reset()
394
   // heartCheck.reset()
389
-  store.dispatch('LogoutWs')
390
-  store.dispatch('ChangeTopRightState', ['已签出', false])
395
+  store.dispatch("LogoutWs");
396
+  store.dispatch("ChangeTopRightState", ["已签出", false]);
391
   // 重置初始化状态
397
   // 重置初始化状态
392
-  resetInitState()
393
-  window.sessionStorage.setItem('storageSeatState', 0)
394
-  getOperatonTime('2')
395
-  console.log('签出2')
398
+  resetInitState();
399
+  window.sessionStorage.setItem("storageSeatState", 0);
400
+  getOperatonTime("2");
401
+  console.log("签出2");
396
 }
402
 }
397
 
403
 
398
 // 重置初始化状态
404
 // 重置初始化状态
399
 function resetInitState() {
405
 function resetInitState() {
400
-  store.dispatch('ChangeSeatState', 2) // 坐席状态(空闲)
401
-  store.dispatch('ChangeLineState', 1) // 线路状态(空闲)
402
-  store.dispatch('ChangeCallNum', '') // 顶部电话号码('')
403
-  store.dispatch('ChangeCallType', 'MakeCall') // 发送的通话类型(默认是外呼)
404
-  store.dispatch('ChangeTask', false) // 外呼任务信息是否显示
405
-  store.dispatch('ChangeTaskFirst', true) // 外呼任务信息是否是第一次弹出
406
+  store.dispatch("ChangeSeatState", 2); // 坐席状态(空闲)
407
+  store.dispatch("ChangeLineState", 1); // 线路状态(空闲)
408
+  store.dispatch("ChangeCallNum", ""); // 顶部电话号码('')
409
+  store.dispatch("ChangeCallType", "MakeCall"); // 发送的通话类型(默认是外呼)
410
+  store.dispatch("ChangeTask", false); // 外呼任务信息是否显示
411
+  store.dispatch("ChangeTaskFirst", true); // 外呼任务信息是否是第一次弹出
406
 }
412
 }
407
 
413
 
408
 /**
414
 /**
411
  * */
417
  * */
412
 function SetState(sayOption) {
418
 function SetState(sayOption) {
413
   if (sayOption.State === 5) {
419
   if (sayOption.State === 5) {
414
-    store.dispatch('ChangeSeatState', 5)
415
-    window.sessionStorage.setItem('storageSeatState', 5)
416
-    store.dispatch('ChangeTopRightState', ['忙碌', false])
417
-    getOperatonTime('3')
418
-    console.log('置忙3')
420
+    store.dispatch("ChangeSeatState", 5);
421
+    window.sessionStorage.setItem("storageSeatState", 5);
422
+    store.dispatch("ChangeTopRightState", ["忙碌", false]);
423
+    getOperatonTime("3");
424
+    console.log("置忙3");
419
   } else if (sayOption.State === 2) {
425
   } else if (sayOption.State === 2) {
420
-    store.dispatch('ChangeSeatState', 2)
421
-    window.sessionStorage.setItem('storageSeatState', 2)
422
-    store.dispatch('ChangeTopRightState', ['空闲', true])
423
-    getOperatonTime('4')
424
-    console.log('置闲4')
426
+    store.dispatch("ChangeSeatState", 2);
427
+    window.sessionStorage.setItem("storageSeatState", 2);
428
+    store.dispatch("ChangeTopRightState", ["空闲", true]);
429
+    getOperatonTime("4");
430
+    console.log("置闲4");
425
   }
431
   }
426
 }
432
 }
427
 
433
 
430
  * sayOption (点击置忙置闲后的返回值)
436
  * sayOption (点击置忙置闲后的返回值)
431
  * */
437
  * */
432
 function SayBusyBack(sayOption) {
438
 function SayBusyBack(sayOption) {
433
-  store.dispatch('ChangeSeatState', 5)
434
-  if (sayOption.Type === 'SayBusy') {
435
-    store.dispatch('ChangeTopRightState', ['忙碌', false])
439
+  store.dispatch("ChangeSeatState", 5);
440
+  if (sayOption.Type === "SayBusy") {
441
+    store.dispatch("ChangeTopRightState", ["忙碌", false]);
436
   }
442
   }
437
 }
443
 }
438
 /**
444
 /**
440
  * sayOption (点击置忙置闲后的返回值)
446
  * sayOption (点击置忙置闲后的返回值)
441
  * */
447
  * */
442
 function SayFreeBack(sayOption) {
448
 function SayFreeBack(sayOption) {
443
-  store.dispatch('ChangeSeatState', 2)
444
-  if (sayOption.Type === 'SayFree') {
445
-    store.dispatch('ChangeTopRightState', ['空闲', true])
449
+  store.dispatch("ChangeSeatState", 2);
450
+  if (sayOption.Type === "SayFree") {
451
+    store.dispatch("ChangeTopRightState", ["空闲", true]);
452
+  }
453
+}
454
+// 坐席状态变化
455
+function agentstateagentBack(msgData) {
456
+  switch (msgData.AgentState + "") {
457
+    case "0":
458
+      store.dispatch("ChangeTopRightState", ["离线", true]);
459
+      break; //离线
460
+    case "1":
461
+      store.dispatch("ChangeTopRightState", ["登录中", true]);
462
+      break; //登录中
463
+    case "2":
464
+      store.dispatch("ChangeTopRightState", ["空闲", true]);
465
+      break; //空闲
466
+    case "3":
467
+      store.dispatch("ChangeTopRightState", ["通话中", true]);
468
+      break; //通话中
469
+    case "4":
470
+      store.dispatch("ChangeTopRightState", ["话后处理中", true]);
471
+      break; //话后处理中
472
+    case "5":
473
+      store.dispatch("ChangeTopRightState", ["忙碌", true]);
474
+      break; //小休
475
+    case "6":
476
+      store.dispatch("ChangeTopRightState", ["振铃", true]);
477
+      break; //被请求
478
+    case "7":
479
+      store.dispatch("ChangeTopRightState", ["注销", true]);
480
+      break; //注销
446
   }
481
   }
447
 }
482
 }
448
-
449
 // 线路状态通知
483
 // 线路状态通知
450
 function LineStateAgentBack(linedata) {
484
 function LineStateAgentBack(linedata) {
451
   // 0分机不可用,1空闲,2摘机等待拨号,3正在拨号,4呼出振铃,5来电振铃,6通话中,7播放忙音中,8移除IP分机,10通话保持中
485
   // 0分机不可用,1空闲,2摘机等待拨号,3正在拨号,4呼出振铃,5来电振铃,6通话中,7播放忙音中,8移除IP分机,10通话保持中
453
   switch (linedata.State) {
487
   switch (linedata.State) {
454
     // case '空闲':
488
     // case '空闲':
455
     case 1:
489
     case 1:
456
-      store.dispatch('ChangeLineState', 1)
457
-      store.dispatch('ChangeCallNum', '') // 顶部电话号码('')
458
-      store.dispatch('ChangeTopRightState', ['空闲', true])
459
-      break
490
+      store.dispatch("ChangeLineState", 1);
491
+      store.dispatch("ChangeCallNum", ""); // 顶部电话号码('')
492
+      store.dispatch("ChangeTopRightState", ["1111", true]);
493
+      break;
460
     // case '摘机等待拨号':
494
     // case '摘机等待拨号':
461
     case 2:
495
     case 2:
462
-      store.dispatch('ChangeLineState', 2)
463
-      store.dispatch('ChangeTopRightState', ['摘机等待拨号', true])
464
-      break
496
+      store.dispatch("ChangeLineState", 2);
497
+      store.dispatch("ChangeTopRightState", ["摘机等待拨号", true]);
498
+      break;
465
     // case '正在拨号':
499
     // case '正在拨号':
466
     case 3:
500
     case 3:
467
-      store.dispatch('ChangeLineState', 3)
468
-      store.dispatch('ChangeTopRightState', ['正在拨号', true])
469
-      break
501
+      store.dispatch("ChangeLineState", 3);
502
+      store.dispatch("ChangeTopRightState", ["正在拨号", true]);
503
+      break;
470
     // case '呼出振铃':
504
     // case '呼出振铃':
471
     case 4:
505
     case 4:
472
-      store.dispatch('ChangeLineState', 4)
473
-      store.dispatch('ChangeTopRightState', ['呼出振铃', true])
474
-      break
506
+      store.dispatch("ChangeLineState", 4);
507
+      store.dispatch("ChangeTopRightState", ["呼出振铃", true]);
508
+      break;
475
     // case '来电振铃':
509
     // case '来电振铃':
476
     case 5:
510
     case 5:
477
-      store.dispatch('ChangeLineState', 5)
478
-      store.dispatch('ChangeTopRightState', ['来电振铃', true])
479
-      break
511
+      store.dispatch("ChangeLineState", 5);
512
+      store.dispatch("ChangeTopRightState", ["来电振铃", true]);
513
+      break;
480
     // case '通话中':
514
     // case '通话中':
481
     case 6:
515
     case 6:
482
-      store.dispatch('ChangeLineState', 6)
483
-      store.dispatch('ChangeTopRightState', ['通话中', true])
484
-      break
516
+      store.dispatch("ChangeLineState", 6);
517
+      store.dispatch("ChangeTopRightState", ["通话中", true]);
518
+      break;
485
     // case '播放忙音中':
519
     // case '播放忙音中':
486
     case 7:
520
     case 7:
487
-      store.dispatch('ChangeLineState', 7)
488
-      store.dispatch('ChangeTopRightState', ['播放忙音中', true])
489
-      break
521
+      store.dispatch("ChangeLineState", 7);
522
+      store.dispatch("ChangeTopRightState", ["播放忙音中", true]);
523
+      break;
490
     // case '移除IP分机':
524
     // case '移除IP分机':
491
     case 8:
525
     case 8:
492
-      store.dispatch('ChangeLineState', 8)
493
-      store.dispatch('ChangeTopRightState', ['移除IP分机', true])
494
-      break
526
+      store.dispatch("ChangeLineState", 8);
527
+      store.dispatch("ChangeTopRightState", ["移除IP分机", true]);
528
+      break;
495
     // case '通话保持中':
529
     // case '通话保持中':
496
     case 10:
530
     case 10:
497
-      store.dispatch('ChangeLineState', 10)
498
-      store.dispatch('ChangeTopRightState', ['通话保持中', true])
499
-      break
531
+      store.dispatch("ChangeLineState", 10);
532
+      store.dispatch("ChangeTopRightState", ["通话保持中", true]);
533
+      break;
500
   }
534
   }
501
 }
535
 }
502
 
536
 
503
 // 来电
537
 // 来电
504
 function IncomingBack(inComingData) {
538
 function IncomingBack(inComingData) {
505
-  const inComingCallId = inComingData.CallID
506
-  let inComingNumber = inComingData.Number
507
-  store.dispatch('screenPopUpBoole', 1)
539
+  const inComingCallId = inComingData.CallID;
540
+  let inComingNumber = inComingData.Number;
541
+  store.dispatch("screenPopUpBoole", 1);
508
   if (inComingNumber.length > 11) {
542
   if (inComingNumber.length > 11) {
509
-    inComingNumber = inComingNumber.substr(1)
543
+    inComingNumber = inComingNumber.substr(1);
510
     // console.log(inComingNumber)
544
     // console.log(inComingNumber)
511
   }
545
   }
512
-  window.localStorage.setItem('callidSave', inComingData.CallID) // 用户的坐席组code
546
+  window.localStorage.setItem("callidSave", inComingData.CallID); // 用户的坐席组code
513
   router.push({
547
   router.push({
514
-    name: 'CallScreen',
515
-    path: '/callScreen',
516
-    fullPath: '/callScreen',
548
+    name: "CallScreen",
549
+    path: "/callScreen",
550
+    fullPath: "/callScreen",
517
     params: {
551
     params: {
518
       callid: inComingCallId,
552
       callid: inComingCallId,
519
       telInNumber: inComingNumber
553
       telInNumber: inComingNumber
520
     }
554
     }
521
-  })
522
-  store.dispatch('ChangeCallNum', inComingNumber)
555
+  });
556
+  store.dispatch("ChangeCallNum", inComingNumber);
523
 }
557
 }
524
 
558
 
525
 // 挂断
559
 // 挂断
526
 function DropCallBack() {
560
 function DropCallBack() {
527
-  store.dispatch('ChangeCallNum', '') // 顶部电话号码('')
528
-  store.dispatch('ChangeCallType', 'MakeCall') // 发送的通话类型(默认是外呼)
529
-  store.dispatch('screenPopUpBoole', 0)
561
+  store.dispatch("ChangeCallNum", ""); // 顶部电话号码('')
562
+  store.dispatch("ChangeCallType", "MakeCall"); // 发送的通话类型(默认是外呼)
563
+  store.dispatch("screenPopUpBoole", 0);
530
   // 当前在坐席监控中需要 更新坐席监控内坐席的状态
564
   // 当前在坐席监控中需要 更新坐席监控内坐席的状态
531
-  const curentViews = store.state.tagsView.visitedViews
565
+  const curentViews = store.state.tagsView.visitedViews;
532
   for (let i = 0, len = curentViews.length; i < len; i++) {
566
   for (let i = 0, len = curentViews.length; i < len; i++) {
533
-    if (curentViews[i].name === 'seatMonitor') {
567
+    if (curentViews[i].name === "seatMonitor") {
534
       // updateSeatMonitorlists()
568
       // updateSeatMonitorlists()
535
-      return
569
+      return;
536
     }
570
     }
537
   }
571
   }
538
 }
572
 }
539
 
573
 
540
 // 转接
574
 // 转接
541
 function TransferBack() {
575
 function TransferBack() {
542
-  store.dispatch('ChangeCallNum', '') // 顶部电话号码('')
543
-  store.dispatch('ChangeCallType', 'MakeCall') // 发送的通话类型(默认是外呼)
576
+  store.dispatch("ChangeCallNum", ""); // 顶部电话号码('')
577
+  store.dispatch("ChangeCallType", "MakeCall"); // 发送的通话类型(默认是外呼)
544
 }
578
 }
545
 
579
 
546
 // 外呼 结果 弹出来电弹屏
580
 // 外呼 结果 弹出来电弹屏
547
 function MakeCallBack(callBackData) {
581
 function MakeCallBack(callBackData) {
548
-  const inComingNumber = store.getters.telCallNum
549
-  const inComingCallId = callBackData.CallID
582
+  const inComingNumber = store.getters.telCallNum;
583
+  const inComingCallId = callBackData.CallID;
550
 }
584
 }
551
 
585
 
552
 // 多方通话
586
 // 多方通话
553
 function MeetingBack() {
587
 function MeetingBack() {
554
-  store.dispatch('ChangeMeetingBackFlag', true)
555
-  window.localStorage.setItem('meetingTransfer', 1)
588
+  store.dispatch("ChangeMeetingBackFlag", true);
589
+  window.localStorage.setItem("meetingTransfer", 1);
556
 }
590
 }
557
 
591
 
558
 // 多方通话回签
592
 // 多方通话回签
559
 function MeetingTakeBackFun() {
593
 function MeetingTakeBackFun() {
560
-  store.dispatch('ChangeMeetingBackFlag', false)
594
+  store.dispatch("ChangeMeetingBackFlag", false);
561
 }
595
 }
562
 
596
 
563
 // 录音返回
597
 // 录音返回
566
 // 保持
600
 // 保持
567
 function HoldBack(holdData) {
601
 function HoldBack(holdData) {
568
   if (holdData.Result === true) {
602
   if (holdData.Result === true) {
569
-    store.dispatch('ChangeLineState', 10)
603
+    store.dispatch("ChangeLineState", 10);
570
   }
604
   }
571
 }
605
 }
572
 
606
 
585
 
619
 
586
 // 获取当前在线坐席
620
 // 获取当前在线坐席
587
 function getAgentList(data) {
621
 function getAgentList(data) {
588
-  store.dispatch('GetOnlineSeatList', data.AgentList) // 监控坐席
622
+  store.dispatch("GetOnlineSeatList", data.AgentList); // 监控坐席
589
 }
623
 }
590
 
624
 
591
 function getOperatonTime(state) {
625
 function getOperatonTime(state) {
592
   const params = {
626
   const params = {
593
     state: state,
627
     state: state,
594
-    token: localStorage.getItem('Admin-Token').split(' ')[1]
595
-  }
628
+    token: localStorage.getItem("Admin-Token").split(" ")[1]
629
+  };
596
   Teljournal(params)
630
   Teljournal(params)
597
     .then(response => {})
631
     .then(response => {})
598
-    .catch(result => {})
632
+    .catch(result => {});
599
 }
633
 }

+ 5 - 19
CallCenterWeb.UI/RMYY/src/views/layout/components/Navbar/Teloperation.vue

47
         <p class="call_text">
47
         <p class="call_text">
48
           <span v-show="!telIsLogin" key="8">还未开始工作</span>
48
           <span v-show="!telIsLogin" key="8">还未开始工作</span>
49
           <span
49
           <span
50
-            v-show="telIsLogin && telSeatState === 2 && telLineState === 1"
50
+            v-show="telIsLogin"
51
             key="9"
51
             key="9"
52
-            >空闲中</span
53
-          >
54
-          <span
55
-            v-show="telIsLogin && telSeatState === 5 && telLineState === 1"
56
-            key="10"
57
-            >忙碌中</span
58
-          >
59
-          <span v-show="telIsLogin && telLineState === 2" key="11">摘机中</span>
60
-          <span v-show="telIsLogin && telLineState === 3" key="12">拨号中</span>
61
-          <span
62
-            v-show="telIsLogin && (telLineState === 4 || telLineState === 5)"
63
-            key="13"
64
-            >振铃中</span
65
-          >
66
-          <span v-show="telIsLogin && telLineState === 6" key="14">通话中</span>
67
-          <span v-show="telIsLogin && telLineState === 10" key="15"
68
-            >保持中</span
52
+            >{{ telTopRightState }}</span
69
           >
53
           >
54
+
70
           <svg-icon v-show="telIsLogin" icon-class="xinhao" />
55
           <svg-icon v-show="telIsLogin" icon-class="xinhao" />
71
         </p>
56
         </p>
72
         <p
57
         <p
291
       "meetingBackFlag", //是否转移成功
276
       "meetingBackFlag", //是否转移成功
292
       "telIsVisCallout", // 外呼操作面板是否显示
277
       "telIsVisCallout", // 外呼操作面板是否显示
293
       "telCallTime", // 通话时间
278
       "telCallTime", // 通话时间
279
+      "telTopRightState",
294
       "telMessageData", // telwebsocket 接收的数据
280
       "telMessageData", // telwebsocket 接收的数据
295
     ]),
281
     ]),
296
   },
282
   },
327
         Type: "Login",
313
         Type: "Login",
328
         AgentID: this.usercode,
314
         AgentID: this.usercode,
329
         AgentExten: this.extension,
315
         AgentExten: this.extension,
330
-        AgentGroup: "364", // 坐席组id window.localStorage.getItem('groupCode')
316
+        AgentGroup: "1", // 坐席组id window.localStorage.getItem('groupCode')
331
         AgentType: "0",
317
         AgentType: "0",
332
         DisposeTime: "0", // 话后处理时长设置,0代表一致话后处理,除非发送置闲 (按照历史习惯,字符串形式)
318
         DisposeTime: "0", // 话后处理时长设置,0代表一致话后处理,除非发送置闲 (按照历史习惯,字符串形式)
333
       };
319
       };

+ 2 - 3
CallCenterWeb.UI/RMYY/src/views/layout/components/Navbar/index.vue

372
           this.signOut(); // 签出
372
           this.signOut(); // 签出
373
         })
373
         })
374
         .catch(() => {
374
         .catch(() => {
375
-          this.$message({
376
-            type: "info",
377
-            message: "已取消",
375
+          this.$store.dispatch("FedLogOut").then(() => {
376
+            location.reload(); // 为了重新实例化vue-router对象 避免bug
378
           });
377
           });
379
         });
378
         });
380
     },
379
     },