Преглед изворни кода

reactor:对接发布待办的批量发布;对接小休和取消小休(业务统计);

zhangchong пре 1 година
родитељ
комит
09302f7124

+ 97 - 75
src/api/public/wex.ts

@@ -7,136 +7,158 @@ import request from '@/utils/request';
  * @description  分机小休原因
  */
 export const telRestBaseData = () => {
-    return request({
-        url: `/api/v1/IPPbx/rest/basedata`,
-        method: 'get'
-    });
+	return request({
+		url: `/api/v1/IPPbx/rest/basedata`,
+		method: 'get',
+	});
 };
 /**
  * @description 分机休息(wex)
  */
 export const telRestAdd = (data: object) => {
-    return request({
-        url: `/api/v1/Pbx/rest-add`,
-        method: 'post',
-        data,
-    });
+	return request({
+		url: `/api/v1/Pbx/rest-add`,
+		method: 'post',
+		data,
+	});
 };
 /**
  * @description 分机休息wex 需要审核
  * @param {object}  params
  */
 export const telRestProcess = (params?: object) => {
-    return request({
-        url: `/api/v1/Pbx/begin-rest`,
-        method: 'get',
-        params
-    });
+	return request({
+		url: `/api/v1/Pbx/begin-rest`,
+		method: 'get',
+		params,
+	});
 };
 
 /**
  * @description 查询小休流程开启参数
  */
 export const restFlowStart = () => {
-    return request({
-        url: `/api/v1/Pbx/flow-start`,
-        method: 'get',
-    });
+	return request({
+		url: `/api/v1/Pbx/flow-start`,
+		method: 'get',
+	});
 };
 /**
  * @description 删除分机休息
  */
