Эх сурвалжийг харах

reactor:甄别,延期,终止流程优化;

zhangchong 4 сар өмнө
parent
commit
7a43f3f090

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

@@ -1001,8 +1001,8 @@ watch(
 	}
 );
 const countersignDisabled = computed(() => {
-	// 如果选择的办理对象超过1个就不不能修改发起会签  并且选择下一环节必须是部门节点
-	return state.ruleForm.nextHandlers.length !== 1 || selectNext.value.businessType !== 2;
+	// 如果选择的办理对象超过1个就不不能修改发起会签  并且选择下一环节必须是部门节点 并且是普通办理节点
+	return state.ruleForm.nextHandlers.length !== 1 && selectNext.value.businessType !== 2 && selectNext.value.stepType === 0;
 });
 // 是否发起会签
 const changeStartCountersign = (val: boolean) => {

+ 1 - 0
src/views/business/discern/components/Discern-edit.vue

@@ -310,6 +310,7 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 				files: handleFilesDiscern.value,
 				stepId: state.discernForm.stepId,
 				screenType: state.discernForm.screenType,
+				workflowId: state.workflowId,
 			},
 		};
 		discernUpdate(requestDiscern)

+ 6 - 10
src/views/business/terminate/apply.vue

@@ -140,16 +140,14 @@
 				<el-button @click="resetQuery(drawerRuleFormRef)" class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
 			</template>
 		</el-drawer>
-		<!-- 流程组件 -->
-		<process-audit ref="processAuditRef" @orderProcessSuccess="queryList" />
 		<!-- 审核记录 -->
 		<audit-record ref="auditRecordRef" />
 		<!-- 终止详情 -->
 		<terminate-detail ref="terminateDetailRef" @updateList="queryList" />
 		<!-- 重提申请 -->
-		<terminate-edit ref="terminateEditRef" @updateList="queryList" />
+		<terminate-edit ref="terminateEditRef" @orderProcessSuccess="queryList" />
 		<!-- 终止申请 -->
-		<terminate-apply ref="TerminateApplyRef" @updateList="queryList" />
+		<terminate-apply ref="terminateApplyRef" @orderProcessSuccess="queryList" />
 	</div>
 </template>
 <script setup lang="tsx" name="businessTerminateApply">
@@ -162,7 +160,6 @@ import { terminatesApplyList } from '@/api/business/terminate';
 
 // 引入组件
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
-const ProcessAudit = defineAsyncComponent(() => import('@/components/ProcessAudit/index.vue')); // 流程审批
 const AuditRecord = defineAsyncComponent(() => import('@/components/AuditRecord/index.vue')); // 流程明细
 const TerminateDetail = defineAsyncComponent(() => import('@/views/business/terminate/components/Terminate-detail.vue')); // 终止详情
 const TerminateEdit = defineAsyncComponent(() => import('@/views/business/terminate/components/Terminate-edit.vue')); // 重提申请
@@ -228,13 +225,12 @@ const auditRecordRef = ref<RefType>();
 const onProcessDetail = (row: any) => {
 	const params = {
 		dialogTitle: `终止记录 (${row?.title})`,
-		...row,
+		workflowId: row.orderTerminates[0].workflowId,
 	};
 	auditRecordRef.value.openDialog(params);
 };
 // 终止申请
-const processAuditRef = ref<RefType>();
-const TerminateApplyRef = ref<RefType>();
+const terminateApplyRef = ref<RefType>();
 const onApply = (row: any) => {
 	const params = {
 		id: row.id,
@@ -247,8 +243,7 @@ const onApply = (row: any) => {
 			annexName: '终止附件',
 		},
 	};
-	TerminateApplyRef.value.openDialog(params)
-	// processAuditRef.value.openDialog(params);
+	terminateApplyRef.value.openDialog(params)
 };
 // 终止详情
 const terminateDetailRef = ref<RefType>();
