From e4dd7d85abc60d127c38469a91738526b9a0bf9d Mon Sep 17 00:00:00 2001
From: ye1023 <12588209+ye1023@user.noreply.gitee.com>
Date: Fri, 10 Jul 2026 14:17:27 +0800
Subject: [PATCH] =?UTF-8?q?yxk-20260710=20=E5=85=9A=E5=A7=94=E4=BC=9A?=
=?UTF-8?q?=E3=80=81=E6=89=80=E5=8A=A1=E4=BC=9A=E3=80=81=E6=8A=8A=E6=8A=8A?=
=?UTF-8?q?=E8=84=89=EF=BC=9A=E9=83=A8=E9=97=A8=E8=B4=9F=E8=B4=A3=E4=BA=BA?=
=?UTF-8?q?=E5=AE=A1=E6=89=B9=E8=8A=82=E7=82=B9=EF=BC=8C=E5=A2=9E=E5=8A=A0?=
=?UTF-8?q?=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6=E5=AE=8C=E6=88=90=EF=BC=8C?=
=?UTF-8?q?=E8=8B=A5=E5=AE=8C=E6=88=90=E5=88=99=E8=BF=9B=E5=85=A5=E7=9D=A3?=
=?UTF-8?q?=E5=8A=9E=E9=83=A8=E9=97=A8=E5=AE=A1=E6=89=B9=EF=BC=9B=E8=8B=A5?=
=?UTF-8?q?=E6=9C=AA=E5=AE=8C=E6=88=90=E5=88=99=E5=9B=9E=E5=88=B0=E7=BB=8F?=
=?UTF-8?q?=E5=8A=9E=E4=BA=BA=E7=BB=A7=E7=BB=AD=E5=8F=8D=E9=A6=88=E5=AE=8C?=
=?UTF-8?q?=E6=88=90=E6=83=85=E5=86=B5=EF=BC=8C=E7=9B=B4=E5=88=B0=E6=9C=80?=
=?UTF-8?q?=E7=BB=88=E5=AE=8C=E6=88=90=E4=BB=BB=E5=8A=A1=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../bg/bgpartymatter/BgPartymatter.api.ts | 5 ++
.../components/BgPartymatterBPMForm.vue | 67 +++++++++++++++++--
src/views/bg/bqtakepulse/BgTakepulse.api.ts | 5 ++
.../components/BgTakepulseBPMForm.vue | 67 +++++++++++++++++--
4 files changed, 134 insertions(+), 10 deletions(-)
diff --git a/src/views/bg/bgpartymatter/BgPartymatter.api.ts b/src/views/bg/bgpartymatter/BgPartymatter.api.ts
index 96a2c39..f72214b 100644
--- a/src/views/bg/bgpartymatter/BgPartymatter.api.ts
+++ b/src/views/bg/bgpartymatter/BgPartymatter.api.ts
@@ -18,6 +18,7 @@ enum Api {
exportXlsHeaders = '/bgpartymatter/bgPartymatter/exportXlsHeaders',
saveBpmForm = '/bgpartymatter/bgPartymatter/saveBpmForm',
setProcessVariable = '/act/process/setProcessVariable',
+ setBpmVariableLocal = '/act/process/setBpmVariableLocal',
bgPartymatterFeedbackList = '/bgpartymatter/bgPartymatter/listBgPartymatterFeedbackByMainId',
bgPartymatterFeedbackSave= '/bgpartymatter/bgPartymatter/addBgPartymatterFeedback',
bgPartymatterFeedbackEdit= '/bgpartymatter/bgPartymatter/editBgPartymatterFeedback',
@@ -111,6 +112,10 @@ export const setProcessVariable = (params) => {
return defHttp.post({ url: Api.setProcessVariable, params }, { isTransformResponse: false });
}
+export const setBpmVariableLocal = (params) => {
+ return defHttp.post({ url: Api.setBpmVariableLocal, params }, { isTransformResponse: false });
+}
+
/**
* 列表接口
* @param params
diff --git a/src/views/bg/bgpartymatter/components/BgPartymatterBPMForm.vue b/src/views/bg/bgpartymatter/components/BgPartymatterBPMForm.vue
index 46bc106..90e8801 100644
--- a/src/views/bg/bgpartymatter/components/BgPartymatterBPMForm.vue
+++ b/src/views/bg/bgpartymatter/components/BgPartymatterBPMForm.vue
@@ -220,6 +220,18 @@
+
+
+
+
+
+ 否(未完成)
+ 是(已完成)
+
+
+
+
+
([]);
@@ -298,6 +311,7 @@
const subApproveUserNameText = ref('');
const userResolveVersion = ref(0);
const isEnd = ref(0);
+ const isFinish = ref('0');
const lastGeneratedNumber = ref('');
const mainForm = reactive>({
@@ -366,6 +380,7 @@
const canManageFeedback = computed(() => props.formBpm && props.formData?.PROCESS_TAB_TYPE === 'run' && !!props.formData?.taskId);
const showAddFeedback = computed(() => String(props.formData?.extendUrlParams?.addfeedback ?? '') === '1');
const showSubApproveUser = computed(() => String(props.formData?.extendUrlParams?.selectuser ?? '') === '1');
+ const showFinishSelector = computed(() => String(props.formData?.extendUrlParams?.selectfinish ?? '') === '1');
const showSubApproveUserSelector = computed(() => showSubApproveUser.value && String(isEnd.value) !== '1');
const processInfo = computed(() => ({
@@ -412,6 +427,14 @@
{ immediate: true }
);
+ watch(
+ () => props.formData?.vars?.isFinish,
+ (value) => {
+ isFinish.value = String(value ?? '0') === '1' ? '1' : '0';
+ },
+ { immediate: true }
+ );
+
watch(
subApproveUser,
(value) => {
@@ -547,7 +570,7 @@
}
function buildDeptLeaderApproveReason() {
- return '已审批,请督办部门确认。';
+ return String(isFinish.value) === '1' ? '已审批,请督办部门确认。' : '请反馈完成情况。';
}
function buildSuperviseHandlerConfirmReason() {
@@ -739,7 +762,13 @@
}
}
if (showSubApproveUser.value) {
- return saveSubApproveUserVariable({ showSuccessMessage: false });
+ const subApproveUserSaved = await saveSubApproveUserVariable({ showSuccessMessage: false });
+ if (!subApproveUserSaved) {
+ return false;
+ }
+ }
+ if (showFinishSelector.value) {
+ return saveFinishVariable({ showSuccessMessage: false });
}
return true;
}
@@ -828,11 +857,39 @@
}
}
+ async function saveFinishVariable(options: { showSuccessMessage?: boolean } = {}) {
+ const { showSuccessMessage = true } = options;
+ const processInstanceId = processInfo.value.processInstanceId;
+ if (!processInstanceId) {
+ createMessage.warning('流程实例ID不能为空');
+ return false;
+ }
+
+ savingFinish.value = true;
+ try {
+ // Gateway_isfinish 读取当前执行分支的局部变量,需在办理动作前写入。
+ const result = await saveProcessVariable('isFinish', String(isFinish.value));
+ if (!result?.success) {
+ createMessage.warning(result.message || '保存失败');
+ return false;
+ }
+ if (showSuccessMessage) {
+ createMessage.success('保存成功');
+ }
+ return true;
+ } catch (error) {
+ createMessage.warning('保存失败');
+ return false;
+ } finally {
+ savingFinish.value = false;
+ }
+ }
+
function saveProcessVariable(varField: string, varVal: any) {
- return setProcessVariable({
+ return setBpmVariableLocal({
processInstanceId: processInfo.value.processInstanceId,
taskId: processInfo.value.taskId,
- local: true,
+ parentLevel: 2,
varField,
varVal,
});
diff --git a/src/views/bg/bqtakepulse/BgTakepulse.api.ts b/src/views/bg/bqtakepulse/BgTakepulse.api.ts
index 15aa2a6..a61fd6d 100644
--- a/src/views/bg/bqtakepulse/BgTakepulse.api.ts
+++ b/src/views/bg/bqtakepulse/BgTakepulse.api.ts
@@ -19,6 +19,7 @@ enum Api {
bgTakepulseFeedbackList = '/bqtakepulse/bgTakepulse/queryBgTakepulseFeedbackByMainId',
saveBpmForm = '/bqtakepulse/bgTakepulse/saveBpmForm',
setProcessVariable = '/act/process/setProcessVariable',
+ setBpmVariableLocal = '/act/process/setBpmVariableLocal',
bgTakepulseBpmFeedbackList = '/bqtakepulse/bgTakepulse/listBgTakepulseFeedbackByMainId',
bgTakepulseFeedbackSave = '/bqtakepulse/bgTakepulse/addBgTakepulseFeedback',
bgTakepulseFeedbackEdit = '/bqtakepulse/bgTakepulse/editBgTakepulseFeedback',
@@ -101,6 +102,10 @@ export const setProcessVariable = (params) => {
return defHttp.post({ url: Api.setProcessVariable, params }, { isTransformResponse: false });
}
+export const setBpmVariableLocal = (params) => {
+ return defHttp.post({ url: Api.setBpmVariableLocal, params }, { isTransformResponse: false });
+}
+
/**
* BPM办理页按主表和流程实例查询反馈,避免不同督办轮次的反馈混在一起。
*/
diff --git a/src/views/bg/bqtakepulse/components/BgTakepulseBPMForm.vue b/src/views/bg/bqtakepulse/components/BgTakepulseBPMForm.vue
index 4897ab0..d2885bc 100644
--- a/src/views/bg/bqtakepulse/components/BgTakepulseBPMForm.vue
+++ b/src/views/bg/bqtakepulse/components/BgTakepulseBPMForm.vue
@@ -245,6 +245,18 @@
+
+
+
+
+
+ 否(未完成)
+ 是(已完成)
+
+
+
+
+
([]);
@@ -323,6 +336,7 @@
const subApproveUserNameText = ref('');
const userResolveVersion = ref(0);
const isEnd = ref(0);
+ const isFinish = ref('0');
const mainForm = reactive>({
id: '',
@@ -392,6 +406,7 @@
const canManageFeedback = computed(() => props.formBpm && props.formData?.PROCESS_TAB_TYPE === 'run' && !!props.formData?.taskId);
const showAddFeedback = computed(() => String(props.formData?.extendUrlParams?.addfeedback ?? '') === '1');
const showSubApproveUser = computed(() => String(props.formData?.extendUrlParams?.selectuser ?? '') === '1');
+ const showFinishSelector = computed(() => String(props.formData?.extendUrlParams?.selectfinish ?? '') === '1');
const showSubApproveUserSelector = computed(() => showSubApproveUser.value && String(isEnd.value) !== '1');
const processInfo = computed(() => ({
@@ -435,6 +450,14 @@
{ immediate: true }
);
+ watch(
+ () => props.formData?.vars?.isFinish,
+ (value) => {
+ isFinish.value = String(value ?? '0') === '1' ? '1' : '0';
+ },
+ { immediate: true }
+ );
+
watch(
subApproveUser,
(value) => {
@@ -561,7 +584,7 @@
}
function buildDeptLeaderApproveReason() {
- return '已审批,请督办部门确认。';
+ return String(isFinish.value) === '1' ? '已审批,请督办部门确认。' : '请反馈完成情况。';
}
function buildSuperviseHandlerConfirmReason() {
@@ -710,7 +733,13 @@
}
}
if (showSubApproveUser.value) {
- return saveSubApproveUserVariable({ showSuccessMessage: false });
+ const subApproveUserSaved = await saveSubApproveUserVariable({ showSuccessMessage: false });
+ if (!subApproveUserSaved) {
+ return false;
+ }
+ }
+ if (showFinishSelector.value) {
+ return saveFinishVariable({ showSuccessMessage: false });
}
return true;
}
@@ -799,11 +828,39 @@
}
}
+ async function saveFinishVariable(options: { showSuccessMessage?: boolean } = {}) {
+ const { showSuccessMessage = true } = options;
+ const processInstanceId = processInfo.value.processInstanceId;
+ if (!processInstanceId) {
+ createMessage.warning('流程实例ID不能为空');
+ return false;
+ }
+
+ savingFinish.value = true;
+ try {
+ // Gateway_isfinish 读取当前分支局部变量,需在办理动作前写入外层分支 execution。
+ const result = await saveProcessVariable('isFinish', String(isFinish.value));
+ if (!result?.success) {
+ createMessage.warning(result.message || '保存失败');
+ return false;
+ }
+ if (showSuccessMessage) {
+ createMessage.success('保存成功');
+ }
+ return true;
+ } catch (error) {
+ createMessage.warning('保存失败');
+ return false;
+ } finally {
+ savingFinish.value = false;
+ }
+ }
+
function saveProcessVariable(varField: string, varVal: any) {
- return setProcessVariable({
+ return setBpmVariableLocal({
processInstanceId: processInfo.value.processInstanceId,
taskId: processInfo.value.taskId,
- local: true,
+ parentLevel: 2,
varField,
varVal,
});