Эх сурвалжийг харах

refactor:工单调整(重复工单);

zhangchong 1 жил өмнө
parent
commit
e7970fbc7b

+ 4 - 4
src/api/business/commonP.ts

@@ -8,7 +8,7 @@
  */
 import request from '/@/utils/request';
 /**
- * 查询常用意见
+ * @description: 查询常用意见
  * @param {object} params
  */
 export const commonList = (params: object) => {
@@ -19,7 +19,7 @@ export const commonList = (params: object) => {
 	});
 };
 /**
- * 新增常用意见
+ * @description: 新增常用意见
  * @param {object} data
  */
 export const addCommon = (data: object) => {
@@ -30,7 +30,7 @@ export const addCommon = (data: object) => {
 	});
 };
 /**
- * 删除常用意见
+ * @description: 删除常用意见
  * @param {object} data
  */
 export const deleteCommon = (data: object) => {
@@ -41,7 +41,7 @@ export const deleteCommon = (data: object) => {
 	});
 };
 /**
- * 获取省市区
+ * @description: 获取省市区
  */
 export const treeArea = () => {
 	return request({

+ 22 - 23
src/api/business/order.ts

@@ -9,7 +9,7 @@
 import request from '/@/utils/request';
 import qs from 'qs';
 /**
- * 列表页面基础数据
+ * @description: 列表页面基础数据
  */
 export const listBaseData = () => {
 	return request({
@@ -18,7 +18,7 @@ export const listBaseData = () => {
 	});
 };
 /**
- * 工单列表
+ * @description: 工单列表
  * @param {any} params
  */
 export const orderList = (params: any) => {
@@ -28,7 +28,7 @@ export const orderList = (params: any) => {
 	});
 };
 /**
- * 历史工单
+ * @description: 历史工单
  * @param {object} params
  */
 export const historyOrder = (params: object) => {
@@ -39,7 +39,7 @@ export const historyOrder = (params: object) => {
 	});
 };
 /**
- * 新增工单
+ * @description: 新增工单
  * @param {object} data
  */
 export const orderAdd = (data: object) => {
@@ -50,7 +50,7 @@ export const orderAdd = (data: object) => {
 	});
 };
 /**
- * 更新工单
+ * @description: 更新工单
  * @param {object} data
  */
 export const orderEdit = (data: object) => {
@@ -61,7 +61,7 @@ export const orderEdit = (data: object) => {
 	});
 };
 /**
- * 工单详情
+ * @description: 工单详情
  * @param {string} id
  */
 export const orderDetail = (id: string | any[]) => {
@@ -71,7 +71,7 @@ export const orderDetail = (id: string | any[]) => {
 	});
 };
 /**
- * 删除工单
+ * @description: 删除工单
  * @param {string} id
  */
 export const orderDelete = (id: string) => {
@@ -81,30 +81,29 @@ export const orderDelete = (id: string) => {
 	});
 };
 /**
- * 开始流程
- * @param {string} id 工单id
- * @param {object} data 开启参数
+ * @description: 查询工单办理流程开启参数
+ * @param {object}params
  */
-export const orderStartFlow = (id: string, data: object) => {
+export const OrderFlowParams = (params?: object) => {
 	return request({
-		url: `/api/v1/Order/${id}/startflow`,
-		method: 'post',
-		data,
+		url: `/api/v1/Order/startflow`,
+		method: 'get',
+		params,
 	});
 };
 /**
- * 查询工单办理流程开启参数
- * @param {object}params
+ * @description: 开始工单办理流程
+ * @param data
  */
-export const OrderFlowParams = (params?: object) => {
+export const orderStartFlow = (data?: object) => {
 	return request({
-		url: `/api/v1/Order/flow-start`,
-		method: 'get',
-		params,
+		url: `/api/v1/Order/startflow`,
+		method: 'post',
+		data,
 	});
 };
 /**
- * 新增页面基础数据
+ * @description: 新增页面基础数据
  * @param {object} params
  */
 export const orderBaseDataAdd = (params?: object) => {
@@ -115,7 +114,7 @@ export const orderBaseDataAdd = (params?: object) => {
 	});
 };
 /**
- * 扩展表单页面基础数据
+ * @description: 扩展表单页面基础数据
  * @param {object} params
  */
 export const orderBaseExt = (params?: object) => {
@@ -126,7 +125,7 @@ export const orderBaseExt = (params?: object) => {
 	});
 };
 /**
- * 获取热点下一级
+ * @description: 获取热点下一级
  * @param {object} params
  */
 export const hotSpotType = (params?: object) => {

+ 41 - 0
src/api/business/release.ts

@@ -0,0 +1,41 @@
+/*
+ * @Author: zc
+ * @Description: 工单发布
+ * @version:
+ * @Date: 2022-08-09 16:19:55
+ * @LastEditors: Please set LastEditors
+ * @LastEditTime: 2022-11-16 14:49:01
+ */
+import request from '/@/utils/request';
+/**
+ * @description: 工单发布列表
+ * @param {any} params
+ */
+export const publishList = (params: any) => {
+    return request({
+        url: `/api/v1/Order/publish`,
+        method: 'get',
+        params
+    });
+};
+/**
+ * @description: 工单发布
+ * @param data
+ */
+export const publishOrder = (data: any) => {
+    return request({
+        url: `/api/v1/Order/publish`,
+        method: 'post',
+        data
+    });
+};
+/**
+ * @description: 发布页面基础信息
+ * @param id
+ */
+export const baseData = (id: string) => {
+    return request({
+        url: `/api/v1/Order/publish-order-pagebase/${id}`,
+        method: 'get'
+    });
+};

+ 12 - 12
src/api/system/workflow.ts

@@ -192,18 +192,6 @@ export const workflowNext = (data: object) => {
 		data
 	});
 };
