diff --git a/src/views/bg/bgpartymatter/components/BgPartymatterBPMForm.vue b/src/views/bg/bgpartymatter/components/BgPartymatterBPMForm.vue index 7082d82..fb4f30f 100644 --- a/src/views/bg/bgpartymatter/components/BgPartymatterBPMForm.vue +++ b/src/views/bg/bgpartymatter/components/BgPartymatterBPMForm.vue @@ -146,7 +146,7 @@ - 保存 + 保存 @@ -154,6 +154,7 @@ @@ -317,6 +318,11 @@ } async function submitForm() { + return saveMainForm(); + } + + async function saveMainForm(options: { showMessage?: boolean; emitOk?: boolean } = {}) { + const { showMessage = true, emitOk = true } = options; savingMain.value = true; try { const processInstanceId = processInfo.value.processInstanceId; @@ -327,16 +333,37 @@ formData: { ...mainForm }, }); if (res.success) { - createMessage.success(res.message || '保存成功'); - emit('ok'); - } else { - createMessage.warning(res.message || '保存失败'); + if (showMessage) { + createMessage.success(res.message || '保存成功'); + } + if (emitOk) { + emit('ok'); + } + return true; } + createMessage.warning(res.message || '保存失败'); + return false; + } catch (error) { + createMessage.warning('保存失败'); + return false; } finally { savingMain.value = false; } } + async function saveMainFormBeforeProcessHandle() { + if (!mainDisabled.value) { + const mainSaved = await saveMainForm({ showMessage: false, emitOk: false }); + if (!mainSaved) { + return false; + } + } + if (showSubApproveUser.value) { + return saveSubApproveUserVariable({ showSuccessMessage: false }); + } + return true; + } + function openFeedbackModal() { if (!mainForm.id) { createMessage.warning('主表数据不存在,无法新增反馈'); @@ -350,17 +377,18 @@ feedbackModalRef.value?.open(mainForm.id, mainForm.secretLevel, processInstanceId); } - async function saveSubApproveUserVariable() { + async function saveSubApproveUserVariable(options: { showSuccessMessage?: boolean } = {}) { + const { showSuccessMessage = true } = options; const processInstanceId = processInfo.value.processInstanceId; const isEndValue = String(isEnd.value); const usernameValue = normalizeUsernameList(subApproveUser.value); if (!processInstanceId) { createMessage.warning('流程实例ID不能为空'); - return; + return false; } if (isEndValue !== '1' && !usernameValue) { createMessage.warning('请选择部门经办人'); - return; + return false; } savingSubApproveUser.value = true; @@ -368,17 +396,23 @@ const isEndResult = await saveProcessVariable('isEnd', isEndValue); if (!isEndResult?.success) { createMessage.warning(isEndResult.message || '保存失败'); - return; + return false; } if (isEndValue !== '1') { const subApproveUserResult = await saveProcessVariable('subApproveUser', usernameValue); if (!subApproveUserResult?.success) { createMessage.warning(subApproveUserResult.message || '保存失败'); - return; + return false; } } - createMessage.success('保存成功'); + if (showSuccessMessage) { + createMessage.success('保存成功'); + } + return true; + } catch (error) { + createMessage.warning('保存失败'); + return false; } finally { savingSubApproveUser.value = false; } diff --git a/src/views/super/bpm/process/personalOffice/myHandleTask/content/MyHandleContent.vue b/src/views/super/bpm/process/personalOffice/myHandleTask/content/MyHandleContent.vue index 1109d4e..91ad534 100644 --- a/src/views/super/bpm/process/personalOffice/myHandleTask/content/MyHandleContent.vue +++ b/src/views/super/bpm/process/personalOffice/myHandleTask/content/MyHandleContent.vue @@ -172,6 +172,10 @@ selnextUserStatus:{ type: Boolean, default: true, + }, + beforeHandle: { + type: Function, + default: undefined, } }, emits: ['success'], @@ -372,6 +376,11 @@ params.fileList = isString(params.fileList) ? params.fileList : JSON.stringify(params.fileList); } try { + const canHandle = await runBeforeHandle(); + if (!canHandle) { + loading.value = false; + return; + } console.log('流程提交->params', params); let json = await taskComplete(params); console.log('流程提交-result', json); @@ -383,6 +392,14 @@ } } + async function runBeforeHandle() { + if (typeof props.beforeHandle !== 'function') { + return true; + } + const result = await props.beforeHandle(); + return result !== false; + } + async function initDict() { const dictData = await initDictOptions('approval_remarks'); console.log('dic', dictData); diff --git a/src/views/super/bpm/process/personalOffice/myHandleTask/content/TaskHandleInnerContent.vue b/src/views/super/bpm/process/personalOffice/myHandleTask/content/TaskHandleInnerContent.vue index 4bd712e..02c9783 100644 --- a/src/views/super/bpm/process/personalOffice/myHandleTask/content/TaskHandleInnerContent.vue +++ b/src/views/super/bpm/process/personalOffice/myHandleTask/content/TaskHandleInnerContent.vue @@ -19,6 +19,7 @@ :allowAddSign="allowAddSign" :allowCounterSignAddUser="allowCounterSignAddUser" :allowReject="allowReject" + :beforeHandle="beforeHandle" :currentTaskName="currentNode.taskName"> @@ -55,6 +56,10 @@ claim:{ type: Boolean, default: false + }, + beforeHandle: { + type: Function, + default: undefined } }, emits: ['success', 'claimSuccess'],