From bf96e8aeaf3abeb27fe265011c5ef4196ad7ead2 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Wed, 19 Feb 2025 13:21:58 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BB=A3=E7=A0=81=E8=AF=84=E5=AE=A1?= =?UTF-8?q?=E3=80=91BPM=EF=BC=9A=E4=BF=AE=E5=A4=8D=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E9=A2=84=E6=B5=8B=E5=8A=9F=E8=83=BD=E7=9A=84=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../create/ProcessDefinitionDetail.vue | 26 +++++++++++-------- .../detail/ProcessInstanceOperationButton.vue | 3 ++- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue b/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue index 87ee5e84..0bab7d44 100644 --- a/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue +++ b/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue @@ -108,7 +108,7 @@ const fApi = ref() // 指定审批人 const startUserSelectTasks: any = ref([]) // 发起人需要选择审批人或抄送人的任务列表 const startUserSelectAssignees = ref({}) // 发起人选择审批人的数据 -const hisStartUserSelectAssignees = ref({}) // 历史发起人选择审批人的数据 +const tempStartUserSelectAssignees = ref({}) // 历史发起人选择审批人的数据,用于每次表单变更时,临时保存 const bpmnXML: any = ref(null) // BPMN 数据 const simpleJson = ref() // Simple 设计器数据 json 格式 @@ -156,17 +156,18 @@ const initProcessInfo = async (row: any, formVariables?: any) => { } } -// 预测流程节点会因为输入的参数值而产生新的预测结果值,所以需重新预测一次 +/** 预测流程节点会因为输入的参数值而产生新的预测结果值,所以需重新预测一次 */ watch( detailForm.value, (newValue) => { if (newValue && Object.keys(newValue.value).length > 0) { - //记录之前的节点审批人 - hisStartUserSelectAssignees.value = startUserSelectAssignees.value + // 记录之前的节点审批人 + tempStartUserSelectAssignees.value = startUserSelectAssignees.value startUserSelectAssignees.value = {} + // 加载最新的审批详情 getApprovalDetail({ id: props.selectProcessDefinition.id, - processVariablesStr: newValue.value + processVariablesStr: JSON.stringify(newValue.value) // 解决 GET 无法传递对象的问题,后端 String 再转 JSON }) } }, @@ -178,11 +179,11 @@ watch( /** 获取审批详情 */ const getApprovalDetail = async (row: any) => { try { - // TODO 获取审批详情,设置 activityId 为发起人节点(为了获取字段权限。暂时只对 Simple 设计器有效) + // TODO 获取审批详情,设置 activityId 为发起人节点(为了获取字段权限。暂时只对 Simple 设计器有效);@jason:这里可以去掉 activityId 么? const data = await ProcessInstanceApi.getApprovalDetail({ processDefinitionId: row.id, activityId: NodeId.START_USER_NODE_ID, - processVariablesStr: JSON.stringify(row.processVariablesStr) + processVariablesStr: JSON.stringify(row.processVariablesStr) // 解决 GET 无法传递对象的问题,后端 String 再转 JSON }) if (!data) { @@ -196,17 +197,20 @@ const getApprovalDetail = async (row: any) => { startUserSelectTasks.value = data.activityNodes?.filter( (node: ApprovalNodeInfo) => CandidateStrategy.START_USER_SELECT === node.candidateStrategy ) - + // 恢复之前的选择审批人 if (startUserSelectTasks.value?.length > 0) { for (const node of startUserSelectTasks.value) { - if (hisStartUserSelectAssignees.value[node.id] && hisStartUserSelectAssignees.value[node.id].length > 0) { - startUserSelectAssignees.value[node.id] = hisStartUserSelectAssignees.value[node.id] + if ( + tempStartUserSelectAssignees.value[node.id] && + tempStartUserSelectAssignees.value[node.id].length > 0 + ) { + startUserSelectAssignees.value[node.id] = tempStartUserSelectAssignees.value[node.id] } else { startUserSelectAssignees.value[node.id] = [] } } } - + // 获取表单字段权限 const formFieldsPermission = data.formFieldsPermission // 设置表单字段权限 diff --git a/src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue b/src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue index a0fd132f..4ad4e591 100644 --- a/src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue +++ b/src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue @@ -703,12 +703,13 @@ const handleAudit = async (pass: boolean, formRef: FormInstance | undefined) => // 校验表单 if (!formRef) return await formRef.validate() - //校验流程表单必填字段 + // 校验流程表单必填字段 const valid = await validateNormalForm() if (!valid) { message.warning('表单校验不通过,请先完善表单!!') return } + if (pass) { // 获取修改的流程变量, 暂时只支持流程表单 const variables = getUpdatedProcessInstanceVariables()