From bd5c4aa47342f997dd40c721d86256ad33bf71f2 Mon Sep 17 00:00:00 2001
From: ye1023 <12588209+ye1023@user.noreply.gitee.com>
Date: Thu, 30 Jul 2026 15:51:42 +0800
Subject: [PATCH 1/3] =?UTF-8?q?yxk-20260730=20=E6=94=B9=E5=96=84=E6=8F=90?=
=?UTF-8?q?=E6=A1=88=20=E6=99=AE=E9=80=9A=E6=96=B0=E5=A2=9E=E9=A1=B5?=
=?UTF-8?q?=E9=9D=A2=E4=B8=8D=E5=86=8D=E9=A2=84=E7=94=9F=E6=88=90=E6=B5=81?=
=?UTF-8?q?=E6=B0=B4=E5=8F=B7=E3=80=82=E6=8F=90=E6=A1=88=E7=BC=96=E5=8F=B7?=
=?UTF-8?q?=E5=9C=A8=E7=82=B9=E5=87=BB=E4=BF=9D=E5=AD=98=E6=97=B6=E7=94=B1?=
=?UTF-8?q?=E5=90=8E=E7=AB=AF=E7=94=9F=E6=88=90=EF=BC=8C=E5=89=8D=E7=AB=AF?=
=?UTF-8?q?=E4=BB=85=E5=B1=95=E7=A4=BA=E2=80=9C=E4=BF=9D=E5=AD=98=E5=90=8E?=
=?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90=E2=80=9D=EF=BC=8C=E9=81=BF?=
=?UTF-8?q?=E5=85=8D=E5=B9=B6=E5=8F=91=E9=87=8D=E5=A4=8D=E3=80=82=20Implem?=
=?UTF-8?q?entation=20Changes=20=E6=96=B0=E5=A2=9E=E9=A1=B5=E9=9D=A2?=
=?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E6=97=B6=E4=B8=8D=E5=86=8D=E8=B0=83?=
=?UTF-8?q?=E7=94=A8=E5=B9=B4=E5=BA=A6=E6=B5=81=E6=B0=B4=E5=8F=B7=E6=8E=A5?=
=?UTF-8?q?=E5=8F=A3=EF=BC=8C=E4=B9=9F=E4=B8=8D=E5=86=8D=E6=8B=BC=E6=8E=A5?=
=?UTF-8?q?=E6=8F=90=E6=A1=88=E7=BC=96=E5=8F=B7=E3=80=82=20=E6=8F=90?=
=?UTF-8?q?=E6=A1=88=E7=BC=96=E5=8F=B7=E8=BE=93=E5=85=A5=E6=A1=86=E7=BB=A7?=
=?UTF-8?q?=E7=BB=AD=E5=8F=AA=E8=AF=BB=EF=BC=9B=E6=96=B0=E5=A2=9E=E7=8A=B6?=
=?UTF-8?q?=E6=80=81=E6=98=BE=E7=A4=BA=E2=80=9C=E4=BF=9D=E5=AD=98=E5=90=8E?=
=?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90=E2=80=9D=E5=8D=A0=E4=BD=8D?=
=?UTF-8?q?=E6=8F=90=E7=A4=BA=E3=80=82=20=E5=90=8E=E7=AB=AF=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E4=B8=93=E7=94=A8=E5=88=9B=E5=BB=BA=E6=96=B9=E6=B3=95?=
=?UTF-8?q?=EF=BC=8C=E5=9C=A8=E4=BF=9D=E5=AD=98=E4=BA=8B=E5=8A=A1=E5=86=85?=
=?UTF-8?q?=EF=BC=9A=E5=8E=9F=E5=AD=90=E9=80=92=E5=A2=9E=E5=B9=B4=E5=BA=A6?=
=?UTF-8?q?=E5=BA=8F=E5=88=97=E8=A1=A8=E3=80=82=20=E6=8C=89=20=E6=8F=90?=
=?UTF-8?q?=E6=A1=88=E9=83=A8=E9=97=A8=E5=90=8D=E7=A7=B0-YYYY=E5=B9=B4-?=
=?UTF-8?q?=E5=9B=9B=E4=BD=8D=E6=B5=81=E6=B0=B4=E5=8F=B7=20=E7=94=9F?=
=?UTF-8?q?=E6=88=90=E7=BC=96=E5=8F=B7=E3=80=82=20=E8=A6=86=E7=9B=96?=
=?UTF-8?q?=E5=89=8D=E7=AB=AF=E4=BC=A0=E5=85=A5=E7=9A=84=20proposalNo=20?=
=?UTF-8?q?=E5=90=8E=E4=BF=9D=E5=AD=98=E4=B8=BB=E8=A1=A8=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
新增接口返回 { id, proposalNo };前端附件仍使用返回的 id 关联。
新增年度序列表及历史编号初始化 SQL,保证首次上线从当前最大流水号继续递增。
---
.../ImprovementProposal.data.ts | 11 ++--------
.../ImprovementProposalList.vue | 2 --
.../components/ImprovementProposalForm.vue | 21 ++++---------------
3 files changed, 6 insertions(+), 28 deletions(-)
diff --git a/src/views/gh/improvementProposal/ImprovementProposal.data.ts b/src/views/gh/improvementProposal/ImprovementProposal.data.ts
index 1f01377..f1ebf25 100644
--- a/src/views/gh/improvementProposal/ImprovementProposal.data.ts
+++ b/src/views/gh/improvementProposal/ImprovementProposal.data.ts
@@ -80,18 +80,11 @@ export const columns: BasicColumn[] = [
align:"center",
dataIndex: 'improvementMethod'
},
- {
- title: '业务状态',
- align:"center",
- dataIndex: 'bpmStatus_dictText',
- width:90
-
- dataIndex: 'finalAward_dictText'
- },
{
title: '流程状态',
align:"center",
- dataIndex: 'bpmStatus_dictText'
+ width:90,
+ dataIndex: 'bpmStatus_dictText'
},
];
diff --git a/src/views/gh/improvementProposal/ImprovementProposalList.vue b/src/views/gh/improvementProposal/ImprovementProposalList.vue
index 676c462..fecce76 100644
--- a/src/views/gh/improvementProposal/ImprovementProposalList.vue
+++ b/src/views/gh/improvementProposal/ImprovementProposalList.vue
@@ -20,8 +20,6 @@
业务状态
- 流程状态
-
diff --git a/src/views/gh/improvementProposal/components/ImprovementProposalForm.vue b/src/views/gh/improvementProposal/components/ImprovementProposalForm.vue
index 45f88c9..9de5c3b 100644
--- a/src/views/gh/improvementProposal/components/ImprovementProposalForm.vue
+++ b/src/views/gh/improvementProposal/components/ImprovementProposalForm.vue
@@ -6,7 +6,7 @@
-
+
@@ -126,7 +126,7 @@
import { defineComponent, ref, reactive, computed, toRaw, onMounted, nextTick } from 'vue';
import { defHttp } from '/@/utils/http/axios';
import { useValidateAntFormAndTable } from '/@/hooks/system/useJvxeMethods';
- import { queryImprovementDeptScoreListByMainId, queryImprovementInstituteVoteListByMainId, queryDataById, saveOrUpdate, getLatestProposalSequence } from '../ImprovementProposal.api';
+ import { queryImprovementDeptScoreListByMainId, queryImprovementInstituteVoteListByMainId, queryDataById, saveOrUpdate } from '../ImprovementProposal.api';
import { JVxeTable } from '/@/components/jeecg/JVxeTable';
import {improvementDeptScoreColumns, improvementInstituteVoteColumns} from '../ImprovementProposal.data';
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
@@ -308,20 +308,6 @@
formData.proposalDeptCode = departInfo.orgCode;
}
- async function getProposalSequence() {
- const year = new Date().getFullYear();
- const latestSequence = await getLatestProposalSequence(year);
- // return Number(latestSequence) + 1;
- return String(Number(latestSequence) + 1).padStart(4, '0');
- }
-
- async function generateProposalNo() {
- const deptCode = formData.proposalDeptName || '';
- const year = new Date().getFullYear();
- const proposalSequence = await getProposalSequence();
- return `${deptCode}-${year}年-${proposalSequence}`;
- }
-
onMounted(()=>{
initFormData();
});
@@ -355,7 +341,6 @@
improvementInstituteVoteTable.dataSource = [];
formData.proposalDate = getCurrentDate();
await applyCurrentUserDeptInfo();
- formData.proposalNo = await generateProposalNo();
}
async function edit(row) {
@@ -420,12 +405,14 @@
// 新增阶段附件暂不绑定;主表生成 ID 后统一关联,保证普通表单和 BPM 使用同一查询键。
if (!isUpdate) {
const newId = typeof result?.id === 'string' ? result.id.trim() : '';
+ const proposalNo = typeof result?.proposalNo === 'string' ? result.proposalNo.trim() : '';
if (!newId) {
// 阻断成功文案等非业务 ID 写入附件表,避免后续 BPM 无法按主表 ID 查询附件。
createMessage.error('新增成功但未返回提案ID,附件未关联,请刷新后重试');
return;
}
formData.id = newId;
+ formData.proposalNo = proposalNo;
await beforeFileRef.value?.bindBussinessId(`${formData.id}:before`);
await afterFileRef.value?.bindBussinessId(`${formData.id}:after`);
}
From 5a0cd96e4e2428c1a8f89b70a18976bce4bec795 Mon Sep 17 00:00:00 2001
From: ye1023 <12588209+ye1023@user.noreply.gitee.com>
Date: Thu, 30 Jul 2026 16:03:28 +0800
Subject: [PATCH 2/3] =?UTF-8?q?yxk-20260730=20=E6=94=B9=E5=96=84=E6=8F=90?=
=?UTF-8?q?=E6=A1=88=20=E5=88=97=E8=A1=A8=E6=A0=B7=E5=BC=8F=E8=B0=83?=
=?UTF-8?q?=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ImprovementProposal.data.ts | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/views/gh/improvementProposal/ImprovementProposal.data.ts b/src/views/gh/improvementProposal/ImprovementProposal.data.ts
index f1ebf25..e810b03 100644
--- a/src/views/gh/improvementProposal/ImprovementProposal.data.ts
+++ b/src/views/gh/improvementProposal/ImprovementProposal.data.ts
@@ -16,8 +16,16 @@ export const columns: BasicColumn[] = [
{
title: '提案名称',
align:"center",
- dataIndex: 'proposalName'
+ dataIndex: 'proposalName',
+ width:250
},
+ {
+ title: '提案类别',
+ align:"center",
+ dataIndex: 'proposalCategory_dictText',
+ width:110
+
+ },
{
title: '最终奖项',
align:"center",
@@ -63,13 +71,7 @@ export const columns: BasicColumn[] = [
width:110
},
- {
- title: '提案类别',
- align:"center",
- dataIndex: 'proposalCategory_dictText',
- width:110
- },
{
title: '问题描述',
align:"center",
From 85a7e561da0eea76ce59244040f1b7d7da86c4a9 Mon Sep 17 00:00:00 2001
From: ye1023 <12588209+ye1023@user.noreply.gitee.com>
Date: Thu, 30 Jul 2026 16:13:51 +0800
Subject: [PATCH 3/3] =?UTF-8?q?yxk-20260730=20=E6=94=B9=E5=96=84=E6=8F=90?=
=?UTF-8?q?=E6=A1=88=20=E4=BF=AE=E5=A4=8D=E6=B5=81=E7=A8=8B=E8=A1=A8?=
=?UTF-8?q?=E5=8D=95=E4=B8=AD=E6=8F=90=E6=A1=88=E7=B1=BB=E5=9E=8B=E4=B8=8D?=
=?UTF-8?q?=E8=83=BD=E6=AD=A3=E5=B8=B8=E7=BF=BB=E8=AF=91=E7=9A=84bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../components/ImprovementProposalBPMForm.vue | 28 ++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
diff --git a/src/views/gh/improvementProposal/components/ImprovementProposalBPMForm.vue b/src/views/gh/improvementProposal/components/ImprovementProposalBPMForm.vue
index 2ff8be8..967da2e 100644
--- a/src/views/gh/improvementProposal/components/ImprovementProposalBPMForm.vue
+++ b/src/views/gh/improvementProposal/components/ImprovementProposalBPMForm.vue
@@ -14,7 +14,7 @@
{{ proposal.proposalNo || '-' }}
{{ proposal.proposalName || '-' }}
{{ formatDate(proposal.proposalDate) }}
- {{ proposal.proposalCategory_dictText || proposal.proposalCategory || '-' }}
+ {{ proposalCategoryText }}
{{ proposal.proposalDeptName || '-' }}
{{ proposal.applicantName || '-' }}
{{ proposal.teamName || '-' }}
@@ -258,6 +258,7 @@
import Icon from '/@/components/Icon/index';
import { useMessage } from '/@/hooks/web/useMessage';
import { useUserStore } from '/@/store/modules/user';
+ import { initDictOptions } from '/@/utils/dict/index';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import SUploadFile from '/@/components/semri/fileComponent/SUploadFile.vue';
import TaskHandleInnerContent from '/@/views/super/bpm/process/personalOffice/myHandleTask/content/TaskHandleInnerContent.vue';
@@ -290,6 +291,7 @@
const savingVote = ref(false);
const scoreModalVisible = ref(false);
const proposal = ref({});
+ const proposalCategoryText = ref('-');
const currentScore = ref(null);
const voteRows = ref([]);
const instituteVoteCandidates = ref([]);
@@ -363,6 +365,7 @@
const mainId = processInfo.value.mainId;
if (!mainId) {
proposal.value = {};
+ proposalCategoryText.value = '-';
currentScore.value = null;
voteRows.value = [];
instituteVoteCandidates.value = [];
@@ -379,6 +382,7 @@
: Promise.resolve(null),
]);
proposal.value = main || {};
+ proposalCategoryText.value = await resolveProposalCategoryText(proposal.value);
currentScore.value = myScore || null;
voteRows.value = votes || [];
initialAward.value = proposal.value.initialAward || '';
@@ -406,6 +410,28 @@
return processInfo.value.taskDefKey === taskDefKey;
}
+ /**
+ * BPM 详情接口未必携带 JEECG 自动追加的 _dictText 字段,因此此处以字典接口兜底,
+ * 保证基本信息中的提案类别始终展示 proposal_category 的文本。
+ */
+ async function resolveProposalCategoryText(data: Recordable) {
+ const dictText = data.proposalCategory_dictText || data.proposalCategoryDictText;
+ if (dictText) return String(dictText);
+
+ const categoryValue = data.proposalCategory;
+ if (categoryValue === undefined || categoryValue === null || categoryValue === '') return '-';
+
+ try {
+ const options = await initDictOptions('proposal_category');
+ const matched = Array.isArray(options)
+ ? options.find((item) => String(item.value) === String(categoryValue))
+ : undefined;
+ return matched?.text || matched?.label || String(categoryValue);
+ } catch (error) {
+ return String(categoryValue);
+ }
+ }
+
function actionPayload(extra: Recordable = {}) {
return { ...processInfo.value, ...extra };
}