Ver código fonte

reactor:随手拍对接;

zhangchong 4 meses atrás
pai
commit
ea1917bf25

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

@@ -362,4 +362,14 @@ export const orderComplement = (data: object) => {
 		method: 'post',
 		data,
 	});
+};
+/**
+ * @description 查询流转到坐席的次数
+ * @param {string} id
+ */
+export const orderTransferCount = (id: string) => {
+	return request({
+		url: `/api/v1/Order/count-of-flow-to-seat/${id}`,
+		method: 'get',
+	});
 };

+ 17 - 0
src/api/snapshot/statistics.ts

@@ -0,0 +1,17 @@
+/*
+ * @Author: zc
+ * @description 随手拍-统计查询
+ */
+import request from '@/utils/request';
+/**
+ * @description 获取网格员回复合计
+ * @param {object} params
+ */
+export const getGridReplyCount = (params?: object) =>{
+	return  request({
+		url: '/api/v1/SnapshotOrder/guider/reply',
+		method: 'get',
+		params,
+	});
+}
+

+ 41 - 11
src/components/OrderDetail/index.vue

@@ -22,7 +22,13 @@
 	>
 		<template #header>
 			<el-tabs v-model="state.activeName" @tab-change="handleClick">
-				<el-tab-pane :name="item.value" v-for="item in state.tabPaneList" :key="item.value" :label="item.label" :disabled="state.loading"></el-tab-pane>
+				<el-tab-pane
+					:name="item.value"
+					v-for="item in state.tabPaneList"
+					:key="item.value"
+					:label="item.label"
+					:disabled="state.loading"
+				></el-tab-pane>
 			</el-tabs>
 		</template>
 		<!-- 工单详情 -->
@@ -303,7 +309,14 @@
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" v-if="state.ruleForm.sendBackOpinion">
 								<el-form-item label="退回意见" class="formatted-text"> {{ state.ruleForm.sendBackOpinion }} </el-form-item>
 							</el-col>
-							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" v-if="state.ruleForm.isReTransact && ['ZiGong','LuZhou'].includes(themeConfig.appScope)">
+							<el-col
+								:xs="24"
+								:sm="24"
+								:md="24"
+								:lg="24"
+								:xl="24"
+								v-if="state.ruleForm.isReTransact && ['ZiGong', 'LuZhou'].includes(themeConfig.appScope)"
+							>
 								<el-form-item label="市件重办"> <span class="color-danger">不满意重办:经12345回访,要求该工单进行重办</span></el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" v-if="state.ruleForm.sendBackRefuseOpinion">
@@ -476,7 +489,14 @@
 								{{ item.orgProcessingResults?.value }}
 							</el-form-item>
 						</el-col>
-						<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12" v-if="item.orgNoSatisfiedReason?.length && item.orgProcessingResults?.value === '不满意'">
+						<el-col
+							:xs="24"
+							:sm="24"
+							:md="24"
+							:lg="12"
+							:xl="12"
+							v-if="item.orgNoSatisfiedReason?.length && item.orgProcessingResults?.value === '不满意'"
+						>
 							<el-form-item label="不满意原因">
 								{{ item.orgNoSatisfiedReason?.map((item) => item.value).join(',') }}
 							</el-form-item>
@@ -508,7 +528,7 @@
 		</div>
 		<!--  地图信息  -->
 		<div v-if="state.activeName === '5'">
-			<map-view ref="mapViewRef"/>
+			<map-view ref="mapViewRef" />
 		</div>
 		<template #footer>
 			<span class="dialog-footer">
@@ -674,6 +694,8 @@
 			</el-form>
 		</template>
 	</process-detail>
+	<!--  自贡随手拍办理  -->
+	<z-g-s-s-p-process ref="zgSspProcessRef" @orderProcessSuccess="orderProcessSuccess" />
 </template>
 
 <script setup lang="ts" name="orderDetail">
