From 0e9bf44ba768e4fca165ab8ae205811c6294290a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9C=E7=AC=99=E6=AD=8C?= <2277317060@qq.com> Date: Thu, 3 Jul 2025 18:03:56 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=9C=8B=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/boardGenerate/index1.vue | 66 ++++++++++++++++++++++++++++-- 1 file changed, 62 insertions(+), 4 deletions(-) diff --git a/src/views/boardGenerate/index1.vue b/src/views/boardGenerate/index1.vue index 2c36ce6..3bbeab8 100644 --- a/src/views/boardGenerate/index1.vue +++ b/src/views/boardGenerate/index1.vue @@ -4,8 +4,7 @@
+ placement="bottom-start"> diff --git a/src/views/dms/dmsFaultInstanceActivity/index.vue b/src/views/dms/dmsFaultInstanceActivity/index.vue index 60c4499..2f3b903 100644 --- a/src/views/dms/dmsFaultInstanceActivity/index.vue +++ b/src/views/dms/dmsFaultInstanceActivity/index.vue @@ -4,37 +4,37 @@
- 暂存 - 提交 - {{ currentStepName }} - 主管确认 - 流程进度 @@ -89,66 +89,66 @@

{{ currentStepTitle }}

- - + @@ -157,42 +157,42 @@ - + - + - - - + + + - - - @@ -206,21 +206,21 @@ - - - + + - - + + - - + + @@ -233,8 +233,8 @@ - - + + @@ -264,11 +264,11 @@
- - + @@ -284,7 +284,7 @@ import { addDmsFaultInstanceActivity } from '@/api/dms/dmsFaultInstanceActivity' import { pageByTaskWait } from '@/api/workflow/task'; import { getCurrentDateTime } from '@/utils/dateUtils'; import { getDmsBaseOutsourcingInfoList } from '@/api/dms/dmsBaseOutsourcingInfo'; -import SubmitVerify from '@/components/Process/submitVerify.vue'; +import SubmitVerify from '@/views/dms/dmsFaultInstanceActivity/submitVerify.vue'; import ApprovalRecord from '@/components/Process/approvalRecord.vue'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; @@ -352,7 +352,7 @@ const needProcessResolution = computed(() => currentStepOrder.value > 1); const currentStepName = computed(() => { const stepNames = { 1: '故障报修', - 2: '维修处理', + 2: '维修处理', 3: '维修确认' }; return stepNames[currentStepOrder.value] || '处理工单'; @@ -377,9 +377,9 @@ const confirmButtonShow = computed(() => { // 2. 或者工单状态为维修完成(2)且确认状态为待确认(0) // 3. 且审批状态为审批成功(2) - 只有审批通过的工单才能进行确认 return routeParams.value.type === 'confirm' || - (workOrder.value.billsStatus === '2' && - workOrder.value.repairConfirm === '0' && - workOrder.value.approveStatus === '2'); + (workOrder.value.billsStatus === '2' && + workOrder.value.repairConfirm === '0' && + workOrder.value.approveStatus === '2'); }); // 是否为审批阶段 @@ -414,16 +414,16 @@ onMounted(async () => { await loadCurrentTask(); } - // 初始化表单数据 - initializeFormData(); + // 初始化表单数据 + initializeFormData(); - // 设置审批阶段的表单验证规则 - if (routeParams.value.type === 'approval' && workOrder.value.approveStatus === '1') { - rules.approveStatus = [{ required: true, message: '审批状态不能为空', trigger: 'change' }]; - } + // 设置审批阶段的表单验证规则 + if (routeParams.value.type === 'approval' && workOrder.value.approveStatus === '1') { + rules.approveStatus = [{ required: true, message: '审批状态不能为空', trigger: 'change' }]; + } - // 设置外协单位验证规则 - updateOutsourcingValidation(); + // 设置外协单位验证规则 + updateOutsourcingValidation(); } catch (error) { console.error('初始化失败:', error); @@ -446,15 +446,15 @@ watch(() => form.repairType, (newValue) => { const loadWorkOrderInfo = async () => { // 从query参数获取businessId const businessId = routeParams.value.id; - + if (!businessId) { proxy?.$modal.msgError('缺少工单ID参数'); return; } - + const res = await getDmsBillsFaultInstance(businessId); workOrder.value = res.data; - + // 设置状态显示文本 workOrderStatusText.value = getStatusText(workOrder.value.billsStatus); }; @@ -464,21 +464,21 @@ const loadCurrentTask = async () => { // 从query参数获取businessId和taskId const businessId = routeParams.value.id; const taskId = routeParams.value.taskId; - + // 通过taskId或businessId获取当前任务 const taskRes = await pageByTaskWait({ pageNum: 1, pageSize: 10, flowCode: 'Fault01' // 故障维修流程代码 }); - - const tasks = taskRes.rows.filter(task => + + const tasks = taskRes.rows.filter(task => task.businessId === businessId || task.id === taskId ); - + if (tasks.length > 0) { currentTask.value = tasks[0]; - + // 根据节点名称确定当前步骤 const nodeName = currentTask.value.nodeName; if (nodeName === '故障报修') { @@ -488,7 +488,7 @@ const loadCurrentTask = async () => { } else if (nodeName === '维修确认') { currentStepOrder.value = 3; } - + // 动态设置处理意见校验规则 if (needProcessResolution.value) { rules.processHandleResolution = [ @@ -503,7 +503,7 @@ const initializeFormData = () => { // 基础信息从工单获取 form.repairInstanceId = workOrder.value.repairInstanceId; form.processStepOrder = currentStepOrder.value; - + if (currentStepOrder.value === 1) { // 第一步:故障报修,表单为空等待用户填写 form.faultType = workOrder.value.faultType; @@ -530,12 +530,12 @@ const initializeFormData = () => { // 提交表单方法 const submitForm = async (status: string) => { if (!processFormRef.value) return; - + try { const valid = await processFormRef.value.validate(); if (valid) { buttonLoading.value = true; - + if (status === 'draft') { // 暂存逻辑 await addDmsFaultInstanceActivity({ @@ -555,7 +555,7 @@ const submitForm = async (status: string) => { processStepOrder: form.processStepOrder, handleTime: getCurrentDateTime() }); - + proxy?.$modal.msgSuccess('暂存成功'); goBack(); } else { @@ -579,7 +579,7 @@ const submitForm = async (status: string) => { processStepOrder: form.processStepOrder } }; - + // 启动工作流或继续处理 if (routeParams.value.taskId) { submitVerifyRef.value?.openDialog(routeParams.value.taskId); @@ -601,7 +601,7 @@ const submitForm = async (status: string) => { // 审批处理 const approvalVerifyOpen = async () => { if (!processFormRef.value) return; - + try { const valid = await processFormRef.value.validate(); if (valid) { @@ -610,9 +610,11 @@ const approvalVerifyOpen = async () => { proxy?.$modal.msgError('请选择审批状态'); return; } - - // 准备工作流变量 - 确保变量结构符合SubmitVerify和Warm-Flow要求 + + // 准备工作流变量 - 符合Warm-Flow和submitVerify组件的期望格式 taskVariables.value = { + // 工作流变量 - 用于互斥网关条件判断 + variables: {}, // 业务实体数据 entity: { repairInstanceId: form.repairInstanceId, @@ -631,24 +633,27 @@ const approvalVerifyOpen = async () => { processStepOrder: form.processStepOrder } }; - + // 如果是审批阶段,设置跳转条件变量 if (routeParams.value.type === 'approval' && form.approveStatus) { - // 直接在taskVariables根级别设置approveStatus - 这是SubmitVerify期望的格式 + // 将approveStatus转换为数字放在variables中,供Warm-Flow互斥网关使用 + taskVariables.value.variables.approveStatus = parseInt(form.approveStatus); + // 同时在根级别设置字符串格式,兼容submitVerify组件 taskVariables.value.approveStatus = form.approveStatus; - console.log('设置审批状态变量:', form.approveStatus); + console.log('设置审批状态变量:', parseInt(form.approveStatus)); } - + // 如果是确认阶段,设置确认结果变量 if (routeParams.value.type === 'confirm' && form.repairConfirm) { // 确认通过传0,确认不通过传1 - const repairConfirmValue = form.repairConfirm === '1' ? '0' : '1'; - taskVariables.value.repairConfirm = repairConfirmValue; + const repairConfirmValue = form.repairConfirm === '1' ? 0 : 1; + taskVariables.value.variables.repairConfirm = repairConfirmValue; + taskVariables.value.repairConfirm = repairConfirmValue.toString(); console.log('设置确认结果变量:', repairConfirmValue); } - + console.log('完整的工作流变量:', taskVariables.value); - + // 直接使用传入的taskId进行审批 submitVerifyRef.value?.openDialog(routeParams.value.taskId); } @@ -665,7 +670,7 @@ const submitCallback = async (approvalResult?: any) => { // 使用用户选择的审批状态 const approveStatus = form.approveStatus; // 直接使用表单中选择的审批状态 const message = approvalResult?.message || form.processHandleResolution || ''; - + await approveWorkOrder(form.repairInstanceId, approveStatus, message); const statusText = approveStatus === '2' ? '通过' : '拒绝'; proxy?.$modal.msgSuccess(`审批${statusText}成功`); @@ -675,34 +680,34 @@ const submitCallback = async (approvalResult?: any) => { await confirmRepairResult(form.repairInstanceId, confirmResult); proxy?.$modal.msgSuccess('确认完成'); } else { - // 保存工单实例活动记录 - await addDmsFaultInstanceActivity({ - repairInstanceId: form.repairInstanceId, - faultType: form.faultType, - faultDescription: form.faultDescription, - designOperations: form.designOperations, - repairType: form.repairType, - outsourcingId: form.outsourcingId, - checkedFault: form.checkedFault || '', - repairContent: form.repairContent || '', - protectedMethod: form.protectedMethod || '', - repairer: form.repairer || '', - repairConfirm: form.repairConfirm, - componentsPartsId: form.componentsPartsId, - processHandleResolution: form.processHandleResolution || '', - processStepOrder: form.processStepOrder, - handleTime: getCurrentDateTime() - }); - - proxy?.$modal.msgSuccess(`${currentStepName.value}完成`); + // 保存工单实例活动记录 + await addDmsFaultInstanceActivity({ + repairInstanceId: form.repairInstanceId, + faultType: form.faultType, + faultDescription: form.faultDescription, + designOperations: form.designOperations, + repairType: form.repairType, + outsourcingId: form.outsourcingId, + checkedFault: form.checkedFault || '', + repairContent: form.repairContent || '', + protectedMethod: form.protectedMethod || '', + repairer: form.repairer || '', + repairConfirm: form.repairConfirm, + componentsPartsId: form.componentsPartsId, + processHandleResolution: form.processHandleResolution || '', + processStepOrder: form.processStepOrder, + handleTime: getCurrentDateTime() + }); + + proxy?.$modal.msgSuccess(`${currentStepName.value}完成`); } - + // 关闭页面返回 goBack(); - } catch (error: any) { - console.error('操作失败:', error); - proxy?.$modal.msgError('操作失败:' + (error.message || '未知错误')); - } + } catch (error: any) { + console.error('操作失败:', error); + proxy?.$modal.msgError('操作失败:' + (error.message || '未知错误')); + } }; // 主管确认处理 @@ -710,7 +715,7 @@ const handleConfirm = async () => { try { // 设置确认结果 form.repairConfirm = '1'; // 1表示确认通过 - + // 调用审批处理方法(实际上是工作流处理) await approvalVerifyOpen(); } catch (error: any) { @@ -772,4 +777,4 @@ const getStatusText = (status: string) => { color: #303133; font-weight: 600; } - \ No newline at end of file + diff --git a/src/views/dms/dmsFaultInstanceActivity/submitVerify.vue b/src/views/dms/dmsFaultInstanceActivity/submitVerify.vue new file mode 100644 index 0000000..ef85cf2 --- /dev/null +++ b/src/views/dms/dmsFaultInstanceActivity/submitVerify.vue @@ -0,0 +1,557 @@ + + + + \ No newline at end of file From a7ae94db56689bb9616a7fd8e018ae6b5dfa6b03 Mon Sep 17 00:00:00 2001 From: zangchenhao Date: Thu, 3 Jul 2025 21:38:35 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat(dms):=20=E4=BC=98=E5=8C=96=E6=95=85?= =?UTF-8?q?=E9=9A=9C=E5=AE=9E=E4=BE=8B=E6=B4=BB=E5=8A=A8=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增审批记录组件,支持查看流程图和审批信息 - 重构表单验证逻辑,提高用户体验 -优化工作流变量处理,简化审批流程 - 调整表单字段初始化,确保数据准确性 --- .../approvalRecord.vue | 280 ++++++++++++++++++ .../dms/dmsFaultInstanceActivity/index.vue | 215 +++++++------- .../dmsFaultInstanceActivity/submitVerify.vue | 2 +- 3 files changed, 387 insertions(+), 110 deletions(-) diff --git a/src/views/dms/dmsFaultInstanceActivity/approvalRecord.vue b/src/views/dms/dmsFaultInstanceActivity/approvalRecord.vue index e69de29..84fbfb1 100644 --- a/src/views/dms/dmsFaultInstanceActivity/approvalRecord.vue +++ b/src/views/dms/dmsFaultInstanceActivity/approvalRecord.vue @@ -0,0 +1,280 @@ + + + diff --git a/src/views/dms/dmsFaultInstanceActivity/index.vue b/src/views/dms/dmsFaultInstanceActivity/index.vue index 2f3b903..959a886 100644 --- a/src/views/dms/dmsFaultInstanceActivity/index.vue +++ b/src/views/dms/dmsFaultInstanceActivity/index.vue @@ -52,7 +52,7 @@ - + @@ -62,24 +62,24 @@ - + - + - + - + @@ -333,9 +333,9 @@ const form = reactive({ ...initFormData }); // 表单验证规则 const rules = reactive({ - faultType: [{ required: true, message: '故障类型不能为空', trigger: 'change' }], - faultDescription: [{ required: true, message: '故障描述不能为空', trigger: 'blur' }], - repairType: [{ required: true, message: '维修类型不能为空', trigger: 'change' }], + faultType: [{ required: false, message: '故障类型不能为空', trigger: 'change' }], + faultDescription: [{ required: false, message: '故障描述不能为空', trigger: 'blur' }], + repairType: [{ required: false, message: '维修类型不能为空', trigger: 'change' }], outsourcingId: [{ required: false, message: '外协单位不能为空', trigger: 'change' }], repairer: [{ required: false, message: '维修人不能为空', trigger: 'blur' }], checkedFault: [{ required: false, message: '检查后的故障判断不能为空', trigger: 'blur' }], @@ -377,14 +377,14 @@ const confirmButtonShow = computed(() => { // 2. 或者工单状态为维修完成(2)且确认状态为待确认(0) // 3. 且审批状态为审批成功(2) - 只有审批通过的工单才能进行确认 return routeParams.value.type === 'confirm' || - (workOrder.value.billsStatus === '2' && - workOrder.value.repairConfirm === '0' && - workOrder.value.approveStatus === '2'); + (workOrder.value?.billsStatus === '2' && + workOrder.value?.repairConfirm === '0' && + workOrder.value?.approveStatus === '2'); }); // 是否为审批阶段 const isApprovalStage = computed(() => { - return routeParams.value.type === 'approval' && workOrder.value.approveStatus === '1'; + return routeParams.value.type === 'approval' && workOrder.value?.approveStatus === '1'; }); // 提交按钮显示控制逻辑 @@ -392,7 +392,7 @@ const submitButtonShow = computed(() => { return ( routeParams.value.type === 'add' || (routeParams.value.type === 'update' && - workOrder.value.billsStatus && + workOrder.value?.billsStatus && (workOrder.value.billsStatus === 'draft' || workOrder.value.billsStatus === 'cancel' || workOrder.value.billsStatus === 'back')) ); }); @@ -417,13 +417,8 @@ onMounted(async () => { // 初始化表单数据 initializeFormData(); - // 设置审批阶段的表单验证规则 - if (routeParams.value.type === 'approval' && workOrder.value.approveStatus === '1') { - rules.approveStatus = [{ required: true, message: '审批状态不能为空', trigger: 'change' }]; - } - - // 设置外协单位验证规则 - updateOutsourcingValidation(); + // 动态设置表单验证规则 + setDynamicValidationRules(); } catch (error) { console.error('初始化失败:', error); @@ -453,10 +448,10 @@ const loadWorkOrderInfo = async () => { } const res = await getDmsBillsFaultInstance(businessId); - workOrder.value = res.data; + workOrder.value = res.data || {}; // 确保不为null - // 设置状态显示文本 - workOrderStatusText.value = getStatusText(workOrder.value.billsStatus); + // 设置状态显示文本 - 添加安全检查 + workOrderStatusText.value = getStatusText(workOrder.value.billsStatus || ''); }; // 加载当前任务信息 @@ -501,29 +496,25 @@ const loadCurrentTask = async () => { // 初始化表单数据 const initializeFormData = () => { // 基础信息从工单获取 - form.repairInstanceId = workOrder.value.repairInstanceId; + form.repairInstanceId = workOrder.value?.repairInstanceId; form.processStepOrder = currentStepOrder.value; - if (currentStepOrder.value === 1) { - // 第一步:故障报修,表单为空等待用户填写 - form.faultType = workOrder.value.faultType; - form.faultDescription = workOrder.value.faultDescription; - form.designOperations = workOrder.value.designOperations; - form.repairType = workOrder.value.repairType; - form.outsourcingId = workOrder.value.outsourcingId; - } else { - // 第二步、第三步:从工单基础信息预填充 - form.faultType = workOrder.value.faultType; - form.faultDescription = workOrder.value.faultDescription; - form.designOperations = workOrder.value.designOperations; - form.repairType = workOrder.value.repairType; - form.outsourcingId = workOrder.value.outsourcingId; - form.checkedFault = workOrder.value.checkedFault; - form.repairContent = workOrder.value.repairContent; - form.protectedMethod = workOrder.value.protectedMethod; - form.repairer = workOrder.value.repairer; - form.repairConfirm = workOrder.value.repairConfirm; - form.componentsPartsId = workOrder.value.componentsPartsId; + // 处理所有字段,确保没有undefined值 + form.faultType = workOrder.value?.faultType || ''; + form.faultDescription = workOrder.value?.faultDescription || ''; + form.designOperations = workOrder.value?.designOperations || ''; + form.repairType = workOrder.value?.repairType || ''; + form.outsourcingId = workOrder.value?.outsourcingId || ''; + form.checkedFault = workOrder.value?.checkedFault || ''; + form.repairContent = workOrder.value?.repairContent || ''; + form.protectedMethod = workOrder.value?.protectedMethod || ''; + form.repairer = workOrder.value?.repairer || ''; + form.repairConfirm = workOrder.value?.repairConfirm || ''; + form.componentsPartsId = workOrder.value?.componentsPartsId || ''; + + // 如果是审批阶段,设置默认审批状态 + if (routeParams.value.type === 'approval' && !form.approveStatus) { + form.approveStatus = undefined; // 保持未选择状态,让用户必须选择 } }; @@ -605,76 +596,36 @@ const approvalVerifyOpen = async () => { try { const valid = await processFormRef.value.validate(); if (valid) { - // 检查审批状态 - if (routeParams.value.type === 'approval' && !form.approveStatus) { - proxy?.$modal.msgError('请选择审批状态'); - return; - } + await proxy?.$modal.confirm('是否确认提交审批?'); + + buttonLoading.value = true; + + // 直接调用后端审批接口,后端会在同一事务中处理业务状态更新和工作流推进 + const approveStatus = form.approveStatus; + const message = form.processHandleResolution || ''; - // 准备工作流变量 - 符合Warm-Flow和submitVerify组件的期望格式 - taskVariables.value = { - // 工作流变量 - 用于互斥网关条件判断 - variables: {}, - // 业务实体数据 - entity: { - repairInstanceId: form.repairInstanceId, - faultType: form.faultType, - faultDescription: form.faultDescription, - designOperations: form.designOperations, - repairType: form.repairType, - outsourcingId: form.outsourcingId, - checkedFault: form.checkedFault || '', - repairContent: form.repairContent || '', - protectedMethod: form.protectedMethod || '', - repairer: form.repairer || '', - repairConfirm: form.repairConfirm, - componentsPartsId: form.componentsPartsId, - processHandleResolution: form.processHandleResolution || '', - processStepOrder: form.processStepOrder - } - }; - - // 如果是审批阶段,设置跳转条件变量 - if (routeParams.value.type === 'approval' && form.approveStatus) { - // 将approveStatus转换为数字放在variables中,供Warm-Flow互斥网关使用 - taskVariables.value.variables.approveStatus = parseInt(form.approveStatus); - // 同时在根级别设置字符串格式,兼容submitVerify组件 - taskVariables.value.approveStatus = form.approveStatus; - console.log('设置审批状态变量:', parseInt(form.approveStatus)); - } - - // 如果是确认阶段,设置确认结果变量 - if (routeParams.value.type === 'confirm' && form.repairConfirm) { - // 确认通过传0,确认不通过传1 - const repairConfirmValue = form.repairConfirm === '1' ? 0 : 1; - taskVariables.value.variables.repairConfirm = repairConfirmValue; - taskVariables.value.repairConfirm = repairConfirmValue.toString(); - console.log('设置确认结果变量:', repairConfirmValue); - } - - console.log('完整的工作流变量:', taskVariables.value); - - // 直接使用传入的taskId进行审批 - submitVerifyRef.value?.openDialog(routeParams.value.taskId); + await approveWorkOrder(form.repairInstanceId, approveStatus, message); + + const statusText = approveStatus === '2' ? '通过' : '拒绝'; + proxy?.$modal.msgSuccess(`审批${statusText}成功`); + + // 关闭页面返回 + goBack(); } - } catch (error) { - proxy?.$modal.msgError('表单验证失败,请检查输入项'); + } catch (error: any) { + if (error !== 'cancel' && error !== 'close') { + console.error('审批失败:', error); + proxy?.$modal.msgError('审批失败:' + (error.message || '未知错误')); + } + } finally { + buttonLoading.value = false; } }; // 提交回调 const submitCallback = async (approvalResult?: any) => { try { - // 如果是审批类型,调用审批接口 - if (routeParams.value.type === 'approval') { - // 使用用户选择的审批状态 - const approveStatus = form.approveStatus; // 直接使用表单中选择的审批状态 - const message = approvalResult?.message || form.processHandleResolution || ''; - - await approveWorkOrder(form.repairInstanceId, approveStatus, message); - const statusText = approveStatus === '2' ? '通过' : '拒绝'; - proxy?.$modal.msgSuccess(`审批${statusText}成功`); - } else if (routeParams.value.type === 'confirm') { + if (routeParams.value.type === 'confirm') { // 主管确认逻辑 const confirmResult = form.repairConfirm || '1'; // 默认确认通过 await confirmRepairResult(form.repairInstanceId, confirmResult); @@ -749,15 +700,61 @@ const getOutsourceList = async () => { // 更新外协单位验证规则 const updateOutsourcingValidation = () => { - if (form.repairType === '2') { - // 维修类型为外协时,外协单位为必填 + // 只有在非审批阶段且维修类型为外协时才设置为必填 + if (routeParams.value.type !== 'approval' && form.repairType === '2') { rules.outsourcingId = [{ required: true, message: '外协单位不能为空', trigger: 'change' }]; } else { - // 其他情况下,外协单位不是必填 rules.outsourcingId = [{ required: false, message: '外协单位不能为空', trigger: 'change' }]; } }; +// 动态设置表单验证规则 +const setDynamicValidationRules = () => { + // 重置所有规则为非必填 + Object.keys(rules).forEach(key => { + rules[key] = [{ required: false, message: rules[key][0].message, trigger: rules[key][0].trigger }]; + }); + + // 根据页面类型和步骤设置验证规则 + if (routeParams.value.type === 'approval') { + // 审批阶段只需要审批状态和处理意见 + rules.approveStatus = [{ required: true, message: '审批状态不能为空', trigger: 'change' }]; + if (needProcessResolution.value) { + rules.processHandleResolution = [{ required: true, message: '处理意见不能为空', trigger: 'blur' }]; + } + } else if (routeParams.value.type === 'confirm') { + // 确认阶段只需要确认结果和处理意见 + rules.repairConfirm = [{ required: true, message: '维修结果不能为空', trigger: 'change' }]; + rules.processHandleResolution = [{ required: true, message: '处理意见不能为空', trigger: 'blur' }]; + } else { + // 新增或编辑模式,根据当前步骤设置验证规则 + if (currentStepOrder.value === 1) { + // 第一步:故障报修 + rules.faultType = [{ required: true, message: '故障类型不能为空', trigger: 'change' }]; + rules.faultDescription = [{ required: true, message: '故障描述不能为空', trigger: 'blur' }]; + rules.repairType = [{ required: true, message: '维修类型不能为空', trigger: 'change' }]; + } else if (currentStepOrder.value === 2) { + // 第二步:维修处理 + rules.repairer = [{ required: true, message: '维修人不能为空', trigger: 'blur' }]; + rules.checkedFault = [{ required: true, message: '检查后的故障判断不能为空', trigger: 'blur' }]; + rules.protectedMethod = [{ required: true, message: '维修措施不能为空', trigger: 'blur' }]; + rules.repairContent = [{ required: true, message: '维修内容不能为空', trigger: 'blur' }]; + if (needProcessResolution.value) { + rules.processHandleResolution = [{ required: true, message: '处理意见不能为空', trigger: 'blur' }]; + } + } else if (currentStepOrder.value === 3) { + // 第三步:维修确认 + rules.repairConfirm = [{ required: true, message: '维修结果不能为空', trigger: 'change' }]; + if (needProcessResolution.value) { + rules.processHandleResolution = [{ required: true, message: '处理意见不能为空', trigger: 'blur' }]; + } + } + } + + // 更新外协单位验证规则 + updateOutsourcingValidation(); +}; + // 工具函数 const getStatusText = (status: string) => { const statusMap = { diff --git a/src/views/dms/dmsFaultInstanceActivity/submitVerify.vue b/src/views/dms/dmsFaultInstanceActivity/submitVerify.vue index ef85cf2..f6d41ad 100644 --- a/src/views/dms/dmsFaultInstanceActivity/submitVerify.vue +++ b/src/views/dms/dmsFaultInstanceActivity/submitVerify.vue @@ -305,7 +305,7 @@ form.value.flowCopyList = flowCopyList; } - // 【关键修复】处理故障报修工单的工作流变量传递 + // 处理工作流变量传递 if (props.taskVariables && typeof props.taskVariables === 'object') { const taskVars = props.taskVariables as any;