Bladeren bron

reactor:兴唐新增黑白名单管理;

zhangchong 4 dagen geleden
bovenliggende
commit
5cd949eac5

+ 15 - 4
src/api/tels/blackList.ts

@@ -49,7 +49,7 @@ export const getWhiteListXT = (params?: object) => {
 		method: 'get',
 		params,
 	});
-}
+};
 /**
  * @description 新增白名单
  * @param {object} data
@@ -61,7 +61,7 @@ export const addWhiteListXT = (data: object) => {
 		method: 'post',
 		data,
 	});
-}
+};
 /**
  * @description 删除白名单
  * @param {string} phone
@@ -72,7 +72,7 @@ export const deleteWhiteListXT = (phone: string) => {
 		url: `/api/v1/CallNativeContrroller/delete-white-phone/${phone}`,
 		method: 'delete',
 	});
-}
+};
 /**
  * @description 获取黑白名单操作记录
  * @param {object} params
@@ -84,4 +84,15 @@ export const getBlackWhiteListLogXT = (params?: object) => {
 		method: 'get',
 		params,
 	});
-}
+};
+/**
+ * @description 校验号码是否是白名单
+ * @param {string} phone
+ * @return {*}
+ */
+export const verifyBlackListLogXT = (phone: string) => {
+	return request({
+		url: `/api/v1/CallNativeContrroller/verify-white-list/${phone}`,
+		method: 'get',
+	});
+};

+ 41 - 1
src/layout/navBars/breadcrumb/zgTel.vue

@@ -355,6 +355,7 @@ import { busyOff, busyOn, endAfterCall, startAfterCall } from '@/api/public/wex'
 import { getSpecialNumberDetailByPhone } from '@/api/auxiliary/specialNumber';
 import signalR from '@/utils/signalR';
 import { restApply, restApplyConfig, restBaseData } from '@/api/tels/restApply';
+import { verifyBlackListLogXT } from '@/api/tels/blackList';
 
 const globalState = useGlobalState(); // 全局变量
 const state = reactive<any>({
@@ -2152,6 +2153,16 @@ const evtCallAlerting = (data: any) => {
 						identityType: '', // 按键接收(2:市民 1:企业) 默认市民
 					},
 				});*/
+				verifyBlackListLogXT(strTelNumber).then((res: any) => {
+					// 校验当前号码是否是白名单 白名单需要提示
+					if (res.result) {
+						ElNotification({
+							title: '来电提醒',
+							message: '该市民为白名单。',
+							type: 'success',
+						});
+					}
+				});
 				if (AppConfigInfo.value.isOpenSpecialPhone) {
 					// 配置开关
 					getSpecialNumberDetailByPhone({ PhoneNumber: strTelNumber })
@@ -2242,7 +2253,16 @@ const evtCallAlerting = (data: any) => {
 					identityType: strDigit, // 按键接收(2:市民 1:企业) 默认市民
 				},
 			});*/
-
+			verifyBlackListLogXT(strTelNumber).then((res: any) => {
+				// 校验当前号码是否是白名单 白名单需要提示
+				if (res.result) {
+					ElNotification({
+						title: '来电提醒',
+						message: '该市民为白名单。',
+						type: 'success',
+					});
+				}
+			});
 			if (AppConfigInfo.value.isOpenSpecialPhone) {
 				// 配置开关
 				getSpecialNumberDetailByPhone({ PhoneNumber: strTelNumber })
@@ -2394,6 +2414,16 @@ const evtEvtCallAnswer = (data: any) => {
 							identityType: '', // 按键接收(2:市民 1:企业) 默认市民
 						},
 					});*/
+					verifyBlackListLogXT(strTelNumber).then((res: any) => {
+						// 校验当前号码是否是白名单 白名单需要提示
+						if (res.result) {
+							ElNotification({
+								title: '来电提醒',
+								message: '该市民为白名单。',
+								type: 'success',
+							});
+						}
+					});
 					if (AppConfigInfo.value.isOpenSpecialPhone) {
 						// 配置开关
 						getSpecialNumberDetailByPhone({ PhoneNumber: strTelNumber })
@@ -2509,6 +2539,16 @@ const evtEvtCallAnswer = (data: any) => {
 					identityType: strDigit, // 按键接收(2:市民 1:企业) 默认市民
 				},
 			});*/
