Browse Source

reactor:303 关于【来电弹屏】优化;300 关于【特提功能】优化;(自贡)

zhangchong 7 months ago
parent
commit
970a595754

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

@@ -47,6 +47,17 @@ export const historyOrder = (params: object) => {
 		params,
 	});
 };
+/**
+ * @description 查询历史工单(全量)
+ * @param {object} params
+ */
+export const historyOrderAll = (params: object) => {
+	return request({
+		url: `/api/v1/Order/history_all`,
+		method: 'get',
+		params,
+	});
+};
 /**
  * @description 新增工单
  * @param {object} data

+ 2 - 2
src/components/ProTable/components/Pagination.vue

@@ -10,6 +10,7 @@
 			:page-sizes="pageSizes"
 			@size-change="handleSizeChange"
 			@current-change="handleCurrentChange"
+			:pager-count="pagerCount"
 		/>
 	</div>
 </template>
@@ -36,10 +37,9 @@ const props = defineProps({
 			return [10, 20, 50, 100, 200];
 		},
 	},
-	// 移动端页码按钮的数量端默认值5
 	pagerCount: {
 		type: Number,
-		default: document.body.clientWidth < 992 ? 5 : 7,
+		default: 5,
 	},
 	layout: {
 		type: String,

+ 3 - 19
src/components/ProTable/index.vue

@@ -119,7 +119,6 @@
 					@size-change="handleSizeChange"
 					@current-change="handleCurrentChange"
 					:disabled="loading"
-					:key="pageLayout"
 					:pager-count="5"
 				/>
 			</div>
@@ -222,7 +221,7 @@ const props = defineProps({
 			return [10, 20, 50, 100];
 		},
 	},
-	layout: {
+	pageLayout: {
 		type: String,
 		default: 'total, sizes, prev, pager, next, jumper',
 	},
@@ -315,26 +314,11 @@ const { selectionChange, selectedList, selectedListIds, isSelected } = useSelect
 
 // 清空选中数据列表
 const clearSelection = () => tableRef.value!.clearSelection();
-// 初始化表格数据 && 拖拽排序
-const pageLayout = ref(props.layout);
-// 监听 props.value 的变化,并更新 localValue
-watch(
-	() => props.layout,
-	(newValue) => {
-		pageLayout.value = newValue;
-	}
-);
 const currentRowKey = ref(undefined);
 onMounted(() => {
 	useResizeObserver(tableRef, () => {
 		tableRef.value?.doLayout();
 	});
-	const { width } = useWindowSize();
-	if (width < 992) {
-		pageLayout.value = 'total , prev, next';
-	} else {
-		pageLayout.value = 'total, sizes, prev, pager, next, jumper';
-	}
 });
 // 处理表格数据
 const processTableData = computed(() => {
@@ -565,7 +549,7 @@ watch(
 	() => props.data,
 	() => {
 		if (props.isRefreshClearSelection) clearSelection();
-		if (props.selectIds && props.selectIds.length > 0) {
+		if (props.selectIds && props.selectIds.length) {
 			// 监听已经选择的数组ID
 			nextTick(() => {
 				tableRef.value!.clearSelection();
@@ -574,7 +558,7 @@ watch(
 						if (i === j.id) {
 							setTimeout(() => {
 								tableRef.value!.toggleRowSelection(j, true);
-							}, 0);
+							}, 100);
 						}
 					}
 				}

+ 2 - 2
src/views/business/special/components/Special-apply-order.vue

@@ -77,9 +77,9 @@
 							</el-select>
 						</el-form-item>
 					</el-col>
-					<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" v-if="['ZiGong'].includes(themeConfig.appScope)">
+					<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" v-if="['ZiGong'].includes(themeConfig.appScope) && state.ruleForm.nextStepCode">
 						<el-form-item label="特提次数" prop="cause">
-							{{ state.orderDetail.id }}
+							{{ state.orderDetail.specialNum }}次
 						</el-form-item>
 					</el-col>
 					<!--					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">

+ 1 - 48
src/views/todo/seats/accept/History.vue

@@ -13,16 +13,12 @@
 	<el-table
 		:data="state.tableData"
 		v-loading="state.loading"
-		row-key="id"
-		@selection-change="handleSelectionChange"
 		:max-height="props.maxHeight"
 		ref="multipleTableRef"
 		:row-style="{ height: '22px' }"
 		:cell-style="{ padding: '4px 0' }"
+		highlight-current-row
 	>
-		<el-table-column type="selection" width="80" :reserve-selection="true" v-if="props.ruleForm.isRepeat === 'true'" />
-<!--		<el-table-column prop="hotspotName" label="热点分类" show-overflow-tooltip> </el-table-column>
-    <el-table-column prop="actualHandleStepName" label="当前环节" show-overflow-tooltip></el-table-column>-->
 		<el-table-column prop="no" label="工单编码" show-overflow-tooltip  width="140"> </el-table-column>
     <el-table-column prop="phoneNo" label="工单标题" show-overflow-tooltip>
       <template #default="{ row }">
@@ -70,7 +66,6 @@ const props = defineProps({
 		default: false,
 	},
 });
-const emit = defineEmits(['handleSelectionChange']);
 const state = reactive<any>({
 	tableData: [], // 历史工单
 	total: 0, // 历史工单总条数
@@ -108,51 +103,11 @@ const searchHistory = throttle(async () => {
 		const response = await historyOrder(request);
 		state.tableData = response?.result.items ?? [];
 		state.total = response?.result.total;
-		if (props.ruleForm.id) {
-			if (props.ruleForm.duplicateIds && props.ruleForm.duplicateIds.length) {
-				for (let i of props.ruleForm.duplicateIds) {
-					for (let j of state.tableData) {
-						if (i === j.id) {
-							setTimeout(() => {
-								multipleTableRef.value!.toggleRowSelection(j, true);
-								multipleSelection.value.push(j);
-							}, 100);
-						}
-					}
-				}
-			}
-		}
 		state.loading = false;
 	} catch (error) {
 		state.loading = false;
 	}
 }, 300);
-// 右边表格选中重复件
-const handleSelectionChange = (row: any) => {
-	if (row && row.length) {
-		multipleSelection.value = row;
-	} else {
-		multipleSelection.value = [];
-	}
-	emit('handleSelectionChange', multipleSelection.value);
-};
-// 弹窗选择历史工单(保持选择一致)
-const dialogConfirmRepeat = (val: any) => {
-	multipleSelection.value = val;
-	for (let i of multipleSelection.value) {
-		for (let j of state.tableData) {
-			if (i.id === j.id) {
-				setTimeout(() => {
-					multipleTableRef.value!.toggleRowSelection(j, true);
-				}, 0);
-			}
-		}
-	}
-};
-// 清除重复选择
-const clearRepeat = () => {
-	multipleTableRef.value!.clearSelection();
-};
 watch(
 	() => props.ruleForm.contact,
 	(newVal: any) => {
@@ -166,7 +121,5 @@ defineExpose({
 	multipleSelection,
 	multipleTableRef,
 	searchHistory,
-	dialogConfirmRepeat,
-	clearRepeat,
 });
 </script>

+ 10 - 7
src/views/business/order/components/Order-repeat-select.vue → src/views/todo/seats/accept/Order-repeat-select.vue

@@ -38,15 +38,15 @@
 	</el-dialog>
 </template>
 
-<script setup lang="ts" name="orderHistory">
+<script setup lang="ts">
 import { reactive, ref, defineAsyncComponent, computed } from 'vue';
 import type { FormInstance } from 'element-plus';
-import { historyOrder } from '@/api/business/order';
+import { historyOrderAll } from '@/api/business/order';
 import { useRoute } from 'vue-router';
 
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
 // 引入组件
-const emit = defineEmits(['saveSelect']);
+const emit = defineEmits(['orderRepeatSuccess']);
 // 定义变量内容
 const state = reactive<any>({
 	dialogVisible: false, // 弹窗显示隐藏
@@ -95,14 +95,12 @@ const resetQuery = (formEl: FormInstance | undefined) => {
 };
 /** 获取历史工单 */
 const queryList = () => {
-	if (!state.ruleForm.contact) return;
 	state.loading = true;
 	let request = {
 		...state.queryParams,
-		PhoneNo: state.ruleForm.contact,
 		OrderId: route.query.id ?? '', //传入id 排除重复工单选择自己
 	};
-	historyOrder(request)
+	historyOrderAll(request)
 		.then((response: any) => {
 			state.tableData = response?.result.items ?? [];
 			state.total = response?.result.total;
@@ -118,11 +116,16 @@ const canChoose = computed(() => {
 });
 // 确定选择历史工单
 const selectConfirm = () => {
-	emit('saveSelect', proTableRef.value?.selectedList);
+	emit('orderRepeatSuccess', proTableRef.value?.selectedList);
+};
+// 清除选中
+const clearSelection = () => {
+	proTableRef.value?.clearSelection();
 };
 // 暴露变量
 defineExpose({
 	openDialog,
 	closeDialog,
+	clearSelection
 });
 </script>

+ 1 - 1
src/views/todo/seats/accept/Real-time-quality.vue

@@ -9,7 +9,7 @@
 				<el-text class="end-call" tag="p" v-if="talkEnd">-- 通话结束 --</el-text>
 			</div>
 		</el-scrollbar>
-    <el-empty v-else :image-size="100"/>
+		<el-empty v-else :image-size="100" />
 	</div>
 </template>
 <script setup lang="ts" name="orderAcceptRealtimeQuality">

+ 12 - 26
src/views/todo/seats/accept/ybAccept.vue

@@ -407,7 +407,7 @@
 												prop="transpond"
 												:rules="[{ required: true, message: '请选择是否市州互转', trigger: 'change' }]"
 											>
-												<el-select v-model="state.ruleForm.transpond" placeholder="请选择是否市州互转" class="w100" @change="changeTranspond">
+												<el-select v-model="state.ruleForm.transpond" placeholder="请选择是否市州互转" class="w100" @change="changeTransPond">
 													<el-option :key="true" label="是" :value="true" />
 													<el-option :key="false" label="否" :value="false" />
 												</el-select>
@@ -497,7 +497,6 @@
 								<history-order
 									:ruleForm="state.ruleForm"
 									:orderId="state.ruleForm.id"
-									@handleSelectionChange="handleSelectionChange"
 									ref="historyOrderRef"
 								/>
 							</el-tab-pane>
@@ -524,14 +523,14 @@
 		</el-row>
 		<!-- 拓展表单 -->
 		<expand-form ref="ExpandFormRef" @saveExpandForm="saveExpandForm" :orderDetail="state.ruleForm" :extra="extra" />
-		<!-- 历史工单 -->
-		<order-history ref="HistoryOrderRef" @saveSelect="saveSelect" />
 		<!--  流程审批  -->
 		<process-audit ref="processAuditRef" @orderProcessSuccess="onCancel" />
 		<!-- 地图选点 -->
 		<map-dialog ref="mapDialogRef" @confirm="selectMap" />
 		<!-- 企业搜索 -->
 		<company-search ref="companySearchRef" @selectCompany="selectCompany" />
+		<!-- 重复工单选择 -->
+		<order-repeat-select ref="orderRepeatSelectRef" @orderRepeatSuccess="orderRepeatSuccess" />
 	</div>
 </template>
 
@@ -540,8 +539,7 @@ import { computed, defineAsyncComponent, onMounted, onUnmounted, reactive, ref,
 import type { FormInstance } from 'element-plus';
 import { ElMessage, ElMessageBox, ElNotification } from 'element-plus';
 import { storeToRefs } from 'pinia';
-import { onBeforeRouteLeave, useRoute, useRouter } from 'vue-router';
-import { useTelStatus } from '@/stores/telStatus';
+import { onBeforeRouteLeave, useRoute } from 'vue-router';
 import { useAppConfig } from '@/stores/appConfig';
 import { throttle, transformFile } from '@/utils/tools';
 import { commonEnum } from '@/utils/constants';
@@ -562,7 +560,7 @@ const HistoryOrder = defineAsyncComponent(() => import('@/views/todo/seats/accep
 const RepeatEvent = defineAsyncComponent(() => import('@/views/todo/seats/accept/Repeat-event.vue')); // 重复事件
 const CitizenPortrait = defineAsyncComponent(() => import('@/views/todo/seats/accept/Citizen-portrait.vue')); // 市民画像
 const ExpandForm = defineAsyncComponent(() => import('@/views/todo/seats/accept/Expand-form.vue')); // 拓展表单
-const OrderHistory = defineAsyncComponent(() => import('@/views/business/order/components/Order-history.vue')); // 历史工单弹窗列表
+const OrderRepeatSelect = defineAsyncComponent(() => import('@/views/todo/seats/accept/Order-repeat-select.vue')); // 选择重复工单
 const CommonAdvice = defineAsyncComponent(() => import('@/components/CommonAdvice/index.vue')); // 常用意见
 const AnnexList = defineAsyncComponent(() => import('@/components/AnnexList/index.vue')); // 附件列表
 const ProcessAudit = defineAsyncComponent(() => import('@/components/ProcessAudit/index.vue')); // 流程审批
@@ -831,7 +829,7 @@ const clearRepeat = () => {
 		autofocus: false,
 	})
 		.then(() => {
-			historyOrderRef.value.clearRepeat();
+			orderRepeatSelectRef.value.clearSelection();
 			setTimeout(() => {
 				state.ruleForm.duplicateTitle = null;
 				state.ruleForm.duplicateIds = [];
@@ -842,20 +840,18 @@ const clearRepeat = () => {
 		});
 };
 // 选择重复件
-const HistoryOrderRef = ref<RefType>();
+const orderRepeatSelectRef = ref<RefType>();
 const selectRepeat = () => {
-	HistoryOrderRef.value.openDialog(state.ruleForm);
+	orderRepeatSelectRef.value.openDialog(state.ruleForm);
 };
-// 弹窗确定选择重复件
-const saveSelect = (row: any) => {
-	historyOrderRef.value.clearRepeat();
+// 确定选择重复工单
+const orderRepeatSuccess = (row: any) => {
 	state.ruleForm.duplicateIds = row.map((item: any) => item.id);
 	state.ruleForm.duplicateTitle = '已选择';
-	historyOrderRef.value.dialogConfirmRepeat(row);
-	HistoryOrderRef.value.closeDialog();
+	orderRepeatSelectRef.value.closeDialog();
 };
 // 选择是否市州互转
-const changeTranspond = (val: any) => {
+const changeTransPond = (val: any) => {
 	if (!val) {
 		ElMessageBox.confirm(`确认要清除选择的互转市州?`, '提示', {
 			confirmButtonText: '确认',
@@ -878,16 +874,6 @@ const changeTranspond = (val: any) => {
 			});
 	}
 };
-// 右侧选择历史工单
-const handleSelectionChange = (row: any) => {
-	if (row && row.length) {
-		state.ruleForm.duplicateIds = row.map((item: any) => item.id);
-		state.ruleForm.duplicateTitle = '已选择';
-	} else {
-		state.ruleForm.duplicateIds = [];
-		state.ruleForm.duplicateTitle = null;
-	}
-};
 const historyOrderRef = ref<RefType>(); // 历史工单组件
 const citizenPortraitRef = ref<RefType>(); // 市民画像组件
 // 查询历史工单 和市民画像

+ 11 - 24
src/views/todo/seats/accept/zgAccept.vue

@@ -335,7 +335,7 @@
 												prop="transpond"
 												:rules="[{ required: true, message: '请选择是否市州互转', trigger: 'change' }]"
 											>
-												<el-select v-model="state.ruleForm.transpond" placeholder="请选择是否市州互转" class="w100" @change="changeTranspond">
+												<el-select v-model="state.ruleForm.transpond" placeholder="请选择是否市州互转" class="w100" @change="changeTransPond">
 													<el-option :key="true" label="是" :value="true" />
 													<el-option :key="false" label="否" :value="false" />
 												</el-select>
@@ -424,7 +424,6 @@
 								<history-order
 									:ruleForm="state.ruleForm"
 									:orderId="state.ruleForm.id"
-									@handleSelectionChange="handleSelectionChange"
 									ref="historyOrderRef"
 								/>
 							</el-tab-pane>
@@ -449,12 +448,12 @@
 		</el-row>
 		<!-- 拓展表单 -->
 		<expand-form ref="ExpandFormRef" @saveExpandForm="saveExpandForm" :orderDetail="state.ruleForm" :extra="extra" />
-		<!-- 历史工单 -->
-		<order-history ref="HistoryOrderRef" @saveSelect="saveSelect" />
 		<!--  流程审批  -->
 		<process-audit ref="processAuditRef" @orderProcessSuccess="onCancel" />
 		<!-- 地图选点 -->
 		<map-dialog ref="mapDialogRef" @confirm="selectMap" />
+		<!-- 重复工单选择 -->
+		<order-repeat-select ref="orderRepeatSelectRef" @orderRepeatSuccess="orderRepeatSuccess" />
 	</div>
 </template>
 
@@ -483,7 +482,7 @@ const HistoryOrder = defineAsyncComponent(() => import('@/views/todo/seats/accep
 const RepeatEvent = defineAsyncComponent(() => import('@/views/todo/seats/accept/Repeat-event.vue')); // 重复事件
 const CitizenPortrait = defineAsyncComponent(() => import('@/views/todo/seats/accept/Citizen-portrait.vue')); // 市民画像
 const ExpandForm = defineAsyncComponent(() => import('@/views/todo/seats/accept/Expand-form.vue')); // 拓展表单
-const OrderHistory = defineAsyncComponent(() => import('@/views/business/order/components/Order-history.vue')); // 历史工单弹窗列表
+const OrderRepeatSelect = defineAsyncComponent(() => import('@/views/todo/seats/accept/Order-repeat-select.vue')); // 选择重复工单
 const CommonAdvice = defineAsyncComponent(() => import('@/components/CommonAdvice/index.vue')); // 常用意见
 const AnnexList = defineAsyncComponent(() => import('@/components/AnnexList/index.vue')); // 附件列表
 const ProcessAudit = defineAsyncComponent(() => import('@/components/ProcessAudit/index.vue')); // 流程审批
@@ -706,7 +705,7 @@ const clearRepeat = () => {
 		autofocus: false,
 	})
 		.then(() => {
-			historyOrderRef.value.clearRepeat();
+			orderRepeatSelectRef.value.clearSelection();
 			setTimeout(() => {
 				state.ruleForm.duplicateTitle = null;
 				state.ruleForm.duplicateIds = [];
@@ -717,20 +716,18 @@ const clearRepeat = () => {
 		});
 };
 // 选择重复件
-const HistoryOrderRef = ref<RefType>();
+const orderRepeatSelectRef = ref<RefType>();
 const selectRepeat = () => {
-	HistoryOrderRef.value.openDialog(state.ruleForm);
+	orderRepeatSelectRef.value.openDialog(state.ruleForm);
 };
-// 弹窗确定选择重复件
-const saveSelect = (row: any) => {
-	historyOrderRef.value.clearRepeat();
+// 确定选择重复工单
+const orderRepeatSuccess = (row: any) => {
 	state.ruleForm.duplicateIds = row.map((item: any) => item.id);
 	state.ruleForm.duplicateTitle = '已选择';
-	historyOrderRef.value.dialogConfirmRepeat(row);
-	HistoryOrderRef.value.closeDialog();
+	orderRepeatSelectRef.value.closeDialog();
 };
 // 选择是否市州互转
-const changeTranspond = (val: any) => {
+const changeTransPond = (val: any) => {
 	if (!val) {
 		ElMessageBox.confirm(`确认要清除选择的互转市州?`, '提示', {
 			confirmButtonText: '确认',
@@ -753,16 +750,6 @@ const changeTranspond = (val: any) => {
 			});
 	}
 };
-// 右侧选择历史工单
-const handleSelectionChange = (row: any) => {
-	if (row && row.length) {
-		state.ruleForm.duplicateIds = row.map((item: any) => item.id);
-		state.ruleForm.duplicateTitle = '已选择';
-	} else {
-		state.ruleForm.duplicateIds = [];
-		state.ruleForm.duplicateTitle = null;
-	}
-};
 const historyOrderRef = ref<RefType>(); // 历史工单组件
 const citizenPortraitRef = ref<RefType>(); // 市民画像组件
 // 查询历史工单 和市民画像