Ver Fonte

reactor:坐席辅助代码优化;

zhangchong há 1 ano atrás
pai
commit
9a73ffcb9e

+ 81 - 115
src/layout/navBars/breadcrumb/telControl.vue

@@ -596,7 +596,7 @@ const removeTimer = () => {
 // 开始签入时长
 const onDutyTime = ref<any>(0); // 签入时长
 const onDutyTimer = ref<any>(null); // 签入时长定时器
-const startTimeOnDuty = (startTime?: any) => {
+const startDutyTimer = (startTime?: any) => {
 	if (startTime) {
 		// 从后台获取签入时长
 		// 使用当前时间减去后台返回的签入时间
@@ -771,7 +771,7 @@ const onDutyFn = async () => {
 						currentTel.value.queue = res.result.queueId;
 						// 不需要选择分机号和密码 直接签入 传入默认分机号
 						websocket_connect(); //开启消息监听
-						startTimeOnDuty(res.result.startTime); // 开启计时 签入时长
+						startDutyTimer(res.result.startTime); // 开启计时 签入时长
 						state.loading = false;
 					})
 					.catch(() => {})
@@ -790,80 +790,58 @@ const clickOnDuty = (formEl: FormInstance | undefined) => {
 	formEl.validate((valid: boolean) => {
 		if (!valid) return;
 		state.loading = true;
+		let request = {};
 		if (AppConfigInfo.value.isNeedTelNo && AppConfigInfo.value.isTelNeedVerify) {
 			// 需要分机和密码
-			const request = {
+			request = {
 				telNo: state.dutyForm.telNo,
 				telPwd: state.dutyForm.password,
 			};
-			dutyOn(request)
-				.then((res: any) => {
-					currentTel.value.password = state.dutyForm.password;
-					currentTel.value.telNo = state.dutyForm.telNo;
-					currentTel.value.queue = res.result.queueId;
-					websocket_connect(); //开启消息监听
-					startTimeOnDuty(res.result.startTime); // 开启计时 签入时长
-					state.loading = false;
-					state.dutyDialogVisible = false;
-				})
-				.catch(() => {
-					dutyOff();
-					// 重置所有状态
-					useTelStatusStore.resetState();
-					console.log('呼叫中心:签入错误111');
-				})
-				.finally(() => {
-					state.loading = false;
-					state.dutyDialogVisible = false;
-				});
 		} else if (AppConfigInfo.value.isNeedTelNo) {
 			//需要分机号
-			const request = {
+			request = {
 				telNo: state.dutyForm.telNo,
 			};
-			dutyOn(request)
-				.then((res: any) => {
+		} else if (AppConfigInfo.value.isTelNeedVerify) {
+			// 需要密码
+			request = {
+				telNo: state.dutyForm.telNo,
+				telPwd: userInfos.value.defaultTelNo,
+			};
+		}
+		dutyOn(request)
+			.then((res: any) => {
+				if (AppConfigInfo.value.isNeedTelNo && AppConfigInfo.value.isTelNeedVerify) {
+					// 需要分机和密码
+					currentTel.value.password = state.dutyForm.password;
+					currentTel.value.telNo = state.dutyForm.telNo;
+					currentTel.value.queue = res.result.queueId;
+				} else if (AppConfigInfo.value.isNeedTelNo) {
+					//需要分机号
 					currentTel.value.password = res.result.telPwd;
 					currentTel.value.telNo = res.result.telNo;
 					currentTel.value.queue = res.result.queueId;
-					websocket_connect(); //开启消息监听
-					startTimeOnDuty(res.result.startTime); // 开启计时 签入时长
-					state.loading = false;
-					state.dutyDialogVisible = false;
-				})
-				.catch(() => {
-					dutyOff();
-					// 重置所有状态
-					useTelStatusStore.resetState();
-					console.log('呼叫中心:签入错误222');
-				})
-				.finally(() => {
-					state.loading = false;
-					state.dutyDialogVisible = false;
-				});
-		} else if (AppConfigInfo.value.isTelNeedVerify) {
-			// 需要密码
-			dutyOn({ telPwd: state.dutyForm.password, telNo: userInfos.value.defaultTelNo })
-				.then((res: any) => {
+				} else if (AppConfigInfo.value.isTelNeedVerify) {
+					// 需要密码
 					currentTel.value.password = state.dutyForm.password;
 					currentTel.value.telNo = res.result.telNo;
 					currentTel.value.queue = res.result.queueId;
-					websocket_connect(); //开启消息监听
-					startTimeOnDuty(res.result.startTime); // 开启计时 签入时长
-					state.loading = false;
-					state.dutyDialogVisible = false;
-				})
-				.catch(() => {
-					dutyOff();
-					// 重置所有状态
-					useTelStatusStore.resetState();
-					console.log('呼叫中心:签入错误333');
-				})
-				.finally(() => {
-					state.loading = false;
-					state.dutyDialogVisible = false;
-				});
-		}
+				}
+				websocket_connect(); //开启消息监听
+				startDutyTimer(res.result.startTime); // 开启计时 签入时长
+				state.loading = false;
+				state.dutyDialogVisible = false;
+			})
+			.catch(() => {
+				dutyOff();
+				// 重置所有状态
+				useTelStatusStore.resetState();
+				console.log('呼叫中心:签入错误111');
+			})
+			.finally(() => {
+				state.loading = false;
+				state.dutyDialogVisible = false;
+			});
 	});
 };
 
@@ -893,7 +871,7 @@ const onConnect = () => {
 			array_ola_queue[i] = array[i];
 		}
 		ola.login(array_ola_queue, currentTel.value.telNo, { type: 'onhook' });
-		seatAssistOn(currentTel.value.telNo); // 坐席助手开启
+		connectVoiceAssistant(currentTel.value.telNo); // 坐席助手开启
 	}
 };
 const router = useRouter();
@@ -1478,40 +1456,26 @@ const clickOnOutbound = (formEl: FormInstance | undefined) => {
 // 坐席辅链接
 const socket = ref<any>(null);
 // 打开websocket链接
-const seatAssistOn = (telNo: string) => {
-	if (!telNo) return;
-	if (socket.value?.socket?.ws) {
-		// 如果已经有连接了 先关闭
-		socket.value.close();
+const connectVoiceAssistant = async (telNo: string) => {
+	if (!telNo || socket.value?.socket?.ws) {
+		socket.value?.close();
 		socket.value = null;
 	}
-	axios
-		.get(`${import.meta.env.VITE_VOICE_ASSISTANT_API_URL}/users/getUserByAgentId/${telNo}`)
-		.then((res) => {
-			const { data } = res;
-			const { result } = data;
-			const uid = `8#User-${result.uid}`;
-			const subscribe = `/trans/${result.orgCode}/${result.groupUid}/${uid}`;
-			socket.value = useSocket(import.meta.env.VITE_VOICE_ASSISTANT_SOCKET_URL, { uid, subscribe });
-			socket.value.on('open', () => {
-				console.log('坐席辅助:已开启');
-				socket.value.send({
-					// 调用登录
-					id: '',
-					type: 1,
-					from: uid,
-					to: 'sys',
-					timestamps: new Date().getTime(),
-					body: result.userName,
-				});
-			});
-			socket.value.on('message', wsReceive); // 接收消息
-			/* socket.value.on('error', onError); // 错误
-          socket.value.on('close', onClose); // 关闭*/
-		})
-		.catch((err) => {
-			console.log(err, '坐席辅助:获取到的坐席辅助用户信息失败');
+	try {
+		const { data } = await axios.get(`${import.meta.env.VITE_VOICE_ASSISTANT_API_URL}/users/getUserByAgentId/${telNo}`);
+		const { result } = data;
+		const uid = `8#User-${result.uid}`;
+		const subscribe = `/trans/${result.orgCode}/${result.groupUid}/${uid}`;
+
+		socket.value = useSocket(import.meta.env.VITE_VOICE_ASSISTANT_SOCKET_URL, { uid, subscribe });
+		socket.value.on('open', () => {
+			socket.value.send({ id: '', type: 1, from: uid, to: 'sys', timestamps: new Date().getTime(), body: result.userName });
+			console.log('坐席辅助:连接成功');
 		});
+		socket.value.on('message', wsReceive);
+	} catch (err) {
+		console.log(err, 'Failed to get voice assistant user information');
+	}
 };
 // 坐席辅助关闭
 const seatAssistOff = () => {
@@ -1534,33 +1498,35 @@ const wsReceive = (message: any) => {
 		return;
 	}
 };
-onMounted(async () => {
-	clearTimeout(talkDealTimer.value); // 清除话后整理定时器
-	signalRStart(); //开启消息监听
-	removeTimerOnDuty(); // 移除定时器
-	await getTelsLists(); // 查询所有分机
+// 刷新页面呼叫中心链接
+const callCenterConnect = async () => {
 	if (telStatusInfo.value.telsNo) {
-		dutyOn({ telNo: telStatusInfo.value.telsNo })
-			.then((res: any) => {
-				currentTel.value.password = res.result.telPwd;
-				currentTel.value.telNo = res.result.telNo;
-				currentTel.value.queue = res.result.queueId;
-				websocket_connect(); //开启消息监听
-				startTimeOnDuty(res.result.startTime); // 开启计时 签入时长
-				state.loading = false;
-			})
-			.catch(() => {
-				dutyOff();
-				// 重置所有状态
-				useTelStatusStore.resetState();
-			})
-			.finally(() => {
-				state.loading = false;
-			});
+		try {
+			const { result } = await dutyOn({ telNo: telStatusInfo.value.telsNo });
+			currentTel.value.password = result.telPwd;
+			currentTel.value.telNo = result.telNo;
+			currentTel.value.queue = result.queueId;
+			websocket_connect(); //开启消息监听
+			startDutyTimer(result.startTime); // 开启计时 签入时长
+			state.loading = false;
+		} catch (e) {
+			console.log(e);
+			await dutyOff();
+			// 重置所有状态
+			useTelStatusStore.resetState();
+			state.loading = false;
+		}
 	} else {
 		// 重置所有状态
 		useTelStatusStore.resetState();
 	}
+};
+onMounted(async () => {
+	clearTimeout(talkDealTimer.value); // 清除话后整理定时器
+	signalRStart(); //开启消息监听
+	removeTimerOnDuty(); // 移除定时器
+	await getTelsLists(); // 查询所有分机
+	await callCenterConnect(); // 呼叫中心链接
 });
 </script>
 

+ 1 - 1
src/views/quality/index/components/Quality-inspection.vue

@@ -58,7 +58,7 @@
 					<el-table-column prop="grade" label="分值(分)" show-overflow-tooltip align="center"></el-table-column>
 					<el-table-column label="操作" width="120" fixed="right" align="center">
 						<template #default="{ row }">
-							<!-- 智能质检不能编辑 -->
+              <!-- 智能质检不能编辑 -->
 							<el-button link type="primary" @click="onEditItem(row)" v-if="!row.intelligent"> 编辑 </el-button>
 							<el-button link type="primary" @click="onDeleteItem(row)"> 删除 </el-button>
 						</template>