Forráskód Böngészése

reactor:回访平级移动查询办理人接口调整;

zhangchong 7 hónapja
szülő
commit
0c260cb6e7

+ 10 - 1
src/api/todo/center.ts

@@ -47,7 +47,7 @@ export const migrationOrderChange = (data: object) => {
   });
 }
 /**
- * @description 查询发布和回访平移待办理人
+ * @description 查询发布平移待办理人
  */
 export const migrationOrderList = () => {
   return request({
@@ -76,4 +76,13 @@ export const migrationOrderVisit = (data: object) => {
     method: 'post',
     data
   });
+}
+/**
+ * @description 查询回访平移待办理人
+ */
+export const migrationOrderVisitList = () => {
+  return request({
+    url: `/api/v1/Order/ordervisit/migration`,
+    method: 'get',
+  });
 }

+ 107 - 1
src/views/business/delay/index.vue

@@ -10,6 +10,47 @@
 				:total="state.total"
 				v-model:page-index="state.queryParams.PageIndex"
 				v-model:page-size="state.queryParams.PageSize"
+				v-if="['YiBin'].includes(themeConfig.appScope)"
+			>
+				<template #table-search>
+					<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline>
+						<el-form-item label="关键字" prop="Keyword">
+							<el-input v-model="state.queryParams.Keyword" placeholder="工单编码/标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
+						</el-form-item>
+						<el-form-item label="延期状态" prop="DelayState">
+							<el-select v-model="state.queryParams.DelayState" placeholder="请选择延期状态" @change="handleQuery">
+								<el-option v-for="item in delayStateOptions" :value="item.key" :key="item.key" :label="item.value" />
+							</el-select>
+						</el-form-item>
+						<el-form-item>
+							<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+							<el-button @click="resetQuery(ruleFormRef)" v-waves class="default-button" :loading="state.loading">
+								<SvgIcon name="ele-Refresh" class="mr5" />重置
+							</el-button>
+						</el-form-item>
+					</el-form>
+				</template>
+				<template #expiredStatusText="{ row }">
+					<span :class="'overdue-status-' + row.order?.expiredStatus" :title="row.order?.expiredStatusText"></span>
+				</template>
+				<template #title="{ row }">
+					<order-detail :order="row.order" @updateList="queryList">{{ row.order?.title }}</order-detail>
+				</template>
+				<!-- 表格操作 -->
+				<template #operation="{ row }">
+					<el-button link type="primary" @click="onDetail(row)" title="查看延期详情"> 延期详情 </el-button>
+				</template>
+			</ProTable>
+			<ProTable
+				ref="proTableRef"
+				:columns="columns1"
+				:data="state.tableData"
+				@updateTable="queryList"
+				:loading="state.loading"
+				:total="state.total"
+				v-model:page-index="state.queryParams.PageIndex"
+				v-model:page-size="state.queryParams.PageSize"
+				v-else-if="['ZiGong'].includes(themeConfig.appScope)"
 			>
 				<template #table-search>
 					<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline>
@@ -53,12 +94,15 @@ import { FormInstance } from 'element-plus';
 import { formatDate } from '@/utils/formatTime';
 import { useRouter } from 'vue-router';
 import { delayBaseData, delayDetail, delayList } from '@/api/business/delay';
+import { useThemeConfig } from '@/stores/themeConfig';
+import { storeToRefs } from 'pinia';
 // 引入组件
 const DelayDetailCom = defineAsyncComponent(() => import('@/views/business/delay/components/Delay-detail.vue')); // 延期详情
 const DelayEdit = defineAsyncComponent(() => import('@/views/business/delay/components/Delay-edit.vue')); // 延期修改
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
 
-const proTableRef = ref<RefType>(); // 表格ref
+const storesThemeConfig = useThemeConfig();
+const { themeConfig } = storeToRefs(storesThemeConfig);
 // 表格配置项
 const columns = ref<any[]>([
 	{ prop: 'expiredStatusText', label: '超期状态', align: 'center', width: 80 },
@@ -120,6 +164,68 @@ const columns = ref<any[]>([
 	},
 	{ prop: 'operation', label: '操作', fixed: 'right', width: 90, align: 'center' },
 ]);
+// 表格配置项
+const columns1 = ref<any[]>([
+	{ prop: 'expiredStatusText', label: '超期状态', align: 'center', width: 80 },
+	{ prop: 'no', label: '工单编码', minWidth: 140 },
+	{ prop: 'order.isProvinceText', label: '省/市工单', minWidth: 90 },
+	// { prop: 'title', label: '自动延期次数', minWidth: 110 },
+	{ prop: 'title', label: '工单标题', minWidth: 200 },
+	{ prop: 'currentStepName', label: '当前节点', minWidth: 100 },
+	{ prop: 'actualHandlerName', label: '审批人', minWidth: 120 },
+	{ prop: 'delayStateText', label: '延期申请状态', minWidth: 110 },
+	{
+		prop: 'order.startTime',
+		label: '受理时间',
+		minWidth: 160,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.order?.startTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{ prop: 'order.acceptorName', label: '受理人', minWidth: 120 },
+	{ prop: 'order.hotspotName', label: '热点分类', minWidth: 150 },
+	{ prop: 'order.acceptType', label: '受理类型', minWidth: 100 },
+	{ prop: 'order.orgLevelOneName', label: '一级部门', minWidth: 140 },
+	{ prop: 'order.actualHandleOrgName', label: '接办部门', minWidth: 140 },
+	{
+		prop: 'order.actualHandleTime',
+		label: '接办时间',
+		minWidth: 160,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.order?.actualHandleTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{
+		prop: 'creationTime',
+		label: '延期申请时间',
+		minWidth: 160,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.creationTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{ prop: 'creatorName', label: '延期申请人', minWidth: 120 },
+	{ prop: 'creatorOrgName', label: '延期申请部门', minWidth: 140 },
+	{ prop: 'delayNum', label: '延期申请时限', minWidth: 110 },
+	{ prop: 'delayUnitText', label: '延期申请单位', minWidth: 110 },
+	{ prop: 'delayReason', label: '申请理由', minWidth: 150 },
+	{
+		prop: 'beforeDelay',
+		label: '申请前期满时间',
+		minWidth: 160,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.beforeDelay, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{
+		prop: 'afterDelay',
+		label: '通过后期满时间',
+		minWidth: 160,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.afterDelay, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{ prop: 'operation', label: '操作', fixed: 'right', width: 90, align: 'center' },
+]);
 // 定义变量内容
 const state = reactive({
 	queryParams: {

+ 52 - 24
src/views/todo/center/Order-migration.vue

@@ -37,7 +37,14 @@
 import { reactive, ref } from 'vue';
 import { ElMessage, FormInstance } from 'element-plus';
 import { throttle } from '@/utils/tools';
-import { migrationOrder, migrationOrderChange, migrationOrderList, migrationOrderPublish, migrationOrderVisit } from '@/api/todo/center';
+import {
+	migrationOrder,
+	migrationOrderChange,
+	migrationOrderList,
+	migrationOrderPublish,
+	migrationOrderVisit,
+	migrationOrderVisitList,
+} from '@/api/todo/center';
 
 // 定义子组件向父组件传值/事件
 const emit = defineEmits(['updateList']);
@@ -68,28 +75,49 @@ const queryList = async () => {
 	state.dialogVisible = true;
 	loading.value = true;
 	switch (migrationType.value) {
-    case 'centerTodo': // 中心待办
-			const { result } = await migrationOrder(dataRow.value.id);
-			stepId.value = result.stepId;
-      orderId.value = result.orderId;
-			state.tableData = result.handlers;
-			if (state.queryParams.name) {
-				state.tableData = state.tableData.filter((data: any) => {
-					return String(data['username']).toLowerCase().indexOf(state.queryParams.name) > -1;
-				});
+		case 'centerTodo': // 中心待办
+			try {
+				const { result } = await migrationOrder(dataRow.value.id);
+				stepId.value = result.stepId;
+				orderId.value = result.orderId;
+				state.tableData = result.handlers;
+				if (state.queryParams.name) {
+					state.tableData = state.tableData.filter((data: any) => {
+						return String(data['username']).toLowerCase().indexOf(state.queryParams.name) > -1;
+					});
+				}
+				loading.value = false;
+			} catch (e) {
+				loading.value = false;
 			}
-			loading.value = false;
 			break;
-		case 'publishTodo': // 发布和回访
-    case 'visitTodo':
-			const response = await migrationOrderList();
-			state.tableData = response.result;
-			if (state.queryParams.name) {
-				state.tableData = state.tableData.filter((data: any) => {
-					return String(data['username']).toLowerCase().indexOf(state.queryParams.name) > -1;
-				});
+		case 'publishTodo': // 发布
+			try {
+				const response = await migrationOrderList();
+				state.tableData = response.result;
+				if (state.queryParams.name) {
+					state.tableData = state.tableData.filter((data: any) => {
+						return String(data['username']).toLowerCase().indexOf(state.queryParams.name) > -1;
+					});
+				}
+				loading.value = false;
+			} catch (e) {
+				loading.value = false;
+			}
+			break;
+		case 'visitTodo': // 回访
+			try {
+				const responseVisit = await migrationOrderVisitList();
+				state.tableData = responseVisit.result;
+				if (state.queryParams.name) {
+					state.tableData = state.tableData.filter((data: any) => {
+						return String(data['username']).toLowerCase().indexOf(state.queryParams.name) > -1;
+					});
+				}
+				loading.value = false;
+			} catch (e) {
+				loading.value = false;
 			}
-			loading.value = false;
 			break;
 		default:
 			break;
@@ -127,8 +155,8 @@ const openDialog = async (type: string, formData: any) => {
 		case 'centerTodo':
 			dataRow.value = formData;
 			break;
-    case 'publishTodo':
-    case 'visitTodo':
+		case 'publishTodo':
+		case 'visitTodo':
 			orderIds.value = formData;
 			break;
 		default:
@@ -151,7 +179,7 @@ const onSubmit = throttle(async () => {
 		case 'centerTodo': // 中心待办
 			const request = {
 				stepId: stepId.value,
-        orderId:orderId.value,
+				orderId: orderId.value,
 				handler: selectRow.value,
 			};
 			migrationOrderChange(request)
@@ -191,7 +219,7 @@ const onSubmit = throttle(async () => {
 			break;
 		case 'visitTodo': // 回访待办
 			const visitRequest = {
-        ids: orderIds.value,
+				ids: orderIds.value,
 				userId: tableRadio.value,
 			};
 			migrationOrderVisit(visitRequest)