@@ -262,6 +257,7 @@ const onDetail = (row: any) => {
 const terminateEditRef = ref<RefType>();
 const onReApply = (row: any) => {
 	const req = {
+		workflowId: row.orderTerminates[0].workflowId,
 		id: row.orderTerminates[0].id,
 	};
 	terminateEditRef.value.openDialog(req);

+ 1 - 2
src/views/business/terminate/audit.vue

@@ -177,7 +177,6 @@ const state = reactive<any>({
 	total: 0, // 总数
 	areaOptions: [],
 });
-const columns = ref<any[]>([]);
 // 手动查询,将页码设置为1
 const handleQuery = () => {
 	state.queryParams.PageIndex = 1;
@@ -241,7 +240,7 @@ const auditRecordRef = ref<RefType>();
 const onProcessDetail = (row: any) => {
 	const params = {
 		dialogTitle: `终止记录 (${row?.order?.title})`,
-		...row,
+		workflowId: row.workflowId,
 	};
 	auditRecordRef.value.openDialog(params);
 };

+ 24 - 44
src/views/business/terminate/components/Terminate-apply.vue

@@ -20,15 +20,6 @@
 					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
 						<el-form-item label="工单标题"> {{ state.orderDetail.title }} </el-form-item>
 					</el-col>
-					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-						<el-form-item label="申请人"> {{ userInfos.name }} </el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-						<el-form-item label="申请部门"> {{ userInfos.orgName }} </el-form-item>
-					</el-col>
-					<el-col>
-						<el-form-item label="申请时间"> {{ formatDate(Date(), 'YYYY-mm-dd HH:MM:SS') }} </el-form-item>
-					</el-col>
 					<!-- 非退回流程都需要选择 -->
 					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
 						<el-form-item label="下一环节" prop="nextStepCode" :rules="[{ required: true, message: '请选择下一环节', trigger: 'change' }]">
@@ -96,23 +87,17 @@
 </template>
 
 <script setup lang="ts">
-import { computed, defineAsyncComponent, nextTick, reactive, ref, watch } from 'vue';
+import { computed, defineAsyncComponent, reactive, ref, watch } from 'vue';
 import { ElMessage, FormInstance } from 'element-plus';
 import other from '@/utils/other';
 import { commonEnum } from '@/utils/constants';
-import { transformFile } from '@/utils/tools';
-import { terminateDetail, terminateNextFlowParams, terminateStartFlow, terminateStartFlowParams } from '@/api/business/terminate';
-import { formatDate } from '@/utils/formatTime';
-import { useUserInfo } from '@/stores/userInfo';
-import { storeToRefs } from 'pinia';
+import {  terminateStartFlow, terminateStartFlowParams } from '@/api/business/terminate';
 
 // 引入组件
 const CommonAdvice = defineAsyncComponent(() => import('@/components/CommonAdvice/index.vue')); // 常用意见
 const AnnexList = defineAsyncComponent(() => import('@/components/AnnexList/index.vue')); // 附件列表
 // 定义子组件向父组件传值/事件
-const emit = defineEmits(['updateList', 'orderProcessFailed']);
-const storesUserInfo = useUserInfo();
-const { userInfos } = storeToRefs(storesUserInfo); // 用户信息
+const emit = defineEmits(['orderProcessSuccess', 'orderProcessFailed']);
 // 定义变量内容
 const state = reactive<any>({
 	dialogVisible: false, // 弹窗显示隐藏
@@ -143,8 +128,8 @@ const openDialog = async (val: any) => {
 		const { orderDetail } = val;
 		state.orderDetail = orderDetail ?? {}; // 工单详情
 		state.loading = false;
-	}catch (e){
-		console.log(e,'111');
+	} catch (e) {
+		console.log(e, '111');
 		state.loading = false;
 		state.dialogVisible = false;
 	}
@@ -237,10 +222,11 @@ const restForm = (formEl: FormInstance | undefined) => {
 const chooseAdviceTerminate = (item: any) => {
 	state.terminateForm.content += item.content;
 };
-const afterSubmit = (emitType?: 'updateList' | 'orderProcessFailed', showMessage?: boolean) => {
+const afterSubmit = (emitType?: 'orderProcessSuccess' | 'orderProcessFailed', showMessage?: boolean, message?: string) => {
 	state.loading = false;
 	closeDialog();
-	if (showMessage) ElMessage.success('终止申请成功');
+	const msg = message ?? '操作成功';
+	if (showMessage) ElMessage.success(msg);
 	if (emitType) emit(emitType);
 };
 const terminateFormRef = ref<RefType>();
@@ -255,24 +241,6 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 		if (!valid) return;
 		state.loading = true;
 
-/*		const requestTerminate = {
-			data: {
-				no: state.orderDetail.no,
-				orderId: state.orderDetail.id,
-				content: state.terminateForm.content,
-				files: handleFilesTerminate.value,
-			},
-			workflow: { ...submitObj, files: handleFilesTerminate.value, opinion: state.terminateForm.content },
-		};
-		terminateStartFlow(requestTerminate)
-			.then(() => {
-				afterSubmit('orderProcessSuccess', true, '终止申请成功');
-			})
-			.catch(() => {
-				afterSubmit('orderProcessFailed');
-			});*/
-
-
 		let submitObj = other.deepClone(state.terminateForm);
 		if (submitObj.nextHandlers && submitObj.nextHandlers.length) {
 			if (submitObj.nextHandlers.length === 1) {
@@ -281,16 +249,28 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 		}
 		const requestTerminate = {
 			data: {
-				no: state.orderDetail.order?.no,
-				orderId: state.orderDetail.order?.id,
+				no: state.orderDetail.no,
+				orderId: state.orderDetail.id,
 				content: state.terminateForm.content,
 				files: handleFilesTerminate.value,
 			},
-			workflow: { ...submitObj, files: handleFilesTerminate.value, opinion: state.terminateForm.content },
+			workflow: {
+				nextStepCode: state.terminateForm.nextStepCode,
+				nextStepName: state.terminateForm.nextStepName,
+				backToCountersignEnd: state.terminateForm.backToCountersignEnd,
+				nextHandlers: state.terminateForm.nextHandlers,
+				flowDirection: state.terminateForm.flowDirection,
+				handlerType: state.terminateForm.handlerType,
+				stepType: state.terminateForm.stepType,
+				businessType: state.terminateForm.businessType,
+				isSms: state.terminateForm.isSms,
+				files: handleFilesTerminate.value,
+				opinion: state.terminateForm.content,
+			},
 		};
 		terminateStartFlow(requestTerminate)
 			.then(() => {
-				afterSubmit('updateList', true);
+				afterSubmit('orderProcessSuccess', true, '终止申请成功');
 			})
 			.catch(() => {
 				afterSubmit('orderProcessFailed');

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

@@ -1,6 +1,6 @@
 <template>
 	<el-dialog v-model="state.dialogVisible" draggable title="终止详情" append-to-body destroy-on-close>
-		<el-form label-width="110px" ref="ruleFormRef" :model="state.ruleForm" class="show-info-form">
+		<el-form label-width="110px" ref="ruleFormRef" :model="state.ruleForm" class="show-info-form" v-loading="state.loading">
 			<el-row :gutter="10">
 				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
 					<el-form-item label="工单编号"> {{ state.ruleForm?.order?.no }} </el-form-item>

+ 90 - 192
src/views/business/terminate/components/Terminate-edit.vue

@@ -2,7 +2,7 @@
 	<el-dialog
 		v-model="state.dialogVisible"
 		draggable
-		:title="state.dialogTitle"
+		title="重提终止申请"
 		ref="dialogRef"
 		@mouseup="mouseup"
 		:style="'transform: ' + state.transform + ';'"
@@ -11,11 +11,7 @@
 		:close-on-click-modal="false"
 		@close="close"
 	>
-		<el-steps :active="activeStep" align-center finish-status="success" class="mb20">
-			<el-step title="业务表单" />
-			<el-step title="流程表单" />
-		</el-steps>
-		<div v-show="activeStep === 0" v-loading="state.loading">
+		<div v-loading="state.loading">
 			<el-form :model="state.terminateForm" label-width="110px" ref="terminateFormRef">
 				<el-row :gutter="10">
 					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
@@ -24,6 +20,38 @@
 					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
 						<el-form-item label="工单标题"> {{ state.orderDetail.order?.title }} </el-form-item>
 					</el-col>
+					<!-- 非退回流程都需要选择 -->
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+						<el-form-item label="下一环节" prop="nextStepCode" :rules="[{ required: true, message: '请选择下一环节', trigger: 'change' }]">
+							<el-select v-model="state.terminateForm.nextStepCode" placeholder="请选择下一环节" class="w100" @change="selectNextStep">
+								<el-option v-for="item in state.nextStepOptions" :key="item.key" :label="item.value" :value="item.key" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<!-- 非退回流程都需要选择并且如果选择了结束节点就不需要选择办理对象 -->
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" v-if="showHandlers">
+						<el-form-item label="办理对象" prop="nextHandlers" :rules="[{ required: false, message: '请选择办理对象', trigger: 'change' }]">
+							<el-select-v2
+								v-model="state.terminateForm.nextHandlers"
+								:options="state.handlerOptions"
+								placeholder="请选择办理对象"
+								class="w100"
+								multiple
+								clearable
+								collapse-tags
+								collapse-tags-tooltip
+								filterable
+								value-key="key"
+								@change="selectHandlers"
+								:multiple-limit="multipleLimit"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+						<el-form-item label="" prop="isSms">
+							<el-checkbox v-model="state.terminateForm.isSms" label="短信通知" />
+						</el-form-item>
+					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
 						<el-form-item label="终止理由" prop="content" :rules="[{ required: true, message: '请填写终止申请理由', trigger: 'blur' }]">
 							<common-advice
@@ -49,97 +77,36 @@
 				</el-row>
 			</el-form>
 		</div>
-
-		<el-form :model="state.ruleForm" label-width="110px" ref="ruleFormRef" v-show="activeStep === 1" v-loading="state.loading">
-			<slot name="header"></slot>
-			<el-row :gutter="10">
-				<!-- 非退回流程都需要选择 -->
-				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-					<el-form-item label="下一环节" prop="nextStepCode" :rules="[{ required: true, message: '请选择下一环节', trigger: 'change' }]">
-						<el-select v-model="state.ruleForm.nextStepCode" placeholder="请选择下一环节" class="w100" @change="selectNextStep">
-							<el-option v-for="item in state.nextStepOptions" :key="item.key" :label="item.value" :value="item.key" />
-						</el-select>
-						<p class="flex-center-align color-danger" v-if="showFastSendOrder">
-							当前推荐派单办理对象:{{ fastStepName }} <el-button type="primary" link class="ml4" @click="fastSendOrder">快捷派单</el-button>
-						</p>
-					</el-form-item>
-				</el-col>
-				<!-- 非退回流程都需要选择并且如果选择了结束节点就不需要选择办理对象 -->
-				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" v-if="showHandlers">
-					<el-form-item label="办理对象" prop="nextHandlers" :rules="[{ required: false, message: '请选择办理对象', trigger: 'change' }]">
-						<el-select-v2
-							v-model="state.ruleForm.nextHandlers"
-							:options="state.handlerOptions"
-							placeholder="请选择办理对象"
-							class="w100"
-							multiple
-							clearable
-							collapse-tags
-							collapse-tags-tooltip
-							filterable
-							value-key="key"
-							@change="selectHandlers"
-							:multiple-limit="multipleLimit"
-						/>
-					</el-form-item>
-				</el-col>
-				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" v-if="showMainHandler">
-					<el-form-item label="主办" prop="nextMainHandler" :rules="[{ required: false, message: '请选择主办', trigger: 'change' }]">
-						<el-select v-model="state.ruleForm.nextMainHandler" placeholder="请选择主办" class="w100" filterable>
-							<el-option v-for="item in state.handlerMainOptions" :key="item.key" :label="item.value" :value="item.key" />
-						</el-select>
-					</el-form-item>
-				</el-col>
-				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" v-if="countersignAble">
-					<el-form-item label="发起会签" prop="isStartCountersign" :rules="[{ required: false, message: '请选择发起会签', trigger: 'change' }]">
-						<el-switch
-							v-model="state.ruleForm.isStartCountersign"
-							inline-prompt
-							active-text="是"
-							inactive-text="否"
-							@change="changeStartCountersign"
-							:disabled="countersignDisabled"
-						/>
-					</el-form-item>
-				</el-col>
-				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-					<el-form-item label="" prop="isSms">
-						<el-checkbox v-model="state.ruleForm.isSms" label="短信通知" />
-					</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 class="default-button" @click="onPrevious" :loading="state.loading" v-if="activeStep === 1">上一步</el-button>
-				<el-button class="default-button" @click="onNext" :loading="state.loading" v-if="activeStep === 0">下一步</el-button>
-				<el-button type="primary" @click="onSubmit(ruleFormRef)" :loading="state.loading" v-if="activeStep === 1">办理</el-button>
+				<el-button type="primary" @click="onSubmit(terminateFormRef)" :loading="state.loading">确定</el-button>
 			</span>
 		</template>
 	</el-dialog>
 </template>
 
 <script setup lang="ts">
-import { computed, defineAsyncComponent, nextTick, reactive, ref, watch } from 'vue';
+import { computed, defineAsyncComponent, reactive, ref, watch } from 'vue';
 import { ElMessage, FormInstance } from 'element-plus';
 import other from '@/utils/other';
 import { commonEnum } from '@/utils/constants';
 import { transformFile } from '@/utils/tools';
-import { terminateDetail, terminateNextFlowParams, terminateStartFlow, terminateStartFlowParams } from '@/api/business/terminate';
+import { terminateDetail, terminateNextFlow, terminateNextFlowParams } from '@/api/business/terminate';
 
 // 引入组件
 const CommonAdvice = defineAsyncComponent(() => import('@/components/CommonAdvice/index.vue')); // 常用意见
 const AnnexList = defineAsyncComponent(() => import('@/components/AnnexList/index.vue')); // 附件列表
+
+
 // 定义子组件向父组件传值/事件
-const emit = defineEmits(['updateList', 'orderProcessFailed']);
+const emit = defineEmits(['orderProcessSuccess', 'orderProcessFailed']);
 // 定义变量内容
 const state = reactive<any>({
 	dialogVisible: false, // 弹窗显示隐藏
-	ruleForm: {
-		isPass: true, // 审批结果
+	terminateForm: {
 		//流程表单
-		opinion: '', // 意见
+		content: '', // 终止理由
 		nextStepCode: '', // 下一节点
 		nextStepName: '', // 下一节点名称
 		backToCountersignEnd: false, // 是否回到会签结束节点
@@ -149,48 +116,27 @@ const state = reactive<any>({
 		isStartCountersign: false, // 是否发起会签
 		stepId: '',
 	},
-	terminateForm: {
-		// 终止表单
-		content: '', // 终止理由
-	},
 	nextStepOptions: [], // 下一节点
 	handlerOptions: [], // 办理对象
 	transform: 'translate(0px, 0px)', // 滚动条位置
 	loading: false, // 提交按钮loading
-	workflowId: '', // 流程id
-	handlerClassifies: [], //撤回办理对象
-	handlerMainOptions: [], // 主办人
-	handleId: '', // 流程处理ID
-	dialogTitle: '终止编辑', // 弹窗标题
-	annexName: '', // 附件标题
-	inputPlaceholder: '', // 意见提示
+	workflowId: null, // 流程id
 	orderDetail: {}, // 工单详情
 });
-const ruleFormRef = ref<RefType>(); //表单组件
-
 // 打开弹窗
 const openDialog = async (val: any) => {
-	console.log(val);
 	state.dialogVisible = true;
 	state.loading = true;
+	state.workflowId = val.workflowId;
 	try {
-		activeStep.value = 0;
-		if (val.workflowId) {
-			// 如果有流程ID说明已经开启过流程需要获取办理流程的参数
-			const [workflowTerminateResponse] = await Promise.all([terminateNextFlowParams(val.workflowId)]); //终止审批参数
-			handleResult(workflowTerminateResponse);
-		} else {
-			const [workflowTerminateResponse] = await Promise.all([terminateStartFlowParams()]); //获取开启流程参数
-			handleResult(workflowTerminateResponse);
-		}
+		// 如果有流程ID说明已经开启过流程需要获取办理流程的参数
+		const [workflowTerminateResponse] = await Promise.all([terminateNextFlowParams(val.workflowId)]); //终止审批参数
+		handleResult(workflowTerminateResponse);
+
 		const { result } = await terminateDetail(val.id);
 		state.terminateForm.content = result.content ?? {};
 		state.orderDetail = result;
-		state.ruleForm.files = transformFile(result.files);
-
-		await nextTick(() => {
-			restForm(ruleFormRef.value);
-		});
+		state.terminateForm.files = transformFile(result.files);
 		state.loading = false;
 	}catch (e){
 		console.log(e,'111');
@@ -207,41 +153,28 @@ const handleResult = (res: any) => {
 	if (state.nextStepOptions.length === 1) {
 		// 下一节点是否只有一个 默认选中第一个
 		setTimeout(() => {
-			state.ruleForm.nextStepCode = state.nextStepOptions[0].key; // 下一节点code
-			state.ruleForm.nextStepName = state.nextStepOptions[0].value; // 下一节点name
-			state.ruleForm.backToCountersignEnd = state.nextStepOptions[0].backToCountersignEnd ?? false; // 是否回到会签结束节点
+			state.terminateForm.nextStepCode = state.nextStepOptions[0].key; // 下一节点code
+			state.terminateForm.nextStepName = state.nextStepOptions[0].value; // 下一节点name
+			state.terminateForm.backToCountersignEnd = state.nextStepOptions[0].backToCountersignEnd ?? false; // 是否回到会签结束节点
 		}, 0);
 		selectNextStep(state.nextStepOptions[0].key); // 查询流程下一节点参数
 	} else {
-		state.ruleForm.nextStepCode = '';
-		state.ruleForm.nextStepName = '';
+		state.terminateForm.nextStepCode = '';
+		state.terminateForm.nextStepName = '';
 	}
-	state.ruleForm.stepId = res.result.stepId;
+	state.terminateForm.stepId = res.result.stepId;
 	state.loading = false;
 };
-// 上一部
-const onPrevious = () => {
-	activeStep.value = 0;
-};
-const terminateFormRef = ref<RefType>(); //甄别申请表单组件
-// 下一步
-const onNext = () => {
-	terminateFormRef.value?.validate((valid: boolean) => {
-		if (!valid) return;
-		activeStep.value = 1;
-	});
-};
-const activeStep = ref(0); //步骤条
 // 流程选择下一环节
-const fastStepName = ref(''); // 推荐派单处理对象
-const fastStepCode = ref(''); // 推荐派单处理对象code
 const selectNextStep = (val: any) => {
-	ruleFormRef.value?.resetFields('nextHandlers');
-	ruleFormRef.value?.resetFields('nextMainHandler');
+	terminateFormRef.value?.resetFields('nextHandlers');
 	const next = state.nextStepOptions.find((item: any) => item.key === val);
 	const items = next.items; //获取下一节点
-	state.ruleForm.nextStepName = next.value; // 下一节点name
-	state.ruleForm.backToCountersignEnd = next.backToCountersignEnd ?? false; // 是否回到会签结束节点
+	state.terminateForm.nextStepName = next.value; // 下一节点name
+	state.terminateForm.backToCountersignEnd = next.backToCountersignEnd ?? false; // 是否回到会签结束节点
+	state.terminateForm.handlerType = next.handlerType;
+	state.terminateForm.businessType = next.businessType;
+	state.terminateForm.flowDirection = next.flowDirection;
 	state.handlerOptions = items ?? [];
 	state.handlerOptions = state.handlerOptions.map((item: any) => {
 		return {
@@ -251,81 +184,36 @@ const selectNextStep = (val: any) => {
 			label: item.value,
 		};
 	});
-	fastStepName.value = next.recommendOrgName; // 推荐派单处理对象
-	fastStepCode.value = next.recommendOrgId; // 推荐派单处理对象code
 	if (items.length === 1) {
 		// 如果办理对象只有一个默认选中
-		state.ruleForm.nextHandlers = [items[0]];
+		state.terminateForm.nextHandlers = [items[0]];
 	}
 };
-//  会签是否可用 (多个办理对象,并且配置可以会签)
-const countersignAble = computed(() => {
-	return canStartCountersign.value;
-});
 // 办理对象是否能够选择多个(可以发起会签可以选择多个,不能发起会签只能选择一个)
 const multipleLimit = computed(() => {
 	return canStartCountersign.value ? 0 : 1;
 });
 watch(
-	() => state.ruleForm.nextHandlers, // 监听办理对象 多个办理对象自动发起会签
+	() => state.terminateForm.nextHandlers, // 监听办理对象 多个办理对象自动发起会签
 	(val) => {
-		state.ruleForm.isStartCountersign = val.length > 1;
+		state.terminateForm.isStartCountersign = val.length > 1;
 	}
 );
-const countersignDisabled = computed(() => {
-	// 是否可以发起会签
-	return state.ruleForm.nextHandlers.length <= 1;
-});
-// 是否发起会签
-const changeStartCountersign = (val: boolean) => {
-	if (!val) {
-		// 如果不能会签清空办理对象
-		state.ruleForm.nextHandlers = [];
-		ruleFormRef.value?.resetFields('nextHandlers');
-	}
-};
 
 // 是否展示办理对象 (只有结束节点不展示 next.stepType===2 表示为结束节点)
 const showHandlers = computed(() => {
-	const next = state.nextStepOptions.find((item: any) => item.key === state.ruleForm.nextStepCode);
+	const next = state.nextStepOptions.find((item: any) => item.key === state.terminateForm.nextStepCode);
 	if (!next) return true;
 	return next.stepType !== 2;
 });
-// 是否显示快捷派单
-const showFastSendOrder = computed(() => {
-	const next = state.nextStepOptions.find((item: any) => item.key === state.ruleForm.nextStepCode);
-	if (!next) return false;
-	return next?.recommendOrgName && next?.recommendOrgId;
-});
-// 快速派单
-const fastSendOrder = () => {
-	if (!fastStepCode.value) return;
-	// 如果办理对象中没有推荐派单的对象就添加
-	if (!state.ruleForm.nextHandlers.find((item: any) => item.key === fastStepCode.value)) {
-		state.ruleForm.nextHandlers = [...state.ruleForm.nextHandlers, { key: fastStepCode.value, value: fastStepName.value }];
-	}
-};
 
 // 选择办理对象
 const selectHandlers = () => {
-	ruleFormRef.value?.resetFields('nextMainHandler');
-	if (state.ruleForm.nextHandlers.length > 1) {
-		// 多个办理对象 主办
-		state.ruleForm.nextMainHandler = state.ruleForm.nextHandlers[0].key;
-	}
-	if (state.ruleForm.nextHandlers.length <= 1) {
+	if (state.terminateForm.nextHandlers.length <= 1) {
 		// 如果只有一个办理对象就不需要发起会签
-		state.ruleForm.isStartCountersign = false;
+		state.terminateForm.isStartCountersign = false;
 	}
 };
-// 是否展示主办
-const showMainHandler = computed(() => {
-	return state.ruleForm.nextHandlers.length > 1 && isMainHandlerShow.value;
-});
-// 主办从办理对象中选择
-state.handlerMainOptions = computed(() => {
-	return state.ruleForm.nextHandlers;
-});
 // 设置抽屉
 const dialogRef = ref<RefType>();
 const mouseup = () => {
@@ -338,7 +226,6 @@ const closeDialog = () => {
 // 重置表单方法
 const restForm = (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
-	state.ruleForm.opinion = '';
 	formEl.resetFields();
 	formEl.clearValidate();
 };
@@ -346,14 +233,15 @@ const restForm = (formEl: FormInstance | undefined) => {
 const chooseAdviceTerminate = (item: any) => {
 	state.terminateForm.content += item.content;
 };
-const afterSubmit = (emitType?: 'updateList' | 'orderProcessFailed', showMessage?: boolean) => {
+const afterSubmit = (emitType?: 'orderProcessSuccess' | 'orderProcessFailed', showMessage?: boolean, message?: string) => {
 	state.loading = false;
 	closeDialog();
-	if (showMessage) ElMessage.success('终止申请成功');
+	const msg = message ?? '操作成功';
+	if (showMessage) ElMessage.success(msg);
 	if (emitType) emit(emitType);
 };
+const terminateFormRef = ref<RefType>();
 const close = () => {
-	restForm(ruleFormRef.value);
 	restForm(terminateFormRef.value);
 };
 // 提交
@@ -363,24 +251,34 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 	formEl.validate((valid: boolean) => {
 		if (!valid) return;
 		state.loading = true;
-		let submitObj = other.deepClone(state.ruleForm);
-		if (submitObj.nextHandlers && submitObj.nextHandlers.length) {
-			if (submitObj.nextHandlers.length === 1) {
-				submitObj.nextMainHandler = submitObj.nextHandlers[0].key;
-			}
-		}
 		const requestTerminate = {
 			data: {
 				no: state.orderDetail.order?.no,
 				orderId: state.orderDetail.order?.id,
 				content: state.terminateForm.content,
 				files: handleFilesTerminate.value,
+				workflowId: state.workflowId,
+			},
+			workflow: {
+				nextStepCode: state.terminateForm.nextStepCode,
+				nextStepName: state.terminateForm.nextStepName,
+				backToCountersignEnd: state.terminateForm.backToCountersignEnd,
+				nextHandlers: state.terminateForm.nextHandlers,
+				flowDirection: state.terminateForm.flowDirection,
+				handlerType: state.terminateForm.handlerType,
+				stepType: state.terminateForm.stepType,
+				businessType: state.terminateForm.businessType,
+				isSms: state.terminateForm.isSms,
+				opinion: state.terminateForm.content,
+				stepId: state.terminateForm.stepId,
+				files: handleFilesTerminate.value,
+				workflowId: state.workflowId,
 			},
-			workflow: { ...submitObj, files: handleFilesTerminate.value, opinion: state.terminateForm.content },
 		};
-		terminateStartFlow(requestTerminate)
+
+		terminateNextFlow(requestTerminate)
 			.then(() => {
-				afterSubmit('updateList', true);
+				afterSubmit('orderProcessSuccess', true, '重提申请成功');
 			})
 			.catch(() => {
 				afterSubmit('orderProcessFailed');

+ 1 - 1
src/views/business/terminate/index.vue

@@ -234,7 +234,7 @@ const auditRecordRef = ref<RefType>();
 const onProcessDetail = (row: any) => {
 	const params = {
 		dialogTitle: `终止记录 (${row?.order?.title})`,
-		...row,
+		workflowId: row.workflowId,
 	};
 	auditRecordRef.value.openDialog(params);
 };