Browse Source

reactor:综合查询新增总数展示;

zhangchong 7 tháng trước cách đây
mục cha
commit
3fe6e4328e
2 tập tin đã thay đổi với 96 bổ sung13 xóa
  1. 11 0
      src/api/business/order.ts
  2. 85 13
      src/views/business/order/index.vue

+ 11 - 0
src/api/business/order.ts

@@ -36,6 +36,17 @@ export const orderListFixed = (params: any) => {
 		params,
 	});
 };
+/**
+ * @description 查询工单列表总数
+ * @param {any} params
+ */
+export const orderListCount = (params: any) => {
+	return request({
+		url: `/api/v1/Order/count`,
+		method: 'get',
+		params,
+	});
+};
 /**
  * @description 历史工单
  * @param {object} params

+ 85 - 13
src/views/business/order/index.vue

@@ -149,6 +149,9 @@
 											<el-checkbox value="IsSensitiveWord" border>敏感类工单</el-checkbox>
 										</el-checkbox-group>
 									</el-form-item>
+									<el-form-item>
+										<el-button @click="contentRetrieval"><SvgIcon name="ele-DocumentCopy" class="mr5" />内容检索</el-button>
+									</el-form-item>
 								</el-col>
 							</el-row>
 							<el-form-item label="工单标题" prop="Keyword">
@@ -209,11 +212,12 @@
 						>
 							退回</el-button
 						>
-						<order-detail :order="row" @updateList="queryList(true)"/>
+						<order-detail :order="row" @updateList="queryList(true)" />
 					</template>
 				</ProTable>
-				<div class="flex-end mt20">
-<!--					<el-button class="default-button" @click="onChangeTotal">展示总数</el-button>-->
+				<div class="flex-end mt20" style="align-items: center">
+					<!--					<el-button class="default-button" @click="onChangeTotal">展示总数</el-button>-->
+					<span v-loading="totalLoading" class="mr10">共 {{ totalCount }} 条</span>
 					<el-pagination
 						layout="prev, pager, next"
 						:total="state.total"
@@ -313,6 +317,12 @@
 						<el-option v-for="item in state.pushTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
 					</el-select>
 				</el-form-item>
+				<el-form-item label="归档类型" prop="FiledType">
+					<el-select v-model="state.queryParams.FiledType" placeholder="请选择归档类型" @change="handleQuery" clearable>
+						<el-option label="中心归档" value="10" />
+						<el-option label="部门归档" value="20" />
+					</el-select>
+				</el-form-item>
 				<el-form-item label="期满时间" prop="exTime">
 					<el-date-picker
 						v-model="state.queryParams.exTime"
@@ -372,16 +382,40 @@
 				<el-button @click="resetQuery(drawerRuleFormRef)" class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
 			</template>
 		</el-drawer>
+		<el-dialog
+			v-model="state.dialogVisible"
+			draggable
+			destroy-on-close
+			:close-on-click-modal="false"
+			modal-class="modal_class"
+			class="dialog_class"
+			append-to-body
+			:modal="false"
+			title="内容检索"
+			width="500px"
+		>
+			<el-form :model="state.ruleForm" ref="ruleFormContentRef" label-width="90px" class="show-info-form" @submit.native.prevent>
+				<el-form-item label="信件内容">
+					<el-input v-model="state.ruleForm.content" placeholder="请填写信件内容" :autosize="{ minRows: 4, maxRows: 10 }" type="textarea"></el-input>
+				</el-form-item>
+				<el-form-item label="检索提示">检索条件为词组检索,如“热线中心”</el-form-item>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="state.dialogVisible = false" class="default-button">取 消</el-button>
+					<el-button type="primary" @click="onSearch(ruleFormContentRef)">查 询</el-button>
+				</span>
+			</template>
+		</el-dialog>
 	</div>
 </template>
 <script setup lang="tsx" name="order">
 import { defineAsyncComponent, onMounted, reactive, ref, onActivated, onBeforeUnmount } from 'vue';
 import type { FormInstance } from 'element-plus';
-import { ElMessage, ElMessageBox, ElNotification } from 'element-plus';
+import { ElMessage, ElMessageBox } from 'element-plus';
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
-import { useRoute, useRouter } from 'vue-router';
 import { formatDate } from '@/utils/formatTime';
-import { exportJbOrder, exportOrder, listBaseData, orderList, orderListFixed, provinceReturn } from '@/api/business/order';
+import { exportJbOrder, exportOrder, listBaseData, orderList, orderListCount, orderListFixed } from '@/api/business/order';
 import { addObserve } from '@/api/query/observe';
 import { addEnd } from '@/api/query/end';
 import { treeArea } from '@/api/auxiliary/area';
@@ -398,7 +432,7 @@ const OrderReturn = defineAsyncComponent(() => import('@/views/business/return/c
 const state = reactive<any>({
 	queryParams: {
 		PageIndex: 1, // 当前页
-		PageSize: 20, // 每页条数
+		PageSize: 50, // 每页条数
 		// 查询条件
 		No: null, // 工单编码
 		ProvinceNo: null, // 省工单编码
@@ -415,8 +449,8 @@ const state = reactive<any>({
 		Channels: null, // 渠道
 		Hotspot: null, //  热点分类名称
 		OrgId: null, // 接办部门
-		ActualHandleOrgName:null, // 接办部门
-		OrgLevelOneName:null, // 一级部门
+		ActualHandleOrgName: null, // 接办部门
+		OrgLevelOneName: null, // 一级部门
 		NameOrNo: null, // 受理坐席
 		crTime: [], // 生成时间
 		CreationTimeStart: null, // 创建时间 开始
@@ -435,6 +469,7 @@ const state = reactive<any>({
 		IsSensitiveWord: null, // 是否敏感词工单
 		SensitiveWord: null, // 敏感词
 		IsUrgent: null, // 是否加急
+		ContentRetrieval: null, // 内容检索
 	},
 	tableData: [], //表单
 	loading: false, // 加载
@@ -448,6 +483,10 @@ const state = reactive<any>({
 	pushTypeOptions: [], //推送分类
 	orgData: [], // 机构数据
 	areaOptions: [], // 省市区数据
+	dialogVisible: false,
+	ruleForm: {
+		content: null,
+	},
 });
 const fastSearch = ref('all'); // tab位置
 const fastSearchChange = (val: string) => {
@@ -587,6 +626,8 @@ const handleCurrentChange = (val: number) => {
 	}
 };
 const requestParams = ref<EmptyObjectType>({});
+const totalCount = ref(0);
+const totalLoading = ref(false);
 const queryList = (isQuery: boolean = false) => {
 	if (showTotal.value) {
 		requestParams.value = Other.deepClone(state.queryParams);
@@ -599,6 +640,7 @@ const queryList = (isQuery: boolean = false) => {
 		requestParams.value.ActualHandleTimeStart = state.queryParams.doneTime === null ? null : state.queryParams.doneTime[0]; // 办结时间
 		requestParams.value.ActualHandleTimeEnd = state.queryParams.doneTime === null ? null : state.queryParams.doneTime[1];
 		Reflect.deleteProperty(requestParams.value, 'doneTime'); // 删除无用的参数
+		requestParams.value.ContentRetrieval = state.ruleForm.content;
 		state.loading = true;
 		orderList(requestParams.value)
 			.then((response: any) => {
@@ -621,7 +663,9 @@ const queryList = (isQuery: boolean = false) => {
 		requestParams.value.ActualHandleTimeEnd = state.queryParams.doneTime === null ? null : state.queryParams.doneTime[1];
 		Reflect.deleteProperty(requestParams.value, 'doneTime'); // 删除无用的参数
 		requestParams.value.QueryIndex = queryIndex.value; // 数据批次
+		requestParams.value.ContentRetrieval = state.ruleForm.content;
 		state.loading = true;
+		totalLoading.value = true;
 		orderListFixed(requestParams.value)
 			.then((response: any) => {
 				if (isQuery) {
@@ -638,6 +682,16 @@ const queryList = (isQuery: boolean = false) => {
 				}
 				state.loading = false;
 			})
+			.then(() => { // 查询总数
+				orderListCount(requestParams.value)
+					.then((count) => {
+						totalCount.value = count.result;
+						totalLoading.value = false;
+					})
+					.catch(() => {
+						totalLoading.value = false;
+					});
+			})
 			.catch(() => {
 				state.loading = false;
 			});
@@ -656,6 +710,7 @@ const resetQuery = (formEl: FormInstance | undefined) => {
 	checkList.value = [];
 	queryIndex.value = 0;
 	ruleFormRef.value?.resetFields();
+	state.ruleForm.content = null;
 	queryList(true);
 };
 // 设置终结件
@@ -678,7 +733,8 @@ const onObserve = () => {
 				queryList();
 			});
 		})
-		.catch(() => {});
+		.catch(() => {
+		});
 };
 // 设置终结件
 const onEnd = () => {
@@ -700,7 +756,8 @@ const onEnd = () => {
 				queryList();
 			});
 		})
-		.catch(() => {});
+		.catch(() => {
+		});
 };
 // 创建重复性事件
 const repeatEventEditRef = ref<RefType>();
@@ -735,7 +792,22 @@ const onJbExport = () => {
 					state.loading = false;
 				});
 		})
-		.catch(() => {});
+		.catch(() => {
+		});
+};
+// 打开内容检索
+const contentRetrieval = () => {
+	state.dialogVisible = !state.dialogVisible;
+};
+const ruleFormContentRef = ref<RefType>();
+// 内容检索
+const onSearch = (formEl: FormInstance | undefined) => {
+	if (!formEl) return;
+	formEl.validate((valid: boolean) => {
+		if (!valid) return;
+		queryList(true);
+		state.dialogVisible = false;
+	});
 };
 onMounted(() => {
 	getBaseData();
@@ -744,7 +816,7 @@ onMounted(() => {
 onActivated(() => {
 	mittBus.on('clearCachePage', () => {
 		//清除缓存
-		queryList();
+		queryList(true);
 	});
 });
 onBeforeUnmount(() => {