Selaa lähdekoodia

reactor:200 发布待办新增字段;199 知识管理新增查询条件;198 受理列表、业务待办、综合查询新增字段;196 关于省件发布时的优化;155 市州通用-综合查询等页面分页组件优化

zhangchong 4 kuukautta sitten
vanhempi
commit
5db0ba62d4

+ 9 - 2
src/components/OrderDetail/index.vue

@@ -530,7 +530,8 @@
 					>结束会签</el-button
 				>
 				<!-- 有流程信息就可以查询明细 -->
-				<el-button type="primary" @click="onRecord" :loading="state.loading" v-if="state.ruleForm?.workflowId">流程明细</el-button>
+				<el-button type="primary" @click="onRecord" :loading="state.loading" v-if="state.ruleForm?.workflowId">流程明细(旧)</el-button>
+				<el-button type="primary" @click="onRecordNew" :loading="state.loading" v-if="state.ruleForm?.workflowId">流程明细(新)</el-button>
 				<!-- 有流程信息就可以撤回 -->
 				<el-button
 					type="primary"
@@ -960,7 +961,13 @@ const onRecord = () => {
 		dialogTitle: '流程明细',
 		...state.ruleForm,
 	};
-	// auditRecordRef.value.openDialog(params);
+	auditRecordRef.value.openDialog(params);
+};
+const onRecordNew = () => {
+	const params = {
+		dialogTitle: '流程明细',
+		...state.ruleForm,
+	};
 	processDetailRef.value.openDialog(params);
 };
 // 申请延期

+ 10 - 0
src/layout/navBars/breadcrumb/ybTel.vue

@@ -978,6 +978,16 @@ const onMessage = async (event: any) => {
 				);
 				break;
 			case 'logout': // 签出消息回调
+				const currentTelLogOut = Local.get('currentTel');
+				const name: string = `天润分机号:${currentTelLogOut}手动签出`;
+				const remark: string = `天润分机号:${currentTelLogOut}手动签出`;
+				const request = {
+					creationTime: new Date(),
+					name,
+					remark,
+					executeUrl: themeConfig.value.callCenterSocketUrl,
+				};
+				await submitLogFn(request);
 				seatAssistOff(); // 坐席助手关闭
 				olaRef.value.close();
 				globalState.callCenterIsSignIn = false; // 签出状态

+ 3 - 3
src/views/business/countersign/index.vue