-export const restFlowDel= () => {
-    return request({
-        url: `/api/v1/Pbx/rest-del`,
-        method: 'get',
-    });
+export const restFlowDel = () => {
+	return request({
+		url: `/api/v1/Pbx/rest-del`,
+		method: 'get',
+	});
 };
 /**
  * @description 开始小休流程
  * @param {object} data
  */
-export const restFlowStartWex = (data:object) => {
-    return request({
-        url: `/api/v1/Pbx/rest-flow`,
-        method: 'post',
-        data
-    });
+export const restFlowStartWex = (data: object) => {
+	return request({
+		url: `/api/v1/Pbx/rest-flow`,
+		method: 'post',
+		data,
+	});
 };
 /**
  * @description 分机结束休息wex
  */
 export const telUnrestWex = () => {
-    return request({
-        url: `/api/v1/Pbx/un-rest-wex`,
-        method: 'get',
-    });
+	return request({
+		url: `/api/v1/Pbx/un-rest-wex`,
+		method: 'get',
+	});
 };
 /*------------------------------呼叫中心--------------------------------------------- */
 /**
  * @description 查询呼叫中心分机列表
  * @param params
  */
-export const getTelList = (params?:object) => {
-    return request({
-        url: `/api/v1/IPPbx/query-tels`,
-        method: 'get',
-        params,
-    });
-}
+export const getTelList = (params?: object) => {
+	return request({
+		url: `/api/v1/IPPbx/query-tels`,
+		method: 'get',
+		params,
+	});
+};
 /**
  * @description 查询呼叫中心黑白名单列表
  * @param params
  */
-export const queryBlacklist = (params?:object) => {
-    return request({
-        url: `/api/v1/IPPbx/query-blacklist`,
-        method: 'get',
-        params,
-    });
-}
+export const queryBlacklist = (params?: object) => {
+	return request({
+		url: `/api/v1/IPPbx/query-blacklist`,
+		method: 'get',
+		params,
+	});
+};
 
 /**
  * @description 新增呼叫中心黑白名单
  * @param {object} data
  */
-export const addBlacklist = (data:object) => {
-    return request({
-        url: `/api/v1/IPPbx/add-blacklist`,
-        method: 'post',
-        data
-    });
-}
+export const addBlacklist = (data: object) => {
+	return request({
+		url: `/api/v1/IPPbx/add-blacklist`,
+		method: 'post',
+		data,
+	});
+};
 /**
  * @description 删除呼叫中心黑白名单
  * @param {object} data
  */
-export const removeBlacklist = (data:object) => {
-    return request({
-        url: `/api/v1/IPPbx/remove-blacklist`,
-        method: 'post',
-        data
-    });
-}
+export const removeBlacklist = (data: object) => {
+	return request({
+		url: `/api/v1/IPPbx/remove-blacklist`,
+		method: 'post',
+		data,
+	});
+};
 /**
  * @description 呼叫中心签入
  * @param {object} data
  */
-export const dutyOn = (data?:object) => {
-    return request({
-        url: `/api/v1/IPPbx/on-duty`,
-        method: 'post',
-        data
-    });
-}
+export const dutyOn = (data?: object) => {
+	return request({
+		url: `/api/v1/IPPbx/on-duty`,
+		method: 'post',
+		data,
+	});
+};
 /**
  * @description 呼叫中心签出
  * @param {object} data
  */
-export const dutyOff = (data?:object) => {
-    return request({
-        url: `/api/v1/IPPbx/off-duty`,
-        method: 'post',
-        data
-    });
-}
+export const dutyOff = (data?: object) => {
+	return request({
+		url: `/api/v1/IPPbx/off-duty`,
+		method: 'post',
+		data,
+	});
+};
+/**
+ * @description 呼叫中心开始示忙
+ * @param {object} data
+ */
+export const busyOn = (data?: object) => {
+	return request({
+		url: `/api/v1/IPPbx/rest`,
+		method: 'post',
+		data,
+	});
+};
+/**
+ * @description 呼叫中结束示忙
+ * @param {object} data
+ */
+export const busyOff = (data?: object) => {
+	return request({
+		url: `/api/v1/IPPbx/unrest`,
+		method: 'post',
+		data,
+	});
+};

+ 22 - 11
src/api/todo/publish.ts

@@ -9,20 +9,31 @@ import request from '@/utils/request';
  * @param {any} params
  */
 export const publishList = (params: object) => {
-    return request({
-        url: `/api/v1/Order/publish`,
-        method: 'get',
-        params
-    });
+	return request({
+		url: `/api/v1/Order/publish`,
+		method: 'get',
+		params,
+	});
 };
 /**
  * @description 工单发布
  * @param data
  */
 export const publishOrder = (data: object) => {
-    return request({
-        url: `/api/v1/Order/publish`,
-        method: 'post',
-        data
-    });
-};
+	return request({
+		url: `/api/v1/Order/publish`,
+		method: 'post',
+		data,
+	});
+};
+/**
+ * @description 批量发布
+ * @param data
+ */
+export const batchPublishOrder = (data: object) => {
+	return request({
+		url: `/api/v1/Order/batch-publish`,
+		method: 'post',
+		data,
+	});
+};

+ 12 - 3
src/layout/navBars/breadcrumb/telControl.vue

@@ -490,7 +490,7 @@ import { formatDuration } from '@/utils/formatTime';
 import { commonEnum } from '@/utils/constants';
 import other from '@/utils/other';
 import { workflowStepOptions } from '@/api/system/workflow';
-import { restFlowStart, restFlowDel, restFlowStartWex, getTelList, telRestBaseData, dutyOff, dutyOn } from '@/api/public/wex';
+import { restFlowStart, restFlowDel, restFlowStartWex, getTelList, telRestBaseData, dutyOff, dutyOn, busyOff, busyOn } from '@/api/public/wex';
 import signalR from '@/utils/signalR';
 import { Local } from '@/utils/storage';
 import { ola } from '@/utils/ola_api';
@@ -952,8 +952,9 @@ const onMessage = (event: any) => {
             });
       }*/
 			break_reason(data.private_data);