-/**
- * @description: 退回(返回前一个节点)
- * @param {object} data
- * @return {*}
- */
-export const workflowPrevious = (data: object) => {
-	return request({
-		url: '/api/v1/Workflow/previous',
-		method: 'post',
-		data
-	});
-};
 /**
  * @description: 跳转至任意节点
  * @param {object} data
@@ -250,6 +238,18 @@ export const workflowRecallParams = (workflowId: string) => {
 		method: 'get',
 	});
 };
+/**
+ * @description: 退回(返回之前一个节点)
+ * @param {object} data
+ * @return {*}
+ */
+export const workflowPrevious = (data: object) => {
+	return request({
+		url: `/api/v1/Workflow/previous`,
+		method: 'post',
+		data
+	});
+};
 /**
  * @description: 撤回至任意节点
  * @param {object} data

+ 2 - 2
src/components/LogicFlow/PropertySetting/summary.vue

@@ -80,7 +80,7 @@
           <el-option v-for="item in countersignModeList" :key="item.value" :label="item.label" :value="item.value" />
         </el-select>
       </el-form-item>
-			<el-form-item label="节点过滤策略" prop="pathPolicy" :rules="[{ required: true, message: '请选择节点过滤策略', trigger: 'change' }]">
+			<el-form-item label="节点过滤策略" prop="pathPolicy" :rules="[{ required: false, message: '请选择节点过滤策略', trigger: 'change' }]">
 				<el-select v-model="form.pathPolicy" class="w100" placeholder="请选择节点过滤策略">
 					<el-option v-for="item in pathPolicyOptions" :key="item.key" :label="item.value" :value="item.key" />
 				</el-select>
@@ -139,7 +139,7 @@ const handlerTypeOptions = ref<EmptyArrayType>() as any;
 // 下拉内容
 const selectList = ref<EmptyArrayType>() as any;
 // 会签
-const itemName = ref<EmptyArrayType>();
+const itemName = ref<string>('');
 const changeOptions = (e: any) => {
 	form.handlerClassifiesOrgin = [];
 	form.handlerClassifies = '[]';

+ 2 - 2
src/components/LogicFlow/PropertySetting/task.vue

@@ -80,7 +80,7 @@
           <el-option v-for="item in countersignModeList" :key="item.value" :label="item.label" :value="item.value" />
         </el-select>
       </el-form-item>
-      <el-form-item label="节点过滤策略" prop="pathPolicy" :rules="[{ required: true, message: '请选择节点过滤策略', trigger: 'change' }]">
+      <el-form-item label="节点过滤策略" prop="pathPolicy" :rules="[{ required: false, message: '请选择节点过滤策略', trigger: 'change' }]">
         <el-select v-model="form.pathPolicy" class="w100" placeholder="请选择节点过滤策略">
           <el-option v-for="item in pathPolicyOptions" :key="item.key" :label="item.value" :value="item.key" />
         </el-select>
@@ -135,7 +135,7 @@ const handlerTypeOptions = ref<EmptyArrayType>() as any;
 // 下拉内容
 const selectList = ref<EmptyArrayType>() as any;
 // 会签
-const itemName = ref<EmptyArrayType>();
+const itemName = ref<string>('');
 const changeOptions = (e: any) => {
 	form.handlerClassifiesOrgin = [];
 	form.handlerClassifies = '[]';

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 605 - 489
src/components/ProcessApproval/index.vue


+ 138 - 74
src/views/business/order/accept/index.vue

@@ -35,7 +35,7 @@
 								<template v-if="state.createBy === 'tel'">
 									<el-form-item label="来源渠道" prop="channel">
 										<el-select v-model="state.ruleForm.channel" placeholder="请选择来源渠道" class="w100" disabled>
-											<el-option v-for="item in state.channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+											<el-option v-for="item in state.channelOptions" :value="item" :key="item.dicDataValue" :label="item.dicDataName" />
 										</el-select>
 									</el-form-item>
 								</template>
@@ -67,7 +67,7 @@
 								</template>
 							</el-col>
 							<!-- 来电号码 -->
-							<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12" v-if="state.ruleForm.channel === 'RGDH'">
+							<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12" v-if="state.ruleForm.sourceChannelCode === 'RGDH'">
 								<!-- 手动创建 -->
 								<template v-if="state.createBy === 'manual'">
 									<el-form-item
@@ -103,11 +103,11 @@
 								<el-form-item label="服务坐席">
 									<!-- 手动创建 -->
 									<template v-if="state.createBy === 'manual'">
-										<span>{{ state.ruleForm.employeeName + '[' + state.ruleForm.employeeStaffNo + ']' }}</span>
+										<span>{{ state.ruleForm.acceptorName + '[' + state.ruleForm.acceptorStaffNo + ']' }}</span>
 									</template>
 									<!-- 来电弹单 -->
 									<template v-if="state.createBy === 'tel'">
-										<span>{{ state.ruleForm.employeeName + '[' + telStatusInfo.telsNo + ']' }}</span>
+										<span>{{ state.ruleForm.acceptorName + '[' + state.ruleForm.acceptorStaffNo + ']' }}</span>
 									</template>
 									<!-- 互联网来信 -->
 									<template v-if="state.createBy === 'letter'">
@@ -355,10 +355,10 @@
 										>
 											<el-input v-model="state.ruleForm.duplicateTitle" placeholder="请选择重复件" readonly>
 												<template #suffix>
-													<el-button link type="danger" v-if="state.ruleForm.duplicateTitle" @click="clearRepeat">
+													<el-button link type="danger" v-if="state.ruleForm.duplicateTitle" @click="clearRepeat" title="清除历史工单">
 														<SvgIcon name="ele-Delete" size="16px" />
 													</el-button>
-													<el-button link type="primary" class="ml1" @click="selectRepeat">
+													<el-button link type="primary" class="ml1" @click="selectRepeat" title="选择历史工单">
 														<SvgIcon name="iconfont icon-tianjiatuozhanxinxi" size="18px" />
 													</el-button>
 												</template>
@@ -440,10 +440,10 @@
 							max-height="300"
 							ref="multipleTableRef"
 						>
-							<el-table-column type="selection" label="重复件" width="80" v-if="state.ruleForm.isRepeat === 'true'" />
+							<el-table-column type="selection" label="重复件" width="80" :reserve-selection="true" v-if="state.ruleForm.isRepeat === 'true'" />
 							<el-table-column prop="phoneNo" label="工单标题" show-overflow-tooltip width="180">
 								<template #default="{ row }">
-									<span style="color: var(--el-color-primary)">{{ row.title }}</span>
+                  {{ row.title }}
 								</template>
 							</el-table-column>
 							<el-table-column prop="hotspotName" label="热点分类" show-overflow-tooltip> </el-table-column>
@@ -467,13 +467,14 @@
 									<span style="color: var(--el-color-info)" v-if="row.status === 60">{{ row.statusText }}</span>
 								</template>
 							</el-table-column>
-							<el-table-column prop="statusText" label="操作" width="70" fixed="right" align="center">
+							<el-table-column prop="statusText" label="操作" width="170" fixed="right" align="center">
 								<template #default="{ row }">
-									<el-button @click="onSupply(row)" link type="primary"> 补充 </el-button>
+									<el-button @click="onSupply(row)" link type="primary" v-auth="'business:order:supply'"> 补充 </el-button>
+                  <el-button @click="onSupply(row)" link type="primary" v-auth="'business:order:revoke'"> 撤销 </el-button>
+                  <el-button @click="onSupply(row)" link type="primary"> 督办 </el-button>
 								</template>
 							</el-table-column>
 						</el-table>
-						<!-- 分页 -->
 						<pagination
 							:total="state.total"
 							v-model:page="state.queryParams.PageIndex"
@@ -552,9 +553,14 @@
 		<!-- 拓展表单 -->
 		<order-expand-form ref="ExpandFormRef" @saveExpandForm="saveExpandForm" />
 		<!-- 历史工单 -->
-		<order-history ref="HistoryOrderRef" @saveSelect="saveSelect" />
+    <order-history ref="HistoryOrderRef" @saveSelect="saveSelect" >
+    </order-history>
 		<!-- 补充信息 -->
 		<order-supply ref="SupplyRef" @onSupplySuccess="onSupplySuccess" />
+    <!-- 工单撤销 -->
+    <order-revoke ref="orderRevokeRef" @onRevokeSuccess="onRevokeSuccess" />
+    <!-- 工单督办 -->
+    <order-super-vise ref="orderSuperviseRef" @onSuperviseSuccess="onSuperviseSuccess" />
     <!--  流程审批  -->
     <process-approval ref="processApprovalRef" @orderProcessSuccess="orderProcessSuccess" >
     </process-approval>
@@ -563,7 +569,7 @@
 
 <script setup lang="ts" name="orderAccept">
 import { defineAsyncComponent, ref, reactive, onMounted, computed } from 'vue';
-import { ElMessage } from 'element-plus';
+import {ElMessage, ElMessageBox} from 'element-plus';
 import type { FormInstance } from 'element-plus';
 import { storeToRefs } from 'pinia';
 import { useRoute, useRouter } from 'vue-router';
@@ -583,19 +589,20 @@ const OrderHistory = defineAsyncComponent(() => import('/@/views/business/order/
 const CommonAdvice = defineAsyncComponent(() => import('/@/components/CommonAdvice/index.vue')); // 常用意见
 const OrderSupply = defineAsyncComponent(() => import('/@/views/business/order/components/Order-supply.vue')); // 补充信息
 const AnnexList = defineAsyncComponent(() => import('/@/components/AnnexList/index.vue'));  // 附件列表
+const OrderRevoke = defineAsyncComponent(() => import('/@/views/business/order/components/Order-revoke.vue'));  // 撤销组件
+const OrderSuperVise = defineAsyncComponent(() => import('/@/views/business/supervise/components/Order-supervise.vue'));  // 工单督办
 const ProcessApproval = defineAsyncComponent(() => import('/@/components/ProcessApproval/index.vue'));  // 流程审批
 // 定义变量内容
 const state = reactive<any>({
 	createBy: 'manual', // 工单创建方式 默认手动创建  tel:来电弹单  letter:互联网来信 默认表示手动创建
 	activeName: 'first', // tabs
 	ruleForm: {
-		channel: '', // 来源频道
     sourceChannel:'', // 来源频道
     sourceChannelCode:'', //来源频道code
 		transferPhone: '', // 转接来源
 		fromPhone: '', // 来电号码
-		employeeName: '', // 员工姓名
-		employeeStaffNo: '', // 员工工号
+    acceptorName: '', // 员工姓名
+    acceptorStaffNo: '', // 员工工号
 		fromName: '', // 来电人姓名
 		fromGender: 1, // 来电人性别 默认先生
 		identityType: 1, // 来电/信人身份 默认市民
@@ -617,11 +624,11 @@ const state = reactive<any>({
 		areaCode: '', // 区域编码
 		street: '', // 街道
 		isRepeat: 'false', // 是否重复工单 默认否
-		duplicateId: '', //重复工单id
-		duplicateTitle: '', // 重复工单标题
 		pushType: '', // 推送类型
 		pushTypeCode: '', // 推送类型code
 		content: '', // 工单内容
+    duplicateIds:[], //重复工单id
+    duplicateTitle: '', // 重复工单标题
 	},
 	formLoading: false, // 表单加载状态
 	historyOrderLoading: false, // 历史工单加载状态
@@ -647,7 +654,6 @@ const state = reactive<any>({
 			key: 'false',
 		},
 	],
-	tableRadio: null as any, // 重复件选择
 	orgData: [],  // 机构数据
 	tableData: [], // 历史工单
 	total: 0, // 历史工单总条数
@@ -676,8 +682,8 @@ const useTelStatusStore = useTelStatus(); // 来电弹屏
 const { telStatusInfo } = storeToRefs(useTelStatusStore); // 来电弹屏信息
 const storesUserInfo = useUserInfo(); // 用户信息
 const { userInfos } = storeToRefs(storesUserInfo);  // 用户信息
-state.ruleForm.employeeName = userInfos.value.name; // 员工姓名
-state.ruleForm.employeeStaffNo = userInfos.value.staffNo; // 员工工号
+state.ruleForm.acceptorName = userInfos.value.name; // 员工姓名
+state.ruleForm.acceptorStaffNo = userInfos.value.staffNo; // 员工工号
 const route = useRoute(); // 路由
 const router = useRouter(); // 路由
 const historyParams = history.state;
@@ -788,14 +794,14 @@ const save = throttle((formEl: FormInstance | undefined) => {
 	if (!formEl) return;
 	formEl.validate((valid: boolean) => {
 		if (!valid) return;
-    let submitObj = {
+    let orderDetail = {
       ...state.ruleForm,
       hotspotExternal:state.hotspotExternal.join(',')
     }
-		deleteUnnecessaryProperties(submitObj);
+		deleteUnnecessaryProperties(orderDetail);
     const operation = state.orderId ? orderEdit : orderAdd;
 		const addOrderAndNavigate = () => {
-      operation(submitObj).then(() => {
+      operation(orderDetail).then(() => {
 				ElMessage.success('操作成功');
 				mittBus.emit('onCurrentContextmenuClick', Object.assign({}, { contextMenuClickId: 1, ...route }));
 				mittBus.emit('clearCache', 'order');
@@ -804,8 +810,8 @@ const save = throttle((formEl: FormInstance | undefined) => {
 				});
 			});
 		};
-		if (shouldOpenDialog(submitObj)) {
-			ExpandFormRef.value.openDialog(submitObj.acceptType, true);
+		if (shouldOpenDialog(orderDetail)) {
+			ExpandFormRef.value.openDialog(orderDetail.acceptType, true);
 		} else {
 			addOrderAndNavigate();
 		}
@@ -821,7 +827,7 @@ const selectIdentity = (val: number) => {
 };
 // 流程审批
 const processApprovalRef = ref<RefType>();
-const processOrder = (submitObj: any) => {
+const processOrder = (orderDetail: any) => {
     const params = {
       id: state.orderId,
       processType: '工单发起',
@@ -830,19 +836,19 @@ const processOrder = (submitObj: any) => {
         inputPlaceholder:'办理意见',
         annexName:"办理附件",
       },
-      submitObj
+      orderDetail
     }
     processApprovalRef.value.openDialog(params);
 };
-const handleForm = (submitObj: any) => {
-	if (submitObj.orderType === 1 && submitObj.acceptType) {
+const handleForm = (orderDetail: any) => {
+	if (orderDetail.orderType === 1 && orderDetail.acceptType) {
 		if (ExpandFormRef.value.state.validated) {
-			processOrder(submitObj);
+			processOrder(orderDetail);
 		} else {
-			ExpandFormRef.value.openDialog(submitObj.acceptType, true);
+			ExpandFormRef.value.openDialog(orderDetail.acceptType, true);
 		}
 	} else {
-		processOrder(submitObj);
+		processOrder(orderDetail);
 	}
 };
 // 提交
@@ -850,15 +856,15 @@ const submit = throttle((formEl: FormInstance | undefined) => {
 	if (!formEl) return;
 	formEl.validate((valid: boolean) => {
 		if (!valid) return;
-    let submitObj = {
+    let orderDetail = {
       ...state.ruleForm,
       hotspotExternal:state.hotspotExternal.join(',')
     }
-		deleteUnnecessaryProperties(submitObj);
+		deleteUnnecessaryProperties(orderDetail);
 		if (state.orderId) {
-			handleForm(submitObj);
+			handleForm(orderDetail);
 		} else {
-			handleForm(submitObj);
+			handleForm(orderDetail);
 		}
 	});
 }, 500);
@@ -870,10 +876,22 @@ const multipleSelection = ref<any[]>([]); // 重复件表格选中项
 const multipleTableRef = ref<RefType>(); // 重复件表格ref
 // 清除重复件
 const clearRepeat = () => {
-	state.ruleForm.duplicateTitle = '';
-	state.ruleForm.duplicateId = '';
-	state.tableRadio = '';
-	multipleTableRef.value.clearSelection();
+  ElMessageBox.confirm(`确认要清除选择的重复工单?`, '提示', {
+    confirmButtonText: '确认',
+    cancelButtonText: '取消',
+    type: 'warning',
+    draggable: true,
+    cancelButtonClass: 'default-button',
+    autofocus: false,
+  }).then(() => {
+    multipleTableRef.value!.clearSelection();
+    setTimeout(() => {
+      state.ruleForm.duplicateTitle = '';
+      state.ruleForm.duplicateIds = [];
+    }, 0)
+  }).catch(() => {
+    state.ruleForm.isRepeat = 'true';
+  });
 };
 // 选择重复件
 const HistoryOrderRef = ref<RefType>();
@@ -882,21 +900,32 @@ const selectRepeat = () => {
 };
 // 弹窗确定选择重复件
 const saveSelect = (row: any) => {
-	state.ruleForm.duplicateId = row.id;
-	state.ruleForm.duplicateTitle = row.title;
-	state.tableRadio = row.id;
-
-	multipleTableRef.value!.toggleRowSelection(row, undefined);
+  multipleTableRef.value!.clearSelection();
+	state.ruleForm.duplicateIds = row.map((item: any) => item.id);
+	state.ruleForm.duplicateTitle = '已选择';
+  multipleSelection.value = row;
+  for(let i of multipleSelection.value){
+    for(let j of state.tableData){
+      if(i.id === j.id){
+        setTimeout(() => {
+          multipleTableRef.value!.toggleRowSelection(j, true);
+        }, 0);
+      }
+    }
+  }
 	HistoryOrderRef.value.closeDialog();
 };
 // 右边表格选中重复件
 const handleSelectionChange = (row: any) => {
-	if (row) {
-		state.ruleForm.duplicateId = row.id;
-		state.tableRadio = row.id;
-		state.ruleForm.duplicateTitle = row.title;
+	if (row && row.length) {
+		state.ruleForm.duplicateIds = row.map((item: any) => item.id);
+		state.ruleForm.duplicateTitle = '已选择';
 		multipleSelection.value = row;
-	}
+	}else{
+    state.ruleForm.duplicateIds = [];
+    state.ruleForm.duplicateTitle = '';
+    multipleSelection.value = [];
+  }
 };
 // 选中常用意见
 const chooseAdvice = (item: any) => {
@@ -923,7 +952,7 @@ const resetQuery = throttle((formEl: FormInstance | undefined) => {
 	handleQuery();
 }, 500);
 /** 获取历史工单 */