@@ -276,13 +276,13 @@ const resetQuery = (formEl: FormInstance | undefined) => {
 // 流转记录
 const auditRecordRef = ref<RefType>(); // 流转记录
 const processDetailRef = ref<RefType>();
-const onRecord = (row) => {
+const onRecord = (row:any) => {
 	const params = {
 		dialogTitle: '流转记录',
 		...row.order,
 	};
-	// auditRecordRef.value.openDialog(params);
-	processDetailRef.value.openDialog(params);
+	auditRecordRef.value.openDialog(params);
+	// processDetailRef.value.openDialog(params);
 };
 // 查询基础信息
 const baseInfo = async () => {

+ 32 - 80
src/views/business/order/index.vue

@@ -86,7 +86,7 @@
 					<span v-else>{{ row.statusText }}</span>
 				</template>
 				<template #order_detail="{ row }">
-					<order-detail :order="row" @updateList="queryList(true)">{{ row.title }}</order-detail>
+					<order-detail :order="row" @updateList="queryList">{{ row.title }}</order-detail>
 				</template>
 				<template #action="{ row }">
 					<el-button
@@ -108,18 +108,13 @@
 					<order-detail :order="row" @updateList="handleQuery" />
 				</template>
 				<template #pager>
-					<div class="flex-end" style="align-items: center">
-						<span v-loading="totalLoading" class="mr10">共 {{ totalCount }} 条</span>
-						<el-pagination
-							layout="prev, pager, next"
-							:total="state.total"
-							@current-change="handleCurrentChange"
-							:page-size="state.queryParams.PageSize"
-							:current-page="state.queryParams.PageIndex"
-							@size-change="handleSizeChange"
-							:disabled="state.loading"
-						/>
-					</div>
+					<pagination
+						@pagination="queryList"
+						:total="state.total"
+						v-model:current-page="state.queryParams.PageIndex"
+						v-model:page-size="state.queryParams.PageSize"
+						:disabled="state.loading"
+					/>
 				</template>
 			</vxe-grid>
 		</div>
@@ -371,7 +366,7 @@ import { defineAsyncComponent, onMounted, reactive, ref, onActivated, onBeforeUn
 import type { FormInstance } from 'element-plus';
 import { ElMessage, ElMessageBox } from 'element-plus';
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
-import { exportOrder, listBaseData, orderListCount, orderListFixed } from '@/api/business/order';
+import { exportOrder, listBaseData, orderList, orderListCount, orderListFixed } from '@/api/business/order';
 import { addObserve } from '@/api/query/observe';
 import { addEnd } from '@/api/query/end';
 import { treeArea } from '@/api/auxiliary/area';
@@ -389,6 +384,7 @@ const RepeatEventEdit = defineAsyncComponent(() => import('@/views/business/repe
 const OrderReturn = defineAsyncComponent(() => import('@/views/business/return/components/Apply.vue')); // 工单退回
 const OrderRevoke = defineAsyncComponent(() => import('@/views/business/order/components/Order-revoke.vue')); // 工单撤销
 const OrderUrge = defineAsyncComponent(() => import('@/views/business/order/components/Order-Urge.vue')); // 工单催办
+const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
 
 const storesUserInfo = useUserInfo();
 const { userInfos } = storeToRefs(storesUserInfo);
@@ -398,7 +394,7 @@ const { themeConfig } = storeToRefs(storesThemeConfig);
 const state = reactive<any>({
 	queryParams: {
 		PageIndex: 1, // 当前页
-		PageSize: 50, // 每页条数
+		PageSize: 20, // 每页条数
 		// 查询条件
 		No: null, // 工单编码
 		ProvinceNo: null, // 省本地编码
@@ -579,34 +575,11 @@ const gridEvents = {
 // 手动查询,将页码设置为1
 const handleQuery = () => {
 	state.queryParams.PageIndex = 1;
-	queryIndex.value = 0;
-	queryList(true);
+	queryList();
+	getTotal();
 };
 // 改变页码
-const queryIndex = ref(0); // 数据批次
-const totalTable = ref([]); // 数据总数
-const handleCurrentChange = (val: number) => {
-	state.queryParams.PageIndex = val;
-	// 判断当前页是否是数据的最后一页
-	if (val === Math.ceil(state.total / state.queryParams.PageSize)) {
-		queryList();
-	} else {
-		state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
-	}
-};
-// 改变每页条数
-const handleSizeChange = (val: any) => {
-	state.queryParams.PageSize = val;
-	// 判断当前页是否是数据的最后一页
-	if (val === Math.ceil(state.total / state.queryParams.PageSize)) {
-		queryList();
-	} else {
-		state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
-	}
-};
-const totalCount = ref(0);
-const totalLoading = ref(false);
-const queryList = (isQuery: boolean = false) => {
+const queryList = () => {
 	return new Promise((resolve, reject) => {
 		requestParams.value = Other.deepClone(state.queryParams);
 		requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 生成时间
@@ -621,49 +594,19 @@ const queryList = (isQuery: boolean = false) => {
 		requestParams.value.ActualHandleTimeStart = state.queryParams.doneTime === null ? null : state.queryParams.doneTime[0]; // 办结时间
 		requestParams.value.ActualHandleTimeEnd = state.queryParams.doneTime === null ? null : state.queryParams.doneTime[1];
 		Reflect.deleteProperty(requestParams.value, 'doneTime'); // 删除无用的参数
-		requestParams.value.QueryIndex = queryIndex.value; // 数据批次
 		requestParams.value.ContentRetrieval = state.ruleForm.content;
-		if (isQuery) requestParams.value.QueryIndex = 0;
 		state.loading = true;
-		totalLoading.value = true;
 		gridOptions.loading = true;
-		orderListFixed(requestParams.value)
+		orderList(requestParams.value)
 			.then((response: any) => {
-				if (isQuery) {
-					// 如果是查询
-					totalTable.value = []; // 先清空
-					totalTable.value = response?.result;
-					state.total = totalTable.value.length;
-					state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
-					gridOptions.data = state.tableData;
-					queryIndex.value = 1; // 请求完成之后,页码加一避免重复
-				} else {
-					if (response?.result.length) queryIndex.value++;
-					totalTable.value = totalTable.value.concat(response?.result);
-					state.total = totalTable.value.length;
-					state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
-					gridOptions.data = state.tableData;
-				}
+				gridOptions.data = response?.result ?? []
 				state.loading = false;
 				gridOptions.loading = false;
 				gridRef.value.clearCheckboxRow();
 				checkTable.value = [];
 				resolve(response);
-			})
-			.then(() => {
-				// 查询总数
-				orderListCount(requestParams.value)
-					.then((count) => {
-						totalCount.value = count.result;
-						totalLoading.value = false;
-					})
-					.catch(() => {
-						totalLoading.value = false;
-					});
-			})
-			.catch(() => {
+			}).catch(() => {
 				state.loading = false;
-				totalLoading.value = false;
 				gridOptions.loading = false;
 				gridRef.value.clearCheckboxRow();
 				checkTable.value = [];
@@ -671,6 +614,15 @@ const queryList = (isQuery: boolean = false) => {
 			});
 	});
 };
+// 查询总数
+const getTotal = () => {
+	orderListCount(requestParams.value)
+		.then((res) => {
+			state.total = res.result ?? 0;
+		})
+		.catch(() => {
+		});
+};
 /** 重置按钮操作 */
 const drawerRuleFormRef = ref();
 const ruleFormRef = ref<RefType>(); // 表单ref
@@ -682,10 +634,10 @@ const resetQuery = (formEl: FormInstance | undefined) => {
 	state.queryParams.IsProvinceOrder = null;
 	fastSearch.value = 'all';
 	checkList.value = [];
-	queryIndex.value = 0;
 	ruleFormRef.value?.resetFields();
 	state.ruleForm.content = null;
-	queryList(true);
+	queryList();
+	getTotal();
 };
 // 设置终结件
 const onObserve = () => {
@@ -704,7 +656,7 @@ const onObserve = () => {
 		.then(() => {
 			addObserve({ orderIds: ids }).then(() => {
 				ElMessage.success('已添加关注');
-				queryList(true);
+				queryList();
 			});
 		})
 		.catch(() => {});
@@ -726,7 +678,7 @@ const onEnd = () => {
 		.then(() => {
 			addEnd({ orderIds: ids }).then(() => {
 				ElMessage.success('操作成功');
-				queryList(true);
+				queryList();
 			});
 		})
 		.catch(() => {});
@@ -768,8 +720,7 @@ const onSearch = (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
 	formEl.validate((valid: boolean) => {
 		if (!valid) return;
-		queryIndex.value = 0;
-		queryList(true);
+		queryList();
 		state.dialogVisible = false;
 	});
 };
@@ -796,6 +747,7 @@ const isChecked = computed(() => {
 onMounted(() => {
 	queryList().then(() => {
 		getBaseData();
+		getTotal();
 	});
 });
 onActivated(() => {

+ 1 - 0
src/views/business/order/tableHeader.tsx

@@ -191,6 +191,7 @@ export const LZTableHeader = [
 			},
 		},
 	},
+	{ field: 'remainingTime', title: '剩余办理时间', width: 110 },
 	{ field: 'sourceChannel', title: '来源渠道', width: 110 },
 	{ field: 'isProvinceText', title: '省/市工单', width: 90 },
 	{ field: 'no', title: '工单编码', width: 140 },

+ 71 - 118
src/views/business/publish/index.vue

@@ -1,62 +1,56 @@
 <template>
 	<div class="business-publish-container layout-padding">
 		<div class="layout-padding-auto layout-padding-view pd20">
-				<vxe-grid v-bind="gridOptions"  ref="gridRef" @checkbox-all="selectAllChangeEvent" @checkbox-change="selectChangeEvent">
-					<template #form>
-						<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline :disabled="gridOptions.loading">
-							<el-form-item label="工单标题" prop="Title">
-								<el-input v-model.trim="state.queryParams.Title" placeholder="工单标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
-							</el-form-item>
-							<el-form-item label="工单编码" prop="No">
-								<el-input v-model.trim="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
-							</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="drawer = true" class="default-button"> <SvgIcon name="ele-Search" class="mr5" />更多查询</el-button>
-							</el-form-item>
-						</el-form>
-					</template>
-					<template #toolbar_buttons>
-						<el-button type="primary" @click="onJbExport" :loading="state.loading" :disabled="isChecked"
-						><SvgIcon name="iconfont icon-daochu" class="mr5" />交办单导出<span v-if="checkTable.length">({{ checkTable.length }})</span>
-						</el-button>
-					</template>
-					<template #statusText="{ row }">
-						<el-text type="danger" tag="b" v-if="[1, 2, 3, 9, 101, 102, 103, 104, 105, 200].includes(row.order?.status)">{{ row.order?.statusText }}</el-text>
-						<span v-else>{{ row.order?.statusText }}</span>
-					</template>
-					<template #order_detail="{ row }">
-						<order-detail :order="row.order" @updateList="queryList(true)">{{ row.order?.title }}</order-detail>
-					</template>
-					<template #action="{row}">
-						<el-button
-							link
-							type="primary"
-							@click="editPublish(row)"
-							v-if="!row.order?.isProvince"
-							title="编辑发布"
-							v-auth="'business:publish:edit'"
-						>
-							编辑发布
-						</el-button>
-						<el-button link type="primary" @click="onCancelPublish(row)" title="取消发布" v-auth="'business:publish:cancel'"> 取消发布 </el-button>
-					</template>
-					<template #pager>
-						<div class="flex-end" style="align-items: center">
-							<span v-loading="totalLoading" class="mr10">共 {{ totalCount }} 条</span>
-							<!--				sizes-->
-							<el-pagination
-								layout="prev, pager, next"
-								:total="state.total"
-								@current-change="handleCurrentChange"
-								:page-size="state.queryParams.PageSize"
-								:current-page="state.queryParams.PageIndex"
-								@size-change="handleSizeChange"
-								:disabled="state.loading"
-							/>
-						</div>
-					</template>
-				</vxe-grid>
+			<vxe-grid v-bind="gridOptions"  ref="gridRef" @checkbox-all="selectAllChangeEvent" @checkbox-change="selectChangeEvent">
+				<template #form>
+					<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline :disabled="gridOptions.loading">
+						<el-form-item label="工单标题" prop="Title">
+							<el-input v-model.trim="state.queryParams.Title" placeholder="工单标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
+						</el-form-item>
+						<el-form-item label="工单编码" prop="No">
+							<el-input v-model.trim="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
+						</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="drawer = true" class="default-button"> <SvgIcon name="ele-Search" class="mr5" />更多查询</el-button>
+						</el-form-item>
+					</el-form>
+				</template>
+				<template #toolbar_buttons>
+					<el-button type="primary" @click="onJbExport" :loading="state.loading" :disabled="isChecked"
+					><SvgIcon name="iconfont icon-daochu" class="mr5" />交办单导出<span v-if="checkTable.length">({{ checkTable.length }})</span>
+					</el-button>
+				</template>
+				<template #statusText="{ row }">
+					<el-text type="danger" tag="b" v-if="[1, 2, 3, 9, 101, 102, 103, 104, 105, 200].includes(row.order?.status)">{{ row.order?.statusText }}</el-text>
+					<span v-else>{{ row.order?.statusText }}</span>
+				</template>
+				<template #order_detail="{ row }">
+					<order-detail :order="row.order" @updateList="queryList">{{ row.order?.title }}</order-detail>
+				</template>
+				<template #action="{row}">
+					<el-button
+						link
+						type="primary"
+						@click="editPublish(row)"
+						v-if="!row.order?.isProvince"
+						title="编辑发布"
+						v-auth="'business:publish:edit'"
+					>
+						编辑发布
+					</el-button>
+					<el-button link type="primary" @click="onCancelPublish(row)" title="取消发布" v-auth="'business:publish:cancel'"> 取消发布 </el-button>
+				</template>
+				<template #pager>
+					<pagination
+						@pagination="queryList"
+						:total="state.total"
+						v-model:current-page="state.queryParams.PageIndex"
+						v-model:page-size="state.queryParams.PageSize"
+						:disabled="state.loading"
+					/>
+				</template>
+			</vxe-grid>
 		</div>
 		<!--	更多查询	-->
 		<el-drawer v-model="drawer" title="更多查询" size="500px">
@@ -136,9 +130,9 @@
 			</template>
 		</el-drawer>
 		<!-- 工单发布详情 -->
-		<order-publish ref="orderPublishRef" @updateList="queryList(true)" />
+		<order-publish ref="orderPublishRef" @updateList="queryList" />
 		<!-- 工单发布修改 -->
-		<order-publish-edit ref="orderPublishEditRef" @updateList="queryList(true)" />
+		<order-publish-edit ref="orderPublishEditRef" @updateList="queryList" />
 	</div>
 </template>
 <script setup lang="tsx" name="businessPublish">
@@ -153,12 +147,13 @@ import { exportAssignment, getNeedArr } from '@/utils/tools';
 const OrderPublish = defineAsyncComponent(() => import('@/views/business/publish/components/Order-publish.vue')); // 工单发布和查看详情
 const OrderPublishEdit = defineAsyncComponent(() => import('@/views/business/publish/components/Order-publish-edit.vue')); // 工单发布修改
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
+const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
 
 const state = reactive<any>({
 	queryParams: {
 		// 查询条件
 		PageIndex: 1,
-		PageSize: 100,
+		PageSize: 20,
 		Keyword: null, // 关键词
 		No: null,
 		Resolve: null, // 处理结果
@@ -290,35 +285,11 @@ const gridOptions = reactive<any>({
 // 手动查询,将页码设置为1
 const handleQuery = () => {
 	state.queryParams.PageIndex = 1;
-	queryIndex.value = 0;
-	queryList(true);
-};
-// 改变页码
-const queryIndex = ref(0); // 数据批次
-const totalTable = ref([]); // 数据总数
-const handleCurrentChange = (val: number) => {
-	state.queryParams.PageIndex = val;
-	// 判断当前页是否是数据的最后一页
-	if (val === Math.ceil(state.total / state.queryParams.PageSize)) {
-		queryList();
-	} else {
-		state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
-	}
-};
-// 改变每页条数
-const handleSizeChange = (val: any) => {
-	state.queryParams.PageSize = val;
-	// 判断当前页是否是数据的最后一页
-	if (val === Math.ceil(state.total / state.queryParams.PageSize)) {
-		queryList();
-	} else {
-		state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
-	}
+	queryList();
+	getTotal();
 };
 /** 获取列表 */
-const totalCount = ref(0);
-const totalLoading = ref(false);
-const queryList = (isQuery: boolean = false) => {
+const queryList = () => {
 	return new Promise((resolve, reject) => {
 		state.loading = true;
 		gridOptions.loading = true;
@@ -329,45 +300,16 @@ const queryList = (isQuery: boolean = false) => {
 		requestParams.value.StartTime = state.queryParams.fbTime === null ? null : state.queryParams.fbTime[0]; // 受理时间
 		requestParams.value.EndTime = state.queryParams.fbTime === null ? null : state.queryParams.fbTime[1];
 		Reflect.deleteProperty(requestParams.value, 'fbTime'); // 删除无用的参数
-		requestParams.value.QueryIndex = queryIndex.value; // 数据批次
-		if (isQuery) requestParams.value.QueryIndex = 0;
 		publishedListFixed(requestParams.value)
 			.then((res: any) => {
-				if (isQuery) {
-					// 如果是查询
-					totalTable.value = []; // 先清空
-					totalTable.value = res?.result;
-					state.total = totalTable.value.length;
-					state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
-					gridOptions.data = state.tableData;
-					queryIndex.value = 1; // 请求完成之后,页码加一避免重复
-				} else {
-					if (res?.result.length) queryIndex.value++;
-					totalTable.value = totalTable.value.concat(res?.result);
-					state.total = totalTable.value.length;
-					state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
-					gridOptions.data = state.tableData;
-				}
+				gridOptions.data = res?.result ?? [];
 				state.loading = false;
 				gridOptions.loading = false;
 				gridRef.value.clearCheckboxRow();
 				checkTable.value = [];
 				resolve(res);
-			})
-			.then(() => {
-				// 查询总数
-				publishedListFixedCount(requestParams.value)
-					.then((count) => {
-						totalCount.value = count.result;
-						totalLoading.value = false;
-					})
-					.catch(() => {
-						totalLoading.value = false;
-					});
-			})
-			.catch(() => {
+			}).catch(() => {
 				state.loading = false;
-				totalLoading.value = false;
 				gridOptions.loading = false;
 				gridRef.value.clearCheckboxRow();
 				checkTable.value = [];
@@ -375,6 +317,15 @@ const queryList = (isQuery: boolean = false) => {
 			});
 	});
 };
+// 查询总数
+const getTotal = () => {
+	publishedListFixedCount(requestParams.value)
+		.then((res) => {
+			state.total = res.result ?? 0;
+		})
+		.catch(() => {
+		});
+};
 /** 重置按钮操作 */
 const drawerRuleFormRef = ref();
 const ruleFormRef = ref<RefType>(); // 表单ref
@@ -383,7 +334,8 @@ const resetQuery = (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
 	formEl.resetFields();
 	ruleFormRef.value?.resetFields();
-	queryList(true);
+	queryList();
+	getTotal();
 };
 // 修改发布
 const orderPublishEditRef = ref<RefType>(); // 工单发布修改ref
@@ -452,6 +404,7 @@ const isChecked = computed(() => {
 onMounted(() => {
 	queryList().then(() => {
 		getBaseInfo();
+		getTotal();
 	});
 });
 </script>

+ 66 - 79
src/views/business/publish/todo.vue

@@ -18,6 +18,12 @@
 						<el-form-item label="省市工单" prop="fastSearch">
 							<el-segmented :options="fastSearchOptions" v-model="fastSearch" @change="fastSearchChange" :disabled="state.loading" />
 						</el-form-item>
+						<template v-if="fastSearch === 'province' && ['LuZhou'].includes(themeConfig.appScope)">
+							<el-form-item>
+								<el-checkbox v-model="state.queryParams.Iszgzfw" label="中国政府网" @change="handleQuery" />
+								<el-checkbox v-model="state.queryParams.Isgjzwfwpt" label="国家平台转办件" @change="handleQuery" />
+							</el-form-item>
+						</template>
 						<el-form-item label="工单标题" prop="Title">
 							<el-input v-model.trim="state.queryParams.Title" placeholder="工单标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
 						</el-form-item>
@@ -46,32 +52,26 @@
 					<span v-else>{{ row.statusText }}</span>
 				</template>
 				<template #order_detail="{ row }">
-					<order-detail :order="row" @updateList="queryList(true)">{{ row.title }}</order-detail>
+					<order-detail :order="row" @updateList="queryList">{{ row.title }}</order-detail>
 				</template>
 				<template #action="{ row }">
 					<el-button link type="primary" @click="publish(row)" title="发布工单" v-auth="'business:publish:todo:publish'"> 发布 </el-button>
 				</template>
 				<template #pager>
-					<div class="flex-end" style="align-items: center">
-						<span v-loading="totalLoading" class="mr10">共 {{ totalCount }} 条</span>
-						<!--				sizes-->
-						<el-pagination
-							layout="prev, pager, next"
-							:total="state.total"
-							@current-change="handleCurrentChange"
-							:page-size="state.queryParams.PageSize"
-							:current-page="state.queryParams.PageIndex"
-							@size-change="handleSizeChange"
-							:disabled="state.loading"
-						/>
-					</div>
+					<pagination
+						@pagination="queryList"
+						:total="state.total"
+						v-model:current-page="state.queryParams.PageIndex"
+						v-model:page-size="state.queryParams.PageSize"
+						:disabled="state.loading"
+					/>
 				</template>
 			</vxe-grid>
 		</div>
 		<!-- 工单发布详情 -->
-		<order-publish ref="orderPublishRef" @updateList="queryList(true)" />
+		<order-publish ref="orderPublishRef" @updateList="queryList" />
 		<!-- 工单平移 -->
-		<order-migration ref="orderMigrationRef" @updateList="queryList(true)" />
+		<order-migration ref="orderMigrationRef" @updateList="queryList" />
 		<!--	更多查询	-->
 		<el-drawer v-model="drawer" title="更多查询" size="500px">
 			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px">
@@ -149,6 +149,20 @@
 						:default-time="defaultTimeStartEnd"
 					/>
 				</el-form-item>
+				<el-form-item label="省期满时间" prop="sqmTime">
+					<el-date-picker
+						v-model="state.queryParams.sqmTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
 				<template v-if="['ZiGong'].includes(themeConfig.appScope)">
 					<!--					<el-form-item label="行业" prop="Channel">
 						<el-select v-model="state.queryParams.Channel" placeholder="请选择行业" clearable @change="handleQuery">
@@ -197,7 +211,7 @@ const state = reactive<any>({
 	queryParams: {
 		// 查询条件
 		PageIndex: 1,
-		PageSize: 100,
+		PageSize: 20,
 		OrderTitle: null, // 关键词
 		No: null,
 		FiledType: null, // 归档类型
@@ -212,10 +226,15 @@ const state = reactive<any>({
 		bjTime: [],
 		FiledTimeStart: null,
 		FiledTimeEnd: null,
-		IdentityType:null,
-		FromPhone:null,
-		OrgLevelOneName:null,
-		ActualHandleOrgName:null,
+		IdentityType: null,
+		FromPhone: null,
+		OrgLevelOneName: null,
+		ActualHandleOrgName: null,
+		sqmTime: [], // 省期满时间
+		ExpiredTimeProvinceStart: null,
+		ExpiredTimeProvinceEnd: null,
+		Iszgzfw: null, // 中国政府网
+		Isgjzwfwpt: null, // 国家平台转办件
 	},
 	tableData: [], //表单
 	loading: false, // 加载
@@ -306,6 +325,13 @@ const gridOptions = reactive<any>({
 			width: 160,
 			formatter: 'formatDate',
 		},
+		{ field: 'fwCallRecord.duration', title: '录音时长(秒)', width: 120 },
+		{
+			field: 'expiredTimeProvince',
+			title: '省期满时间',
+			width: 160,
+			formatter: 'formatDate',
+		},
 		{ title: '操作', width: 90, fixed: 'right', align: 'center', slots: { default: 'action' } },
 	],
 	data: [],
@@ -318,7 +344,7 @@ const gridOptions = reactive<any>({
 	},
 });
 
-const fastSearchOptions = ref([
+const fastSearchOptions = ref<EmptyArrayType>([
 	{
 		value: 'all',
 		label: '全部',
@@ -365,35 +391,11 @@ const fastSearchChange = (val: string) => {
 // 手动查询,将页码设置为1
 const handleQuery = () => {
 	state.queryParams.PageIndex = 1;
-	queryIndex.value = 0;
-	queryList(true);
-};
-// 改变页码
-const queryIndex = ref(0); // 数据批次
-const totalTable = ref([]); // 数据总数
-const handleCurrentChange = (val: number) => {
-	state.queryParams.PageIndex = val;
-	// 判断当前页是否是数据的最后一页
-	if (val === Math.ceil(state.total / state.queryParams.PageSize)) {
-		queryList();
-	} else {
-		state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
-	}
-};
-// 改变每页条数
-const handleSizeChange = (val: any) => {
-	state.queryParams.PageSize = val;
-	// 判断当前页是否是数据的最后一页
-	if (val === Math.ceil(state.total / state.queryParams.PageSize)) {
-		queryList();
-	} else {
-		state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
-	}
+	queryList();
+	getTotal();
 };
 /** 获取列表 */
-const totalCount = ref(0);
-const totalLoading = ref(false);
-const queryList = (isQuery: boolean = false) => {
+const queryList = () => {
 	return new Promise((resolve, reject) => {
 		state.loading = true;
 		gridOptions.loading = true;
@@ -404,45 +406,20 @@ const queryList = (isQuery: boolean = false) => {
 		requestParams.value.FiledTimeStart = state.queryParams.bjTime === null ? null : state.queryParams.bjTime[0]; // 期满时间
 		requestParams.value.FiledTimeEnd = state.queryParams.bjTime === null ? null : state.queryParams.bjTime[1];
 		Reflect.deleteProperty(requestParams.value, 'bjTime'); // 删除无用的参数
-		requestParams.value.QueryIndex = queryIndex.value; // 数据批次
-		if (isQuery) requestParams.value.QueryIndex = 0;
+		requestParams.value.ExpiredTimeProvinceStart = state.queryParams.sqmTime === null ? null : state.queryParams.sqmTime[0]; // 省期满时间
+		requestParams.value.ExpiredTimeProvinceEnd = state.queryParams.sqmTime === null ? null : state.queryParams.sqmTime[1];
+		Reflect.deleteProperty(requestParams.value, 'sqmTime'); // 删除无用的参数
 		publishListFixed(requestParams.value)
 			.then((res: any) => {
-				if (isQuery) {
-					// 如果是查询
-					totalTable.value = []; // 先清空
-					totalTable.value = res?.result;
-					state.total = totalTable.value.length;
-					state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
-					gridOptions.data = state.tableData;
-					queryIndex.value = 1; // 请求完成之后,页码加一避免重复
-				} else {
-					if (res?.result.length) queryIndex.value++;
-					totalTable.value = totalTable.value.concat(res?.result);
-					state.total = totalTable.value.length;
-					state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
-					gridOptions.data = state.tableData;
-				}
+				gridOptions.data = res?.result ?? [];
 				state.loading = false;
 				gridOptions.loading = false;
 				gridRef.value.clearCheckboxRow();
 				checkTable.value = [];
 				resolve(res);
 			})
-			.then(() => {
-				// 查询总数
-				publishListFixedCount(requestParams.value)
-					.then((count) => {
-						totalCount.value = count.result;
-						totalLoading.value = false;
-					})
-					.catch(() => {
-						totalLoading.value = false;
-					});
-			})
 			.catch(() => {
 				state.loading = false;
-				totalLoading.value = false;
 				gridOptions.loading = false;
 				gridRef.value.clearCheckboxRow();
 				checkTable.value = [];
@@ -450,6 +427,14 @@ const queryList = (isQuery: boolean = false) => {
 			});
 	});
 };
+// 查询总数
+const getTotal = () => {
+	publishListFixedCount(requestParams.value)
+		.then((res) => {
+			state.total = res.result ?? 0;
+		})
+		.catch(() => {});
+};
 /** 重置按钮操作 */
 const drawerRuleFormRef = ref();
 const ruleFormRef = ref<RefType>(); // 表单ref
@@ -461,7 +446,8 @@ const resetQuery = (formEl: FormInstance | undefined) => {
 	ruleFormRef.value?.resetFields();
 	state.queryParams.IsProvinceOrder = null;
 	fastSearch.value = 'all';
-	queryList(true);
+	queryList();
+	getTotal();
 };
 // 批量发布
 const publishMultiple = () => {
@@ -540,6 +526,7 @@ const isChecked = computed(() => {
 });
 onMounted(() => {
 	queryList().then(() => {
+		getTotal();
 		getBaseInfo();
 	});
 });

+ 1 - 1
src/views/business/terminate/components/Terminate-audit.vue

@@ -40,7 +40,7 @@
 			<vxe-column field="handleTime" title="审批时间" width="160">
 				<template #default="{ row }">{{ formatDate(row.handleTime, 'YYYY-mm-dd HH:MM:SS') }}</template>
 			</vxe-column>
-			<vxe-column field="traceTypeText" title="状态"></vxe-column>
+			<vxe-column field="reviewResultText" title="状态"></vxe-column>
 		</vxe-table>
 		<p class="border-title mt20 mb10">审核意见</p>
 		<el-form :model="state.ruleForm" label-width="110px" ref="ruleFormRef" v-loading="state.loading">

+ 1 - 1
src/views/business/terminate/components/Terminate-return.vue

@@ -40,7 +40,7 @@
 			<vxe-column field="handleTime" title="审批时间" width="160">
 				<template #default="{ row }">{{ formatDate(row.handleTime, 'YYYY-mm-dd HH:MM:SS') }}</template>
 			</vxe-column>
-			<vxe-column field="traceTypeText" title="状态"></vxe-column>
+			<vxe-column field="reviewResultText" title="状态"></vxe-column>
 		</vxe-table>
 		<p class="border-title mt20 mb10">退回意见</p>
 		<el-form :model="state.ruleForm" label-width="110px" ref="ruleFormRef" v-loading="state.loading">

+ 97 - 3
src/views/knowledge/index/YBIndex.vue

@@ -221,9 +221,10 @@
 						</el-form-item>
 						<el-form-item>
 							<el-button type="primary" @click="handleQuery" :loading="state.tableLoading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
-							<el-button @click="resetQuery(ruleFormRef)" class="default-button" :loading="state.tableLoading">
+<!--							<el-button @click="resetQuery(ruleFormRef)" class="default-button" :loading="state.tableLoading">
 								<SvgIcon name="ele-Refresh" class="mr5" />重置
-							</el-button>
+							</el-button>-->
+							<el-button @click="drawer = true" class="default-button"> <SvgIcon name="ele-Search" class="mr5" />更多查询</el-button>
 						</el-form-item>
 					</el-form>
 					<vxe-toolbar
@@ -390,6 +391,71 @@
 				</pane>
 			</splitpanes>
 		</div>
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px">
+				<el-form-item label="上架时间" prop="sjTime">
+					<el-date-picker
+						v-model="state.queryParams.sjTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
+				<el-form-item label="下架时间" prop="xjTime">
+					<el-date-picker
+						v-model="state.queryParams.xjTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
+				<el-form-item label="创建时间" prop="cjTime">
+					<el-date-picker
+						v-model="state.queryParams.cjTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
+				<el-form-item label="更新时间" prop="gxTime">
+					<el-date-picker
+						v-model="state.queryParams.gxTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
+			</el-form>
+			<template #footer>
+				<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+				<el-button @click="resetQuery(drawerRuleFormRef)" class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
+			</template>
+		</el-drawer>
 		<!-- 流程审批 -->
 		<process-audit ref="processAuditRef" @orderProcessSuccess="queryList" />
 		<!-- 审核记录 -->
@@ -423,6 +489,7 @@ import Other from '@/utils/other';
 import { debounce, downloadFileByStream } from '@/utils/tools';
 import { useThemeConfig } from '@/stores/themeConfig';
 import { VxeUI } from 'vxe-pc-ui';
+import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 
 // 引入组件
 const ProcessAudit = defineAsyncComponent(() => import('@/components/ProcessAudit/index.vue')); // 流程审批
@@ -450,6 +517,18 @@ const state = reactive<any>({
 		ModuleCode: '',
 		NewDraftsStatus: -1,
 		Attribution: userInfos.value.isCenter ? '中心知识库' : '部门知识库',
+		sjTime:[], // 上架时间
+		StartOnShelfTime:null,
+		EndOnShelfTime:null,
+		xjTime:[], // 下架时间
+		StartOffShelfTime:null,
+		EndOffShelfTime:null,
+		cjTime:[], // 创建时间
+		CreationStartTime:null,
+		CreationEndTime:null,
+		gxTime:[], // 更新时间
+		StartUpdateTime:null,
+		EndUpdateTime:null,
 	},
 	activeName: '1', //tab切换 默认知识分类
 	tableData: [], //表格数据
@@ -465,7 +544,6 @@ const state = reactive<any>({
 	hotspotLoading:false,
 });
 const router = useRouter(); //路由
-const ruleFormRef = ref<FormInstance>(); //表单ref
 const horizontal = ref(false);
 // 部门查询
 const filterOrg = ref('');
@@ -619,6 +697,18 @@ const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.tableLoading = true;
 	requestParams.value = Other.deepClone(state.queryParams);
+	requestParams.value.StartOnShelfTime = state.queryParams.sjTime === null ? null : state.queryParams.sjTime[0]; // 上架时间
+	requestParams.value.EndOnShelfTime = state.queryParams.sjTime === null ? null : state.queryParams.sjTime[1];
+	Reflect.deleteProperty(requestParams.value, 'sjTime'); // 删除无用的参数
+	requestParams.value.StartOffShelfTime = state.queryParams.xjTime === null ? null : state.queryParams.xjTime[0]; // 受理时间
+	requestParams.value.EndOffShelfTime = state.queryParams.xjTime === null ? null : state.queryParams.xjTime[1]; //下架时间
+	Reflect.deleteProperty(requestParams.value, 'xjTime'); // 删除无用的参数
+	requestParams.value.CreationStartTime = state.queryParams.cjTime === null ? null : state.queryParams.cjTime[0]; // 创建时间
+	requestParams.value.CreationEndTime = state.queryParams.cjTime === null ? null : state.queryParams.cjTime[1];
+	Reflect.deleteProperty(requestParams.value, 'cjTime'); // 删除无用的参数
+	requestParams.value.StartUpdateTime = state.queryParams.gxTime === null ? null : state.queryParams.gxTime[0]; // 更新时间
+	requestParams.value.EndUpdateTime = state.queryParams.gxTime === null ? null : state.queryParams.gxTime[1];
+	Reflect.deleteProperty(requestParams.value, 'gxTime'); // 删除无用的参数
 	KnowledgePaged(requestParams.value)
 		.then((response: any) => {
 			state.tableData = response?.result.items ?? [];
@@ -655,9 +745,13 @@ const handleNodeClick = (data: any) => {
 	queryList();
 };
 /** 重置按钮操作 */
+const drawerRuleFormRef = ref();
+const ruleFormRef = ref<RefType>(); // 表单ref
+const drawer = ref(false);
 const resetQuery = (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
 	formEl.resetFields();
+	ruleFormRef.value?.resetFields();
 	resetNode();
 };
 // 重置选中的节点

+ 97 - 3
src/views/knowledge/index/ZGIndex.vue

@@ -181,9 +181,10 @@
 						</el-form-item>
 						<el-form-item>
 							<el-button type="primary" @click="handleQuery" :loading="state.tableLoading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
-							<el-button @click="resetQuery(ruleFormRef)" class="default-button" :loading="state.tableLoading">
+<!--							<el-button @click="resetQuery(ruleFormRef)" class="default-button" :loading="state.tableLoading">
 								<SvgIcon name="ele-Refresh" class="mr5" />重置
-							</el-button>
+							</el-button>-->
+							<el-button @click="drawer = true" class="default-button"> <SvgIcon name="ele-Search" class="mr5" />更多查询</el-button>
 						</el-form-item>
 					</el-form>
 					<vxe-toolbar
@@ -351,6 +352,71 @@
 				</pane>
 			</splitpanes>
 		</div>
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px">
+				<el-form-item label="上架时间" prop="sjTime">
+					<el-date-picker
+						v-model="state.queryParams.sjTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
+				<el-form-item label="下架时间" prop="xjTime">
+					<el-date-picker
+						v-model="state.queryParams.xjTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
+				<el-form-item label="创建时间" prop="cjTime">
+					<el-date-picker
+						v-model="state.queryParams.cjTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
+				<el-form-item label="更新时间" prop="gxTime">
+					<el-date-picker
+						v-model="state.queryParams.gxTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
+			</el-form>
+			<template #footer>
+				<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+				<el-button @click="resetQuery(drawerRuleFormRef)" class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
+			</template>
+		</el-drawer>
 		<!-- 流程审批 -->
 		<process-audit ref="processAuditRef" @orderProcessSuccess="queryList" />
 		<!-- 审核记录 -->
@@ -386,6 +452,7 @@ import Other from '@/utils/other';
 import { debounce, downloadFileByStream, throttle } from '@/utils/tools';
 import { useThemeConfig } from '@/stores/themeConfig';
 import { VxeUI } from 'vxe-pc-ui';
+import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 
 // 引入组件
 const ProcessAudit = defineAsyncComponent(() => import('@/components/ProcessAudit/index.vue')); // 流程审批
@@ -395,7 +462,6 @@ const ToEnd = defineAsyncComponent(() => import('@/views/knowledge/index/compone
 const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
 
 const router = useRouter(); //路由
-const ruleFormRef = ref<FormInstance>(); //表单ref
 const horizontal = ref(false);
 const storesUserInfo = useUserInfo();
 const { userInfos } = storeToRefs(storesUserInfo); // 用户信息
@@ -417,6 +483,18 @@ const state = reactive<any>({
 		ModuleCode: '',
 		NewDraftsStatus: -1,
 		Attribution: userInfos.value.isCenter ? '中心知识库' : '部门知识库',
+		sjTime:[], // 上架时间
+		StartOnShelfTime:null,
+		EndOnShelfTime:null,
+		xjTime:[], // 下架时间
+		StartOffShelfTime:null,
+		EndOffShelfTime:null,
+		cjTime:[], // 创建时间
+		CreationStartTime:null,
+		CreationEndTime:null,
+		gxTime:[], // 更新时间
+		StartUpdateTime:null,
+		EndUpdateTime:null,
 	},
 	activeName: '1', //tab切换 默认知识分类
 	tableData: [], //表格数据
@@ -566,6 +644,18 @@ const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.tableLoading = true;
 	requestParams.value = Other.deepClone(state.queryParams);
+	requestParams.value.StartOnShelfTime = state.queryParams.sjTime === null ? null : state.queryParams.sjTime[0]; // 上架时间
+	requestParams.value.EndOnShelfTime = state.queryParams.sjTime === null ? null : state.queryParams.sjTime[1];
+	Reflect.deleteProperty(requestParams.value, 'sjTime'); // 删除无用的参数
+	requestParams.value.StartOffShelfTime = state.queryParams.xjTime === null ? null : state.queryParams.xjTime[0]; // 受理时间
+	requestParams.value.EndOffShelfTime = state.queryParams.xjTime === null ? null : state.queryParams.xjTime[1]; //下架时间
+	Reflect.deleteProperty(requestParams.value, 'xjTime'); // 删除无用的参数
+	requestParams.value.CreationStartTime = state.queryParams.cjTime === null ? null : state.queryParams.cjTime[0]; // 创建时间
+	requestParams.value.CreationEndTime = state.queryParams.cjTime === null ? null : state.queryParams.cjTime[1];
+	Reflect.deleteProperty(requestParams.value, 'cjTime'); // 删除无用的参数
+	requestParams.value.StartUpdateTime = state.queryParams.gxTime === null ? null : state.queryParams.gxTime[0]; // 更新时间
+	requestParams.value.EndUpdateTime = state.queryParams.gxTime === null ? null : state.queryParams.gxTime[1];
+	Reflect.deleteProperty(requestParams.value, 'gxTime'); // 删除无用的参数
 	KnowledgePaged(requestParams.value)
 		.then((response: any) => {
 			state.tableData = response?.result.items ?? [];
@@ -598,9 +688,13 @@ const handleNodeClick = (data: any) => {
 	queryList();
 };
 /** 重置按钮操作 */
+const drawerRuleFormRef = ref();
+const ruleFormRef = ref<RefType>(); // 表单ref
+const drawer = ref(false);
 const resetQuery = (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
 	formEl.resetFields();
+	ruleFormRef.value?.resetFields();
 	resetNode();
 };
 // 重置选中的节点

+ 14 - 3
src/views/province/order.vue

@@ -285,7 +285,7 @@ import { computed, defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import type { FormInstance } from 'element-plus';
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 import { formatDate } from '@/utils/formatTime';
-import { exportOrder, listBaseData, orderList } from '@/api/business/order';
+import { exportOrder, listBaseData, orderList, orderListCount } from '@/api/business/order';
 import { treeArea } from '@/api/auxiliary/area';
 import Other from '@/utils/other';
 import { exportAssignment } from '@/utils/tools';
@@ -373,6 +373,7 @@ const getBaseData = async () => {
 const handleQuery = () => {
 	state.queryParams.PageIndex = 1;
 	queryList();
+	getTotal();
 };
 /** 获取列表 */
 const requestParams = ref<EmptyObjectType>({});
@@ -390,14 +391,22 @@ const queryList = () => {
 	state.loading = true;
 	orderList(requestParams.value)
 		.then((response: any) => {
-			state.tableData = response?.result.items ?? [];
-			state.total = response?.result.total;
+			state.tableData = response?.result ?? [];
 			state.loading = false;
 		})
 		.catch(() => {
 			state.loading = false;
 		});
 };
+// 查询总数
+const getTotal = () => {
+	orderListCount(requestParams.value)
+		.then((res) => {
+			state.total = res.result ?? 0;
+		})
+		.catch(() => {
+		});
+};
 /** 重置按钮操作 */
 const drawerRuleFormRef = ref();
 const ruleFormRef = ref<RefType>(); // 表单ref
@@ -407,6 +416,7 @@ const resetQuery = (formEl: FormInstance | undefined) => {
 	formEl.resetFields();
 	ruleFormRef.value?.resetFields();
 	queryList();
+	getTotal();
 };
 // 工单省退回
 const orderReturnRef = ref<RefType>(); // 工单退回ref
@@ -421,5 +431,6 @@ onMounted(() => {
 		tableRef.value.connect(toolbarRef.value);
 	}
 	getBaseData();
+	getTotal();
 });
 </script>

+ 8 - 0
src/views/todo/edit/components/Edit-order.vue

@@ -214,6 +214,7 @@
 							placeholder="请选择热点分类"
 							clearable
 							@getCurrentData="getCurrentData"
+							:isYB="isProvinceOrder"
 						/>
 					</el-form-item>
 				</el-col>
@@ -477,6 +478,7 @@ const storesThemeConfig = useThemeConfig();
 const { themeConfig } = storeToRefs(storesThemeConfig);
 const storesUserInfo = useUserInfo();
 const { userInfos } = storeToRefs(storesUserInfo); // 用户信息
+const isProvinceOrder = ref(true); // 是否需要排除掉人社热点 默认是(宜宾)
 // 查看工单详情
 const getOrderDetail = async (id: string) => {
 	state.loading = true;
@@ -550,6 +552,12 @@ const getOrderDetail = async (id: string) => {
 				dicDataName: state.ruleForm.transpondCityName,
 			};
 		}
+
+		if(['YiBin'].includes(themeConfig.value.appScope)){
+			if(state.ruleForm.source === 100){ // 省工单需要展示人社热点
+				isProvinceOrder.value = false;
+			}
+		}
 		state.loading = false;
 	} catch (error) {
 		state.loading = false;

+ 26 - 63
src/views/todo/edit/index.vue

@@ -65,17 +65,13 @@
 					<el-button link type="primary" @click="onOrderEdit(row)" title="编辑工单" v-auth="'todo:edit:edit'"> 工单修改 </el-button>
 				</template>
 				<template #pager>
-					<div class="flex-end" style="align-items: center">
-						<span v-loading="totalLoading" class="mr10">共 {{ totalCount }} 条</span>
-						<el-pagination
-							layout="prev, pager, next"
-							:total="state.total"
-							@current-change="handleCurrentChange"
-							:page-size="state.queryParams.PageSize"
-							:current-page="state.queryParams.PageIndex"
-							:disabled="state.loading"
-						/>
-					</div>
+					<pagination
+						@pagination="queryList"
+						:total="state.total"
+						v-model:current-page="state.queryParams.PageIndex"
+						v-model:page-size="state.queryParams.PageSize"
+						:disabled="state.loading"
+					/>
 				</template>
 			</vxe-grid>
 		</div>
@@ -221,7 +217,7 @@
 import { defineAsyncComponent, onMounted, reactive, ref, onActivated, onBeforeUnmount } from 'vue';
 import type { FormInstance } from 'element-plus';
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
-import { exportOrder, listBaseData, orderListCount, orderListFixed } from '@/api/business/order';
+import { exportOrder, listBaseData, orderList, orderListCount, orderListFixed } from '@/api/business/order';
 import { treeArea } from '@/api/auxiliary/area';
 import { getNeedArr } from '@/utils/tools';
 import Other from '@/utils/other';
@@ -231,6 +227,7 @@ import { useRouter } from 'vue-router';
 // 引入组件
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
 const EditOrder = defineAsyncComponent(() => import('@/views/todo/edit/components/Edit-order.vue')); // 工单修改
+const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
 
 // 定义变量内容
 const state = reactive<any>({
@@ -436,24 +433,10 @@ const getBaseData = async () => {
 // 手动查询,将页码设置为1
 const handleQuery = () => {
 	state.queryParams.PageIndex = 1;
-	queryIndex.value = 0;
-	queryList(true);
+	queryList();
 };
 // 改变页码
-const queryIndex = ref(0); // 数据批次
-const totalTable = ref([]); // 数据总数
-const handleCurrentChange = (val: number) => {
-	state.queryParams.PageIndex = val;
-	// 判断当前页是否是数据的最后一页
-	if (val === Math.ceil(state.total / state.queryParams.PageSize)) {
-		queryList();
-	} else {
-		state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
-	}
-};
-const totalCount = ref(0);
-const totalLoading = ref(false);
-const queryList = (isQuery: boolean = false) => {
+const queryList = () => {
 	return new Promise((resolve, reject) => {
 		requestParams.value = Other.deepClone(state.queryParams);
 		requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 生成时间
@@ -465,51 +448,30 @@ const queryList = (isQuery: boolean = false) => {
 		requestParams.value.ActualHandleTimeStart = state.queryParams.doneTime === null ? null : state.queryParams.doneTime[0]; // 办结时间
 		requestParams.value.ActualHandleTimeEnd = state.queryParams.doneTime === null ? null : state.queryParams.doneTime[1];
 		Reflect.deleteProperty(requestParams.value, 'doneTime'); // 删除无用的参数
-		requestParams.value.QueryIndex = queryIndex.value; // 数据批次
-		if (isQuery) requestParams.value.QueryIndex = 0;
 		state.loading = true;
-		totalLoading.value = true;
 		gridOptions.loading = true;
-		orderListFixed(requestParams.value)
+		orderList(requestParams.value)
 			.then((response: any) => {
-				if (isQuery) {
-					// 如果是查询
-					totalTable.value = []; // 先清空
-					totalTable.value = response?.result;
-					state.total = totalTable.value.length;
-					state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
-					gridOptions.data = state.tableData;
-					queryIndex.value = 1; // 请求完成之后,页码加一避免重复
-				} else {
-					if (response?.result.length) queryIndex.value++;
-					totalTable.value = totalTable.value.concat(response?.result);
-					state.total = totalTable.value.length;
-					state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
-					gridOptions.data = state.tableData;
-				}
+				gridOptions.data = response?.result ?? []
 				state.loading = false;
 				gridOptions.loading = false;
 				resolve(true);
-			})
-			.then(() => {
-				// 查询总数
-				orderListCount(requestParams.value)
-					.then((count) => {
-						totalCount.value = count.result;
-						totalLoading.value = false;
-					})
-					.catch(() => {
-						totalLoading.value = false;
-					});
-			})
-			.catch(() => {
+			}).catch(() => {
 				state.loading = false;
 				gridOptions.loading = false;
-				totalLoading.value = false;
 				reject();
 			});
 	});
 };
+// 查询总数
+const getTotal = () => {
+	orderListCount(requestParams.value)
+		.then((res) => {
+			state.total = res.result ?? 0;
+		})
+		.catch(() => {
+		});
+};
 /** 重置按钮操作 */
 const drawerRuleFormRef = ref();
 const ruleFormRef = ref<RefType>(); // 表单ref
@@ -520,10 +482,10 @@ const resetQuery = (formEl: FormInstance | undefined) => {
 	state.queryParams.IsSensitiveWord = null;
 	state.queryParams.IsProvinceOrder = null;
 	fastSearch.value = 'all';
-	queryIndex.value = 0;
 	ruleFormRef.value?.resetFields();
 	state.ruleForm.content = null;
-	queryList(true);
+	queryList();
+	getTotal();
 };
 // 修改记录
 const router = useRouter();
@@ -540,6 +502,7 @@ const onOrderEdit = (row: any) => {
 onMounted(() => {
 	queryList().then(() => {
 		getBaseData();
+		getTotal();
 	});
 });
 onActivated(() => {

+ 1 - 0
src/views/todo/order/tableHeader.tsx

@@ -161,6 +161,7 @@ export const LZTableHeader = [
 			default: 'statusText',
 		},
 	},
+	{ field: 'remainingTime', title: '剩余办理时间', width: 110 },
 	{ field: 'sourceChannel', title: '来源渠道', width: 110 },
 	{ field: 'isProvinceText', title: '省/市工单', width: 90 },
 	{ field: 'no', title: '工单编码', width: 140 },

+ 16 - 73
src/views/todo/seats/index.vue

@@ -124,19 +124,23 @@
 	</div>
 </template>
 <script setup lang="tsx" name="todoSeats">
-import { computed, defineAsyncComponent, nextTick, onMounted, reactive, ref } from 'vue';
+import { computed, defineAsyncComponent,onMounted, reactive, ref } from 'vue';
 import { ElMessage, ElMessageBox, FormInstance } from 'element-plus';
-import { formatDate } from '@/utils/formatTime';
 import { useRouter } from 'vue-router';
 import { seatsListTodo, orderSign, orderListTodoCount } from '@/api/todo/order';
-import { downloadZip, exportAssignment, getNeedArr } from '@/utils/tools';
-import { exportJbOrder } from '@/api/business/order';
+import {  exportAssignment, getNeedArr } from '@/utils/tools';
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 import Other from '@/utils/other';
 import { treeArea } from '@/api/auxiliary/area';
 import { centerTodoBase } from '@/api/todo/center';
+import { LZTableHeader, YBTableHeader, ZGTableHeader } from '@/views/todo/seats/tableHeader';
+import { useThemeConfig } from '@/stores/themeConfig';
+import { storeToRefs } from 'pinia';
 // 引入组件
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
+
+const storesThemeConfig = useThemeConfig();
+const { themeConfig } = storeToRefs(storesThemeConfig);
 // 定义变量内容
 const state = reactive<any>({
 	queryParams: {
@@ -195,80 +199,19 @@ const gridOptions = reactive<any>({
 	id: 'todoSeats',
 	rowConfig: { isHover: true, height: 30, isCurrent: true, useKey: true },
 	height: 'auto',
-	columns: [
-		{ type: 'checkbox', width: 50, align: 'center' },
-		{
-			field: 'expiredStatusText',
-			title: '状态',
-			width: 60,
-			align: 'center',
-			slots: {
-				default: ({ row }) => {
-					return <span class={'overdue-status-' + row.expiredStatus} title={row.expiredStatusText}></span>;
-				},
-			},
-		},
-		{
-			field: 'statusText',
-			title: '工单状态',
-			width: 110,
-			slots: {
-				default: 'statusText',
-			},
-		},
-		{ field: 'no', title: '工单编码', width: 140 },
-		{ field: 'acceptorName', title: '受理人', width: 120 },
-		{ field: 'isProvinceText', title: '省/市工单', width: 90 },
-		{
-			field: 'isUrgentText',
-			title: '是否紧急',
-			width: 90,
-			slots: {
-				default: ({ row }) => {
-					return <span class="color-danger font-bold">{row.isUrgentText}</span>;
-				},
-			},
-		},
-		{ field: 'currentStepName', title: '当前节点', width: 120 },
-		{
-			field: 'title',
-			title: '工单标题',
-			minWidth: 200,
-			slots: { default: 'order_detail' },
-		},
-		{ field: 'counterSignTypeText', title: '是否会签', width: 120 },
-		{
-			field: 'creationTime',
-			title: '生成时间',
-			width: 160,
-			sortable: true,
-			formatter: 'formatDate',
-		},
-		{
-			field: 'startTime',
-			title: '受理时间',
-			width: 160,
-			sortable: true,
-			formatter: 'formatDate',
-		},
-		{
-			field: 'expiredTime',
-			title: '工单期满时间',
-			width: 160,
-			sortable: true,
-			formatter: 'formatDate',
-		},
-		{ field: 'acceptType', title: '受理类型', width: 110 },
-		{ field: 'sourceChannel', title: '来源渠道', width: 110 },
-		{ field: 'hotspotName', title: '热点分类', width: 150 },
-		{ field: 'reTransactNum', title: '重办次数', width: 130 },
-		{ title: '操作', width: 90, fixed: 'right', align: 'center', slots: { default: 'action' } },
-	],
+	columns: [],
 	data: [],
 	sortConfig: {
 		remote: true,
 	},
 });
+if (themeConfig.value.appScope === 'YiBin') {
+	gridOptions.columns = YBTableHeader;
+} else if (themeConfig.value.appScope === 'ZiGong') {
+	gridOptions.columns = ZGTableHeader;
+} else if (themeConfig.value.appScope === 'LuZhou') {
+	gridOptions.columns = LZTableHeader;
+}
 const gridEvents = {
 	sortChange(val: any) {
 		state.queryParams.SortField = val.order ? val.field : null;

+ 210 - 0
src/views/todo/seats/tableHeader.tsx

@@ -0,0 +1,210 @@
+export const YBTableHeader = [
+	{ type: 'checkbox', width: 50, align: 'center' },
+	{
+		field: 'expiredStatusText',
+		title: '状态',
+		width: 60,
+		align: 'center',
+		slots: {
+			default: ({ row }) => {
+				return <span class={'overdue-status-' + row.expiredStatus} title={row.expiredStatusText}></span>;
+			},
+		},
+	},
+	{
+		field: 'statusText',
+		title: '工单状态',
+		width: 110,
+		slots: {
+			default: 'statusText',
+		},
+	},
+	{ field: 'no', title: '工单编码', width: 140 },
+	{ field: 'acceptorName', title: '受理人', width: 120 },
+	{ field: 'isProvinceText', title: '省/市工单', width: 90 },
+	{
+		field: 'isUrgentText',
+		title: '是否紧急',
+		width: 90,
+		slots: {
+			default: ({ row }) => {
+				return <span class="color-danger font-bold">{row.isUrgentText}</span>;
+			},
+		},
+	},
+	{ field: 'currentStepName', title: '当前节点', width: 120 },
+	{
+		field: 'title',
+		title: '工单标题',
+		minWidth: 200,
+		slots: { default: 'order_detail' },
+	},
+	{ field: 'counterSignTypeText', title: '是否会签', width: 120 },
+	{
+		field: 'creationTime',
+		title: '生成时间',
+		width: 160,
+		sortable: true,
+		formatter: 'formatDate',
+	},
+	{
+		field: 'startTime',
+		title: '受理时间',
+		width: 160,
+		sortable: true,
+		formatter: 'formatDate',
+	},
+	{
+		field: 'expiredTime',
+		title: '工单期满时间',
+		width: 160,
+		sortable: true,
+		formatter: 'formatDate',
+	},
+	{ field: 'acceptType', title: '受理类型', width: 110 },
+	{ field: 'sourceChannel', title: '来源渠道', width: 110 },
+	{ field: 'hotspotName', title: '热点分类', width: 150 },
+	{ field: 'reTransactNum', title: '重办次数', width: 130 },
+	{ title: '操作', width: 90, fixed: 'right', align: 'center', slots: { default: 'action' } },
+]
+
+export const ZGTableHeader = [
+	{ type: 'checkbox', width: 50, align: 'center' },
+	{
+		field: 'expiredStatusText',
+		title: '状态',
+		width: 60,
+		align: 'center',
+		slots: {
+			default: ({ row }) => {
+				return <span class={'overdue-status-' + row.expiredStatus} title={row.expiredStatusText}></span>;
+			},
+		},
+	},
+	{
+		field: 'statusText',
+		title: '工单状态',
+		width: 110,
+		slots: {
+			default: 'statusText',
+		},
+	},
+	{ field: 'no', title: '工单编码', width: 140 },
+	{ field: 'acceptorName', title: '受理人', width: 120 },
+	{ field: 'isProvinceText', title: '省/市工单', width: 90 },
+	{
+		field: 'isUrgentText',
+		title: '是否紧急',
+		width: 90,
+		slots: {
+			default: ({ row }) => {
+				return <span class="color-danger font-bold">{row.isUrgentText}</span>;
+			},
+		},
+	},
+	{ field: 'currentStepName', title: '当前节点', width: 120 },
+	{
+		field: 'title',
+		title: '工单标题',
+		minWidth: 200,
+		slots: { default: 'order_detail' },
+	},
+	{ field: 'counterSignTypeText', title: '是否会签', width: 120 },
+	{
+		field: 'creationTime',
+		title: '生成时间',
+		width: 160,
+		sortable: true,
+		formatter: 'formatDate',
+	},
+	{
+		field: 'startTime',
+		title: '受理时间',
+		width: 160,
+		sortable: true,
+		formatter: 'formatDate',
+	},
+	{
+		field: 'expiredTime',
+		title: '工单期满时间',
+		width: 160,
+		sortable: true,
+		formatter: 'formatDate',
+	},
+	{ field: 'acceptType', title: '受理类型', width: 110 },
+	{ field: 'sourceChannel', title: '来源渠道', width: 110 },
+	{ field: 'hotspotName', title: '热点分类', width: 150 },
+	{ field: 'reTransactNum', title: '重办次数', width: 130 },
+	{ title: '操作', width: 90, fixed: 'right', align: 'center', slots: { default: 'action' } },
+];
+
+export const LZTableHeader = [
+	{ type: 'checkbox', width: 50, align: 'center' },
+	{
+		field: 'expiredStatusText',
+		title: '状态',
+		width: 60,
+		align: 'center',
+		slots: {
+			default: ({ row }) => {
+				return <span class={'overdue-status-' + row.expiredStatus} title={row.expiredStatusText}></span>;
+			},
+		},
+	},
+	{
+		field: 'statusText',
+		title: '工单状态',
+		width: 110,
+		slots: {
+			default: 'statusText',
+		},
+	},
+	{ field: 'remainingTime', title: '剩余办理时间', width: 110 },
+	{ field: 'no', title: '工单编码', width: 140 },
+	{ field: 'acceptorName', title: '受理人', width: 120 },
+	{ field: 'isProvinceText', title: '省/市工单', width: 90 },
+	{
+		field: 'isUrgentText',
+		title: '是否紧急',
+		width: 90,
+		slots: {
+			default: ({ row }) => {
+				return <span class="color-danger font-bold">{row.isUrgentText}</span>;
+			},
+		},
+	},
+	{ field: 'currentStepName', title: '当前节点', width: 120 },
+	{
+		field: 'title',
+		title: '工单标题',
+		minWidth: 200,
+		slots: { default: 'order_detail' },
+	},
+	{ field: 'counterSignTypeText', title: '是否会签', width: 120 },
+	{
+		field: 'creationTime',
+		title: '生成时间',
+		width: 160,
+		sortable: true,
+		formatter: 'formatDate',
+	},
+	{
+		field: 'startTime',
+		title: '受理时间',
+		width: 160,
+		sortable: true,
+		formatter: 'formatDate',
+	},
+	{
+		field: 'expiredTime',
+		title: '工单期满时间',
+		width: 160,
+		sortable: true,
+		formatter: 'formatDate',
+	},
+	{ field: 'acceptType', title: '受理类型', width: 110 },
+	{ field: 'sourceChannel', title: '来源渠道', width: 110 },
+	{ field: 'hotspotName', title: '热点分类', width: 150 },
+	{ field: 'reTransactNum', title: '重办次数', width: 130 },
+	{ title: '操作', width: 90, fixed: 'right', align: 'center', slots: { default: 'action' } },
+	]