-			sendMsg('unready');
-			console.log('呼叫中心:示忙中');
+			sendMsg('unready'); // 发送消息 业务系统消息通知
+
+			console.log('呼叫中心:示忙中,小休开始');
 		} else if (data.state == 'acw') {
 			// 设置分机号和坐席组
 			useTelStatusStore.setCallInfo({ telsNo: data.agent_extn });
@@ -1131,6 +1132,13 @@ const break_reason = (reason: string) => {
 			restReason.value = '休息中';
 			break;
 	}
+	busyOn({ reason: restReason.value }) // 开始小休 设置示忙 业务系统统计需要
+		.then(() => {
+			console.log('业务系统调用示忙成功');
+		})
+		.catch((err) => {
+			console.log('业务系统调用示忙失败', err);
+		});
 };
 // 保持状态处理
 const holdStatus = (holdStatus: string) => {
@@ -1319,6 +1327,7 @@ const onRestEnd = () => {
 		.then(() => {
 			state.loading = true;
 			ola.go_ready(); // 示闲
+			busyOff(); // 结束小休(调用业务系统接口,统计需要)
 			console.log('呼叫中心:调用示闲');
 			state.loading = false;
 		})

+ 26 - 9
src/views/todo/publish/index.vue

@@ -6,12 +6,12 @@
 				<el-form-item label="关键词" prop="Keyword">
 					<el-input v-model="state.queryParams.Keyword" placeholder="工单编码/标题" clearable @keyup.enter="queryList" style="width: 300px" />
 				</el-form-item>
-        <el-form-item label="归档类型" prop="IsProvince">
-          <el-select v-model="state.queryParams.IsProvince" placeholder="请选择归档类型">
-            <el-option label="中心归档" value="true" />
-            <el-option label="部门归档" value="false" />
-          </el-select>
-        </el-form-item>
+				<el-form-item label="归档类型" prop="IsProvince">
+					<el-select v-model="state.queryParams.IsProvince" placeholder="请选择归档类型">
+						<el-option label="中心归档" value="true" />
+						<el-option label="部门归档" value="false" />
+					</el-select>
+				</el-form-item>
 				<el-form-item label="是否会签" prop="IsProvince">
 					<el-select v-model="state.queryParams.IsProvince" placeholder="请选择是否会签">
 						<el-option label="是" value="true" />
@@ -98,10 +98,11 @@
 </template>
 <script setup lang="ts" name="todoPublish">
 import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
-import { ElButton, FormInstance } from 'element-plus';
+import { ElButton, ElMessage, ElMessageBox, FormInstance } from 'element-plus';
 import { throttle } from '@/utils/tools';
 import { formatDate } from '@/utils/formatTime';
-import { publishList } from '@/api/todo/publish';
+import { batchPublishOrder, publishList } from '@/api/todo/publish';
+import { deleteCommon } from '@/api/auxiliary/advice';
 // 引入组件
 const OrderPublish = defineAsyncComponent(() => import('@/views/business/publish/component/Order-publish.vue'));
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
@@ -149,7 +150,23 @@ const handleSelectionChange = (val: any[]) => {
 };
 // 批量发布
 const publishMultiple = () => {
-	console.log('批量发布');
+	const ids = multipleSelection.value.map((item: any) => item.id);
+	const names = multipleSelection.value.map((item: any) => item.title);
+	ElMessageBox.confirm(`您确定要发布:【${names}】的工单吗,是否继续?`, '提示', {
+		confirmButtonText: '确认',
+		cancelButtonText: '取消',
+		type: 'warning',
+		draggable: true,
+		cancelButtonClass: 'default-button',
+		autofocus: false,
+	})
+		.then(() => {
+			batchPublishOrder({ ids }).then(() => {
+				ElMessage.success('操作成功');
+				queryList();
+			});
+		})
+		.catch(() => {});
 };
 // 发布
 const orderPublishRef = ref<RefType>(); // 工单发布详情ref