From 6314b7eb35893a83630a569cc8798fd01ba157e0 Mon Sep 17 00:00:00 2001 From: ye1023 <12588209+ye1023@user.noreply.gitee.com> Date: Wed, 13 May 2026 14:46:28 +0800 Subject: [PATCH] =?UTF-8?q?yxk-20260513-=E5=85=9A=E5=A7=94=E4=BC=9A?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E8=A1=A8=E5=8D=95=20=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E5=8A=9E=E7=90=86=E4=B9=8B=E5=89=8D=EF=BC=8C?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E4=BF=9D=E5=AD=98=E5=9F=BA=E7=A1=80=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=EF=BC=88=E4=B8=9A=E5=8A=A1=E8=A1=A8=E5=8D=95=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=EF=BC=89=E5=92=8C=E6=B5=81=E7=A8=8B=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=88=E6=98=AF=E5=90=A6=E5=8A=9E=E7=BB=93?= =?UTF-8?q?=E3=80=81=E9=83=A8=E9=97=A8=E7=BB=8F=E5=8A=9E=E4=BA=BA=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/BgPartymatterBPMForm.vue | 56 +++++++++++++++---- .../myHandleTask/content/MyHandleContent.vue | 17 ++++++ .../content/TaskHandleInnerContent.vue | 5 ++ 3 files changed, 67 insertions(+), 11 deletions(-) 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'],