feat:流程自动审批功能

1.如果触发了自动审批,重新get过当前流程的taskList 重新执行isPrevChooseApprove来回吐出新的result ,给前端 并且把该次是否执行过isAutoAgree 回调给前端
2.前端接收到isAutoAgree,需要在result 中获取新的task 来调用原本的onApproveClick 来重新弹框给客户预选审批人
3.在返回值中。已approveUserIds 和当前的userStore.userInfo.id对比,是否是新的taskId节点的待审人,是就继续弹层触发选人逻辑,不是的话flowSuccess
This commit is contained in:
lvjunzhao
2025-02-17 16:32:32 +08:00
parent 3d9d8b6c14
commit 93b7bbf5ae

View File

@ -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,9 +430,22 @@
try {
if (validateSuccess.value || values === 'reject' || values === 'finish') {
let params = await getApproveParams();
await postApproval(params);
flowSuccess();
data.submitLoading = false;
let response = await postApproval(params);
// 判断返回值是否带有isAutoAgree 来判断中间是否有自动审批的业务,如有执行判断
if (response != null && response.length != 0 && response[0].isAutoAgree == true) {
// 判断待审人员是否包含自己不包含就直接flowSuccess
if (response[0].approveUserIds.includes(userStore.getUserInfo.id)) {
taskId.value = response[0].taskId;
data.submitLoading = false;
onApproveClick(false, true);
} else {
flowSuccess();
data.submitLoading = false;
}
} else {
flowSuccess();
data.submitLoading = false;
}
}
} catch (error) {
flowFail();