@@ -707,6 +729,7 @@ const MarketDetail = defineAsyncComponent(() => import('@/views/business/order/c
 const DelayApply = defineAsyncComponent(() => import('@/views/business/delay/components/Delay-apply.vue')); // 延期申请
 const ProcessDetail = defineAsyncComponent(() => import('@/components/ProcessDetail/index.vue')); // 流程明细
 const MapView = defineAsyncComponent(() => import('@/components/OrderDetail/Map-view.vue')); // 地图标点
+const ZGSSPProcess = defineAsyncComponent(() => import('@/components/ProcessAudit/ZGSSPProcess.vue')); // 自贡随手拍办理流程
 
 type ButtonType = '' | 'default' | 'success' | 'warning' | 'info' | 'text' | 'primary' | 'danger';
 const props = defineProps({
@@ -841,7 +864,7 @@ const getPortraitList = async () => {
 };
 // 查询地图信息
 const mapViewRef = ref<RefType>();
-const getMapInfo = async (id:string) => {
+const getMapInfo = async (id: string) => {
 	state.loading = true;
 	try {
 		const { result } = await orderDetail(id);
@@ -849,7 +872,7 @@ const getMapInfo = async (id:string) => {
 		mapViewRef.value.addMarker(result);
 		state.loading = false;
 	} catch (error) {
-		console.log(error)
+		console.log(error);
 		state.loading = false;
 		state.dialogVisible = false;
 	}
@@ -868,7 +891,8 @@ const openDialog = (val: any) => {
 			{
 				label: '工单详情',
 				value: '0',
-			},{
+			},
+			{
 				label: '历史工单',
 				value: '1',
 			},
@@ -934,7 +958,7 @@ const handleClick = (val: string) => {
 			getCopyOrder();
 			break;
 		case '5': // 地图信息
-			getMapInfo(state.orderId)
+			getMapInfo(state.orderId);
 			break;
 		default:
 			getOrderDetail(state.orderId);
@@ -999,17 +1023,18 @@ const onRecordNew = () => {
 };
 // 申请延期
 const delayApplyRef = ref<RefType>();
-const onDelayApply = ()=>{
+const onDelayApply = () => {
 	const params = {
 		id: state.ruleForm.workflowId,
 		orderDetail: state.ruleForm,
 	};
 	delayApplyRef.value.openDialog(params);
-}
+};
 // 提交流程
 const lzProcessRef = ref<RefType>();
 const processAuditRef = ref<RefType>(); // 处理流程
 const zgProcessRef = ref<RefType>();
+const zgSspProcessRef = ref<RefType>();
 const onSubmit = (val: string, annexName: string = '办理附件', classify: string = '办理附件', inputPlaceholder = '办理意见') => {
 	if (['工单办理', '工单退回'].includes(val) && state.ruleForm.isReturnUnderApproval) {
 		ElMessage.warning(`该工单存在正在审核中的退回,不能办理!`);
@@ -1028,7 +1053,12 @@ const onSubmit = (val: string, annexName: string = '办理附件', classify: str
 	};
 	const zgLzActions = ['工单办理', '工单代办', '工单退回'];
 	if (['ZiGong'].includes(themeConfig.value.appScope) && zgLzActions.includes(val)) {
-		zgProcessRef.value.openDialog(params);
+		if (state.ruleForm.sourceChannelCode === 'ZGSSP') {
+			// 随手拍工单办理
+			zgSspProcessRef.value.openDialog(params);
+		} else {
+			zgProcessRef.value.openDialog(params);
+		}
 	} else if (['LuZhou'].includes(themeConfig.value.appScope) && zgLzActions.includes(val)) {
 		lzProcessRef.value.openDialog(params);
 	} else {

+ 5 - 5
src/components/ProcessAudit/LZProcess.vue

@@ -886,7 +886,7 @@ const countersignDisabled = computed(() => {
 });
 // 是否发起会签
 const changeStartCountersign = (val: boolean) => {
-/*	if (!val) {
+	/*	if (!val) {
 		// 如果不能会签清空办理对象
 		state.ruleForm.nextHandlers = [];
 		ruleFormRef.value?.resetFields('nextHandlers');
@@ -1272,7 +1272,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 			case '工单受理':
 				const request = {
 					data: { orderId: state.orderDetail.id, ...submitObj, crossSteps },
-					workflow: { ...submitObj, files: handleFiles.value },
+					workflow: { ...submitObj, files: handleFiles.value,currentTag:currentParams.value.currentTag },
 				};
 				orderStartFlow(request)
 					.then(() => {
@@ -1286,7 +1286,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 			case '工单代办': // 工单代办流程
 				const requestHandle = {
 					data: { orderId: state.orderDetail.id, ...submitObj, crossSteps },
-					workflow: { ...submitObj, files: handleFiles.value },
+					workflow: { ...submitObj, files: handleFiles.value,currentTag:currentParams.value.currentTag },
 				};
 				orderHandle(requestHandle)
 					.then(() => {
@@ -1297,7 +1297,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 					});
 				break;
 			case '工单退回':
-				const requestReturn = { ...submitObj, files: handleFiles.value };
+				const requestReturn = { ...submitObj, files: handleFiles.value, orderId: state.orderDetail.id };
 				orderPrevious(requestReturn)
 					.then(() => {
 						afterSubmit('orderProcessSuccess', true, '退回申请成功');
@@ -1309,7 +1309,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 			default: // 默认工单办理
 				const requestDefault = {
 					data: { orderId: state.orderDetail.id, ...submitObj, crossSteps },
-					workflow: { ...submitObj, files: handleFiles.value },
+					workflow: { ...submitObj, files: handleFiles.value,currentTag:currentParams.value.currentTag },
 				};
 				orderHandle(requestDefault)
 					.then(() => {

+ 4 - 4
src/components/ProcessAudit/YBProcess.vue

@@ -1047,7 +1047,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 			case '工单受理':
 				const request = {
 					data: { orderId: state.orderDetail.id, ...submitObj,crossSteps },
-					workflow: { ...submitObj, files: handleFiles.value },
+					workflow: { ...submitObj, files: handleFiles.value,currentTag:currentParams.value.currentTag },
 				};
 				orderStartFlow(request)
 					.then(() => {
@@ -1058,7 +1058,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 					});
 				break;
 			case '工单退回':
-				orderPrevious({ ...submitObj, files: handleFiles.value })
+				orderPrevious({ ...submitObj, files: handleFiles.value,orderId: state.orderDetail.id })
 					.then(() => {
 						afterSubmit('orderProcessSuccess', true, '退回申请成功');
 					})
@@ -1070,7 +1070,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 			case '工单代办': // 工单代办流程
 				const requestHandle = {
 					data: { orderId: state.orderDetail.id, ...submitObj, crossSteps },
-					workflow: { ...submitObj, files: handleFiles.value },
+					workflow: { ...submitObj, files: handleFiles.value,currentTag:currentParams.value.currentTag },
 				};
 				orderHandle(requestHandle)
 					.then(() => {
@@ -1083,7 +1083,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 			default: // 默认工单办理
 				const requestDefault = {
 					data: { orderId: state.orderDetail.id, ...submitObj, crossSteps },
-					workflow: { ...submitObj, files: handleFiles.value },
+					workflow: { ...submitObj, files: handleFiles.value,currentTag:currentParams.value.currentTag },
 				};
 				orderHandle(requestDefault)
 					.then(() => {

+ 4 - 4
src/components/ProcessAudit/ZGProcess.vue

@@ -1422,7 +1422,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 			case '工单受理':
 				const request = {
 					data: { orderId: state.orderDetail.id, ...submitObj, crossSteps, secondaryOrgs: secondaryOrgs.value, copys: copys.value },
-					workflow: { ...submitObj, files: handleFiles.value },
+					workflow: { ...submitObj, files: handleFiles.value,currentTag:currentParams.value.currentTag },
 				};
 				orderStartFlow(request)
 					.then(() => {
@@ -1436,7 +1436,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 			case '工单代办': // 工单代办流程
 				const requestHandle = {
 					data: { orderId: state.orderDetail.id, ...submitObj, crossSteps, secondaryOrgs: secondaryOrgs.value, copys: copys.value },
-					workflow: { ...submitObj, files: handleFiles.value },
+					workflow: { ...submitObj, files: handleFiles.value,currentTag:currentParams.value.currentTag },
 				};
 				orderHandle(requestHandle)
 					.then(() => {
@@ -1447,7 +1447,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 					});
 				break;
 			case '工单退回':
-				const requestReturn = { ...submitObj, files: handleFiles.value };
+				const requestReturn = { ...submitObj, files: handleFiles.value,orderId: state.orderDetail.id };
 				orderPrevious(requestReturn)
 					.then(() => {
 						afterSubmit('orderProcessSuccess', true, '退回申请成功');
@@ -1459,7 +1459,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 			default: // 默认工单办理
 				const requestDefault = {
 					data: { orderId: state.orderDetail.id, ...submitObj, crossSteps, secondaryOrgs: secondaryOrgs.value, copys: copys.value },
-					workflow: { ...submitObj, files: handleFiles.value },
+					workflow: { ...submitObj, files: handleFiles.value,currentTag:currentParams.value.currentTag },
 				};
 				orderHandle(requestDefault)
 					.then(() => {

+ 21 - 8
src/components/ProcessAudit/ZGSSPProcess.vue

@@ -15,8 +15,8 @@
 		:append-to-body="!isOrderAccept"
 		:modal="!isOrderAccept"
 	>
-		<template  #header="{ close, titleId, titleClass }">
-			<h4 :id="titleId" :class="titleClass">{{state.dialogTitle}}<el-text tag="b" type="danger" size="large" class="ml10">随手拍</el-text></h4>
+		<template #header="{ close, titleId, titleClass }">
+			<h4 :id="titleId" :class="titleClass">{{ state.dialogTitle }}<el-text tag="b" type="danger" size="large" class="ml10">随手拍</el-text></h4>
 		</template>
 		<el-form :model="state.ruleForm" label-width="110px" ref="ruleFormRef" v-loading="state.loading">
 			<slot name="header"></slot>
@@ -533,7 +533,7 @@
 
 <script setup lang="ts" name="processApproval">
 import { computed, defineAsyncComponent, nextTick, reactive, ref, watch } from 'vue';
-import { ElMessage, FormInstance } from 'element-plus';
+import { ElMessage, ElMessageBox, FormInstance } from 'element-plus';
 import other from '@/utils/other';
 import { storeToRefs } from 'pinia';
 import { commonEnum } from '@/utils/constants';
@@ -546,6 +546,7 @@ import {
 	orderReturnParams,
 	orderStartFlow,
 	orderTimeConfig,
+	orderTransferCount,
 } from '@/api/business/order';
 import { orderPrevious, workflowNextSteps, workflowNextStepsByOrder, workflowNextStepsByOrderInstead } from '@/api/system/workflow';
 import { useAppConfig } from '@/stores/appConfig';
@@ -588,7 +589,7 @@ const state = reactive<any>({
 		transpondCityName: null, // 市州转办信息
 		transpondCityId: null, // 市州转办信息id
 		transpondCityValue: null, // 市州转办信息
-		orderAssignMode: 0, // 派单类型默认逐级派单
+		orderAssignMode: 2, // 派单类型默认主协办
 		copyToHandlers: [], // 抄送对象
 		isDirect: true, // 是否直派 默认是
 	},
@@ -663,6 +664,18 @@ const openDialog = async (val: any) => {
 				handleResult(nextResponse);
 				break;
 		}
+		if (AppConfigInfo.value.snapshot && state.orderDetail.industryName === '安全隐患') {
+			orderTransferCount(state.orderDetail.id).then((res: any) => {
+				if (res.result < 1) {
+					ElMessageBox.alert('建议转网格员处理。', '提示', {
+						confirmButtonText: '确定',
+						draggable: true,
+						showClose: false,
+						type:'info'
+					});
+				}
+			});
+		}
 		await nextTick(() => {
 			restForm(ruleFormRef.value);
 		});
@@ -1422,7 +1435,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 			case '工单受理':
 				const request = {
 					data: { orderId: state.orderDetail.id, ...submitObj, crossSteps, secondaryOrgs: secondaryOrgs.value, copys: copys.value },
-					workflow: { ...submitObj, files: handleFiles.value },
+					workflow: { ...submitObj, files: handleFiles.value,currentTag:currentParams.value.currentTag },
 				};
 				orderStartFlow(request)
 					.then(() => {
@@ -1436,7 +1449,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 			case '工单代办': // 工单代办流程
 				const requestHandle = {
 					data: { orderId: state.orderDetail.id, ...submitObj, crossSteps, secondaryOrgs: secondaryOrgs.value, copys: copys.value },
-					workflow: { ...submitObj, files: handleFiles.value },
+					workflow: { ...submitObj, files: handleFiles.value,currentTag:currentParams.value.currentTag },
 				};
 				orderHandle(requestHandle)
 					.then(() => {
@@ -1447,7 +1460,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 					});
 				break;
 			case '工单退回':
-				const requestReturn = { ...submitObj, files: handleFiles.value };
+				const requestReturn = { ...submitObj, files: handleFiles.value, orderId: state.orderDetail.id };
 				orderPrevious(requestReturn)
 					.then(() => {
 						afterSubmit('orderProcessSuccess', true, '退回申请成功');
@@ -1459,7 +1472,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 			default: // 默认工单办理
 				const requestDefault = {
 					data: { orderId: state.orderDetail.id, ...submitObj, crossSteps, secondaryOrgs: secondaryOrgs.value, copys: copys.value },
-					workflow: { ...submitObj, files: handleFiles.value },
+					workflow: { ...submitObj, files: handleFiles.value,currentTag:currentParams.value.currentTag },
 				};
 				orderHandle(requestDefault)
 					.then(() => {

+ 4 - 4
src/components/ProcessAudit/index.vue

@@ -1410,7 +1410,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 			case '工单受理':
 				const request = {
 					data: { orderId: state.orderDetail.id, ...submitObj,crossSteps },
-					workflow: { ...submitObj, files: handleFiles.value },
+					workflow: { ...submitObj, files: handleFiles.value,currentTag:currentParams.value.currentTag },
 				};
 				orderStartFlow(request)
 					.then(() => {
@@ -1602,7 +1602,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 					});
 				break;
 			case '工单退回':
-				orderPrevious({ ...submitObj, files: handleFiles.value })
+				orderPrevious({ ...submitObj, files: handleFiles.value,orderId: state.orderDetail.id })
 					.then(() => {
 						afterSubmit('orderProcessSuccess', true, '退回申请成功');
 					})
@@ -1614,7 +1614,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 			case '工单代办': // 工单代办流程
 				const requestHandle = {
 					data: { orderId: state.orderDetail.id, ...submitObj, crossSteps },
-					workflow: { ...submitObj, files: handleFiles.value },
+					workflow: { ...submitObj, files: handleFiles.value,currentTag:currentParams.value.currentTag },
 				};
 				orderHandle(requestHandle)
 					.then(() => {
@@ -1719,7 +1719,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 			default: // 默认工单办理
 				const requestDefault = {
 					data: { orderId: state.orderDetail.id, ...submitObj, crossSteps },
-					workflow: { ...submitObj, files: handleFiles.value },
+					workflow: { ...submitObj, files: handleFiles.value,currentTag:currentParams.value.currentTag },
 				};
 				orderHandle(requestDefault)
 					.then(() => {

+ 92 - 0
src/views/snapshot/handle/components/Order-mark-add.vue

@@ -0,0 +1,92 @@
+<template>
+	<el-dialog v-model="state.dialogVisible" width="40%" draggable title="标注" destroy-on-close append-to-body @close="close">
+		<el-form :model="state.ruleForm" label-width="150px" ref="ruleFormRef">
+			<el-form-item label="是否标记为安全生产" prop="gender" :rules="[{ required: true, message: '请选择是否标记为安全生产', trigger: 'change' }]">
+				<el-radio-group v-model="state.ruleForm.gender">
+					<el-radio :value="true">是</el-radio>
+					<el-radio :value="false">否</el-radio>
+				</el-radio-group>
+			</el-form-item>
+			<el-form-item label="备注" prop="txtHelpRemarks" :rules="[{ required: false, message: '请填写备注', trigger: 'blur' }]">
+				<el-input
+					type="textarea"
+					:autosize="{ minRows: 6, maxRows: 10 }"
+					v-model="state.ruleForm.txtHelpRemarks"
+					placeholder="请填写备注"
+					clearable
+				></el-input>
+			</el-form-item>
+		</el-form>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="closeDialog" class="default-button">取 消</el-button>
+				<el-button type="primary" @click="onSubmit(ruleFormRef)" :loading="loading">确 定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+
+<script setup lang="ts">
+import { reactive, ref } from 'vue';
+import { ElMessage, FormInstance } from 'element-plus';
+import { throttle } from '@/utils/tools';
+import { addAreaUser, baseAreaUser } from '@/api/snapshot/config';
+// 定义子组件向父组件传值/事件
+const emit = defineEmits(['updateList']);
+
+// 定义变量内容
+const state = reactive<any>({
+	dialogVisible: false,
+	ruleForm: {
+		systemAreaId: null, // 所属区域
+		systemAreaName: null, // 所属区域名称
+		street: null, // 所属镇/街
+		name: null, // 姓名
+		phoneNumber: null, // 联系方式
+		gender: null,
+	},
+	ids: [],
+});
+let loading = ref<boolean>(false); // 加载状态
+// 打开弹窗
+const ruleFormRef = ref<RefType>();
+const openDialog = (val: any) => {
+	state.ids = val;
+	console.log(val, '11');
+	state.dialogVisible = true;
+};
+// 关闭弹窗
+const closeDialog = () => {
+	state.dialogVisible = false;
+};
+const close = () => {
+	ruleFormRef.value?.resetFields();
+	ruleFormRef.value?.resetFields();
+};
+// 新增
+const onSubmit = throttle(async (formEl: FormInstance | undefined) => {
+	if (!formEl) return;
+	await formEl.validate((valid: boolean) => {
+		if (!valid) return;
+		/*	loading.value = true;
+		addAreaUser(state.ruleForm)
+			.then(() => {
+				ElMessage({
+					message: '操作成功',
+					type: 'success',
+				});
+				emit('updateList');
+			})
+			.catch(() => {})
+			.finally(() => {
+				loading.value = false;
+				closeDialog();
+			});*/
+	});
+}, 300);
+// 暴露变量
+defineExpose({
+	openDialog,
+	closeDialog,
+});
+</script>

+ 125 - 0
src/views/snapshot/handle/components/Order-mark-edit.vue

@@ -0,0 +1,125 @@
+<template>
+	<el-dialog v-model="state.dialogVisible" width="50%" draggable title="工单标注修改" destroy-on-close append-to-body @close="close">
+		<el-form :model="state.ruleForm" label-width="100px" ref="ruleFormRef">
+			<el-row :gutter="10">
+				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+					<el-form-item label="工单标题">
+						<el-input v-model="state.ruleForm.street" readonly></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+					<el-form-item label="所属区域" prop="systemAreaId" :rules="[{ required: false, message: '请选择所属区域', trigger: 'change' }]">
+						<el-cascader
+							:options="areaOptions"
+							class="w100"
+							@change="selectArea"
+							ref="areaRef"
+							filterable
+							:props="{
+								label: 'areaName',
+								value: 'id',
+								checkStrictly: true,
+								emitPath: false,
+							}"
+							clearable
+							placeholder="请选择所属区域"
+							v-model="state.ruleForm.systemAreaId"
+						/>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="closeDialog" class="default-button">取 消</el-button>
+				<el-button type="primary" @click="onSubmit(ruleFormRef)" :loading="loading">确 定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+
+<script setup lang="ts">
+import { reactive, ref } from 'vue';
+import { ElMessage, FormInstance } from 'element-plus';
+import { throttle } from '@/utils/tools';
+import { addAreaUser, baseAreaUser } from '@/api/snapshot/config';
+// 定义子组件向父组件传值/事件
+const emit = defineEmits(['updateList']);
+
+// 定义变量内容
+const state = reactive<any>({
+	dialogVisible: false,
+	ruleForm: {
+		systemAreaId: null, // 所属区域
+		systemAreaName: null, // 所属区域名称
+		street: null, // 所属镇/街
+		name: null, // 姓名
+		phoneNumber: null, // 联系方式
+		gender: 1, // 性别
+	},
+});
+let loading = ref<boolean>(false); // 加载状态
+// 打开弹窗
+const ruleFormRef = ref<RefType>();
+const openDialog = async () => {
+	await getBaseData();
+	try {
+		state.dialogVisible = true;
+	} catch (error) {
+		console.log(error);
+	}
+};
+// 关闭弹窗
+const closeDialog = () => {
+	state.dialogVisible = false;
+};
+const close = () => {
+	ruleFormRef.value?.resetFields();
+	ruleFormRef.value?.resetFields();
+};
+// 选择区域
+const areaRef = ref<RefType>();
+const selectArea = (val: any) => {
+	const currentNode = areaRef.value?.getCheckedNodes()[0];
+	if (currentNode) {
+		state.ruleForm.systemAreaName = currentNode.label;
+	} else {
+		state.ruleForm.systemAreaName = null;
+	}
+};
+// 新增
+const onSubmit = throttle(async (formEl: FormInstance | undefined) => {
+	if (!formEl) return;
+	await formEl.validate((valid: boolean) => {
+		if (!valid) return;
+		loading.value = true;
+		addAreaUser(state.ruleForm)
+			.then(() => {
+				ElMessage({
+					message: '操作成功',
+					type: 'success',
+				});
+				emit('updateList');
+			})
+			.catch(() => {})
+			.finally(() => {
+				loading.value = false;
+				closeDialog();
+			});
+	});
+}, 300);
+const areaOptions = ref<EmptyArrayType>([]);
+const getBaseData = async () => {
+	try {
+		const { result } = await baseAreaUser();
+		areaOptions.value = result.area;
+	} catch (e) {
+		console.log(e);
+	}
+};
+// 暴露变量
+defineExpose({
+	openDialog,
+	closeDialog,
+});
+</script>

+ 302 - 0
src/views/snapshot/handle/orderMark.vue

@@ -0,0 +1,302 @@
+<template>
+	<div class="snapshot-statistics-order-mark-container layout-padding">
+		<div class="layout-padding-auto layout-padding-view pd20">
+			<vxe-grid v-bind="gridOptions" ref="gridRef" @checkbox-all="selectAllChangeEvent" @checkbox-change="selectChangeEvent">
+				<template #form>
+					<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent :disabled="gridOptions.loading">
+						<el-form-item label="标注状态" prop="Status">
+							<el-radio-group v-model="state.queryParams.Status" @change="handleQuery">
+								<el-radio :value="0">待标注</el-radio>
+								<el-radio :value="1">已标注</el-radio>
+								<el-radio :value="3">全部</el-radio>
+							</el-radio-group>
+						</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="Title">
+							<el-input v-model="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="drawer = true" class="default-button"> <SvgIcon name="ele-Search" class="mr5" />更多查询</el-button>
+						</el-form-item>
+					</el-form>
+				</template>
+				<template #toolbar_buttons>
+					<el-button type="primary" @click="onAdd" v-auth="'snapshot:handle:orderMark:add'" :disabled="isChecked" :loading="state.loading"
+						><SvgIcon name="ele-Plus" class="mr5" />添加标注<span v-if="checkTable.length">({{ checkTable.length }})</span>
+					</el-button>
+				</template>
+				<template #order_detail="{ row }">
+					<order-detail :order="row" @updateList="queryList">{{ row.title }}</order-detail>
+				</template>
+				<template #pager>
+					<pagination
+						@pagination="queryList"
+						:total="state.total"
+						v-model:current-page="state.queryParams.PageIndex"
+						v-model:page-size="state.queryParams.PageSize"
+						:disabled="state.loading"
+					/>
+				</template>
+			</vxe-grid>
+		</div>
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px">
+				<el-form-item label="联系电话" prop="IndustryName">
+					<el-input
+						v-model="state.queryParams.IndustryName"
+						placeholder="请填写联系电话"
+						clearable
+						@keyup.enter="handleQuery"
+						class="keyword-input"
+					/>
+				</el-form-item>
+				<el-form-item label="来电人" prop="IndustryName">
+					<el-input v-model="state.queryParams.IndustryName" placeholder="请填写来电人" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				</el-form-item>
+				<el-form-item label="标注人" prop="IndustryName">
+					<el-input v-model="state.queryParams.IndustryName" placeholder="请填写标注人" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				</el-form-item>
+				<el-form-item label="标注类型" prop="IndustryName">
+					<el-input
+						v-model="state.queryParams.IndustryName"
+						placeholder="请填写标注类型"
+						clearable
+						@keyup.enter="handleQuery"
+						class="keyword-input"
+					/>
+				</el-form-item>
+				<el-form-item label="标注时间>" prop="bzTime">
+					<el-date-picker
+						v-model="state.queryParams.bzTime"
+						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>
+		<!-- 添加标注 -->
+		<order-mark-add ref="orderMarkAddRef" @updateList="queryList" />
+	</div>
+</template>
+
+<script lang="tsx" setup name="snapshotHandleOrderMark">
+import { computed, defineAsyncComponent, onMounted, reactive, ref } from 'vue';
+import { FormInstance } from 'element-plus';
+import { getClueList } from '@/api/snapshot/config';
+import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
+
+// 引入组件
+const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
+const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
+const OrderMarkAdd = defineAsyncComponent(() => import('@/views/snapshot/handle/components/Order-mark-add.vue')); // 添加标注
+
+// 定义变量内容
+const state = reactive<any>({
+	loading: false,
+	queryParams: {
+		// 查询参数
+		PageIndex: 1,
+		PageSize: 20,
+		CaseName: null, // 线索名称
+		IndustryName: null, // 行业类型
+		bzTime: [], // 标注时间
+	},
+	total: 0, // 总条数
+});
+
+const gridOptions = reactive<any>({
+	loading: false,
+	border: true,
+	showOverflow: true,
+	columnConfig: {
+		resizable: true,
+	},
+	scrollY: {
+		enabled: true,
+		gt: 100,
+	},
+	toolbarConfig: {
+		zoom: true,
+		custom: true,
+		refresh: {
+			queryMethod: () => {
+				handleQuery();
+			},
+		},
+		slots: {
+			buttons: 'toolbar_buttons',
+		},
+	},
+	customConfig: {
+		storage: true,
+	},
+	id: 'snapshotReSendList',
+	rowConfig: { isHover: true, height: 30, isCurrent: true, useKey: true },
+	height: 'auto',
+	columns: [
+		{ type: 'checkbox', width: 50, align: 'center' },
+		{
+			field: 'citizenReadPackAmountTxt',
+			title: '工单编码',
+			width: 140,
+		},
+		{
+			field: 'citizenReadPackAmountTxt',
+			title: '受理内容',
+			width: 300,
+		},
+		{
+			field: 'title',
+			title: '工单标题',
+			slots: { default: 'order_detail' },
+			minWidth: 300,
+		},
+		{
+			field: 'statusText',
+			title: '工单状态',
+			width: 110,
+			slots: {
+				default: 'statusText',
+			},
+		},
+		{
+			field: 'citizenReadPackAmountTxt',
+			title: '来源渠道',
+			width: 110,
+		},
+		{
+			field: 'no',
+			title: '工单编码',
+			width: 140,
+		},
+		{
+			field: 'citizenReadPackAmountTxt',
+			title: '受理时间',
+			formatter: 'formatDate',
+			width: 160,
+		},
+		{
+			field: 'displayOrder',
+			title: '区域',
+			width: 150,
+		},
+		{
+			field: 'displayOrder',
+			title: '标注状态',
+			width: 100,
+		},
+		{
+			field: 'no',
+			title: '回复内容',
+			minWidth: 200,
+		},
+		{
+			field: 'citizenReadPackAmountTxt',
+			title: '回复时间',
+			formatter: 'formatDate',
+			width: 160,
+		},
+		{
+			field: 'networkENumber',
+			title: '编号',
+			width: 200,
+		},
+		{
+			field: 'guiderReadPackAmountTxt',
+			title: '标注人员',
+			width: 120,
+		},
+		{
+			field: 'citizenReadPackAmountTxt',
+			title: '标注时间',
+			formatter: 'formatDate',
+			width: 160,
+		},
+	],
+	data: [],
+});
+/** 搜索按钮操作 节流操作 */
+const handleQuery = () => {
+	state.queryParams.PageIndex = 1;
+	queryList();
+};
+// 获取参数列表
+const queryList = () => {
+	state.loading = true;
+	gridOptions.loading = true;
+	getClueList(state.queryParams)
+		.then((res) => {
+			state.loading = false;
+			gridOptions.data = res.result.items ?? [];
+			state.total = res.result.total ?? 0;
+			gridRef.value.clearCheckboxRow();
+			checkTable.value = [];
+			gridOptions.loading = false;
+		})
+		.finally(() => {
+			gridRef.value.clearCheckboxRow();
+			checkTable.value = [];
+			state.loading = false;
+			gridOptions.loading = false;
+		});
+};
+// 重置表单
+const drawerRuleFormRef = ref<RefType>();
+const ruleFormRef = ref<any>(null); // 表单ref
+const drawer = ref(false);
+const resetQuery = (formEl: FormInstance | undefined) => {
+	if (!formEl) return;
+	formEl.resetFields();
+	ruleFormRef.value?.resetFields();
+	queryList();
+};
+
+const checkTable = ref<EmptyArrayType>([]);
+const gridRef = ref<RefType>();
+const selectAllChangeEvent = ({ checked }) => {
+	if (gridRef.value) {
+		const records = gridRef.value.getCheckboxRecords();
+		checkTable.value = records;
+		console.log(checked ? '所有勾选事件' : '所有取消事件', records);
+	}
+};
+
+const selectChangeEvent = ({ checked }) => {
+	if (gridRef.value) {
+		const records = gridRef.value.getCheckboxRecords();
+		checkTable.value = records;
+		console.log(checked ? '勾选事件' : '取消事件', records);
+	}
+};
+const isChecked = computed(() => {
+	return !Boolean(checkTable.value.length);
+});
+
+// 添加标注
+const orderMarkAddRef = ref<RefType>();
+const onAdd = () => {
+	const ids = checkTable.value.map((item: any) => item.id);
+	orderMarkAddRef.value.openDialog(ids);
+};
+// 页面加载时
+onMounted(() => {
+	queryList();
+});
+</script>
+
+layout/routerView/parer

+ 240 - 0
src/views/snapshot/statistics/gridReply.vue

@@ -0,0 +1,240 @@
+<template>
+	<div class="snapshot-statistics-grid-reply-container layout-padding">
+		<div class="layout-padding-auto layout-padding-view pd20">
+			<vxe-grid v-bind="gridOptions" ref="gridRef">
+				<template #form>
+					<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent :disabled="gridOptions.loading">
+						<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="Title">
+							<el-input v-model="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="drawer = true" class="default-button"> <SvgIcon name="ele-Search" class="mr5" />更多查询</el-button>
+						</el-form-item>
+					</el-form>
+				</template>
+				<template #order_detail="{ row }">
+					<order-detail :order="row" @updateList="queryList">{{ row.title }}</order-detail>
+				</template>
+				<template #pager>
+					<pagination
+						@pagination="queryList"
+						:total="state.total"
+						v-model:current-page="state.queryParams.PageIndex"
+						v-model:page-size="state.queryParams.PageSize"
+						:disabled="state.loading"
+					/>
+				</template>
+			</vxe-grid>
+		</div>
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px">
+				<el-form-item label="网格员姓名" prop="GuiderName">
+					<el-input
+						v-model="state.queryParams.GuiderName"
+						placeholder="请填写网格员姓名"
+						clearable
+						@keyup.enter="handleQuery"
+						class="keyword-input"
+					/>
+				</el-form-item>
+				<el-form-item label="网格员电话" prop="GuiderPhoneNumber">
+					<el-input
+						v-model="state.queryParams.GuiderPhoneNumber"
+						placeholder="请填写网格员电话"
+						clearable
+						@keyup.enter="handleQuery"
+						class="keyword-input"
+					/>
+				</el-form-item>
+				<el-form-item label="编号" prop="NewtorkENumber">
+					<el-input v-model="state.queryParams.NewtorkENumber" placeholder="请填写编号" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				</el-form-item>
+				<el-form-item label="状态" prop="Satus">
+					<el-input v-model="state.queryParams.Satus" placeholder="请填写状态" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				</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>
+			<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="snapshotStatisticsGridReply">
+import { computed, defineAsyncComponent, onMounted, reactive, ref } from 'vue';
+import { FormInstance } from 'element-plus';
+import { getClueList } from '@/api/snapshot/config';
+import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
+import { getGridReplyCount } from '@/api/snapshot/statistics';
+import Other from '@/utils/other';
+
+// 引入组件
+const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
+const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
+
+// 定义变量内容
+const state = reactive<any>({
+	loading: false,
+	queryParams: {
+		// 查询参数
+		PageIndex: 1,
+		PageSize: 20,
+		No:null, // 工单编码
+		Title:null, // 工单编码
+		GuiderName:null, // 网格员姓名
+		GuiderPhoneNumber:null, // 网格员电话
+		NewtorkENumber:null, // 编号
+		slTime: [], // 受理时间
+		BeginCreationTime:null,
+		EndCreationTime:null,
+	},
+	total: 0, // 总条数
+});
+
+const gridOptions = reactive<any>({
+	loading: false,
+	border: true,
+	showOverflow: true,
+	columnConfig: {
+		resizable: true,
+	},
+	scrollY: {
+		enabled: true,
+		gt: 100,
+	},
+	toolbarConfig: {
+		zoom: true,
+		custom: true,
+		refresh: {
+			queryMethod: () => {
+				handleQuery();
+			},
+		},
+	},
+	customConfig: {
+		storage: true,
+	},
+	id: 'snapshotReSendList',
+	rowConfig: { isHover: true, height: 30, isCurrent: true, useKey: true },
+	height: 'auto',
+	columns: [
+		{
+			field: 'no',
+			title: '工单编码',
+			width: 140,
+		},
+		{
+			field: 'title',
+			title: '工单标题',
+			slots: { default: 'order_detail' },
+			minWidth: 200,
+		},
+		{
+			field: 'creationTime',
+			title: '受理时间',
+			formatter: 'formatDate',
+			width: 160,
+		},
+		{
+			field: 'county',
+			title: '区域',
+			width: 150,
+		},
+		{
+			field: 'replyResultTypeTxt',
+			title: '状态',
+			width: 100,
+		},
+		{
+			field: 'networkRemark',
+			title: '回复内容',
+			minWidth: 200,
+		},
+		{
+			field: 'replyDate',
+			title: '回复时间',
+			width: 160,
+			formatter: 'formatDate',
+		},
+		{
+			field: 'memberName',
+			title: '网格员姓名',
+			width: 120,
+		},
+		{
+			field: 'memberMobile',
+			title: '网格员电话',
+			width: 140,
+		},
+		{
+			field: 'networkENumber',
+			title: '编号',
+			width: 200,
+		},
+	],
+	data: [],
+});
+/** 搜索按钮操作 节流操作 */
+const handleQuery = () => {
+	state.queryParams.PageIndex = 1;
+	queryList();
+};
+const requestParams = ref<EmptyObjectType>({});
+// 获取参数列表
+const queryList = () => {
+	state.loading = true;
+	gridOptions.loading = true;
+	requestParams.value = Other.deepClone(state.queryParams);
+	requestParams.value.BeginCreationTime = state.queryParams.slTime === null ? null : state.queryParams.slTime[0]; // 受理时间
+	requestParams.value.EndCreationTime = state.queryParams.slTime === null ? null : state.queryParams.slTime[1];
+	Reflect.deleteProperty(requestParams.value, 'slTime'); // 删除无用的参数
+	getGridReplyCount(requestParams.value)
+		.then((res) => {
+			state.loading = false;
+			gridOptions.data = res.result.items ?? [];
+			state.total = res.result.total ?? 0;
+			gridOptions.loading = false;
+		})
+		.finally(() => {
+			state.loading = false;
+			gridOptions.loading = false;
+		});
+};
+// 重置表单
+const drawerRuleFormRef = ref<RefType>();
+const ruleFormRef = ref<any>(null); // 表单ref
+const drawer = ref(false);
+const resetQuery = (formEl: FormInstance | undefined) => {
+	if (!formEl) return;
+	formEl.resetFields();
+	ruleFormRef.value?.resetFields();
+	queryList();
+};
+
+// 页面加载时
+onMounted(() => {
+	queryList();
+});
+</script>
+
+layout/routerView/parer

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

@@ -691,6 +691,10 @@ const changeFocusEvent = (val: string[]) => {
 	state.ruleForm.acceptSms = val.includes('5'); // 受理短信
 	state.ruleForm.isThreePartyConference = val.includes('6'); // 三方通话
 	state.ruleForm.isSecret = val.includes('99'); // 是否保密
+	state.ruleForm.focusOnEventsName = state.focusOnEvents
+		.filter((item: any) => val.includes(item.dicDataValue))
+		.map((item: any) => item.dicDataName)
+		.join(',');
 	if (state.ruleForm.sourceChannelCode === 'ZGSSP') {
 		//如果 选择了自贡随手拍
 		if (state.ruleForm.isSecret) {

+ 19 - 4
src/views/todo/seats/accept/zgAccept.vue

@@ -431,6 +431,8 @@
 		<z-g-process ref="zgProcessRef" @orderProcessSuccess="onCancel" />
 		<!--  泸州流程办理  -->
 		<l-z-process ref="lzProcessRef" @orderProcessSuccess="onCancel" />
+		<!--  自贡随手拍办理  -->
+		<z-g-s-s-p-process ref="zgSspProcessRef" @orderProcessSuccess="onCancel" />
 	</div>
 </template>
 
@@ -452,7 +454,6 @@ import { removeDuplicate } from '@/utils/arrayOperation';
 import { Session } from '@/utils/storage';
 import { watchPausable } from '@vueuse/core';
 import { useThemeConfig } from '@/stores/themeConfig';
-import { getBaseData } from '@/api/system/user';
 
 // 引入组件
 const Knowledge = defineAsyncComponent(() => import('@/views/todo/seats/accept/Knowledge.vue')); // 知识库
@@ -468,6 +469,7 @@ const MapDialog = defineAsyncComponent(() => import('@/views/todo/seats/accept/M
 const HotSpotSelect = defineAsyncComponent(() => import('@/components/Hotspot/index.vue')); // 选择热点
 const ZGProcess = defineAsyncComponent(() => import('@/components/ProcessAudit/ZGProcess.vue')); // 自贡流程
 const LZProcess = defineAsyncComponent(() => import('@/components/ProcessAudit/LZProcess.vue')); // 泸州流程
+const ZGSSPProcess = defineAsyncComponent(() => import('@/components/ProcessAudit/ZGSSPProcess.vue')); // 自贡随手拍办理流程
 // 定义变量内容
 const storesThemeConfig = useThemeConfig();
 const { themeConfig } = storeToRefs(storesThemeConfig);
@@ -959,6 +961,7 @@ const canHandle = computed(() => {
 const processAuditRef = ref<RefType>();
 const zgProcessRef = ref<RefType>();
 const lzProcessRef = ref<RefType>();
+const zgSspProcessRef = ref<RefType>();
 const processOrder = (orderDetail: any, isAgent = false) => {
 	buttonLoading.value = false;
 	if (['ZiGong'].includes(themeConfig.value.appScope)) {
@@ -974,7 +977,11 @@ const processOrder = (orderDetail: any, isAgent = false) => {
 					annexName: '办理附件',
 				},
 			};
-			zgProcessRef.value.openDialog(params);
+			if(state.ruleForm.sourceChannelCode === 'ZGSSP'){ // 随手拍工单办理
+				zgSspProcessRef.value.openDialog(params);
+			}else{
+				zgProcessRef.value.openDialog(params);
+			}
 		} else {
 			if (orderDetail.workflowId) {
 				// 如果已经有流程id 说明已经发起过流程 先更新工单数据  直接调用工单办理
@@ -989,7 +996,11 @@ const processOrder = (orderDetail: any, isAgent = false) => {
 							annexName: '办理附件',
 						},
 					};
-					zgProcessRef.value.openDialog(params);
+					if(state.ruleForm.sourceChannelCode === 'ZGSSP'){ // 随手拍工单办理
+						zgSspProcessRef.value.openDialog(params);
+					}else{
+						zgProcessRef.value.openDialog(params);
+					}
 				});
 			} else {
 				// 如果没有流程id 说明没有发起过流程  调用工单受理
@@ -1003,7 +1014,11 @@ const processOrder = (orderDetail: any, isAgent = false) => {
 					},
 					orderDetail,
 				};
-				zgProcessRef.value.openDialog(params);
+				if(state.ruleForm.sourceChannelCode === 'ZGSSP'){ // 随手拍工单办理
+					zgSspProcessRef.value.openDialog(params);
+				}else{
+					zgProcessRef.value.openDialog(params);
+				}
 			}
 		}
 	} else if (['LuZhou'].includes(themeConfig.value.appScope)) {