-const searchHistory = throttle(() => {
+const searchHistory = throttle(async (orderDetail?:any) => {
 	if (!auth('business:order:history')) ElMessage.error('抱歉,您没有权限查询历史工单!');
 	else {
 		if (!state.ruleForm.fromPhone) return; // 如果没有来电号码 不进行查询
@@ -931,19 +960,35 @@ const searchHistory = throttle(() => {
 		let request = {
 			...state.queryParams,
 			PhoneNo: state.ruleForm.fromPhone,
-			OrderId: historyParams.id, //传入id 排除重复工单选择自己
+			OrderId: state.orderId, //传入id 排除重复工单选择自己
 		};
-		historyOrder(request)
-			.then((response: any) => {
-				state.tableData = response?.result.items ?? [];
-				state.total = response?.result.total;
-				setTimeout(() => {
-					state.historyOrderLoading = false;
-				}, 300);
-			})
-			.catch(() => {
-				state.historyOrderLoading = false;
-			});
+    try {
+      const response = await historyOrder(request);
+      state.tableData = response?.result.items ?? [];
+      state.total = response?.result.total;
+      state.historyOrderLoading = false;
+      if(orderDetail){
+        if (orderDetail.result.duplicateIds && orderDetail.result.duplicateIds.length) {
+          // 是否重复
+          state.ruleForm.isRepeat = 'true';
+          state.ruleForm.duplicateTitle = '已选择';
+          multipleSelection.value = orderDetail.result.duplicateIds;
+          for(let i of multipleSelection.value){
+            for(let j of state.tableData){
+              if(i === j.id){
+                setTimeout(() => {
+                  multipleTableRef.value!.toggleRowSelection(j, true);
+                }, 0);
+              }
+            }
+          }
+        } else {
+          state.ruleForm.isRepeat = 'false';
+        }
+      }
+    } catch (error) {
+      state.historyOrderLoading = false;
+    }
 	}
 }, 500);
 // 补充信息
@@ -955,6 +1000,25 @@ const onSupply = (val: any) => {
 const onSupplySuccess = () => {
 	searchHistory();
 };
+// 撤销
+const orderRevokeRef = ref<RefType>()
+const onRevoke = (row: any)=>{
+  orderRevokeRef.value.openDialog(row);
+}
+// 撤销提交成功
+const onRevokeSuccess = ()=>{
+  searchHistory();
+}
+// 督办
+const orderSuperviseRef = ref<RefType>(); // 工单督办
+const onSupervise = () => {
+  orderSuperviseRef.value.openDialog(state.ruleForm);
+};
+// 督办提交成功
+const onSuperviseSuccess = () => {
+  // 刷新列表
+  searchHistory();
+};
 // 预览知识
 const onPreview = (row: any) => {
 	router.push({
@@ -965,6 +1029,11 @@ const onPreview = (row: any) => {
 		},
 	});
 };
+// 赋值重复工单
+const assignRepeat = (row: any) => {
+  state.ruleForm.duplicateIds = row.map((item: any) => item.id);
+  state.ruleForm.duplicateTitle = '已选择';
+};
 onMounted(async () => {
 	state.formLoading = true;
   state.historyOrderLoading = true;
@@ -990,7 +1059,8 @@ onMounted(async () => {
 			state.createBy = historyParams.createBy;
 			if (historyParams.createBy === 'tel') {
 				//通话
-				state.ruleForm.channel = 'RGDH'; //电话
+				state.ruleForm.sourceChannel = '电话'; //电话
+        state.ruleForm.sourceChannelCode = 'RGDH'; //电话
 				state.ruleForm.fromPhone = historyParams.telNo;
 				state.ruleForm.callId = historyParams.callId;
 				state.ruleForm.transferPhone = historyParams.transfer;
@@ -1002,9 +1072,9 @@ onMounted(async () => {
       const response = await orderDetail(route.params.id );
       // 如果获取到id 调用查询详情
       state.ruleForm = response.result;
-      if (state.ruleForm.channel === 'RGDH') {
+      if (state.ruleForm.sourceChannelCode === 'RGDH') {
         // 来源渠道为电话查询历史工单
-        searchHistory();
+        searchHistory(response);
       }
       if (state.ruleForm.orderType === 1) {
         // 工单类型 选择了12315市场监管受理单
@@ -1031,13 +1101,7 @@ onMounted(async () => {
         dicDataValue: state.ruleForm.sourceChannelCode,
         dicDataName: state.ruleForm.sourceChannel,
       };
-      if (response.result.duplicateId) {
-        // 是否重复
-        state.ruleForm.isRepeat = 'true';
-        state.tableRadio = state.ruleForm.duplicateId;
-      } else {
-        state.ruleForm.isRepeat = 'false';
-      }
+
       if (response.result.hotspotExternal) {
         //热点分类默认展开
         state.hotspotExternal = state.ruleForm.hotspotExternal.split(',');

+ 1 - 1
src/views/business/order/components/Order-detail.vue

@@ -106,7 +106,7 @@
                   </el-col>
                   <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
                     <el-form-item label="是否重复">
-                      {{ state.ruleForm.isDuplicateText }}
+                      {{ state.ruleForm.duplicateIds.length > 0 ? '是(' + state.ruleForm.duplicateIds.length + '次)' : ''}}
                       <el-button plain title="查看重复工单" size="small" type="primary" class="ml8" @click="showDuplicateInfo">查看重复工单</el-button>
                     </el-form-item>
                   </el-col>

+ 31 - 7
src/views/business/order/components/Order-history.vue

@@ -1,7 +1,6 @@
 <template>
 	<div class="">
 		<el-dialog v-model="state.dialogVisible" draggable title="历史工单" ref="dialogRef" width="60%" append-to-body>
-			<div>
 				<el-form :model="state.queryParams" ref="ruleFormRef" :inline="true" @submit.native.prevent>
 					<el-form-item label="关键词" prop="Keyword">
 						<el-input v-model="state.queryParams.Keyword" placeholder="工单标题/工单编码" clearable @keyup.enter="handleQuery" />
@@ -12,7 +11,7 @@
 					</el-form-item>
 				</el-form>
 				<el-table :data="state.tableData" @selection-change="handleSelectionChange" max-height="500" ref="multipleTableRef" row-key="id">
-          <el-table-column type="selection" label="请选择" width="80" />
+          <el-table-column type="selection" label="请选择" width="80" :reserve-selection="true"/>
 					<el-table-column prop="phoneNo" label="工单标题" show-overflow-tooltip>
 						<template #default="{row}">
 							<span style="color: var(--el-color-primary)">{{ row.title }}</span>
@@ -42,23 +41,21 @@
           <el-table-column label="操作" width="150" fixed="right" align="center">
             <!-- 草稿0 status 可以删除 -->
             <template #default="{ row }">
-<!--              <el-button type="primary" link @click="onSupply" :loading="state.loading"  v-auth="'system:workflow:supply'">督办</el-button>-->
               <el-button type="primary" link @click="onSupply(row)" :loading="state.loading"  v-auth="'business:order:supply'">补充</el-button>
               <el-button type="primary" link @click="onRevoke(row)" :loading="state.loading"  v-auth="'business:order:revoke'">撤销</el-button>
+              <el-button @click="onSupervise(row)" link type="primary" v-auth="'business:order:supervise'"> 督办 </el-button>
             </template>
           </el-table-column>
 					<template #empty>
 						<Empty />
 					</template>
 				</el-table>
-				<!-- 分页 -->
 				<pagination
 					:total="state.total"
 					v-model:page="state.queryParams.PageIndex"
 					v-model:limit="state.queryParams.PageSize"
 					@pagination="getList"
 				/>
-			</div>
 			<template #footer>
 				<span class="dialog-footer">
 					<el-button class="default-button" @click="state.dialogVisible = false">取 消</el-button>
@@ -70,6 +67,8 @@
     <order-supply ref="orderSupplyRef" @onSupplySuccess="onSupplySuccess" />
     <!-- 工单撤销 -->
     <order-revoke ref="orderRevokeRef" @onRevokeSuccess="onRevokeSuccess" />
+    <!-- 工单督办 -->
+    <order-super-vise ref="orderSuperviseRef" @onSuperviseSuccess="onSuperviseSuccess" />
 	</div>
 </template>
 
@@ -82,6 +81,7 @@ import { useRoute } from 'vue-router';
 // 引入组件
 const OrderSupply = defineAsyncComponent(() => import('/@/views/business/order/components/Order-supply.vue'));  // 补充组件
 const OrderRevoke = defineAsyncComponent(() => import('/@/views/business/order/components/Order-revoke.vue'));  // 撤销组件
+const OrderSuperVise = defineAsyncComponent(() => import('/@/views/business/supervise/components/Order-supervise.vue'));  // 工单督办
 const emit = defineEmits(['saveSelect']);
 // 定义变量内容
 const state = reactive<any>({
@@ -94,7 +94,6 @@ const state = reactive<any>({
 	tableData: [], // 表格数据
 	total: 0,   // 总条数
 	loading: false, // 加载状态
-	selectRow: null as any, // 选中行
 	ruleForm: {}, // 表单数据
 });
 const ruleFormRef = ref<RefType>(); // 表单ref
@@ -104,7 +103,6 @@ const multipleTableRef = ref<RefType>();  // 表格ref
 // 打开弹窗
 const openDialog = (row: any) => {
 	state.ruleForm = row;
-  multipleSelection.value = [];
 	getList();
 	state.dialogVisible = true;
 };
@@ -136,6 +134,22 @@ const getList = () => {
 	historyOrder(request)
 		.then((response: any) => {
 			state.tableData = response?.result.items ?? [];
+      multipleTableRef.value!.clearSelection();
+      if(state.ruleForm.duplicateIds && state.ruleForm.duplicateIds.length){
+        for(let i of state.ruleForm.duplicateIds){
+          for(let j of state.tableData){
+            if(i === j.id){
+              setTimeout(() => {
+                multipleTableRef.value!.toggleRowSelection(j, true);
+                multipleSelection.value.push(j);
+              }, 0);
+            }
+          }
+        }
+      }else{
+        multipleSelection.value = [];
+        multipleTableRef.value!.clearSelection();
+      }
 			state.total = response?.result.total;
 			state.loading = false;
 		})
@@ -174,6 +188,16 @@ const onRevokeSuccess = ()=>{
   // 刷新列表
   getList();
 }
+// 督办
+const orderSuperviseRef = ref<RefType>(); // 工单督办
+const onSupervise = () => {
+  orderSuperviseRef.value.openDialog(state.ruleForm);
+};
+// 督办提交成功
+const onSuperviseSuccess = () => {
+  // 刷新列表
+  getList();
+};
 // 确定选择历史工单
 const selectConfirm = () => {
 	emit('saveSelect', multipleSelection.value);

+ 19 - 20
src/views/business/release/index.vue

@@ -190,6 +190,7 @@ import { auth } from '/@/utils/authFunction';
 import { throttle } from '/@/utils/tools';
 import {commonEnum, shortcuts} from '/@/utils/constants';
 import { formatDate } from '/@/utils/formatTime';
+import {publishList} from "/@/api/business/release";
 // 引入组件
 const OrderRelease = defineAsyncComponent(() => import('/@/views/business/release/component/Order-release.vue'));
 const ProcessApproval = defineAsyncComponent(() => import('/@/components/ProcessApproval/index.vue'));  // 流程审批
@@ -201,25 +202,16 @@ const state = reactive(<any>{
 		// 查询条件
 		PageIndex: 1,
 		PageSize: 10,
-		Keyword: '', // 关键字
-		Content: '', // 工单内容
+    OrderTitle: '', // 工单标题
 		AcceptType: '', // 受理类型
-		Channel: '', // 渠道
-		HotspotId: [], // 热点
-		OrgCode: [], // 机构
-		NameOrNo: '', // 受理坐席
-		crTime: [], // 创建时间
-		CreationTimeStart: '', // 创建时间 开始
-		CreationTimeEnd: '', // 创建时间 结束
-		TransferPhone: '', // 转派人
-		EmergencyLevel: [], // 紧急程度
-		exTime: [], // 办理期限
-		ExpiredTimeStart: '', //办理期限 开始
-		ExpiredTimeEnd: '', //办理期限 结束
-		PhoneNo: '', // 手机号
-		Status: [], // 状态
-		pushTypeOptions: '', //
-		PushTypeCode: '', //推送类型
+    HotspotIds: [], // 热点分类
+    PubState:'',// 发布状态
+    PubMan:'',//发布人
+    PubRange:'',//发布范围
+    CreationTimeStart:'', //受理时间(工单创建时间)
+    CreationTimeEnd:'',//受理时间(工单创建时间)
+    FiledTimeStart:'',// 归档时间
+    FiledTimeStart:'', //归档时间
 	},
 	tableList: [{}], //表单
 	loading: false, // 加载
@@ -261,9 +253,9 @@ const handleTimeChange = (val: string[], startKey: string, endKey: string) => {
 const timeStartChangeCr = (val: string[]) => {
 	handleTimeChange(val, 'CreationTimeStart', 'CreationTimeEnd');
 };
-// 过期时间
+// 归档时间
 const timeStartChangeEx = (val: string[]) => {
-	handleTimeChange(val, 'ExpiredTimeStart', 'ExpiredTimeEnd');
+	handleTimeChange(val, 'FiledTimeStart', 'FiledTimeEnd');
 };
 // 获取查询条件基础信息
 const getBaseData = async () => {
@@ -279,6 +271,13 @@ const getBaseData = async () => {
 const queryList = throttle(() => {
 	if (!auth('business:release:query')) ElMessage.error('抱歉,您没有权限查看工单发布列表!');
 	else {
+    publishList(state.queryParams).then((res: any) => {
+      state.tableList = res.result;
+      state.total = res.count;
+      state.loading = false;
+    }).catch((err: any) => {
+      state.loading = false;
+    })
 	}
 }, 500);
 

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно