-
暂存
-
提交
-
{{ currentStepName }}
-
主管确认
-
流程进度
@@ -89,66 +89,66 @@
-
-
+
-
-
-
+
+
-
-
+
+
-
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
-
-
+
@@ -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 @@
+
+
+
+
+
+ 站内信
+ 邮件
+ 短信
+
+
+
+
+
+
+
+
+ {{ user.nickName }}
+
+
+
+
+ 【{{ item.nodeName }}】:
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 站内信
+ 邮件
+ 短信
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
\ 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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item }}
+
+ 无
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 附件
+
+
+
+
+
+ 下载
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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;