Переглянути джерело

Merge branch 'dev' into release

zhangchong 5 днів тому
батько
коміт
180e0dd1c0

+ 14 - 3
src/api/business/order.ts

@@ -414,7 +414,7 @@ export const orderStepAttachment = (id: string) => {
 		url: `/api/v1/Order/all_file/workflow/${id}`,
 		method: 'get',
 	});
-}
+};
 /**
  * @description 附件列表补充附件
  * @param {object} data
@@ -425,7 +425,7 @@ export const orderAttachmentAdd = (data: object) => {
 		method: 'post',
 		data,
 	});
-}
+};
 /**
  * @description 工单列表 企业
  * @param {any} params
@@ -464,4 +464,15 @@ export const exportOrderEnterprise = (data: object) => {
 			reduce_data_format: false,
 		}
 	);
-};
+};
+/**
+ * @description 获取工单的基础数据 包含来源渠道、工单状态、受理类型、当前节点、催办状态、延期申请单位
+ * @param {any} params
+ */
+export const orderBaseData = (params?: any) => {
+	return request({
+		url: `/api/v1/Order/basedata`,
+		method: 'get',
+		params,
+	});
+};

+ 32 - 1
src/api/statistics/call.ts

@@ -154,7 +154,22 @@ export const callRest = (params: object) => {
 		params,
 	});
 };
-
+/**
+ * @description 坐席小休统计 导出
+ * @param {object} data
+ */
+export const callRestExport = (data: object) => {
+	return request({
+		url: `/api/v1/BiCall/rests/export`,
+			method: 'post',
+			data,
+			responseType: 'blob',
+		},
+		{
+			reduce_data_format: false,
+		}
+	);
+};
 /**
  * @description 坐席转接统计
  * @param {object} params
@@ -166,6 +181,22 @@ export const callTransfer = (params: object) => {
 		params,
 	});
 };
+/**
+ * @description 坐席转接统计导出
+ * @param {object} data
+ */
+export const callTransferExport = (data: object) => {
+	return request({
+		url: `/api/v1/BiCall/seatswitch/export`,
+			method: 'post',
+			data,
+			responseType: 'blob',
+		},
+		{
+			reduce_data_format: false,
+		}
+	)
+};
 /**
  * @description 通话时段统计基础信息
  * @param {object} params

+ 50 - 0
src/api/statistics/center.ts

@@ -47,6 +47,23 @@ export const departmentHighFrequency = (params: object) => {
 		params,
 	});
 };
+/**
+ * @description 高频来电统计 导出
+ * @param {object} data
+ */
+export const departmentHighFrequencyExport = (data: object) => {
+	return request(
+		{
+			url: `/api/v1/BiOrder/high_frequency_call_statistics/export`,
+			method: 'post',
+			data,
+			responseType: 'blob',
+		},
+		{
+			reduce_data_format: false,
+		}
+	);
+};
 /**
  * @description 高频来电统计详情
  * @param {object} params
@@ -69,6 +86,23 @@ export const departmentHighFrequencyEvent = (params: object) => {
 		params,
 	});
 };
+/**
+ * @description 高频事件统计 导出
+ * @param {object} data
+ */
+export const departmentHighFrequencyEventExport = (data: object) => {
+	return request(
+		{
+			url: `/api/v1/BiOrder/highmatter-warning/export`,
+			method: 'post',
+			data,
+			responseType: 'blob',
+		},
+		{
+			reduce_data_format: false,
+		}
+	);
+};
 /**
  * @description 高频事件统计明细
  * @param {object} params
@@ -978,6 +1012,22 @@ export const centerOnlineRoute = (params: object) => {
 		params,
 	});
 };
+/**
+ * @description 网上群众路线统计 导出
+ * @param {object} data
+ */
+export const centerOnlineRouteExport = (data: object) => {
+	return request({
+		url: `/api/v1/BiOrder/onlinemassline-report/export`,
+			method: 'post',
+			data,
+			responseType: 'blob',
+		},
+		{
+			reduce_data_format: false,
+		}
+	);
+};
 /**
  * @description 延期审批统计
  * @param {object} params

+ 37 - 3
src/api/statistics/order.ts

@@ -98,6 +98,23 @@ export const departmentSpecial = (params: object) => {
 		params,
 	});
 };
+/**
+ * @description 特提统计 导出
+ * @param {object} data
+ */
+export const departmentSpecialExport = (data: object) => {
+	return request(
+		{
+			url: `/api/v1/BiOrder/special_data_list/export`,
+			method: 'post',
+			data,
+			responseType: 'blob',
+		},
+		{
+			reduce_data_format: false,
+		}
+	);
+};
 /**
  * @description 特提统计明细
  * @param {object} params
@@ -253,7 +270,7 @@ export const departmentVisitDetailSmart = (params: object) => {
 		method: 'get',
 		params,
 	});
-}
+};
 /**
  * @description 回访量统计导出
  * @param {object} data
@@ -701,7 +718,7 @@ export const statisticsOrderAcceptListExport = (data: object) => {
 			reduce_data_format: false,
 		}
 	);
-}
+};
 /**
  * @description 受理类型统计列表明细
  * @param {object} params
@@ -741,6 +758,23 @@ export const statisticsOrderArea = (params: object) => {
 		params,
 	});
 };
+/**
+ * @description 下级区域统计 导出
+ * @param {object} data
+ */
+export const statisticsOrderAreaExport = (data: object) => {
+	return request(
+		{
+			url: `/api/v1/BiOrder/area_subordinate/export`,
+			method: 'post',
+			data,
+			responseType: 'blob',
+		},
+		{
+			reduce_data_format: false,
+		}
+	);
+};
 /**
  * @description 热点区域统计
  * @param {object} params
@@ -908,4 +942,4 @@ export const statisticsOrderHotSatisfyDetailExport = (data: object) => {
 			reduce_data_format: false,
 		}
 	);
-};
+};

+ 177 - 9
src/views/business/delay/audit.vue

@@ -6,14 +6,15 @@
 				<el-tab-pane name="true" label="延期已审批" :disabled="state.loading"></el-tab-pane>
 			</el-tabs>
 			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline :disabled="state.loading">
-				<el-form-item label="关键字" prop="Keyword">
-					<el-input v-model.trim="state.queryParams.Keyword" placeholder="工单编码/标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				<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 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>
 					<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-button @click="drawer = true" class="default-button"> <SvgIcon name="ele-Search" class="mr5" />更多查询</el-button>
 				</el-form-item>
 			</el-form>
 			<vxe-toolbar
@@ -143,6 +144,116 @@
 		<delay-audit ref="delayAuditRef" @updateList="refreshList" />
 		<!--  延期审批批量  -->
 		<delay-audit-batch ref="delayAuditBatchRef" @updateList="refreshList" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="是否省工单" prop="IsProvince">
+					<el-select v-model="state.queryParams.IsProvince" placeholder="请选择是否省工单" @change="handleQuery">
+						<el-option label="是" value="true" />
+						<el-option label="否" value="false" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Channel" label="来源渠道">
+					<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="受理时间" prop="slTime">
+					<el-date-picker
+						v-model="state.queryParams.slTime"
+						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="AcceptorName">
+					<el-input v-model.trim="state.queryParams.AcceptorName" placeholder="受理人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="热点分类" prop="Hotspot">
+					<el-input v-model.trim="state.queryParams.Hotspot" placeholder="热点分类" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item prop="AcceptTypeCode" label="受理类型">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="一级部门" prop="OrgLevelOneName">
+					<el-input v-model.trim="state.queryParams.OrgLevelOneName" placeholder="一级部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="接办部门" prop="CurrentHandleOrgName">
+					<el-input v-model.trim="state.queryParams.CurrentHandleOrgName" placeholder="接办部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="接办时间" prop="jbTime">
+					<el-date-picker
+						v-model="state.queryParams.jbTime"
+						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="sqTime">
+					<el-date-picker
+						v-model="state.queryParams.sqTime"
+						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="ApplyName">
+					<el-input v-model.trim="state.queryParams.ApplyName" placeholder="延期申请人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="延期申请部门" prop="ApplyOrgName">
+					<el-input v-model.trim="state.queryParams.ApplyOrgName" placeholder="延期申请部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="延期申请时限" prop="DelayNum">
+					<el-input v-model.trim="state.queryParams.DelayNum" placeholder="延期申请时限" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item prop="DelayUnit" label="延期申请单位">
+					<el-select v-model="state.queryParams.DelayUnit" placeholder="请选择延期申请单位" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in delayUnitOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="申请理由" prop="DelayReason">
+					<el-input v-model.trim="state.queryParams.DelayReason" placeholder="申请理由" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="申请前期满时间" prop="sqqTime" label-width="120px">
+					<el-date-picker
+						v-model="state.queryParams.sqqTime"
+						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>
 	</div>
 </template>
 <script setup lang="tsx" name="businessDelayAudit">
@@ -150,7 +261,9 @@ import { computed, defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
 import { formatDate } from '@/utils/formatTime';
 import { delayList, waitDelayListExport } from '@/api/todo/delay';
+import { orderBaseData } from '@/api/business/order';
 import Other from '@/utils/other';
+import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 // 引入组件
 const DelayDetailCom = defineAsyncComponent(() => import('@/views/business/delay/components/Delay-detail.vue')); // 延期详情
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
@@ -159,19 +272,43 @@ const DelayAudit = defineAsyncComponent(() => import('@/views/business/delay/com
 const DelayAuditBatch = defineAsyncComponent(() => import('@/views/business/delay/components/Delay-audit-batch.vue')); // 延期审批 批量
 
 // 定义变量内容
-const state = reactive({
+const state = reactive<any>({
 	queryParams: {
 		// 查询条件
 		PageIndex: 1,
 		PageSize: 20,
-		Keyword: null, // 关键字
 		IsApply: 'false', // 待办/已办
+		No:null, // 工单编码
+		Title: null, // 工单标题
+		IsProvince: null, // 是否省工单
+		Channel: null, // 来源渠道
+		slTime: [], // 受理时间
+		CreationTimeStart: null, // 受理时间开始
+		CreationTimeEnd: null, // 受理时间结束
+		AcceptorName: null, // 受理人
+		Hotspot: null, // 热点分类
+		AcceptTypeCode: null, // 受理类型
+		OrgLevelOneName: null, // 一级部门
+		CurrentHandleOrgName: null, // 接办部门
+		jbTime: [], // 接办时间
+		CurrentHandleTimeStart:null, // 接办时间开始
+		CurrentHandleTimeEnd:null, // 接办时间结束
+		sqTime: [], // 延期申请时间
+		ApplyTimeStart : null, // 延期申请时间开始
+		ApplyTimeEnd : null, // 延期申请时间结束
+		ApplyName: null, // 延期申请人
+		ApplyOrgName: null, // 延期申请部门
+		DelayNum: null, // 延期申请时限
+		DelayUnit: null, // 延期申请单位
+		DelayReason: null, // 申请理由
+		sqqTime: [], // 申请前期满时间
+		BeforeDelayStart: null, // 申请前期满时间开始
+		BeforeDelayEnd: null, // 申请前期满时间结束
 	},
 	tableData: [], // 表格
 	loading: false, // 加载
 	total: 0, // 总数
 });
-const ruleFormRef = ref<RefType>(); // 表单ref
 // 手动查询,将页码设置为1
 const handleQuery = () => {
 	state.queryParams.PageIndex = 1;
@@ -187,6 +324,18 @@ const queryList = () => {
 	state.loading = true;
 	requestParams.value = Other.deepClone(state.queryParams);
 	requestParams.value.IsApply = state.queryParams.IsApply === 'true';
+	requestParams.value.CreationTimeStart = state.queryParams.slTime === null ? null : state.queryParams.slTime[0]; // 受理时间
+	requestParams.value.CreationTimeEnd = state.queryParams.slTime === null ? null : state.queryParams.slTime[1];
+	Reflect.deleteProperty(requestParams.value, 'slTime'); // 删除无用的参数
+	requestParams.value.CurrentHandleTimeStart = state.queryParams.jbTime === null ? null : state.queryParams.jbTime[0]; // 接办时间
+	requestParams.value.CurrentHandleTimeEnd = state.queryParams.jbTime === null ? null : state.queryParams.jbTime[1];
+	Reflect.deleteProperty(requestParams.value, 'jbTime'); // 删除无用的参数
+	requestParams.value.ApplyTimeStart = state.queryParams.sqTime === null ? null : state.queryParams.sqTime[0]; // 延期申请时间
+	requestParams.value.ApplyTimeEnd = state.queryParams.sqTime === null ? null : state.queryParams.sqTime[1];
+	Reflect.deleteProperty(requestParams.value, 'sqTime'); // 删除无用的参数
+	requestParams.value.BeforeDelayStart = state.queryParams.sqqTime === null ? null : state.queryParams.sqqTime[0]; // 申请前期满时间
+	requestParams.value.BeforeDelayEnd = state.queryParams.sqqTime === null ? null : state.queryParams.sqqTime[1];
+	Reflect.deleteProperty(requestParams.value, 'sqqTime'); // 删除无用的参数
 	delayList(requestParams.value)
 		.then((res: any) => {
 			state.tableData = res.result?.items ?? [];
@@ -206,9 +355,13 @@ const handleClick = () => {
 	handleQuery();
 };
 /** 重置按钮操作 */
+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();
 	queryList();
 };
 // 延期详情
@@ -234,7 +387,7 @@ const selectChangeEvent = ({ checked }) => {
 	}
 };
 const isChecked = computed(() => {
-	return !Boolean(checkTable.value.length);
+	return !checkTable.value.length;
 });
 // 延期审批
 const delayAuditRef = ref<RefType>();
@@ -246,11 +399,26 @@ const delayAuditBatchRef = ref<RefType>();
 const onAuditBatch = () => {
 	delayAuditBatchRef.value.openDialog(checkTable.value);
 };
+// 获取基础数据
+const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
+const delayUnitOptions = ref<EmptyArrayType>([]); // 延期单位
+const getBaseData = async () => {
+	try {
+		const { result } = await orderBaseData();
+		channelOptions.value = result.channelOptions ?? [];
+		acceptTypeOptions.value = result.acceptTypeOptions ?? [];
+		delayUnitOptions.value = result.delayUnitOptions ?? [];
+	} catch (e) {
+		console.log(e);
+	}
+};
 const tableRef = ref<RefType>();
 onMounted(() => {
 	queryList();
 	if (tableRef.value && toolbarRef.value) {
 		tableRef.value.connect(toolbarRef.value);
 	}
+	getBaseData();
 });
 </script>

+ 189 - 15
src/views/business/end/index.vue

@@ -2,14 +2,15 @@
 	<div class="business-end-container layout-padding">
 		<div class="layout-padding-auto layout-padding-view pd20">
 			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline :disabled="state.loading">
-				<el-form-item label="关键词" prop="Keyword">
-					<el-input v-model.trim="state.queryParams.Keyword" placeholder="工单编码/标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				<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 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>
 					<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-button @click="drawer = true" class="default-button"> <SvgIcon name="ele-Search" class="mr5" />更多查询</el-button>
 				</el-form-item>
 			</el-form>
 			<vxe-toolbar
@@ -22,10 +23,10 @@
 			>
 				<template #buttons>
 					<el-button type="primary" @click="oncancelEnd" v-auth="'business:order:end'" :disabled="isChecked">
-						<SvgIcon name="ele-Stopwatch" class="mr5" />取消终结件<span v-if="checkTable.length">({{checkTable.length}})</span>
+						<SvgIcon name="ele-Stopwatch" class="mr5" />取消终结件<span v-if="checkTable.length">({{ checkTable.length }})</span>
 					</el-button>
 					<el-button type="primary" @click="onJbExport" :disabled="isChecked" :loading="state.loading"