+			verifyBlackListLogXT(strTelNumber).then((res: any) => {
+				// 校验当前号码是否是白名单 白名单需要提示
+				if (res.result) {
+					ElNotification({
+						title: '来电提醒',
+						message: '该市民为白名单。',
+						type: 'success',
+					});
+				}
+			});
 			if (AppConfigInfo.value.isOpenSpecialPhone) {
 				// 配置开关
 				getSpecialNumberDetailByPhone({ PhoneNumber: strTelNumber }).then((res: any) => {

+ 1 - 1
src/views/business/end/index.vue

@@ -124,7 +124,7 @@
 				</el-form-item>
 				<el-form-item prop="CurrentStepCode" label="当前节点">
 					<el-select v-model="state.queryParams.CurrentStepCode" placeholder="请选择当前节点" clearable class="w100" @change="handleQuery">
-						<el-option v-for="item in currentStepOptions" :value="item.key" :key="item.key" :label="item.value" />
+						<el-option v-for="item in currentStepOptions" :value="item.value" :key="item.key" :label="item.value" />
 					</el-select>
 				</el-form-item>
 				<el-form-item label="受理时间" prop="slTime">

+ 4 - 4
src/views/business/secondHandle/audit.vue

@@ -186,8 +186,8 @@ const state = reactive<any>({
 		PageSize: 20,
 		Status: 1, // 状态
 		crTime: [], // 申请时间
-		CreationTimeStart: null, // 申请时间开始
-		CreationTimeEnd: null, // 申请时间结束
+		ApplyTimeStart: null, // 申请时间开始
+		ApplyTimeEnd: null, // 申请时间结束
 		No:null, // 工单编码
 		Title: null, // 工单标题
 		Channel: null, // 来源渠道
@@ -216,8 +216,8 @@ const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.loading = true;
 	requestParams.value = other.deepClone(state.queryParams);
-	requestParams.value.StCreationTime = state.queryParams.crTime === null ? null : state.queryParams.crTime[0];
-	requestParams.value.EndCreationTime = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
+	requestParams.value.ApplyTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0];
+	requestParams.value.ApplyTimeEnd = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
 	Reflect.deleteProperty(requestParams.value, 'crTime');
 	secondHandleAuditList(requestParams.value)
 		.then((res) => {

+ 1 - 1
src/views/business/urge/index.vue

@@ -122,7 +122,7 @@
 				</el-form-item>
 				<el-form-item prop="CurrentStepCode" label="当前节点">
 					<el-select v-model="state.queryParams.CurrentStepCode" placeholder="请选择工单状态" clearable class="w100" @change="handleQuery">
-						<el-option v-for="item in currentStepOptions" :value="item.key" :key="item.key" :label="item.value" />
+						<el-option v-for="item in currentStepOptions" :value="item.value" :key="item.key" :label="item.value" />
 					</el-select>
 				</el-form-item>
 				<el-form-item label="期满时间" prop="qmTime">

+ 1 - 1
src/views/business/visit/todo.vue

@@ -327,7 +327,7 @@ const gridOptions = reactive<any>({
 			align: 'center',
 			slots: {
 				default: ({ row }) => {
-					return <span class={'overdue-status-' + row.order?.expiredStatus} title={row.order.expiredStatusText}></span>;
+					return <span class={'overdue-status-' + row.order?.expiredStatus} title={row.order?.expiredStatusText}></span>;
 				},
 			},
 		},

+ 12 - 2
src/views/tels/blacklist/zgList.vue

@@ -81,10 +81,10 @@
 
 <script lang="tsx" setup name="blacklist">
 import { defineAsyncComponent, ref, reactive, onMounted } from 'vue';
-import { ElMessageBox, ElMessage } from 'element-plus';
+import { ElMessageBox, ElMessage, ElNotification } from 'element-plus';
 import type { FormInstance } from 'element-plus';
 import { formatDate } from '@/utils/formatTime';
-import { deleteBlackListXT, deleteWhiteListXT, getBlackListXT, getWhiteListXT } from '@/api/tels/blackList';
+import { deleteBlackListXT, deleteWhiteListXT, getBlackListXT, getWhiteListXT, verifyBlackListLogXT } from '@/api/tels/blackList';
 
 // 引入组件
 const BlacklistAdd = defineAsyncComponent(() => import('@/views/tels/blacklist/components/Blacklist-add-xt.vue')); // 新增黑白名单
@@ -149,6 +149,16 @@ const onAddBlacklist = () => {
 const actionLogRef = ref<RefType>();
 const onActionLog = () => {
 	actionLogRef.value.openDialog(logType.value);
+/*	verifyBlackListLogXT(strTelNumber).then((res: any) => {
+		// 校验当前号码是否是白名单 白名单需要提示
+		if (res.result) {
+			ElNotification({
+				title: '来电提醒',
+				message: '该市民为白名单。',
+				type: 'success',
+			});
+		}
+	});*/
 };
 // 删除黑白名单
 const onRemove = (row: any) => {

+ 11 - 9
src/views/tels/callLog/zgCallLog.vue

@@ -5,6 +5,8 @@
 				<el-tab-pane name="1" label="呼入列表" :disabled="state.loading"></el-tab-pane>
 				<el-tab-pane name="2" label="呼出列表" :disabled="state.loading"></el-tab-pane>
 				<el-tab-pane name="3" label="未接列表" :disabled="state.loading"></el-tab-pane>
+				<el-tab-pane name="4" label="呼入白名单" :disabled="state.loading"></el-tab-pane>
+				<el-tab-pane name="5" label="呼入黑名单" :disabled="state.loading"></el-tab-pane>
 			</el-tabs>
 			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent label-minWidth="100px" inline>
 				<el-form-item prop="FromNo">
@@ -67,8 +69,8 @@
 				>
 					<vxe-column field="fromNo" title="主叫号码" min-width="120"></vxe-column>
 					<vxe-column field="toNo" title="被叫号码" min-width="120"></vxe-column>
-					<vxe-column field="orderNo" title="工单编码" width="140" :visible="['1', '2'].includes(state.queryParams.type)"></vxe-column>
-					<vxe-column field="title" title="工单标题" width="200" :visible="['1', '2'].includes(state.queryParams.type)">
+					<vxe-column field="orderNo" title="工单编码" width="140" :visible="['1', '2','4'].includes(state.queryParams.type)"></vxe-column>
+					<vxe-column field="title" title="工单标题" width="200" :visible="['1', '2','4'].includes(state.queryParams.type)">
 						<template #default="{ row }">
 							<order-detail :order="{ ...row, id: row.orderId }" @updateList="queryList">{{ row.title }}</order-detail>
 						</template>
@@ -79,15 +81,15 @@
 					<vxe-column field="callNo" title="通话ID" min-width="200" v-if="['ZiGong'].includes(themeConfig.appScope)"></vxe-column>
 					<vxe-column field="userName" title="话务员" width="120"></vxe-column>
 					<vxe-column field="groupId" title="功能组号码" width="100"></vxe-column>
-					<vxe-column field="duration" title="通话时间(秒)" width="110" :visible="['1', '2'].includes(state.queryParams.type)"></vxe-column>
-					<vxe-column field="endByText" title="挂断状态" width="100" :visible="['1', '2'].includes(state.queryParams.type)"></vxe-column>
+					<vxe-column field="duration" title="通话时间(秒)" width="110" :visible="['1', '2','4'].includes(state.queryParams.type)"></vxe-column>
+					<vxe-column field="endByText" title="挂断状态" width="100" :visible="['1', '2','4'].includes(state.queryParams.type)"></vxe-column>
 					<vxe-column field="directionText" title="呼叫方向" width="100" :visible="['3'].includes(state.queryParams.type)"></vxe-column>
 					<vxe-column field="beginIvrTime" title="开始时间" width="160">
 						<template #default="{ row }">
 							{{ formatDate(row.beginIvrTime, 'YYYY-mm-dd HH:MM:SS') }}
 						</template>
 					</vxe-column>
-					<vxe-column field="answeredTime" title="接通时间" width="160" :visible="['1', '2'].includes(state.queryParams.type)">
+					<vxe-column field="answeredTime" title="接通时间" width="160" :visible="['1', '2','4'].includes(state.queryParams.type)">
 						<template #default="{ row }">
 							{{ formatDate(row.answeredTime, 'YYYY-mm-dd HH:MM:SS') }}
 						</template>
@@ -98,7 +100,7 @@
 						</template>
 					</vxe-column>
 					<vxe-column field="waitDuration" title="等待时长(秒)" width="140" :visible="['3'].includes(state.queryParams.type)" sortable></vxe-column>
-					<vxe-column title="操作" fixed="right" width="240" align="center" v-if="['1', '2'].includes(state.queryParams.type)">
+					<vxe-column title="操作" fixed="right" width="240" align="center" v-if="['1', '2','4'].includes(state.queryParams.type)">
 						<template #default="{ row }">
 							<el-button
 								link
@@ -153,7 +155,7 @@
 							<el-option v-for="item in state.callDirectionOption" :value="item.key" :key="item.key" :label="item.value" />
 						</el-select>
 					</el-form-item>
-					<el-form-item prop="EndBy" v-show="['4'].includes(state.queryParams.type)" label="挂断状态">
+					<el-form-item prop="EndBy" v-show="['3'].includes(state.queryParams.type)" label="挂断状态">
 						<el-select v-model="state.queryParams.EndBy" placeholder="挂断状态" clearable class="w100" @change="handleQuery">
 							<el-option v-for="item in state.endByOptions" :value="item.key" :key="item.key" :label="item.value" />
 						</el-select>
@@ -167,10 +169,10 @@
 					<el-form-item prop="StaffNo" label="工号">
 						<el-input v-model="state.queryParams.StaffNo" placeholder="工号" clearable @keyup.enter="handleQuery" />
 					</el-form-item>
-					<el-form-item prop="OrderNo" v-show="['0', '1'].includes(state.queryParams.type)" label="工单编码">
+					<el-form-item prop="OrderNo" v-show="['1', '2','4'].includes(state.queryParams.type)" label="工单编码">
 						<el-input v-model="state.queryParams.OrderNo" placeholder="工单编码" clearable @keyup.enter="handleQuery" />
 					</el-form-item>
-					<el-form-item prop="Title" v-show="['0', '1'].includes(state.queryParams.type)" label="工单标题">
+					<el-form-item prop="Title" v-show="['1', '2','4'].includes(state.queryParams.type)" label="工单标题">
 						<el-input v-model="state.queryParams.Title" placeholder="工单标题" clearable @keyup.enter="handleQuery" />
 					</el-form-item>
 					<el-form-item prop="WaitDurationStart" v-show="['3'].includes(state.queryParams.type)" label="等待时长">