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'],