-						><SvgIcon name="iconfont icon-daochu" class="mr5" />交办单导出<span v-if="checkTable.length">({{checkTable.length}})</span>
+						><SvgIcon name="iconfont icon-daochu" class="mr5" />交办单导出<span v-if="checkTable.length">({{ checkTable.length }})</span>
 					</el-button>
 				</template>
 			</vxe-toolbar>
@@ -35,14 +36,14 @@
 					:loading="state.loading"
 					:data="state.tableData"
 					:column-config="{ resizable: true }"
-					:row-config="{ isCurrent: true, isHover: true, height: 30, useKey: true  }"
+					:row-config="{ isCurrent: true, isHover: true, height: 30, useKey: true }"
 					ref="tableRef"
 					@checkbox-all="selectAllChangeEvent"
 					@checkbox-change="selectChangeEvent"
 					height="auto"
 					auto-resize
 					show-overflow
-					:scrollY="{ enabled: true, gt: 100  }"
+					:scrollY="{ enabled: true, gt: 100 }"
 					id="businessEnd"
 					:custom-config="{ storage: true }"
 					showHeaderOverflow
@@ -56,7 +57,9 @@
 					<vxe-column field="order.no" title="工单编码" width="140"></vxe-column>
 					<vxe-column field="order.statusText" title="工单状态" width="100">
 						<template #default="{ 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>
+							<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>
 					</vxe-column>
@@ -106,6 +109,114 @@
 				:disabled="state.loading"
 			/>
 		</div>
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item prop="Status" label="工单状态">
+					<el-select v-model="state.queryParams.Status" placeholder="请选择工单状态" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in orderStatusOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Channel" label="来源渠道">
+					<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="CurrentStepCode" label="当前节点">
+					<el-select v-model="state.queryParams.CurrentStepCode" placeholder="请选择当前节点" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in currentStepOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="受理时间" prop="slTime">
+					<el-date-picker
+						v-model="state.queryParams.slTime"
+						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="CreatorName">
+					<el-input v-model.trim="state.queryParams.CreatorName" placeholder="设置人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="设置时间" prop="szTime">
+					<el-date-picker
+						v-model="state.queryParams.szTime"
+						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="qmTime">
+					<el-date-picker
+						v-model="state.queryParams.qmTime"
+						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 prop="AcceptTypeCode" label="受理类型">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="热点分类" prop="Hotspot">
+					<el-input v-model.trim="state.queryParams.Hotspot" placeholder="热点分类" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="接办部门" prop="CurrentHandleOrgName">
+					<el-input v-model.trim="state.queryParams.CurrentHandleOrgName" placeholder="接办部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="接办时间" prop="jbTime">
+					<el-date-picker
+						v-model="state.queryParams.jbTime"
+						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="bjTime">
+					<el-date-picker
+						v-model="state.queryParams.bjTime"
+						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>
 	</div>
 </template>
 <script setup lang="tsx" name="businessEnd">
@@ -114,17 +225,42 @@ import { ElMessage, ElMessageBox, FormInstance } from 'element-plus';
 import { formatDate } from '@/utils/formatTime';
 import { deleteEnd, endList } from '@/api/query/end';
 import { exportAssignment } from '@/utils/tools';
+import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
+import { orderBaseData } from '@/api/business/order';
+import Other from '@/utils/other';
 // 引入组件
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
 const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
 // 定义变量内容
