diff --git a/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue b/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue index e34b935d..a6f10f08 100644 --- a/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue +++ b/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue @@ -161,7 +161,8 @@ const getApprovalDetail = async (row: any) => { // TODO 获取审批详情,设置 activityId 为发起人节点(为了获取字段权限。暂时只对 Simple 设计器有效) const data = await ProcessInstanceApi.getApprovalDetail({ processDefinitionId: row.id, - activityId: NodeId.START_USER_NODE_ID + activityId: NodeId.START_USER_NODE_ID, + processVariables: row.processVariables }) if (!data) { @@ -218,6 +219,19 @@ const submitForm = async () => { } // 流程表单校验 await fApi.value.validate() + // 临时保存已选择的审批人信息,避免重新预测后已选择的审批人丢失 + const savedAssignees = { ...startUserSelectAssignees.value } + // 预测流程节点会因为输入的参数值而产生新的预测结果值,所以在提交时需重新预测一次 + await getApprovalDetail({ + id: props.selectProcessDefinition.id, + processVariables: detailForm.value?.value + }) + // 恢复已选择的审批人信息 + Object.keys(savedAssignees).forEach((id) => { + if (startUserSelectAssignees.value[id]) { + startUserSelectAssignees.value[id] = savedAssignees[id] + } + }) // 如果有指定审批人,需要校验 if (startUserSelectTasks.value?.length > 0) { for (const userTask of startUserSelectTasks.value) { @@ -235,7 +249,8 @@ const submitForm = async () => { await ProcessInstanceApi.createProcessInstance({ processDefinitionId: props.selectProcessDefinition.id, variables: detailForm.value.value, - startUserSelectAssignees: startUserSelectAssignees.value + startUserSelectAssignees: startUserSelectAssignees.value, + nodeIds: activityNodes.value?.map((item: any) => item.id) }) // 提示 message.success('发起流程成功')