diff --git a/src/views/secondDev/approveFlowPage.vue b/src/views/secondDev/approveFlowPage.vue index f3b4a83..2e8fefe 100644 --- a/src/views/secondDev/approveFlowPage.vue +++ b/src/views/secondDev/approveFlowPage.vue @@ -83,7 +83,9 @@ import ProcessInformation from '/@/views/workflow/task/components/flow/ProcessInformation.vue'; import { useI18n } from '/@/hooks/web/useI18n'; import { useMessage } from '/@/hooks/web/useMessage'; + import { useUserStore } from '/@/store/modules/user'; + const userStore = useUserStore(); const { t } = useI18n(); const { notification } = useMessage(); @@ -187,8 +189,10 @@ tabStore.closeTab(currentRoute, router); } - async function onApproveClick() { - await submit(); + async function onApproveClick(isAutoAgreeBreak = false) { + if (!isAutoAgreeBreak) { + await submit(); + } if (!validateSuccess.value) { return; } @@ -196,6 +200,10 @@ const nextNodes = await postGetNextTaskMaybeArrival(params); approvalData.approvedType = ApproveType.AGREE; approvalData.approvedResult = ApproveCode.AGREE; + //如果是自动同意触发的,关闭弹层的loading + if (isAutoAgreeBreak) { + opinionDlg.value.stopLoading() + } opinionDlg.value.toggleDialog({ action: 'agree', nextNodes, @@ -422,7 +430,9 @@ try { if (validateSuccess.value || values === 'reject' || values === 'finish') { let params = await getApproveParams(); - await postApproval(params); + let response = await postApproval(params); + // 判断返回值是否带有isAutoAgree 来判断中间是否有自动审批的业务,如有再执行判断待审人员是否包含自己,不包含就直接flowSuccess + if (checkIsAutoAgree(response)) return flowSuccess(); data.submitLoading = false; } @@ -430,4 +440,25 @@ flowFail(); } } + + /** + * 判断该次审核是否触发自动同意事务,并且检验返回得task 是否是自身作为被审需要弹框再次审核 + * @param response + */ + function checkIsAutoAgree(response) { + if (response != null + && response.length != 0 + && response[0].isAutoAgree == true // + && response[0].approveUserIds.includes(userStore.getUserInfo.id)) { + console.error('will reSelect user=', response[0].taskId); + // 注入新得taskId + taskId.value = response[0].taskId; + data.submitLoading = false; + onApproveClick(true); + return true; + } else { + return false; + } + + }