-const ruleFormRef = ref<RefType>(); // 表单ref
-const state = reactive({
+const state = reactive<any>({
 	queryParams: {
 		// 查询条件
 		PageIndex: 1,
 		PageSize: 20,
-		Keyword: null, // 关键字
+		No: null, // 工单编码
+		Title: null, // 工单编码
+		Status:null, // 工单状态
+		Channel:null, // 来源渠道
+		CurrentStepCode:null, // 当前节点
+		slTime:[], // 受理时间
+		CreationTimeStart:null, // 受理时间 开始
+		CreationTimeEnd:null, // 受理时间 结束
+		CreatorName:null, // 设置人
+		szTime:[], // 设置时间
+		SetCreationTimeStart:null, // 设置时间 开始
+		SetCreationTimeEnd:null, // 设置时间 结束
+		qmTime:[], // 期满时间
+		ExpiredTimeStart:null, // 期满时间 开始
+		ExpiredTimeEnd:null, // 期满时间 结束
+		AcceptTypeCode:null, // 受理类型
+		Hotspot:null, // 热点分类
+		CurrentHandleOrgName:null, // 接办部门
+		jbTime:[], // 接办时间
+		CurrentHandleTimeStart:null, // 接办时间 开始
+		CurrentHandleTimeEnd:null, // 接办时间 结束
+		bjTime:[], // 办结时间
+		FiledTimeStart:null, // 办结时间 开始
+		FiledTimeEnd:null, // 办结时间 结束
 	},
 	tableData: [], //表单
 	loading: false, // 加载
@@ -137,12 +273,29 @@ const handleQuery = () => {
 };
 // 刷新列表
 const refreshList = () => {
-  queryList();
+	queryList();
 };
 /** 获取列表 */
+const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.loading = true;
-	endList(state.queryParams)
+	requestParams.value = Other.deepClone(state.queryParams);
+	requestParams.value.CreationTimeStart  = state.queryParams.slTime === null ? null : state.queryParams.slTime[0]; // 受理时间
+	requestParams.value.CreationTimeEnd = state.queryParams.slTime === null ? null : state.queryParams.slTime[1];
+	Reflect.deleteProperty(requestParams.value, 'slTime'); // 删除无用的参数
+	requestParams.value.SetCreationTimeStart  = state.queryParams.szTime === null ? null : state.queryParams.szTime[0]; // 设置时间
+	requestParams.value.SetCreationTimeEnd = state.queryParams.szTime === null ? null : state.queryParams.szTime[1];
+	Reflect.deleteProperty(requestParams.value, 'szTime'); // 删除无用的参数
+	requestParams.value.ExpiredTimeStart  = state.queryParams.qmTime === null ? null : state.queryParams.qmTime[0]; // 期满时间
+	requestParams.value.ExpiredTimeEnd = state.queryParams.qmTime === null ? null : state.queryParams.qmTime[1];
+	Reflect.deleteProperty(requestParams.value, 'qmTime'); // 删除无用的参数
+	requestParams.value.CurrentHandleTimeStart  = state.queryParams.jbTime === null ? null : state.queryParams.jbTime[0]; // 接办时间
+	requestParams.value.CurrentHandleTimeEnd = state.queryParams.jbTime === null ? null : state.queryParams.jbTime[1];
+	Reflect.deleteProperty(requestParams.value, 'jbTime'); // 删除无用的参数
+	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'); // 删除无用的参数
+	endList(requestParams.value)
 		.then((res) => {
 			state.tableData = res?.result.items ?? [];
 			state.total = res?.result.total;
@@ -158,9 +311,13 @@ const 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();
 	queryList();
 };
 // 取消终结件
@@ -206,11 +363,28 @@ const selectChangeEvent = ({ checked }) => {
 const isChecked = computed(() => {
 	return !Boolean(checkTable.value.length);
 });
+// 获取基础数据
+const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const orderStatusOptions = ref<EmptyArrayType>([]); // 工单状态
+const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
+const currentStepOptions = ref<EmptyArrayType>([]); // 当前节点
+const getBaseData = async () => {
+	try {
+		const { result } = await orderBaseData();
+		channelOptions.value = result.channelOptions ?? [];
+		orderStatusOptions.value = result.orderStatusOptions ?? [];
+		acceptTypeOptions.value = result.acceptTypeOptions ?? [];
+		currentStepOptions.value = result.currentStepOptions ?? [];
+	} catch (e) {
+		console.log(e);
+	}
+};
 const toolbarRef = ref<RefType>();
 onMounted(() => {
 	queryList();
 	if (tableRef.value && toolbarRef.value) {
 		tableRef.value.connect(toolbarRef.value);
 	}
+	getBaseData();
 });
 </script>

+ 99 - 14
src/views/business/return/audit.vue

@@ -37,17 +37,9 @@
 						:default-time="defaultTimeStartEnd"
 					/>
 				</el-form-item>
-				<el-form-item label="审批状态" prop="State" v-if="state.queryParams.AuditState === '2'">
-					<el-select v-model="state.queryParams.State" placeholder="请选择审批状态" @change="handleQuery">
-						<el-option value="1" label="审批通过" />
-						<el-option value="2" label="审批拒绝" />
-					</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)" class="default-button" :loading="state.loading">
-						<SvgIcon name="ele-Refresh" 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>
 			<vxe-toolbar
@@ -151,17 +143,79 @@
 		<return-audit-detail ref="returnAuditDetailRef" />
 		<!-- 批量审批 -->
 		<return-audit-multiple ref="returnAuditMultipleRef" @updateList="refreshList" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="审批状态" prop="State" v-if="state.queryParams.AuditState === '2'">
+					<el-select v-model="state.queryParams.State" placeholder="请选择审批状态" @change="handleQuery">
+						<el-option value="1" label="审批通过" />
+						<el-option value="2" label="审批拒绝" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="是否省工单" prop="IsProvince">
+					<el-select v-model="state.queryParams.IsProvince" placeholder="请选择是否省工单" @change="handleQuery">
+						<el-option label="是" value="true" />
+						<el-option label="否" value="false" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Channel" label="来源渠道">
+					<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="AcceptTypeCode" label="受理类型">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="热点分类" prop="Hotspot">
+					<el-input v-model.trim="state.queryParams.Hotspot" placeholder="热点分类" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="最近派单员" prop="CenterToOrgHandlerName">
+					<el-input v-model.trim="state.queryParams.CenterToOrgHandlerName" placeholder="最近派单员" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="退回节点" prop="SendBackStepName">
+					<el-input v-model.trim="state.queryParams.SendBackStepName" placeholder="退回节点" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="退回时差" prop="SendBackTimeDifference">
+					<el-input v-model.trim="state.queryParams.SendBackTimeDifference" placeholder="退回时差" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="受理人" prop="NameOrNo">
+					<el-input v-model.trim="state.queryParams.NameOrNo" placeholder="受理人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="一级部门" prop="OrgLevelOneName">
+					<el-input v-model.trim="state.queryParams.OrgLevelOneName" placeholder="一级部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="受理内容" prop="Content">
+					<el-input v-model.trim="state.queryParams.Content" placeholder="一级部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="申请人" prop="ApplyName">
+					<el-input v-model.trim="state.queryParams.ApplyName" placeholder="申请人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="申请部门" prop="ApplyOrgName">
+					<el-input v-model.trim="state.queryParams.ApplyOrgName" placeholder="申请部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="申请理由" prop="Opinion">
+					<el-input v-model.trim="state.queryParams.Opinion" placeholder="申请理由" clearable @keyup.enter="handleQuery" />
+				</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>
 	</div>
 </template>
 <script setup lang="tsx" name="businessReturnAudit">
 import { computed, defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
-import { returnAuditList } from '@/api/business/return';
+import { returnAuditList, returnBase } from '@/api/business/return';
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 import Other from '@/utils/other';
 import { useThemeConfig } from '@/stores/themeConfig';
 import { storeToRefs } from 'pinia';
 import { formatDate } from '@/utils/formatTime';
+import { orderBaseData } from '@/api/business/order';
 // 引入组件
 const ReturnAudit = defineAsyncComponent(() => import('@/views/business/return/components/Return-audit.vue')); // 审批
 const ReturnAuditMultiple = defineAsyncComponent(() => import('@/views/business/return/components/Return-audit-multiple.vue'));
@@ -169,7 +223,6 @@ const ReturnAuditDetail = defineAsyncComponent(() => import('@/views/business/re
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
 const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
 // 定义变量内容
-const ruleFormRef = ref<RefType>(); // 表单ref\
 const state = reactive<any>({
 	queryParams: {
 		// 查询条件
@@ -184,6 +237,19 @@ const state = reactive<any>({
 		qmTime: [],
 		ExpiredTimeStart: null,
 		ExpiredTimeEnd: null,
+		IsProvince:null, // 是否省工单
+		Channel:null, // 来源渠道
+		AcceptTypeCode:null, // 受理类型
+		Hotspot:null, // 热点分类
+		CenterToOrgHandlerName:null, // 最近派单员
+		SendBackStepName:null, // 退回节点
+		SendBackTimeDifference:null, // 退回时差
+		NameOrNo:null, // 受理人
+		OrgLevelOneName:null, //一级部门
+		Content:null, // 受理内容
+		ApplyName:null, // 申请人
+		ApplyOrgName:null, // 申请部门
+		Opinion:null, // 申请理由
 	},
 	tableData: [], //表单
 	loading: false, // 加载
@@ -198,14 +264,14 @@ const handleQuery = () => {
 };
 // 刷新列表
 const refreshList = () => {
-  queryList();
+	queryList();
 };
 /** 获取列表 */
 const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.loading = true;
 	requestParams.value = Other.deepClone(state.queryParams);
-	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0];
+	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 受理时间
 	requestParams.value.CreationTimeEnd = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
 	Reflect.deleteProperty(requestParams.value, 'crTime'); // 删除无用的参数
 	requestParams.value.ExpiredTimeStart = state.queryParams.qmTime === null ? null : state.queryParams.qmTime[0]; // 期满时间
@@ -229,9 +295,13 @@ const 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();
 	queryList();
 };
 // 审批
@@ -268,13 +338,28 @@ const selectChangeEvent = ({ checked }) => {
 	}
 };
 const isChecked = computed(() => {
-	return !Boolean(checkTable.value.length);
+	return !checkTable.value.length;
 });
+// 获取基础数据
+const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const orderStatusOptions = ref<EmptyArrayType>([]); // 工单状态
+const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
+const getBaseData = async ()=>{
+	try {
+		const { result } = await orderBaseData();
+		channelOptions.value = result.channelOptions ?? [];
+		orderStatusOptions.value = result.orderStatusOptions ?? [];
+		acceptTypeOptions.value = result.acceptTypeOptions ?? [];
+	} catch (e) {
+		console.log(e);
+	}
+}
 const toolbarRef = ref<RefType>();
 onMounted(() => {
 	queryList();
 	if (tableRef.value && toolbarRef.value) {
 		tableRef.value.connect(toolbarRef.value);
 	}
+	getBaseData();
 });
 </script>

+ 78 - 31
src/views/business/secondHandle/audit.vue

@@ -6,33 +6,15 @@
 				<el-tab-pane :name="4" label="已审批" :disabled="state.loading"></el-tab-pane>
 			</el-tabs>
 			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline :disabled="state.loading">
-				<el-form-item label="关键词" prop="Keyword">
-					<el-input v-model.trim="state.queryParams.Keyword" placeholder="工单编码/标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				<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 label="申请状态" prop="Status">
-									<el-select v-model="state.queryParams.Status" placeholder="请选择申请状态" clearable @change="handleQuery">
-										<el-option v-for="item in state.statusOptions" :value="item.key" :key="item.key" :label="item.value" />
-									</el-select>
-								</el-form-item>-->
-				<el-form-item label="申请时间" prop="crTime">
-					<el-date-picker
-						v-model="state.queryParams.crTime"
-						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 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>
 					<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-button @click="drawer = true" class="default-button"> <SvgIcon name="ele-Search" class="mr5" />更多查询</el-button>
 				</el-form-item>
 			</el-form>
 			<vxe-toolbar
@@ -131,6 +113,54 @@
 		<second-handle-audit-multiple ref="secondHandleAuditMultipleRef" @updateList="refreshList" />
 		<!--  办理明细  -->
 		<second-handle-detail ref="secondHandleDetailRef" @updateList="refreshList" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item prop="Channel" label="来源渠道">
+					<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="SendBack" label="重提办理">
+					<el-select v-model="state.queryParams.SendBack" placeholder="请选择重提办理" clearable class="w100" @change="handleQuery">
+						<el-option :value="1"  label="是" />
+						<el-option :value="0"  label="否" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="申请人" prop="ApplyName">
+					<el-input v-model.trim="state.queryParams.ApplyName" placeholder="申请人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="申请部门" prop="ApplyOrgName">
+					<el-input v-model.trim="state.queryParams.ApplyOrgName" placeholder="申请部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="申请时间" prop="crTime">
+					<el-date-picker
+						v-model="state.queryParams.crTime"
+						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 prop="AcceptTypeCode" label="受理类型">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="热点分类" prop="Hotspot">
+					<el-input v-model.trim="state.queryParams.Hotspot" placeholder="热点分类" clearable @keyup.enter="handleQuery" />
+				</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>
 	</div>
 </template>
 <script setup lang="tsx" name="businessSecondHandleAudit">
@@ -140,6 +170,7 @@ import { formatDate } from '@/utils/formatTime';
 import { secondHandleAuditExport, secondHandleAuditList, secondHandleBase } from '@/api/business/secondHandle';
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 import other from '@/utils/other';
+import { orderBaseData } from '@/api/business/order';
 // 引入组件
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
 const SecondHandleReturn = defineAsyncComponent(() => import('@/views/business/secondHandle/components/Second-handle-return.vue')); // 二次办理退回
@@ -148,17 +179,23 @@ const SecondHandleAuditMultiple = defineAsyncComponent(() => import('@/views/bus
 const SecondHandleDetail = defineAsyncComponent(() => import('@/views/business/secondHandle/components/Second-handle-detail.vue')); // 办理明细
 const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
 // 定义变量内容
-const ruleFormRef = ref<RefType>(); // 表单ref
 const state = reactive<any>({
 	queryParams: {
 		// 查询条件
 		PageIndex: 1,
 		PageSize: 20,
-		Keyword: null, // 关键字
 		Status: 1, // 状态
-		crTime: [],
-		CreationTimeStart: null,
-		CreationTimeEnd: null,
+		crTime: [], // 申请时间
+		CreationTimeStart: null, // 申请时间开始
+		CreationTimeEnd: null, // 申请时间结束
+		No:null, // 工单编码
+		Title: null, // 工单标题
+		Channel: null, // 来源渠道
+		SendBack: null, // 重提办理
+		ApplyName: null, // 申请人
+		ApplyOrgName: null, // 申请部门
+		AcceptTypeCode: null, // 受理类型
+		Hotspot: null, // 热点分类
 	},
 	tableData: [], //表单
 	loading: false, // 加载
@@ -198,9 +235,13 @@ const 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();
 	queryList();
 };
 // 批量审批
@@ -225,10 +266,16 @@ const onAudit = (row: any) => {
 	secondHandleAuditRef.value.openDialog(row);
 };
 // 获取基础数据
+const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
 const getBaseData = async () => {
 	try {
-		const { result } = await secondHandleBase();
-		state.statusOptions = result?.status ?? [];
+		const res = await secondHandleBase();
+		state.statusOptions = res.result?.status ?? [];
+
+		const { result } = await orderBaseData();
+		channelOptions.value = result.channelOptions ?? [];
+		acceptTypeOptions.value = result.acceptTypeOptions ?? [];
 	} catch (e) {
 		console.log(e);
 	}
@@ -251,7 +298,7 @@ const selectChangeEvent = ({ checked }) => {
 	}
 };
 const isChecked = computed(() => {
-	return !Boolean(checkTable.value.length);
+	return !checkTable.value.length;
 });
 const toolbarRef = ref<RefType>();
 onMounted(() => {

+ 230 - 16
src/views/business/supervise/index.vue

@@ -2,19 +2,15 @@
 	<div class="business-supervise-container layout-padding">
 		<div class="layout-padding-auto layout-padding-view pd20">
 			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline :disabled="state.loading">
-				<el-form-item label="工单标题" prop="Keyword">
-					<el-input v-model.trim="state.queryParams.Keyword" placeholder="工单编码/标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				<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="SuperviseState">
-					<el-select v-model="state.queryParams.SuperviseState" placeholder="请选择督办状态" @change="handleQuery">
-						<el-option v-for="item in superviseStateOptions" :value="item.key" :key="item.key" :label="item.value" />
-					</el-select>
+				<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="resetQuery(ruleFormRef)" v-waves class="default-button" :loading="state.loading">
-						<SvgIcon name="ele-Refresh" 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>
 			<vxe-toolbar
@@ -60,7 +56,9 @@
 					<vxe-column field="order.sourceChannel" title="来源渠道" width="110"></vxe-column>
 					<vxe-column field="order.statusText" title="工单状态" width="110">
 						<template #default="{ 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>
+							<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>
 					</vxe-column>
@@ -130,6 +128,150 @@
 		<order-supervise-detail ref="orderSuperviseDetailRef" @updateList="refreshList" />
 		<!-- 督办回复 -->
 		<order-supervise-reply ref="orderSuperviseReplyRef" @updateList="refreshList" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="是否省工单" prop="IsProvince">
+					<el-select v-model="state.queryParams.IsProvince" placeholder="请选择是否省工单" @change="handleQuery">
+						<el-option label="是" value="true" />
+						<el-option label="否" value="false" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Channel" label="来源渠道">
+					<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Status" label="工单状态">
+					<el-select v-model="state.queryParams.Status" placeholder="请选择工单状态" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in orderStatusOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="AcceptTypeCode" label="受理类型">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="热点分类" prop="Hotspot">
+					<el-input v-model.trim="state.queryParams.Hotspot" placeholder="热点分类" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="受理人" prop="AcceptorName">
+					<el-input v-model.trim="state.queryParams.AcceptorName" placeholder="受理人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="督办状态" prop="SuperviseState">
+					<el-select v-model="state.queryParams.SuperviseState" placeholder="请选择督办状态" @change="handleQuery">
+						<el-option v-for="item in superviseStateOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="接办部门" prop="CurrentHandleOrgName">
+					<el-input v-model.trim="state.queryParams.CurrentHandleOrgName" placeholder="接办部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="受理时间" prop="slTime">
+					<el-date-picker
+						v-model="state.queryParams.slTime"
+						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="qmTime">
+					<el-date-picker
+						v-model="state.queryParams.qmTime"
+						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="CrUser">
+					<el-input v-model.trim="state.queryParams.CrUser" placeholder="督办人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="督办部门" prop="LaunchOrgName">
+					<el-input v-model.trim="state.queryParams.LaunchOrgName" placeholder="督办部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="督办时间" prop="dbTime">
+					<el-date-picker
+						v-model="state.queryParams.dbTime"
+						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="sxTime">
+					<el-date-picker
+						v-model="state.queryParams.sxTime"
+						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="OrgName">
+					<el-input v-model.trim="state.queryParams.OrgName" placeholder="被督办部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="督办意见" prop="ApplyContent">
+					<el-input v-model.trim="state.queryParams.ApplyContent" placeholder="督办意见" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+
+				<el-form-item label="督办回复时间" prop="hfTime">
+					<el-date-picker
+						v-model="state.queryParams.hfTime"
+						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="ReplyContent">
+					<el-input v-model.trim="state.queryParams.ReplyContent" placeholder="督办回复内容" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="督办签收" prop="qsTime">
+					<el-date-picker
+						v-model="state.queryParams.qsTime"
+						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>
 	</div>
 </template>
 <script setup lang="tsx" name="businessSupervise">
@@ -137,20 +279,53 @@ import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
 import { formatDate } from '@/utils/formatTime';
 import { superviseList } from '@/api/business/supervise';
+import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
+import { orderBaseData } from '@/api/business/order';
+import Other from '@/utils/other';
 // 引入组件
 const OrderSuperviseDetail = defineAsyncComponent(() => import('@/views/business/supervise/components/Order-supervise-detail.vue')); // 督办详情
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
 const OrderSuperviseReply = defineAsyncComponent(() => import('@/views/business/supervise/components/Order-supervise-reply.vue')); // 回复督办
 const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
 // 定义变量内容
-const ruleFormRef = ref<RefType>(); // 表单ref
-const state = reactive({
+const state = reactive<any>({
 	queryParams: {
 		// 查询条件
 		PageIndex: 1,
 		PageSize: 20,
-		Keyword: null, // 关键字
+		Title:null, // 工单标题
+		No: null, // 工单编码
 		SuperviseState: null, // 回复状态
+		IsProvince: null, // 是否省工单
+		Channel: null, // 来源渠道
+		Status: null, // 工单状态
+		AcceptTypeCode: null, // 受理类型
+		Hotspot: null, // 热点分类
+		AcceptorName: null, // 受理人
+		CurrentHandleOrgName: null, // 接办部门
+		slTime: [], // 受理时间
+		CreationTimeStart: null, // 受理时间开始
+		CreationTimeEnd: null, // 受理时间结束
+		qmTime: [], // 期满时间
+		ExpiredTimeStart: null, // 期满时间开始
+		ExpiredTimeEnd: null, // 期满时间结束
+		CrUser: null, // 督办人
+		LaunchOrgName: null, // 督办部门
+		dbTime: [], // 督办时间
+		SuperviseTimeStart: null, // 督办时间开始
+		SuperviseTimeEnd: null, // 督办时间结束
+		sxTime: [], // 督办回复时限
+		ReplyLimitTimeStart: null, // 督办回复时限开始
+		ReplyLimitTimeEnd: null, // 督办回复时限结束
+		OrgName: null, // 被督办部门
+		ApplyContent: null, // 督办意见
+		hfTime: [], // 督办回复时间
+		ReplyTimeStart: null, // 督办回复时间开始
+		ReplyTimeEnd: null, // 督办回复时间结束
+		ReplyContent: null, // 督办回复内容
+		qsTime: [], // 督办签收时间
+		SignTimeStart: null, // 督办签收时间开始
+		SignTimeEnd: null, // 督办签收时间结束
 	},
 	tableData: [], //表单
 	loading: false, // 加载
@@ -173,26 +348,50 @@ const handleQuery = () => {
 };
 // 刷新列表
 const refreshList = () => {
-  queryList();
+	queryList();
 };
 /** 获取列表 */
+const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.loading = true;
-	superviseList(state.queryParams)
+	requestParams.value = Other.deepClone(state.queryParams);
+	requestParams.value.CreationTimeStart = state.queryParams.slTime === null ? null : state.queryParams.slTime[0]; // 受理时间
+	requestParams.value.CreationTimeEnd = state.queryParams.slTime === null ? null : state.queryParams.slTime[1];
+	Reflect.deleteProperty(requestParams.value, 'slTime'); // 删除无用的参数
+	requestParams.value.ExpiredTimeStart = state.queryParams.qmTime === null ? null : state.queryParams.qmTime[0]; // 期满时间
+	requestParams.value.ExpiredTimeEnd = state.queryParams.qmTime === null ? null : state.queryParams.qmTime[1];
+	Reflect.deleteProperty(requestParams.value, 'qmTime'); // 删除无用的参数
+	requestParams.value.SuperviseTimeStart = state.queryParams.dbTime === null ? null : state.queryParams.dbTime[0]; // 督办时间
+	requestParams.value.SuperviseTimeEnd = state.queryParams.dbTime === null ? null : state.queryParams.dbTime[1];
+	Reflect.deleteProperty(requestParams.value, 'dbTime'); // 删除无用的参数
+	requestParams.value.ReplyLimitTimeStart = state.queryParams.sxTime === null ? null : state.queryParams.sxTime[0]; // 督办回复时限
+	requestParams.value.ReplyLimitTimeEnd = state.queryParams.sxTime === null ? null : state.queryParams.sxTime[1];
+	Reflect.deleteProperty(requestParams.value, 'sxTime'); // 删除无用的参数
+	requestParams.value.ReplyTimeStart = state.queryParams.hfTime === null ? null : state.queryParams.hfTime[0]; // 督办回复时间
+	requestParams.value.ReplyTimeEnd = state.queryParams.hfTime === null ? null : state.queryParams.hfTime[1];
+	Reflect.deleteProperty(requestParams.value, 'hfTime'); // 删除无用的参数
+	requestParams.value.SignTimeStart = state.queryParams.qsTime === null ? null : state.queryParams.qsTime[0]; // 督办签收时间
+	requestParams.value.SignTimeEnd = state.queryParams.qsTime === null ? null : state.queryParams.qsTime[1];
+	Reflect.deleteProperty(requestParams.value, 'qsTime'); // 删除无用的参数
+	superviseList(requestParams.value)
 		.then((res: any) => {
 			state.tableData = res.result?.items ?? [];
 			state.total = res.result?.total ?? 0;
 			state.loading = false;
 		})
-		.catch((err: any) => {
+		.catch(() => {
 			state.loading = false;
 		});
 };
 
 /** 重置按钮操作 */
+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();
 	queryList();
 };
 // 回复
@@ -205,6 +404,20 @@ const orderSuperviseDetailRef = ref<RefType>();
 const onDetail = (row: any) => {
 	orderSuperviseDetailRef.value.openDialog(row);
 };
+// 获取基础数据
+const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const orderStatusOptions = ref<EmptyArrayType>([]); // 工单状态
+const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
+const getBaseData = async () => {
+	try {
+		const { result } = await orderBaseData();
+		channelOptions.value = result.channelOptions ?? [];
+		orderStatusOptions.value = result.orderStatusOptions ?? [];
+		acceptTypeOptions.value = result.acceptTypeOptions ?? [];
+	} catch (e) {
+		console.log(e);
+	}
+};
 const toolbarRef = ref<RefType>();
 const tableRef = ref<RefType>();
 onMounted(() => {
@@ -212,5 +425,6 @@ onMounted(() => {
 	if (tableRef.value && toolbarRef.value) {
 		tableRef.value.connect(toolbarRef.value);
 	}
+	getBaseData();
 });
 </script>

+ 156 - 10
src/views/business/supervise/todo.vue

@@ -2,14 +2,15 @@
 	<div class="business-supervise-todo-container layout-padding">
 		<div class="layout-padding-auto layout-padding-view pd20">
 			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline :disabled="state.loading">
-				<el-form-item label="关键字" prop="Keyword">
-					<el-input v-model.trim="state.queryParams.Keyword" placeholder="工单编码/标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				<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="resetQuery(ruleFormRef)" class="default-button" :loading="state.loading">
-						<SvgIcon name="ele-Refresh" 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>
 			<vxe-toolbar
@@ -99,28 +100,143 @@
 		</div>
 		<!-- 督办回复 -->
 		<order-supervise-reply ref="orderSuperviseReplyRef" @updateList="refreshList" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="是否省工单" prop="IsProvince">
+					<el-select v-model="state.queryParams.IsProvince" placeholder="请选择是否省工单" @change="handleQuery">
+						<el-option label="是" value="true" />
+						<el-option label="否" value="false" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Channel" label="来源渠道">
+					<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Status" label="工单状态">
+					<el-select v-model="state.queryParams.Status" placeholder="请选择工单状态" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in orderStatusOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="AcceptTypeCode" label="受理类型">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="热点分类" prop="Hotspot">
+					<el-input v-model.trim="state.queryParams.Hotspot" placeholder="热点分类" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="受理人" prop="AcceptorName">
+					<el-input v-model.trim="state.queryParams.AcceptorName" placeholder="受理人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="接办部门" prop="CurrentHandleOrgName">
+					<el-input v-model.trim="state.queryParams.CurrentHandleOrgName" placeholder="接办部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="期满时间" prop="qmTime">
+					<el-date-picker
+						v-model="state.queryParams.qmTime"
+						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="dbTime">
+					<el-date-picker
+						v-model="state.queryParams.dbTime"
+						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="sxTime">
+					<el-date-picker
+						v-model="state.queryParams.sxTime"
+						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="CrUser">
+					<el-input v-model.trim="state.queryParams.CrUser" placeholder="督办人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="督办部门" prop="LaunchOrgName">
+					<el-input v-model.trim="state.queryParams.LaunchOrgName" placeholder="督办部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="被督办部门" prop="OrgName">
+					<el-input v-model.trim="state.queryParams.OrgName" placeholder="被督办部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="督办意见" prop="ApplyContent">
+					<el-input v-model.trim="state.queryParams.ApplyContent" placeholder="督办意见" clearable @keyup.enter="handleQuery" />
+				</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>
 	</div>
 </template>
 <script setup lang="tsx" name="businessSuperviseTodo">
 import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
-import { throttle } from '@/utils/tools';
 import { formatDate } from '@/utils/formatTime';
 import { superviseList } from '@/api/business/supervise';
+import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
+import { orderBaseData } from '@/api/business/order';
+import Other from '@/utils/other';
 // 引入组件
 const OrderSuperviseReply = defineAsyncComponent(() => import('@/views/business/supervise/components/Order-supervise-reply.vue')); // 回复督办
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
 const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
 
 // 定义变量内容
-const ruleFormRef = ref<RefType>(); // 表单ref
-const state = reactive({
+const state = reactive<any>({
 	queryParams: {
 		// 查询条件
 		PageIndex: 1,
 		PageSize: 20,
-		Keyword: null, // 关键字
 		SuperviseState: '0', // 未回复督办
+		Title:null, // 工单标题
+		No: null, // 工单编码
+		IsProvince: null, // 是否省工单
+		Channel: null, // 来源渠道
+		Status: null, // 工单状态
+		AcceptTypeCode: null, // 受理类型
+		Hotspot: null, // 热点分类
+		AcceptorName: null, // 受理人
+		CurrentHandleOrgName: null, // 接办部门
+		qmTime: [], // 期满时间
+		ExpiredTimeStart: null, // 期满时间开始
+		ExpiredTimeEnd: null, // 期满时间结束
+		CrUser: null, // 督办人
+		LaunchOrgName: null, // 督办部门
+		dbTime: [], // 督办时间
+		SuperviseTimeStart: null, // 督办时间开始
+		SuperviseTimeEnd: null, // 督办时间结束
+		sxTime: [], // 督办回复时限
+		ReplyLimitTimeStart: null, // 督办回复时限开始
+		ReplyLimitTimeEnd: null, // 督办回复时限结束
+		OrgName: null, // 被督办部门
+		ApplyContent: null, // 督办意见
 	},
 	tableData: [], //表单
 	loading: false, // 加载
@@ -136,9 +252,20 @@ const refreshList = () => {
   queryList();
 };
 /** 获取列表 */
+const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.loading = true;
-	superviseList(state.queryParams)
+	requestParams.value = Other.deepClone(state.queryParams);
+	requestParams.value.ExpiredTimeStart = state.queryParams.qmTime === null ? null : state.queryParams.qmTime[0]; // 期满时间
+	requestParams.value.ExpiredTimeEnd = state.queryParams.qmTime === null ? null : state.queryParams.qmTime[1];
+	Reflect.deleteProperty(requestParams.value, 'qmTime'); // 删除无用的参数
+	requestParams.value.SuperviseTimeStart = state.queryParams.dbTime === null ? null : state.queryParams.dbTime[0]; // 督办时间
+	requestParams.value.SuperviseTimeEnd = state.queryParams.dbTime === null ? null : state.queryParams.dbTime[1];
+	Reflect.deleteProperty(requestParams.value, 'dbTime'); // 删除无用的参数
+	requestParams.value.ReplyLimitTimeStart = state.queryParams.sxTime === null ? null : state.queryParams.sxTime[0]; // 督办回复时限
+	requestParams.value.ReplyLimitTimeEnd = state.queryParams.sxTime === null ? null : state.queryParams.sxTime[1];
+	Reflect.deleteProperty(requestParams.value, 'sxTime'); // 删除无用的参数
+	superviseList(requestParams.value)
 		.then((res: any) => {
 			state.tableData = res.result?.items ?? [];
 			state.total = res.result?.total ?? 0;
@@ -149,9 +276,13 @@ const 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();
 	queryList();
 };
 // 回复
@@ -159,6 +290,20 @@ const orderSuperviseReplyRef = ref<RefType>();
 const onReply = (row: any) => {
 	orderSuperviseReplyRef.value.openDialog(row);
 };
+// 获取基础数据
+const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const orderStatusOptions = ref<EmptyArrayType>([]); // 工单状态
+const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
+const getBaseData = async () => {
+	try {
+		const { result } = await orderBaseData();
+		channelOptions.value = result.channelOptions ?? [];
+		orderStatusOptions.value = result.orderStatusOptions ?? [];
+		acceptTypeOptions.value = result.acceptTypeOptions ?? [];
+	} catch (e) {
+		console.log(e);
+	}
+};
 const toolbarRef = ref<RefType>();
 const tableRef = ref<RefType>();
 onMounted(() => {
@@ -166,5 +311,6 @@ onMounted(() => {
 	if (tableRef.value && toolbarRef.value) {
 		tableRef.value.connect(toolbarRef.value);
 	}
+	getBaseData();
 });
 </script>

+ 180 - 8
src/views/business/urge/index.vue

@@ -2,14 +2,15 @@
 	<div class="business-urge-container layout-padding">
 		<div class="layout-padding-auto layout-padding-view pd20">
 			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline :disabled="state.loading">
-				<el-form-item label="关键词" prop="Keyword">
-					<el-input v-model.trim="state.queryParams.Keyword" placeholder="工单编码/标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				<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 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>
 					<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-button @click="drawer = true" class="default-button"> <SvgIcon name="ele-Search" class="mr5" />更多查询</el-button>
 				</el-form-item>
 			</el-form>
 			<vxe-toolbar
@@ -105,6 +106,115 @@
 		</div>
 		<!-- 催办详情 -->
 		<order-urge-detail ref="orderUrgeDetailRef" @updateList="refreshList" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="是否省工单" prop="IsProvince">
+					<el-select v-model="state.queryParams.IsProvince" placeholder="请选择是否省工单" @change="handleQuery">
+						<el-option label="是" value="true" />
+						<el-option label="否" value="false" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Channel" label="来源渠道">
+					<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="CurrentStepCode" label="当前节点">
+					<el-select v-model="state.queryParams.CurrentStepCode" placeholder="请选择工单状态" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in currentStepOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="期满时间" prop="qmTime">
+					<el-date-picker
+						v-model="state.queryParams.qmTime"
+						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="slTime">
+					<el-date-picker
+						v-model="state.queryParams.slTime"
+						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 prop="Status" label="工单状态">
+					<el-select v-model="state.queryParams.Status" placeholder="请选择工单状态" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in orderStatusOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="接办部门" prop="CurrentHandleOrgName">
+					<el-input v-model.trim="state.queryParams.CurrentHandleOrgName" placeholder="接办部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="接办时间" prop="jbTime">
+					<el-date-picker
+						v-model="state.queryParams.jbTime"
+						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="Hotspot">
+					<el-input v-model.trim="state.queryParams.Hotspot" placeholder="热点分类" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item prop="AcceptTypeCode" label="受理类型">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="催办人" prop="CrUser">
+					<el-input v-model.trim="state.queryParams.CrUser" placeholder="催办人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="催办部门" prop="CreatorOrgName">
+					<el-input v-model.trim="state.queryParams.CreatorOrgName" placeholder="催办部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="催办时间" prop="cbTime">
+					<el-date-picker
+						v-model="state.queryParams.cbTime"
+						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="OrgName">
+					<el-input v-model.trim="state.queryParams.OrgName" placeholder="被催办部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="催办内容" prop="ApplyContent">
+					<el-input v-model.trim="state.queryParams.ApplyContent" placeholder="催办内容" clearable @keyup.enter="handleQuery" />
+				</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>
 	</div>
 </template>
 <script setup lang="tsx" name="businessUrge">
@@ -112,20 +222,47 @@ import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
 import { formatDate } from '@/utils/formatTime';
 import { urgeList } from '@/api/business/urge';
+import { orderBaseData } from '@/api/business/order';
+import Other from '@/utils/other';
+import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 // 引入组件
 const OrderUrgeDetail = defineAsyncComponent(() => import('@/views/business/urge/components/Order-urge-detail.vue')); // 催办详情
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
 const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
 
 // 定义变量内容
-const ruleFormRef = ref<RefType>(); // 表单ref
-const state = reactive({
+const state = reactive<any>({
 	queryParams: {
 		// 查询条件
 		PageIndex: 1,
 		PageSize: 20,
 		Keyword: null, // 关键字
 		UrgeState: null, // 回复状态
+
+		No:null, // 工单编码
+		Title:null, // 工单标题
+		IsProvince:null, // 是否省工单
+		Channel:null, // 来源渠道
+		qmTime:[], // 期满时间
+		ExpiredTimeStart:null,
+		ExpiredTimeEnd:null,
+		slTime:[], // 受理时间
+		CreationTimeStart:null,
+		CreationTimeEnd:null,
+		Status:null, // 工单状态
+		CurrentHandleOrgName:null, // 接办部门
+		jbTime:[], // 接办时间
+		CurrentHandleTimeStart:null,
+		CurrentHandleTimeEnd:null,
+		Hotspot:null, // 热点分类
+		AcceptTypeCode:null, // 受理类型
+		CrUser:null, // 催办人
+		CreatorOrgName:null, // 催办部门
+		cbTime:[], // 催办时间
+		CrTimeStart:null, //
+		CrTimeEnd:null,
+		OrgName:null, // 被催办部门
+		ApplyContent:null, // 催办内容
 	},
 	tableData: [], //表单
 	loading: false, // 加载
@@ -141,9 +278,23 @@ const refreshList = () => {
   queryList();
 };
 /** 获取列表 */
+const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.loading = true;
-	urgeList(state.queryParams)
+	requestParams.value = Other.deepClone(state.queryParams);
+	requestParams.value.ExpiredTimeStart  = state.queryParams.qmTime === null ? null : state.queryParams.qmTime[0]; // 期满时间
+	requestParams.value.ExpiredTimeEnd = state.queryParams.qmTime === null ? null : state.queryParams.qmTime[1];
+	Reflect.deleteProperty(requestParams.value, 'qmTime'); // 删除无用的参数
+	requestParams.value.CreationTimeStart  = state.queryParams.slTime === null ? null : state.queryParams.slTime[0]; // 受理时间
+	requestParams.value.CreationTimeEnd = state.queryParams.slTime === null ? null : state.queryParams.slTime[1];
+	Reflect.deleteProperty(requestParams.value, 'slTime'); // 删除无用的参数
+	requestParams.value.CurrentHandleTimeStart  = state.queryParams.jbTime === null ? null : state.queryParams.jbTime[0]; //接办时间
+	requestParams.value.CurrentHandleTimeEnd = state.queryParams.jbTime === null ? null : state.queryParams.jbTime[1];
+	Reflect.deleteProperty(requestParams.value, 'jbTime'); // 删除无用的参数
+	requestParams.value.CrTimeStart  = state.queryParams.cbTime === null ? null : state.queryParams.cbTime[0]; // 催办时间
+	requestParams.value.CrTimeEnd = state.queryParams.cbTime === null ? null : state.queryParams.cbTime[1];
+	Reflect.deleteProperty(requestParams.value, 'cbTime'); // 删除无用的参数
+	urgeList(requestParams.value)
 		.then((res: any) => {
 			state.tableData = res.result?.items ?? [];
 			state.total = res.result?.total ?? 0;
@@ -155,9 +306,13 @@ const 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();
 	queryList();
 };
 // 查看催办详情
@@ -165,6 +320,22 @@ const orderUrgeDetailRef = ref<RefType>(); // 催办详情
 const onDetail = (row: any) => {
 	orderUrgeDetailRef.value.openDialog(row);
 };
+// 获取基础数据
+const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const orderStatusOptions = ref<EmptyArrayType>([]); // 工单状态
+const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
+const currentStepOptions = ref<EmptyArrayType>([]); // 当前节点
+const getBaseData = async ()=>{
+	try {
+		const { result } = await orderBaseData();
+		channelOptions.value = result.channelOptions ?? [];
+		orderStatusOptions.value = result.orderStatusOptions ?? [];
+		acceptTypeOptions.value = result.acceptTypeOptions ?? [];
+		currentStepOptions.value = result.currentStepOptions ?? [];
+	} catch (e) {
+		console.log(e);
+	}
+}
 const toolbarRef = ref<RefType>();
 const tableRef = ref<RefType>();
 onMounted(() => {
@@ -172,5 +343,6 @@ onMounted(() => {
 	if (tableRef.value && toolbarRef.value) {
 		tableRef.value.connect(toolbarRef.value);
 	}
+	getBaseData();
 });
 </script>

+ 177 - 12
src/views/business/urge/todo.vue

@@ -2,14 +2,15 @@
 	<div class="business-urge-todo-container layout-padding">
 		<div class="layout-padding-auto layout-padding-view pd20">
 			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline :disabled="state.loading">
-				<el-form-item label="工单标题" prop="Keyword">
-					<el-input v-model.trim="state.queryParams.Keyword" placeholder="工单编码/标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				<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 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>
 					<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
-					<el-button @click="resetQuery(ruleFormRef)" class="default-button" :loading="state.loading">
-						<SvgIcon name="ele-Refresh" 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>
 			<vxe-toolbar
@@ -60,7 +61,9 @@
 					</vxe-column>
 					<vxe-column field="order.statusText" title="工单状态" width="120">
 						<template #default="{ 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>
+							<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>
 					</vxe-column>
@@ -103,27 +106,156 @@
 		</div>
 		<!-- 催办详情 -->
 		<order-urge-detail ref="orderUrgeDetailRef" @updateList="refreshList" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="是否省工单" prop="IsProvince">
+					<el-select v-model="state.queryParams.IsProvince" placeholder="请选择是否省工单" @change="handleQuery">
+						<el-option label="是" value="true" />
+						<el-option label="否" value="false" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Channel" label="来源渠道">
+					<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="期满时间" prop="qmTime">
+					<el-date-picker
+						v-model="state.queryParams.qmTime"
+						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="slTime">
+					<el-date-picker
+						v-model="state.queryParams.slTime"
+						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 prop="Status" label="工单状态">
+					<el-select v-model="state.queryParams.Status" placeholder="请选择工单状态" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in orderStatusOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="接办部门" prop="CurrentHandleOrgName">
+					<el-input v-model.trim="state.queryParams.CurrentHandleOrgName" placeholder="接办部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="接办时间" prop="jbTime">
+					<el-date-picker
+						v-model="state.queryParams.jbTime"
+						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="Hotspot">
+					<el-input v-model.trim="state.queryParams.Hotspot" placeholder="热点分类" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item prop="AcceptTypeCode" label="受理类型">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="催办人" prop="CrUser">
+					<el-input v-model.trim="state.queryParams.CrUser" placeholder="催办人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="催办部门" prop="CreatorOrgName">
+					<el-input v-model.trim="state.queryParams.CreatorOrgName" placeholder="催办部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="催办时间" prop="cbTime">
+					<el-date-picker
+						v-model="state.queryParams.cbTime"
+						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="OrgName">
+					<el-input v-model.trim="state.queryParams.OrgName" placeholder="被催办部门" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="催办内容" prop="ApplyContent">
+					<el-input v-model.trim="state.queryParams.ApplyContent" placeholder="催办内容" clearable @keyup.enter="handleQuery" />
+				</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>
 	</div>
 </template>
 <script setup lang="tsx" name="businessUrgeTodo">
 import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
 import { formatDate } from '@/utils/formatTime';
-import {urgeList, urgeToDo} from '@/api/business/urge';
+import { urgeList, urgeToDo } from '@/api/business/urge';
+import { orderBaseData } from '@/api/business/order';
+import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
+import Other from '@/utils/other';
 // 引入组件
 const OrderUrgeDetail = defineAsyncComponent(() => import('@/views/business/urge/components/Order-urge-detail.vue')); // 催办详情
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
 const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
 
 // 定义变量内容
-const ruleFormRef = ref<RefType>(); // 表单ref
-const state = reactive({
+const state = reactive<any>({
 	queryParams: {
 		// 查询条件
 		PageIndex: 1,
 		PageSize: 20,
-		Keyword: null, // 关键字
 		UrgeState: '0', // 回复状态
+		No:null, // 工单编码
+		Title:null, // 工单标题
+		IsProvince:null, // 是否省工单
+		Channel:null, // 来源渠道
+		qmTime:[], // 期满时间
+		ExpiredTimeStart:null,
+		ExpiredTimeEnd:null,
+		slTime:[], // 受理时间
+		CreationTimeStart:null,
+		CreationTimeEnd:null,
+		Status:null, // 工单状态
+		CurrentHandleOrgName:null, // 接办部门
+		jbTime:[], // 接办时间
+		CurrentHandleTimeStart:null,
+		CurrentHandleTimeEnd:null,
+		Hotspot:null, // 热点分类
+		AcceptTypeCode:null, // 受理类型
+		CrUser:null, // 催办人
+		CreatorOrgName:null, // 催办部门
+		cbTime:[], // 催办时间
+		CrTimeStart:null, //
+		CrTimeEnd:null,
+		OrgName:null, // 被催办部门
+		ApplyContent:null, // 催办内容
 	},
 	tableData: [], //表单
 	loading: false, // 加载
@@ -136,12 +268,26 @@ const handleQuery = () => {
 };
 // 刷新列表
 const refreshList = () => {
-  queryList();
+	queryList();
 };
 /** 获取列表 */
+const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.loading = true;
-  urgeToDo(state.queryParams)
+	requestParams.value = Other.deepClone(state.queryParams);
+	requestParams.value.ExpiredTimeStart  = state.queryParams.qmTime === null ? null : state.queryParams.qmTime[0]; // 期满时间
+	requestParams.value.ExpiredTimeEnd = state.queryParams.qmTime === null ? null : state.queryParams.qmTime[1];
+	Reflect.deleteProperty(requestParams.value, 'qmTime'); // 删除无用的参数
+	requestParams.value.CreationTimeStart  = state.queryParams.slTime === null ? null : state.queryParams.slTime[0]; // 受理时间
+	requestParams.value.CreationTimeEnd = state.queryParams.slTime === null ? null : state.queryParams.slTime[1];
+	Reflect.deleteProperty(requestParams.value, 'slTime'); // 删除无用的参数
+	requestParams.value.CurrentHandleTimeStart  = state.queryParams.jbTime === null ? null : state.queryParams.jbTime[0]; //接办时间
+	requestParams.value.CurrentHandleTimeEnd = state.queryParams.jbTime === null ? null : state.queryParams.jbTime[1];
+	Reflect.deleteProperty(requestParams.value, 'jbTime'); // 删除无用的参数
+	requestParams.value.CrTimeStart  = state.queryParams.cbTime === null ? null : state.queryParams.cbTime[0]; // 催办时间
+	requestParams.value.CrTimeEnd = state.queryParams.cbTime === null ? null : state.queryParams.cbTime[1];
+	Reflect.deleteProperty(requestParams.value, 'cbTime'); // 删除无用的参数
+	urgeToDo(requestParams.value)
 		.then((res: any) => {
 			state.tableData = res.result?.items ?? [];
 			state.total = res.result?.total ?? 0;
@@ -153,9 +299,13 @@ const 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();
 	queryList();
 };
 // 查看催办详情
@@ -163,6 +313,20 @@ const orderUrgeDetailRef = ref<RefType>(); // 催办详情
 const onDetail = (row: any) => {
 	orderUrgeDetailRef.value.openDialog(row);
 };
+// 获取基础数据
+const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const orderStatusOptions = ref<EmptyArrayType>([]); // 工单状态
+const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
+const getBaseData = async ()=>{
+	try {
+		const { result } = await orderBaseData();
+		channelOptions.value = result.channelOptions ?? [];
+		orderStatusOptions.value = result.orderStatusOptions ?? [];
+		acceptTypeOptions.value = result.acceptTypeOptions ?? [];
+	} catch (e) {
+		console.log(e);
+	}
+}
 const toolbarRef = ref<RefType>();
 const tableRef = ref<RefType>();
 onMounted(() => {
@@ -170,5 +334,6 @@ onMounted(() => {
 	if (tableRef.value && toolbarRef.value) {
 		tableRef.value.connect(toolbarRef.value);
 	}
+	getBaseData();
 });
 </script>

+ 289 - 203
src/views/quality/done/YBQualityDone.vue

@@ -1,152 +1,222 @@
 <template>
-  <div class="quality-done-container layout-padding">
-    <div class="layout-padding-auto layout-padding-view pd20">
-      <el-tabs v-model="state.queryParams.Source" @tab-change="handleQuery">
-        <el-tab-pane label="受理已质检" :name="1" :disabled="state.loading"></el-tab-pane>
-        <el-tab-pane label="派单已质检" :name="2" :disabled="state.loading"></el-tab-pane>
-        <el-tab-pane label="回访已质检" :name="3" :disabled="state.loading"></el-tab-pane>
-      </el-tabs>
-      <el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent>
-        <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="No">
-          <el-input v-model="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
-        </el-form-item>
-        <el-form-item label="分数区间" prop="value">
-          <input-number-range v-model="state.queryParams.value" />
-        </el-form-item>
-        <el-form-item label="创建时间" prop="crTime">
-          <el-date-picker
-              v-model="state.queryParams.crTime"
-              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>
-          <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">
-            <SvgIcon name="ele-Refresh" class="mr5" />重置
-          </el-button>
-        </el-form-item>
-      </el-form>
-      <vxe-toolbar
-          ref="toolbarRef"
-          :loading="state.loading"
-          custom
-          :refresh="{
+	<div class="quality-done-container layout-padding">
+		<div class="layout-padding-auto layout-padding-view pd20">
+			<el-tabs v-model="state.queryParams.Source" @tab-change="handleQuery">
+				<el-tab-pane label="受理已质检" :name="1" :disabled="state.loading"></el-tab-pane>
+				<el-tab-pane label="派单已质检" :name="2" :disabled="state.loading"></el-tab-pane>
+				<el-tab-pane label="回访已质检" :name="3" :disabled="state.loading"></el-tab-pane>
+			</el-tabs>
+			<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent>
+				<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="No">
+					<el-input v-model="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				</el-form-item>
+				<el-form-item label="分数区间" prop="value">
+					<input-number-range v-model="state.queryParams.value" />
+				</el-form-item>
+				<el-form-item label="创建时间" prop="crTime">
+					<el-date-picker
+						v-model="state.queryParams.crTime"
+						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>
+					<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>
+			<vxe-toolbar
+				ref="toolbarRef"
+				:loading="state.loading"
+				custom
+				:refresh="{
 					queryMethod: handleQuery,
 				}"
-      >
-      </vxe-toolbar>
-      <div style="overflow: hidden; width: 100%; height: 100%; flex: 1">
-        <vxe-table
-            border
-            :loading="state.loading"
-            :data="state.tableData"
-            :column-config="{ resizable: true }"
-            :row-config="{ isCurrent: true, isHover: true, height: 30, useKey: true }"
-            ref="tableRef"
-            height="auto"
-            auto-resize
-            show-overflow
-            :scrollY="{ enabled: true, gt: 100 }"
-            id="qualityDone"
-            :custom-config="{ storage: true }"
-        >
-          <vxe-column field="order.no" title="工单编码" width="140"></vxe-column>
-          <vxe-column field="order.title" title="工单标题" min-width="200">
-            <template #default="{ row }">
-              <order-detail :order="row.order" @updateList="queryList">{{ row.order?.title }}</order-detail>
-            </template>
-          </vxe-column>
-          <vxe-column field="aiQuality" title="质检方式" width="100">
-            <template #default="{ row }">
-              {{ row.aiQuality ? '智能质检' : '人工质检' }}
-            </template>
-          </vxe-column>
-          <vxe-column field="order.sourceChannel" title="来源渠道" width="110"></vxe-column>
-          <vxe-column field="order.creationTime" title="受理时间" width="160">
-            <template #default="{ row }">
-              {{ formatDate(row.order?.creationTime, 'YYYY-mm-dd HH:MM:SS') }}
-            </template>
-          </vxe-column>
-          <template v-if="state.queryParams.Source === 3">
-            <vxe-column field="visit.visitStateText" title="回访状态" width="110"></vxe-column>
-            <vxe-column field="visit.visitTypeText" title="回访方式" width="110"></vxe-column>
-            <vxe-column field="order.filedTime" title="办结时间" width="160">
-              <template #default="{ row }">
-                {{ formatDate(row.order?.filedTime, 'YYYY-mm-dd HH:MM:SS') }}
-              </template>
-            </vxe-column>
-            <vxe-column field="visit.publishTime" title="发布时间" width="160">
-              <template #default="{ row }">
-                {{ formatDate(row.visit?.publishTime, 'YYYY-mm-dd HH:MM:SS') }}
-              </template>
-            </vxe-column>
-            <vxe-column field="visit.creationTime" title="回访任务创建时间" width="160">
-              <template #default="{ row }">
-                {{ formatDate(row.visit?.creationTime, 'YYYY-mm-dd HH:MM:SS') }}
-              </template>
-            </vxe-column>
-            <vxe-column field="visit.employeeName" title="回访人" width="120"></vxe-column>
-            <vxe-column field="visit.visitTime" title="回访时间" width="160">
-              <template #default="{ row }">
-                {{ formatDate(row.visit?.visitTime, 'YYYY-mm-dd HH:MM:SS') }}
-              </template>
-            </vxe-column>
-            <vxe-column field="order.counterSignTypeText" title="是否会签" width="100"></vxe-column>
-          </template>
-          <template v-if="state.queryParams.Source === 2">
-            <vxe-column field="creationTime" title="交办时间" width="160">
-              <template #default="{ row }">
-                {{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}
-              </template>
-            </vxe-column>
-          </template>
-          <vxe-column field="order.statusText" title="工单状态" width="100">
-            <template #default="{ 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>
-          </vxe-column>
-          <vxe-column field="order.acceptType" title="受理类型" width="100"></vxe-column>
-          <vxe-column field="order.hotspotName" title="热点分类" width="150"></vxe-column>
-          <vxe-column field="order.acceptorName" title="受理人" width="120"></vxe-column>
-          <vxe-column field="order.fromPhone" title="来电电话" width="140"></vxe-column>
-          <vxe-column field="userName" title="质检人" width="120"></vxe-column>
-          <vxe-column field="qualityTime" title="质检时间" width="160">
-            <template #default="{ row }">
-              {{ formatDate(row.qualityTime, 'YYYY-mm-dd HH:MM:SS') }}
-            </template>
-          </vxe-column>
-          <vxe-column field="grade" title="质检得分" width="100"></vxe-column>
-          <vxe-column title="操作" fixed="right" width="120" align="center" :show-overflow="false">
-            <template #default="{ row }">
-              <el-button link type="primary" @click="onQualityView(row)" v-auth="'quality:done:view'" title="查看质检详情"> 查看 </el-button>
-              <el-button link type="primary" @click="onQualityEdit(row)" v-auth="'quality:done:edit'" title="编辑质检"> 编辑 </el-button>
-            </template>
-          </vxe-column>
-        </vxe-table>
-      </div>
-      <pagination
-          @pagination="queryList"
-          :total="state.total"
-          v-model:current-page="state.queryParams.PageIndex"
-          v-model:page-size="state.queryParams.PageSize"
-          :disabled="state.loading"
-      />
-    </div>
-    <!-- 质检 -->
-    <quality-inspection ref="qualityInspectionRef" @updateList="queryList" />
-  </div>
+			>
+			</vxe-toolbar>
+			<div style="overflow: hidden; width: 100%; height: 100%; flex: 1">
+				<vxe-table
+					border
+					:loading="state.loading"
+					:data="state.tableData"
+					:column-config="{ resizable: true }"
+					:row-config="{ isCurrent: true, isHover: true, height: 30, useKey: true }"
+					ref="tableRef"
+					height="auto"
+					auto-resize
+					show-overflow
+					:scrollY="{ enabled: true, gt: 100 }"
+					id="qualityDone"
+					:custom-config="{ storage: true }"
+				>
+					<vxe-column field="order.no" title="工单编码" width="140"></vxe-column>
+					<vxe-column field="order.title" title="工单标题" min-width="200">
+						<template #default="{ row }">
+							<order-detail :order="row.order" @updateList="queryList">{{ row.order?.title }}</order-detail>
+						</template>
+					</vxe-column>
+					<vxe-column field="aiQuality" title="质检方式" width="100">
+						<template #default="{ row }">
+							{{ row.aiQuality ? '智能质检' : '人工质检' }}
+						</template>
+					</vxe-column>
+					<vxe-column field="order.sourceChannel" title="来源渠道" width="110"></vxe-column>
+					<vxe-column field="order.creationTime" title="受理时间" width="160">
+						<template #default="{ row }">
+							{{ formatDate(row.order?.creationTime, 'YYYY-mm-dd HH:MM:SS') }}
+						</template>
+					</vxe-column>
+					<template v-if="state.queryParams.Source === 3">
+						<vxe-column field="visit.visitStateText" title="回访状态" width="110"></vxe-column>
+						<vxe-column field="visit.visitTypeText" title="回访方式" width="110"></vxe-column>
+						<vxe-column field="order.filedTime" title="办结时间" width="160">
+							<template #default="{ row }">
+								{{ formatDate(row.order?.filedTime, 'YYYY-mm-dd HH:MM:SS') }}
+							</template>
+						</vxe-column>
+						<vxe-column field="visit.publishTime" title="发布时间" width="160">
+							<template #default="{ row }">
+								{{ formatDate(row.visit?.publishTime, 'YYYY-mm-dd HH:MM:SS') }}
+							</template>
+						</vxe-column>
+						<vxe-column field="visit.creationTime" title="回访任务创建时间" width="160">
+							<template #default="{ row }">
+								{{ formatDate(row.visit?.creationTime, 'YYYY-mm-dd HH:MM:SS') }}
+							</template>
+						</vxe-column>
+						<vxe-column field="visit.employeeName" title="回访人" width="120"></vxe-column>
+						<vxe-column field="visit.visitTime" title="回访时间" width="160">
+							<template #default="{ row }">
+								{{ formatDate(row.visit?.visitTime, 'YYYY-mm-dd HH:MM:SS') }}
+							</template>
+						</vxe-column>
+						<vxe-column field="order.counterSignTypeText" title="是否会签" width="100"></vxe-column>
+					</template>
+					<template v-if="state.queryParams.Source === 2">
+						<vxe-column field="creationTime" title="交办时间" width="160">
+							<template #default="{ row }">
+								{{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}
+							</template>
+						</vxe-column>
+					</template>
+					<vxe-column field="order.statusText" title="工单状态" width="100">
+						<template #default="{ 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>
+					</vxe-column>
+					<vxe-column field="order.acceptType" title="受理类型" width="100"></vxe-column>
+					<vxe-column field="order.hotspotName" title="热点分类" width="150"></vxe-column>
+					<vxe-column field="order.acceptorName" title="受理人" width="120"></vxe-column>
+					<vxe-column field="order.fromPhone" title="来电号码" width="140"></vxe-column>
+					<vxe-column field="userName" title="质检人" width="120"></vxe-column>
+					<vxe-column field="qualityTime" title="质检时间" width="160">
+						<template #default="{ row }">
+							{{ formatDate(row.qualityTime, 'YYYY-mm-dd HH:MM:SS') }}
+						</template>
+					</vxe-column>
+					<vxe-column field="grade" title="质检得分" width="100"></vxe-column>
+					<vxe-column title="操作" fixed="right" width="120" align="center" :show-overflow="false">
+						<template #default="{ row }">
+							<el-button link type="primary" @click="onQualityView(row)" v-auth="'quality:done:view'" title="查看质检详情"> 查看 </el-button>
+							<el-button link type="primary" @click="onQualityEdit(row)" v-auth="'quality:done:edit'" title="编辑质检"> 编辑 </el-button>
+						</template>
+					</vxe-column>
+				</vxe-table>
+			</div>
+			<pagination
+				@pagination="queryList"
+				:total="state.total"
+				v-model:current-page="state.queryParams.PageIndex"
+				v-model:page-size="state.queryParams.PageSize"
+				:disabled="state.loading"
+			/>
+		</div>
+		<!-- 质检 -->
+		<quality-inspection ref="qualityInspectionRef" @updateList="queryList" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="受理时间" prop="crTime">
+					<el-date-picker
+						v-model="state.queryParams.crTime"
+						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="AiQuality">
+					<el-select v-model="state.queryParams.AiQuality" placeholder="请选择质检方式" @change="handleQuery" clearable>
+						<el-option label="智能质检" :value="true" />
+						<el-option label="人工质检" :value="false" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Channel" label="来源渠道">
+					<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Status" label="工单状态">
+					<el-select v-model="state.queryParams.Status" placeholder="请选择工单状态" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in orderStatusOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="AcceptTypeCode" label="受理类型">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="热点分类" prop="Hotspot">
+					<el-input v-model.trim="state.queryParams.Hotspot" placeholder="热点分类" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="受理人" prop="NameOrNo">
+					<el-input v-model.trim="state.queryParams.NameOrNo" placeholder="受理人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="来电号码" prop="FromPhone">
+					<el-input v-model.trim="state.queryParams.FromPhone" placeholder="来电号码" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="质检人" prop="UserName">
+					<el-input v-model.trim="state.queryParams.UserName" placeholder="质检人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="质检时间" prop="zjTime">
+					<el-date-picker
+						v-model="state.queryParams.zjTime"
+						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>
+	</div>
 </template>
 
 <script lang="tsx" setup name="qualityDone">
@@ -156,6 +226,7 @@ import { formatDate } from '@/utils/formatTime';
 import { qualityBaseData, qualityList } from '@/api/quality';
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 import Other from '@/utils/other';
+import { orderBaseData } from '@/api/business/order';
 
 // 引入组件
 const QualityInspection = defineAsyncComponent(() => import('@/views/quality/done/components/Quality-inspection.vue')); // 质检
@@ -165,86 +236,101 @@ const pagination = defineAsyncComponent(() => import('@/components/ProTable/comp
 
 // 定义变量内容
 const state = reactive<any>({
-  loading: false, // 加载状态
-  queryParams: {
-    // 查询参数
-    PageIndex: 1,
-    PageSize: 20,
-    Source: 1,
-    CreationTimeStart: null, // 创建时间 开始
-    CreationTimeEnd: null, // 创建时间 结束
-    crTime: [], // 办理期限
-    State: 1, // 待质检
-    Keyword: null,
-    value: [0, 100],
-    No:null,
-  },
-  total: 0, // 总条数
-  tableData: [], // 表格数据
+	loading: false, // 加载状态
+	queryParams: {
+		// 查询参数
+		PageIndex: 1,
+		PageSize: 20,
+		Source: 1,
+		CreationTimeStart: null, // 创建时间 开始
+		CreationTimeEnd: null, // 创建时间 结束
+		crTime: [], // 办理期限
+		State: 1, // 待质检
+		Keyword: null,
+		value: [0, 100],
+		No: null,
+		AiQuality: null, // 质检方式
+		Channel: null, // 来源渠道
+		Status: null, // 工单状态
+		AcceptTypeCode: null, // 受理类型
+		Hotspot: null, // 热点分类
+		NameOrNo: null, // 受理人
+		zjTime: [], // 质检时间
+		QualityTimeStar: null, // 质检时间 开始
+		QualityTimeEnd: null, // 质检时间 结束
+	},
+	total: 0, // 总条数
+	tableData: [], // 表格数据
 });
-const ruleFormRef = ref<RefType>(null); // 表单ref
 const qualitySourceOptions = ref<EmptyArrayType>([]); // 违禁词分类
-const qualityStateOptions = ref<EmptyArrayType>([]); // 违禁词属性
+const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const orderStatusOptions = ref<EmptyArrayType>([]); // 工单状态
+const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
 const getBaseData = async () => {
-  try {
-    const res = await qualityBaseData();
-    qualitySourceOptions.value = res.result?.qualitySource ?? [];
-    qualityStateOptions.value = res.result?.qualityState ?? [];
-  } catch (error) {
-    console.log(error);
-  }
+	try {
+		const res = await qualityBaseData();
+		qualitySourceOptions.value = res.result?.qualitySource ?? [];
+		const { result } = await orderBaseData();
+		channelOptions.value = result.channelOptions ?? [];
+		orderStatusOptions.value = result.orderStatusOptions ?? [];
+		acceptTypeOptions.value = result.acceptTypeOptions ?? [];
+	} catch (error) {
+		console.log(error);
+	}
 };
 // 手动查询,将页码设置为1
 const handleQuery = () => {
-  state.queryParams.PageIndex = 1;
-  queryList();
+	state.queryParams.PageIndex = 1;
+	queryList();
 };
 // 查询已质检列表
 const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
-  state.loading = true;
-  requestParams.value = Other.deepClone(state.queryParams);
-  requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 创建时间
-  requestParams.value.CreationTimeEnd = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
-  Reflect.deleteProperty(requestParams.value, 'crTime'); // 删除无用的参数
-  requestParams.value.MinGrade = state.queryParams.value === null ? null : state.queryParams.value[0]; // 分数区间
-  requestParams.value.MaxGrade = state.queryParams.value === null ? null : state.queryParams.value[1];
-  Reflect.deleteProperty(requestParams.value, 'value'); // 删除无用的参数
-  qualityList(requestParams.value)
-      .then((res) => {
-        state.loading = false;
-        state.tableData = res.result.items ?? [];
-        state.total = res.result.total ?? 0;
-      })
-      .finally(() => {
-        state.loading = false;
-      });
+	state.loading = true;
+	requestParams.value = Other.deepClone(state.queryParams);
+	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 创建时间
+	requestParams.value.CreationTimeEnd = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
+	Reflect.deleteProperty(requestParams.value, 'crTime'); // 删除无用的参数
+	requestParams.value.MinGrade = state.queryParams.value === null ? null : state.queryParams.value[0]; // 分数区间
+	requestParams.value.MaxGrade = state.queryParams.value === null ? null : state.queryParams.value[1];
+	Reflect.deleteProperty(requestParams.value, 'value'); // 删除无用的参数
+	qualityList(requestParams.value)
+		.then((res) => {
+			state.loading = false;
+			state.tableData = res.result.items ?? [];
+			state.total = res.result.total ?? 0;
+		})
+		.finally(() => {
+			state.loading = false;
+		});
 };
 // 重置表单
+const drawerRuleFormRef = ref();
+const ruleFormRef = ref<RefType>(); // 表单ref
+const drawer = ref(false);
 const resetQuery = (formEl: FormInstance | undefined) => {
-  if (!formEl) return;
-  formEl.resetFields();
-  state.queryParams.CreationTimeStart = null;
-  state.queryParams.CreationTimeEnd = null;
-  queryList();
+	if (!formEl) return;
+	formEl.resetFields();
+	ruleFormRef.value?.resetFields();
+	queryList();
 };
 // 质检查看
 const qualityInspectionRef = ref<RefType>();
 const onQualityView = (row: any) => {
-  qualityInspectionRef.value.openDialog(row, state.queryParams.Source, true);
+	qualityInspectionRef.value.openDialog(row, state.queryParams.Source, true);
 };
 // 质检编辑
 const onQualityEdit = (row: any) => {
-  qualityInspectionRef.value.openDialog(row, state.queryParams.Source);
+	qualityInspectionRef.value.openDialog(row, state.queryParams.Source);
 };
 // 页面加载时
 const toolbarRef = ref<RefType>();
 const tableRef = ref<RefType>();
 onMounted(() => {
-  queryList();
-  if (tableRef.value && toolbarRef.value) {
-    tableRef.value.connect(toolbarRef.value);
-  }
-  getBaseData();
+	queryList();
+	if (tableRef.value && toolbarRef.value) {
+		tableRef.value.connect(toolbarRef.value);
+	}
+	getBaseData();
 });
-</script>
+</script>

+ 106 - 31
src/views/quality/done/ZGQualityDone.vue

@@ -6,33 +6,19 @@
 				<el-tab-pane label="派单已质检" :name="2" :disabled="state.loading"></el-tab-pane>
 				<el-tab-pane label="回访已质检" :name="3" :disabled="state.loading"></el-tab-pane>
 			</el-tabs>
-			<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent>
-        <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="No">
-          <el-input v-model="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
-        </el-form-item>
-				<el-form-item label="分数区间" prop="value">
-					<input-number-range v-model="state.queryParams.value" />
+			<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent :disabled="state.loading">
+				<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="crTime">
-					<el-date-picker
-						v-model="state.queryParams.crTime"
-						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 label="工单编码" prop="No">
+					<el-input v-model="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				</el-form-item>
+				<el-form-item label="质检得分" prop="value">
+					<input-number-range v-model="state.queryParams.value" />
 				</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"> <SvgIcon name="ele-Refresh" 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>
 			<vxe-toolbar
@@ -128,7 +114,7 @@
 					<vxe-column field="order.acceptType" title="受理类型" width="100"></vxe-column>
 					<vxe-column field="order.hotspotName" title="热点分类" width="150"></vxe-column>
 					<vxe-column field="order.acceptorName" title="受理人" width="120"></vxe-column>
-					<vxe-column field="order.fromPhone" title="来电电话" width="140"></vxe-column>
+					<vxe-column field="order.fromPhone" title="来电号码" width="140"></vxe-column>
 					<vxe-column field="userName" title="质检人" width="120"></vxe-column>
 					<vxe-column field="qualityTime" title="质检时间" width="160">
 						<template #default="{ row }">
@@ -154,6 +140,76 @@
 		</div>
 		<!-- 质检 -->
 		<z-g-quality ref="ZGQualityRef" @updateList="queryList" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="受理时间" prop="crTime">
+					<el-date-picker
+						v-model="state.queryParams.crTime"
+						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="AiQuality">
+					<el-select v-model="state.queryParams.AiQuality" placeholder="请选择质检方式" @change="handleQuery" clearable>
+						<el-option label="智能质检" :value="true" />
+						<el-option label="人工质检" :value="false" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Channel" label="来源渠道">
+					<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Status" label="工单状态">
+					<el-select v-model="state.queryParams.Status" placeholder="请选择工单状态" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in orderStatusOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="AcceptTypeCode" label="受理类型">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="热点分类" prop="Hotspot">
+					<el-input v-model.trim="state.queryParams.Hotspot" placeholder="热点分类" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="受理人" prop="NameOrNo">
+					<el-input v-model.trim="state.queryParams.NameOrNo" placeholder="受理人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="来电号码" prop="FromPhone">
+					<el-input v-model.trim="state.queryParams.FromPhone" placeholder="来电号码" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="质检人" prop="UserName">
+					<el-input v-model.trim="state.queryParams.UserName" placeholder="质检人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="质检时间" prop="zjTime">
+					<el-date-picker
+						v-model="state.queryParams.zjTime"
+						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>
 	</div>
 </template>
 
@@ -165,6 +221,7 @@ import { qualityBaseData, qualityList } from '@/api/quality';
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 import Other from '@/utils/other';
 import { exportQuality } from '@/utils/tools';
+import { orderBaseData } from '@/api/business/order';
 
 // 引入组件
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
@@ -186,19 +243,32 @@ const state = reactive<any>({
 		State: 1, // 待质检
 		Keyword: null,
 		value: [0, 100],
-    No:null,
+		No: null,
+		AiQuality: null, // 质检方式
+		Channel: null, // 来源渠道
+		Status: null, // 工单状态
+		AcceptTypeCode: null, // 受理类型
+		Hotspot: null, // 热点分类
+		NameOrNo: null, // 受理人
+		zjTime: [], // 质检时间
+		QualityTimeStar: null, // 质检时间 开始
+		QualityTimeEnd: null, // 质检时间 结束
 	},
 	total: 0, // 总条数
 	tableData: [], // 表格数据
 });
-const ruleFormRef = ref<RefType>(null); // 表单ref
 const qualitySourceOptions = ref<EmptyArrayType>([]); // 违禁词分类
-const qualityStateOptions = ref<EmptyArrayType>([]); // 违禁词属性
+const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const orderStatusOptions = ref<EmptyArrayType>([]); // 工单状态
+const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
 const getBaseData = async () => {
 	try {
 		const res = await qualityBaseData();
 		qualitySourceOptions.value = res.result?.qualitySource ?? [];
-		qualityStateOptions.value = res.result?.qualityState ?? [];
+		const { result } = await orderBaseData();
+		channelOptions.value = result.channelOptions ?? [];
+		orderStatusOptions.value = result.orderStatusOptions ?? [];
+		acceptTypeOptions.value = result.acceptTypeOptions ?? [];
 	} catch (error) {
 		console.log(error);
 	}
@@ -213,12 +283,15 @@ const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.loading = true;
 	requestParams.value = Other.deepClone(state.queryParams);
-	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 创建时间
+	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 受理时间
 	requestParams.value.CreationTimeEnd = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
 	Reflect.deleteProperty(requestParams.value, 'crTime'); // 删除无用的参数
 	requestParams.value.MinGrade = state.queryParams.value === null ? null : state.queryParams.value[0]; // 分数区间
 	requestParams.value.MaxGrade = state.queryParams.value === null ? null : state.queryParams.value[1];
 	Reflect.deleteProperty(requestParams.value, 'value'); // 删除无用的参数
+	requestParams.value.QualityTimeStar = state.queryParams.zjTime === null ? null : state.queryParams.zjTime[0]; // 质检时间
+	requestParams.value.QualityTimeEnd = state.queryParams.zjTime === null ? null : state.queryParams.zjTime[1];
+	Reflect.deleteProperty(requestParams.value, 'zjTime'); // 删除无用的参数
 	qualityList(requestParams.value)
 		.then((res) => {
 			state.loading = false;
@@ -234,11 +307,13 @@ const queryList = () => {
 		});
 };
 // 重置表单
+const drawerRuleFormRef = ref();
+const ruleFormRef = ref<RefType>(); // 表单ref
+const drawer = ref(false);
 const resetQuery = (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
 	formEl.resetFields();
-	state.queryParams.CreationTimeStart = null;
-	state.queryParams.CreationTimeEnd = null;
+	ruleFormRef.value?.resetFields();
 	queryList();
 };
 // 质检查看

+ 63 - 11
src/views/quality/index/YBQuality.vue

@@ -10,14 +10,14 @@
             :disabled="state.loading"
         ></el-tab-pane>
       </el-tabs>
-      <el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent>
+      <el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent  :disabled="state.loading">
         <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="No">
           <el-input v-model="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
         </el-form-item>
-        <el-form-item label="创建时间" prop="crTime">
+        <el-form-item label="受理时间" prop="crTime">
           <el-date-picker
               v-model="state.queryParams.crTime"
               type="datetimerange"
@@ -33,7 +33,7 @@
         </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"> <SvgIcon name="ele-Refresh" 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>
       <vxe-toolbar
@@ -119,7 +119,7 @@
           <vxe-column field="order.acceptType" title="受理类型" width="100"></vxe-column>
           <vxe-column field="order.hotspotName" title="热点分类" width="150"></vxe-column>
           <vxe-column field="order.acceptorName" title="受理人" width="120"></vxe-column>
-          <vxe-column field="order.fromPhone" title="来电电话" width="140"></vxe-column>
+          <vxe-column field="order.fromPhone" title="来电号码" width="140"></vxe-column>
           <vxe-column title="操作" fixed="right" width="90" align="center">
             <template #default="{ row }">
               <el-button link type="primary" @click="onQualityInspection(row)" v-auth="'quality:inspection'" title="质检"> 质检 </el-button>
@@ -137,6 +137,45 @@
     </div>
     <!-- 质检 -->
     <quality-inspection ref="qualityInspectionRef" @updateList="queryList" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="质检方式" prop="AiQuality">
+					<el-select v-model="state.queryParams.AiQuality" placeholder="请选择质检方式" @change="handleQuery" clearable>
+						<el-option label="智能质检" :value="true" />
+						<el-option label="人工质检" :value="false" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Channel" label="来源渠道">
+					<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Status" label="工单状态">
+					<el-select v-model="state.queryParams.Status" placeholder="请选择工单状态" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in orderStatusOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="AcceptTypeCode" label="受理类型">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="热点分类" prop="Hotspot">
+					<el-input v-model.trim="state.queryParams.Hotspot" placeholder="热点分类" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="受理人" prop="NameOrNo">
+					<el-input v-model.trim="state.queryParams.NameOrNo" placeholder="受理人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="来电号码" prop="FromPhone">
+					<el-input v-model.trim="state.queryParams.FromPhone" placeholder="来电号码" clearable @keyup.enter="handleQuery" />
+				</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>
   </div>
 </template>
 
@@ -147,6 +186,7 @@ import { formatDate } from '@/utils/formatTime';
 import { qualityBaseData, qualityList } from '@/api/quality';
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 import Other from '@/utils/other';
+import { orderBaseData } from '@/api/business/order';
 
 // 引入组件
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
@@ -166,19 +206,29 @@ const state = reactive<any>({
     CreationTimeEnd: null, // 创建时间 结束
     State: 0, // 待质检
     Keyword: null,
-    No:null
+    No:null,
+		AiQuality:null, // 质检方式
+		Channel: null, // 来源渠道
+		Status: null, // 工单状态
+		AcceptTypeCode: null, // 受理类型
+		Hotspot: null, // 热点分类
+		NameOrNo: null, // 受理人
   },
   total: 0, // 总条数
   tableData: [], // 表格数据
 });
-const ruleFormRef = ref<RefType>(null); // 表单ref
-const qualitySourceOptions = ref<EmptyArrayType>([]); // 违禁词分类
-const qualityStateOptions = ref<EmptyArrayType>([]); // 违禁词属性
+const qualitySourceOptions = ref<EmptyArrayType>([]); // 质检分类
+const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const orderStatusOptions = ref<EmptyArrayType>([]); // 工单状态
+const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
 const getBaseData = async () => {
   try {
     const res = await qualityBaseData();
     qualitySourceOptions.value = res.result?.qualitySource ?? [];
-    qualityStateOptions.value = res.result?.qualityState ?? [];
+		const { result } = await orderBaseData();
+		channelOptions.value = result.channelOptions ?? [];
+		orderStatusOptions.value = result.orderStatusOptions ?? [];
+		acceptTypeOptions.value = result.acceptTypeOptions ?? [];
   } catch (error) {
     console.log(error);
   }
@@ -207,11 +257,13 @@ const queryList = () => {
       });
 };
 // 重置表单
+const drawerRuleFormRef = ref();
+const ruleFormRef = ref<RefType>(); // 表单ref
+const drawer = ref(false);
 const resetQuery = (formEl: FormInstance | undefined) => {
   if (!formEl) return;
   formEl.resetFields();
-  state.queryParams.CreationTimeStart = null;
-  state.queryParams.CreationTimeEnd = null;
+	ruleFormRef.value?.resetFields();
   queryList();
 };
 // 质检

+ 69 - 17
src/views/quality/index/ZGQuality.vue

@@ -10,14 +10,14 @@
 					:disabled="state.loading"
 				></el-tab-pane>
 			</el-tabs>
-			<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent>
-        <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="No">
-          <el-input v-model="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
-        </el-form-item>
-				<el-form-item label="创建时间" prop="crTime">
+			<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent :disabled="state.loading">
+				<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="No">
+					<el-input v-model="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				</el-form-item>
+				<el-form-item label="受理时间" prop="crTime">
 					<el-date-picker
 						v-model="state.queryParams.crTime"
 						type="datetimerange"
@@ -33,7 +33,7 @@
 				</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"> <SvgIcon name="ele-Refresh" 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>
 			<vxe-toolbar
@@ -147,7 +147,7 @@
 					<vxe-column field="order.acceptType" title="受理类型" width="100"></vxe-column>
 					<vxe-column field="order.hotspotName" title="热点分类" width="150"></vxe-column>
 					<vxe-column field="order.acceptorName" title="受理人" width="120"></vxe-column>
-					<vxe-column field="order.fromPhone" title="来电电话" width="140"></vxe-column>
+					<vxe-column field="order.fromPhone" title="来电号码" width="140"></vxe-column>
 					<vxe-column title="操作" fixed="right" width="90" align="center">
 						<template #default="{ row }">
 							<el-button link type="primary" @click="onQualityInspection(row)" v-auth="'quality:inspection'" title="质检"> 质检 </el-button>
@@ -165,6 +165,45 @@
 		</div>
 		<!-- 质检 -->
 		<z-g-quality ref="qualityInspectionRef" @updateList="queryList" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="质检方式" prop="AiQuality">
+					<el-select v-model="state.queryParams.AiQuality" placeholder="请选择质检方式" @change="handleQuery" clearable>
+						<el-option label="智能质检" :value="true" />
+						<el-option label="人工质检" :value="false" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Channel" label="来源渠道">
+					<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Status" label="工单状态">
+					<el-select v-model="state.queryParams.Status" placeholder="请选择工单状态" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in orderStatusOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="AcceptTypeCode" label="受理类型">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="热点分类" prop="Hotspot">
+					<el-input v-model.trim="state.queryParams.Hotspot" placeholder="热点分类" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="受理人" prop="NameOrNo">
+					<el-input v-model.trim="state.queryParams.NameOrNo" placeholder="受理人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="来电号码" prop="FromPhone">
+					<el-input v-model.trim="state.queryParams.FromPhone" placeholder="来电号码" clearable @keyup.enter="handleQuery" />
+				</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>
 	</div>
 </template>
 
@@ -176,6 +215,7 @@ import { qualityBaseData, qualityList, qualityRecordTransfer } from '@/api/quali
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 import Other from '@/utils/other';
 import { exportQuality } from '@/utils/tools';
+import { orderBaseData } from '@/api/business/order';
 
 // 引入组件
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
@@ -195,19 +235,29 @@ const state = reactive<any>({
 		CreationTimeEnd: null, // 创建时间 结束
 		State: 0, // 待质检
 		Keyword: null,
-    No:null
+		No: null,
+		AiQuality: null, // 质检方式
+		Channel: null, // 来源渠道
+		Status: null, // 工单状态
+		AcceptTypeCode: null, // 受理类型
+		Hotspot: null, // 热点分类
+		NameOrNo: null, // 受理人
 	},
 	total: 0, // 总条数
 	tableData: [], // 表格数据
 });
-const ruleFormRef = ref<RefType>(null); // 表单ref
 const qualitySourceOptions = ref<EmptyArrayType>([]); // 违禁词分类
-const qualityStateOptions = ref<EmptyArrayType>([]); // 违禁词属性
+const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const orderStatusOptions = ref<EmptyArrayType>([]); // 工单状态
+const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
 const getBaseData = async () => {
 	try {
 		const res = await qualityBaseData();
 		qualitySourceOptions.value = res.result?.qualitySource ?? [];
-		qualityStateOptions.value = res.result?.qualityState ?? [];
+		const { result } = await orderBaseData();
+		channelOptions.value = result.channelOptions ?? [];
+		orderStatusOptions.value = result.orderStatusOptions ?? [];
+		acceptTypeOptions.value = result.acceptTypeOptions ?? [];
 	} catch (error) {
 		console.log(error);
 	}
@@ -222,7 +272,7 @@ const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.loading = true;
 	requestParams.value = Other.deepClone(state.queryParams);
-	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 创建时间
+	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 受理时间
 	requestParams.value.CreationTimeEnd = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
 	Reflect.deleteProperty(requestParams.value, 'crTime'); // 删除无用的参数
 	qualityList(requestParams.value)
@@ -240,11 +290,13 @@ const queryList = () => {
 		});
 };
 // 重置表单
+const drawerRuleFormRef = ref();
+const ruleFormRef = ref<RefType>(); // 表单ref
+const drawer = ref(false);
 const resetQuery = (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
 	formEl.resetFields();
-	state.queryParams.CreationTimeStart = null;
-	state.queryParams.CreationTimeEnd = null;
+	ruleFormRef.value?.resetFields();
 	queryList();
 };
 // 质检

+ 88 - 6
src/views/quality/project/index.vue

@@ -1,7 +1,7 @@
 <template>
 	<div class="quality-project-container layout-padding">
 		<div class="layout-padding-auto layout-padding-view pd20">
-			<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent>
+			<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent :disabled="state.loading">
 				<el-form-item label="质检项名称" prop="Name">
 					<el-input v-model="state.queryParams.Name" placeholder="请填写质检项目名称" clearable @keyup.enter="handleQuery" class="keyword-input" />
 				</el-form-item>
@@ -10,9 +10,12 @@
 						<el-option v-for="item in qualityItemGrouping" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
 					</el-select>
 				</el-form-item>
+				<el-form-item label="分值" prop="value">
+					<input-number-range v-model="state.queryParams.value" />
+				</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"> <SvgIcon name="ele-Refresh" 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>
 			<vxe-toolbar
@@ -108,6 +111,58 @@
 		<project-add ref="projectAddRef" @updateList="queryList" :qualityItemGrouping="qualityItemGrouping" />
 		<!--  质检项目编辑  -->
 		<project-edit ref="projectEditRef" @updateList="queryList" :qualityItemGrouping="qualityItemGrouping" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="质检描述" prop="Describe">
+					<el-input v-model.trim="state.queryParams.Describe" placeholder="质检描述" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="创建时间" prop="crTime">
+					<el-date-picker
+						v-model="state.queryParams.crTime"
+						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="IsEnable">
+					<el-select v-model="state.queryParams.IsEnable" placeholder="请选择是否启用" @change="handleQuery" clearable>
+						<el-option label="启用" :value="1" />
+						<el-option label="禁用" :value="0" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="创建人" prop="CreatorName">
+					<el-input v-model.trim="state.queryParams.CreatorName" placeholder="创建人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="更新人" prop="LastModificationName">
+					<el-input v-model.trim="state.queryParams.LastModificationName" placeholder="更新人" clearable @keyup.enter="handleQuery" />
+				</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>
 	</div>
 </template>
 
@@ -119,14 +174,17 @@ import { auth } from '@/utils/authFunction';
 import { projectBaseData, projectDelete, projectList, projectUpdate } from '@/api/quality/project';
 import { useThemeConfig } from '@/stores/themeConfig';
 import { storeToRefs } from 'pinia';
+import Other from '@/utils/other';
+import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 
 // 引入组件
 const ProjectAdd = defineAsyncComponent(() => import('@/views/quality/project/components/Project-add.vue')); // 质检项目新增
 const ProjectEdit = defineAsyncComponent(() => import('@/views/quality/project/components/Project-edit.vue')); // 质检项目编辑
 const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
+const InputNumberRange = defineAsyncComponent(() => import('@/components/NumberRange/index.vue')); // 数字区间
 
 // 定义变量内容
-const state = reactive({
+const state = reactive<any>({
 	loading: false, // 加载状态
 	queryParams: {
 		// 查询参数
@@ -135,13 +193,22 @@ const state = reactive({
 		GroupingName: null,
 		Type: null,
 		Name: null,
+		value: [0, 100], // 质检分值
+		Describe: null, // 质检描述
+		IsEnable:null, // 是否启用
+		CreatorName:null, // 创建人
+		crTime: [], // 创建时间
+		CreationTimeStart: null, // 创建时间开始
+		CreationTimeEnd: null, // 创建时间结束
+		gxTime: [], // 更新时间
+		LastModificationTimeStart: null, // 更新时间开始
+		LastModificationTimeEnd: null, // 更新时间结束
 	},
 	total: 0, // 总条数
 	tableData: [], // 表格数据
 });
 const storesThemeConfig = useThemeConfig();
 const { themeConfig } = storeToRefs(storesThemeConfig);
-const ruleFormRef = ref<RefType>(null); // 表单ref
 const qualityItemGrouping = ref<EmptyArrayType>([]); // 质检项目分组
 const getBaseData = async () => {
 	try {
@@ -157,9 +224,20 @@ const handleQuery = () => {
 	queryList();
 };
 // 获取参数列表
+const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.loading = true;
-	projectList(state.queryParams)
+	requestParams.value = Other.deepClone(state.queryParams);
+	requestParams.value.MinGrade = state.queryParams.value === null ? null : state.queryParams.value[0]; // 分值
+	requestParams.value.MaxGrade = state.queryParams.value === null ? null : state.queryParams.value[1];
+	Reflect.deleteProperty(requestParams.value, 'value'); // 删除无用的参数
+	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 创建时间
+	requestParams.value.CreationTimeEnd = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
+	Reflect.deleteProperty(requestParams.value, 'crTime'); // 删除无用的参数
+	requestParams.value.LastModificationTimeStart = state.queryParams.gxTime === null ? null : state.queryParams.gxTime[0]; // 更新时间
+	requestParams.value.LastModificationTimeEnd = state.queryParams.gxTime === null ? null : state.queryParams.gxTime[1];
+	Reflect.deleteProperty(requestParams.value, 'gxTime'); // 删除无用的参数
+	projectList(requestParams.value)
 		.then((res) => {
 			state.loading = false;
 			state.tableData = res.result.items ?? [];
@@ -174,9 +252,13 @@ const 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();
 	queryList();
 };
 // 新增质检项目
@@ -256,7 +338,7 @@ const selectChangeEvent = ({ checked }) => {
 	}
 };
 const isChecked = computed(() => {
-	return !Boolean(checkTable.value.length);
+	return !checkTable.value.length;
 });
 const toolbarRef = ref<RefType>();
 // 页面加载时

+ 73 - 4
src/views/quality/template/index.vue

@@ -12,7 +12,7 @@
 				</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"> <SvgIcon name="ele-Refresh" 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>
 			<vxe-toolbar
@@ -101,6 +101,55 @@
 		<quality-template-add ref="templateAdd" @updateList="queryList" :templateGrouping="templateGrouping" />
 		<!--  模板编辑  -->
 		<quality-template-edit ref="templateEditRef" @updateList="queryList" :templateGrouping="templateGrouping" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="是否启用" prop="IsEnable">
+					<el-select v-model="state.queryParams.IsEnable" placeholder="请选择是否启用" @change="handleQuery" clearable>
+						<el-option label="启用" :value="1" />
+						<el-option label="禁用" :value="0" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="创建时间" prop="crTime">
+					<el-date-picker
+						v-model="state.queryParams.crTime"
+						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="CreatorName">
+					<el-input v-model.trim="state.queryParams.CreatorName" placeholder="创建人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="更新人" prop="LastModificationName">
+					<el-input v-model.trim="state.queryParams.LastModificationName" placeholder="更新人" clearable @keyup.enter="handleQuery" />
+				</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>
 	</div>
 </template>
 
@@ -110,6 +159,8 @@ import { ElMessage, ElMessageBox, FormInstance } from 'element-plus';
 import { formatDate } from '@/utils/formatTime';
 import { auth } from '@/utils/authFunction';
 import { templateBaseData, templateDelete, templateList, templateUpdate } from '@/api/quality/template';
+import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
+import Other from '@/utils/other';
 
 // 引入组件
 const QualityTemplateAdd = defineAsyncComponent(() => import('@/views/quality/template/components/Template-add.vue')); // 模板新增
@@ -117,7 +168,7 @@ const QualityTemplateEdit = defineAsyncComponent(() => import('@/views/quality/t
 const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
 
 // 定义变量内容
-const state = reactive({
+const state = reactive<any>({
 	loading: false, // 加载状态
 	queryParams: {
 		// 查询参数
@@ -125,11 +176,17 @@ const state = reactive({
 		PageSize: 20,
 		Grouping: null,
 		Name: null,
+		CreatorName:null, // 创建人
+		crTime: [], // 创建时间
+		CreationTimeStart: null, // 创建时间开始
+		CreationTimeEnd: null, // 创建时间结束
+		gxTime: [], // 更新时间
+		LastModificationTimeStart: null, // 更新时间开始
+		LastModificationTimeEnd: null, // 更新时间结束
 	},
 	total: 0, // 总条数
 	tableData: [], // 表格数据
 });
-const ruleFormRef = ref<RefType>(null); // 表单ref
 const templateGrouping = ref<EmptyArrayType>([]); // 质检分组
 const getBaseData = async () => {
 	try {
@@ -145,9 +202,17 @@ const handleQuery = () => {
 	queryList();
 };
 // 获取参数列表
+const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.loading = true;
-	templateList(state.queryParams)
+	requestParams.value = Other.deepClone(state.queryParams);
+	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 创建时间
+	requestParams.value.CreationTimeEnd = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
+	Reflect.deleteProperty(requestParams.value, 'crTime'); // 删除无用的参数
+	requestParams.value.LastModificationTimeStart = state.queryParams.gxTime === null ? null : state.queryParams.gxTime[0]; // 更新时间
+	requestParams.value.LastModificationTimeEnd = state.queryParams.gxTime === null ? null : state.queryParams.gxTime[1];
+	Reflect.deleteProperty(requestParams.value, 'gxTime'); // 删除无用的参数
+	templateList(requestParams.value)
 		.then((res) => {
 			state.loading = false;
 			state.tableData = res.result.items ?? [];
@@ -162,9 +227,13 @@ const 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();
 	queryList();
 };
 // 新增意见

+ 7 - 0
src/views/snapshot/reAudit/components/Re-audit.vue

@@ -208,6 +208,13 @@ const openDialog = async (row: any, type?: string) => {
 			state.infoForm = result;
 			state.ruleForm.redPackAuditId = row.id;
 			state.ruleForm.extraDeductedPoints = result.extraDeductedPoints;
+			// 默认同意
+			state.ruleForm.status = 0;
+			selectStatus(0)
+			if(state.infoForm.isPoints){ // 积分审批默认同意
+				state.ruleForm.pointsStatus = 0;
+				selectPointStatus(0)
+			}
 			loading.value = false;
 		}
 	} catch (error) {

+ 3 - 1
src/views/statistics/call/seatsRest.vue

@@ -25,6 +25,7 @@
 				:refresh="{
 					queryMethod: handleQuery
 				}"
+				:tools="[ { toolRender: { name: 'exportAll' } }]"
 			>
 			</vxe-toolbar>
 			<div style="overflow: hidden; width: 100%; height: 100%; flex: 1">
@@ -44,6 +45,7 @@
 					showHeaderOverflow
 					show-footer
 					:footer-method="footerMethod"
+					:params="{ exportMethod: callRestExport, exportParams: requestParams }"
 				>
 					<vxe-column field="staffNo" title="工号"></vxe-column>
 					<vxe-column field="userName" title="坐席名称"></vxe-column>
@@ -58,7 +60,7 @@
 <script setup lang="tsx" name="statisticsCallSeatsRest">
 import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
-import { callRest } from '@/api/statistics/call';
+import { callRest, callRestExport } from '@/api/statistics/call';
 import { defaultDate } from '@/utils/constants';
 import Other from '@/utils/other';
 import XEUtils from 'xe-utils'

+ 3 - 1
src/views/statistics/call/transferOut.vue

@@ -25,6 +25,7 @@
 				:refresh="{
 					queryMethod: handleQuery
 				}"
+				:tools="[{ toolRender: { name: 'exportCurrent' } }, { toolRender: { name: 'exportAll' } }]"
 			>
 			</vxe-toolbar>
 			<div style="overflow: hidden; width: 100%; height: 100%; flex: 1">
@@ -42,6 +43,7 @@
 					id="statisticsCallTransferOut"
 					:custom-config="{ storage: true }"
 					showHeaderOverflow
+					:params="{ exportMethod: callTransferExport, exportParams: requestParams }"
 				>
 					<vxe-column field="cdpn" title="外线号码"></vxe-column>
 					<vxe-column field="cpn" title="来电号码"></vxe-column>
@@ -67,7 +69,7 @@
 <script setup lang="tsx" name="statisticsCallTransferOut">
 import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
-import { callTransfer } from '@/api/statistics/call';
+import {  callTransfer, callTransferExport } from '@/api/statistics/call';
 import { defaultDate } from "@/utils/constants";
 import { formatDate } from '@/utils/formatTime';
 import Other from "@/utils/other";

+ 3 - 1
src/views/statistics/center/frequentlyEvent.vue

@@ -22,6 +22,7 @@
 				:refresh="{
 					queryMethod: handleQuery
 				}"
+				:tools="[{ toolRender: { name: 'exportCurrent' } }, { toolRender: { name: 'exportAll' } }]"
 			>
 				<template #buttons>
 					<el-button type="primary" @click="onAnalysis" :disabled="isChecked">
@@ -46,6 +47,7 @@
 					id="statisticsCenterFrequentlyEvent"
 					:custom-config="{ storage: true }"
 					showHeaderOverflow
+					:params="{ exportMethod: departmentHighFrequencyEventExport, exportParams: requestParams }"
 				>
 					<vxe-column type="checkbox" width="50" align="center"></vxe-column>
 					<vxe-column field="areaName" title="事发地址"></vxe-column>
@@ -118,7 +120,7 @@ import { computed, defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { ElMessageBox, FormInstance } from 'element-plus';
 import { defaultDate } from '@/utils/constants';
 import { treeArea } from '@/api/auxiliary/area';
-import { centerAddAnalysisReport, departmentHighFrequencyEvent } from '@/api/statistics/center';
+import { centerAddAnalysisReport, departmentHighFrequencyEvent, departmentHighFrequencyEventExport } from '@/api/statistics/center';
 import { useRouter } from 'vue-router';
 import Other from '@/utils/other';
 import { throttle } from '@/utils/tools';

+ 3 - 1
src/views/statistics/center/frequentlyTel.vue

@@ -22,6 +22,7 @@
 				:refresh="{
 					queryMethod: handleQuery
 				}"
+				:tools="[{ toolRender: { name: 'exportCurrent' } }, { toolRender: { name: 'exportAll' } }]"
 			>
 			</vxe-toolbar>
 			<div style="overflow: hidden; width: 100%; height: 100%; flex: 1">
@@ -39,6 +40,7 @@
 					id="statisticsCenterFrequentlyTel"
 					:custom-config="{ storage: true }"
 					showHeaderOverflow
+					:params="{ exportMethod: departmentHighFrequencyExport, exportParams: requestParams }"
 				>
 					<vxe-column field="callnum" title="来电号码"></vxe-column>
 					<vxe-column field="orderCountNum" title="工单数" width="90">
@@ -63,7 +65,7 @@
 <script setup lang="tsx" name="statisticsCenterFrequentlyTel">
 import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
-import { departmentHighFrequency } from '@/api/statistics/center';
+import { departmentHighFrequency, departmentHighFrequencyExport } from '@/api/statistics/center';
 import { defaultDate } from '@/utils/constants';
 import { useRouter } from 'vue-router';
 import Other from '@/utils/other';

+ 6 - 1
src/views/statistics/center/onlineMass.vue

@@ -54,7 +54,7 @@ import { onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
 import { defaultDate, defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 import Other from '@/utils/other';
-import { centerOnlineRoute } from '@/api/statistics/center';
+import { centerOnlineRoute, centerOnlineRouteExport } from '@/api/statistics/center';
 
 // 定义变量内容
 const ruleFormRef = ref<RefType>(); // 表单ref
@@ -93,6 +93,7 @@ const gridOptions = reactive<any>({
 				queryList();
 			},
 		},
+		tools: [{ toolRender: { name: 'exportAll' } }],
 	},
 	customConfig: {
 		storage: true,
@@ -124,6 +125,10 @@ const gridOptions = reactive<any>({
 		},
 	],
 	data: [],
+	params: {
+		exportMethod: centerOnlineRouteExport,
+		exportParams: requestParams,
+	},
 });
 /** 搜索按钮操作 */
 const handleQuery = () => {

+ 12 - 2
src/views/statistics/department/detailOverdueList.vue

@@ -63,6 +63,7 @@
 					:custom-config="{ storage: true }"
 					showHeaderOverflow
 					:sort-config="{ remote: true }"
+					@sort-change="sortChange"
 					:params="{ exportMethod: departmentOverdueListExport, exportParams: requestParams }"
 					@checkbox-all="selectAllChangeEvent"
 					@checkbox-change="selectChangeEvent"
@@ -81,12 +82,12 @@
 					<vxe-column field="counterSignTypeText" title="会签类型" width="110"></vxe-column>
 					<vxe-column field="hotspotName" title="热点分类" width="150"></vxe-column>
 					<vxe-column field="acceptorName" title="受理人" width="120"></vxe-column>
-					<vxe-column field="startTime" title="受理时间" width="160">
+					<vxe-column field="startTime" title="受理时间" width="160" sortable>
 						<template #default="{ row }">
 							{{ formatDate(row.startTime, 'YYYY-mm-dd HH:MM:SS') }}
 						</template>
 					</vxe-column>
-					<vxe-column field="expiredTime" title="期满时间" width="160">
+					<vxe-column field="expiredTime" title="期满时间" width="160" sortable>
 						<template #default="{ row }">
 							{{ formatDate(row.expiredTime, 'YYYY-mm-dd HH:MM:SS') }}
 						</template>
@@ -168,6 +169,8 @@ const state = reactive<any>({
 		Statuses: [], // 状态
 		OrgName: null, // 部门名称
 		TypeId: 0,
+		SortField: null,
+		SortRule: null,
 	},
 	tableData: [], //表单
 	loading: false, // 加载
@@ -198,6 +201,13 @@ const queryList = () => {
 			state.loading = false;
 		});
 };
+// 排序
+const sortChange = (val: any) => {
+	state.queryParams.SortField = val.order ? val.field : null;
+	// 0 升序 1 降序
+	state.queryParams.SortRule = val.order ? (val.order == 'desc' ? 1 : 0) : null;
+	queryList();
+};
 /** 重置按钮操作 */
 const drawerRuleFormRef = ref();
 const ruleFormRef = ref<RefType>(); // 表单ref

+ 3 - 1
src/views/statistics/order/specials.vue

@@ -19,6 +19,7 @@
 				:refresh="{
 					queryMethod: handleQuery,
 				}"
+				:tools="[{ toolRender: { name: 'exportCurrent' } }, { toolRender: { name: 'exportAll' } }]"
 			>
 			</vxe-toolbar>
 			<div style="overflow: hidden; width: 100%; height: 100%; flex: 1">
@@ -38,6 +39,7 @@
 						storage: true,
 					}"
 					showHeaderOverflow
+					:params="{ exportMethod: departmentSpecialExport, exportParams: requestParams }"
 				>
 					<vxe-column field="cause" title="特提原因"></vxe-column>
 					<vxe-column field="orderNum" title="特提工单数">
@@ -67,7 +69,7 @@
 <script setup lang="tsx" name="statisticsOrderSpecial">
 import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
-import { departmentSpecial } from '@/api/statistics/order';
+import { departmentSpecial, departmentSpecialExport } from '@/api/statistics/order';
 import { defaultDate } from '@/utils/constants';
 import { formatDate } from '@/utils/formatTime';
 import { useRouter } from 'vue-router';

+ 9 - 7
src/views/statistics/order/subRegional.vue

@@ -29,8 +29,9 @@
 				:loading="state.loading"
 				custom
 				:refresh="{
-			queryMethod: handleQuery,
-			}"
+					queryMethod: handleQuery,
+				}"
+				:tools="[{ toolRender: { name: 'exportAll' } }]"
 			>
 			</vxe-toolbar>
 			<div style="overflow: hidden; width: 100%; height: 100%; flex: 1">
@@ -39,7 +40,7 @@
 					:loading="state.loading"
 					:data="state.tableData"
 					:column-config="{ resizable: true }"
-					:row-config="{ isCurrent: true, isHover: true, height: 30,useKey:true }"
+					:row-config="{ isCurrent: true, isHover: true, height: 30, useKey: true }"
 					ref="tableRef"
 					height="auto"
 					auto-resize
@@ -50,8 +51,9 @@
 					show-footer
 					:footer-method="footerMethod"
 					:tree-config="treeConfig"
+					:params="{ exportMethod: statisticsOrderAreaExport, exportParams: requestParams }"
 				>
-					<vxe-column field="areaName" title="区域名称"  tree-node></vxe-column>
+					<vxe-column field="areaName" title="区域名称" tree-node></vxe-column>
 					<vxe-column field="sumCount" title="分类统计"></vxe-column>
 				</vxe-table>
 			</div>
@@ -59,9 +61,9 @@
 	</div>
 </template>
 <script setup lang="tsx" name="statisticsOrderSubRegional">
-import {  defineAsyncComponent, onMounted, reactive, ref } from 'vue';
+import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
-import {  statisticsOrderArea } from '@/api/statistics/order';
+import { statisticsOrderArea, statisticsOrderAreaExport } from '@/api/statistics/order';
 import { defaultDate } from '@/utils/constants';
 import { callPeriodBase } from '@/api/statistics/call';
 import Other from '@/utils/other';
@@ -138,7 +140,7 @@ const treeConfig = reactive({
 });
 const fetchChildListApi = (row: any) => {
 	return new Promise((resolve) => {
-		const request =  Other.deepClone(state.queryParams);
+		const request = Other.deepClone(state.queryParams);
 		request.StartTime = state.queryParams.crTime === null ? null : state.queryParams.crTime[0];
 		request.EndTime = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
 		Reflect.deleteProperty(requestParams.value, 'crTime');

+ 4 - 1
src/views/tels/callLog/zgCallLog.vue

@@ -158,7 +158,7 @@
 							<el-option v-for="item in state.endByOptions" :value="item.key" :key="item.key" :label="item.value" />
 						</el-select>
 					</el-form-item>
-					<el-form-item prop="CallNo" label="通话ID">
+					<el-form-item prop="CallNo" label="通话ID" v-if="['ZiGong'].includes(themeConfig.appScope)">
 						<el-input v-model="state.queryParams.CallNo" placeholder="通话ID" clearable @keyup.enter="handleQuery" />
 					</el-form-item>
 					<el-form-item prop="UserName" label="话务员">
@@ -208,6 +208,7 @@ import Other from '@/utils/other';
 import { getCallCenterCallRecord, getCallCenterCallRecordBaseData, getCallCenterCallRecordTotal, callLogXTPagedExport } from '@/api/callCenter';
 import { storeToRefs } from 'pinia';
 import { useAppConfig } from '@/stores/appConfig';
+import { useThemeConfig } from '@/stores/themeConfig';
 
 // 引入组件
 const PlayRecord = defineAsyncComponent(() => import('@/components/PlayRecord/index.vue')); // 播放录音
@@ -246,6 +247,8 @@ const state = reactive<any>({
 	onState: [],
 	endByOptions: [],
 });
+const storesThemeConfig = useThemeConfig();
+const { themeConfig } = storeToRefs(storesThemeConfig);
 const ruleFormRef = ref<FormInstance>(); // 表单ref
 const changeTba = () => {
 	ruleFormRef.value?.resetFields();