From 4ee340a514c27dee3a34cf30de5e18c5ab812210 Mon Sep 17 00:00:00 2001 From: ye1023 <12588209+ye1023@user.noreply.gitee.com> Date: Fri, 31 Jul 2026 15:07:33 +0800 Subject: [PATCH] =?UTF-8?q?yxk-20260731=20=E6=94=B9=E5=96=84=E6=8F=90?= =?UTF-8?q?=E6=A1=88=20=E5=88=A0=E9=99=A4=E6=B5=81=E7=A8=8B=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=9A=20=E4=B8=BA=E5=B7=B2=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E4=B8=94=E4=BB=8D=E5=9C=A8=E5=A4=84=E7=90=86=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E6=94=B9=E5=96=84=E6=8F=90=E6=A1=88=E5=A2=9E=E5=8A=A0=E2=80=9C?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B5=81=E7=A8=8B=E2=80=9D=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E3=80=82=E5=88=A0=E9=99=A4=E5=90=8E=E7=BB=88=E6=AD=A2=E5=BD=93?= =?UTF-8?q?=E5=89=8D=20Flowable=20=E5=AE=9E=E4=BE=8B=E3=80=81=E6=B8=85?= =?UTF-8?q?=E7=90=86=E6=9C=AC=E8=BD=AE=E6=B5=81=E7=A8=8B=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E5=B0=86=E6=8F=90=E6=A1=88=E5=9B=9E=E9=80=80?= =?UTF-8?q?=E4=B8=BA=E8=8D=89=E7=A8=BF=EF=BC=8C=E5=85=81=E8=AE=B8=E9=87=8D?= =?UTF-8?q?=E6=96=B0=E7=BC=96=E8=BE=91=E5=92=8C=E5=8F=91=E8=B5=B7=E3=80=82?= =?UTF-8?q?=20Implementation=20Changes=20=E5=90=8E=E7=AB=AF=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20POST=20/improvementproposal/improvementProposal/wit?= =?UTF-8?q?hdrawProcess=3Fid=3D...=EF=BC=8C=E5=A4=8D=E7=94=A8=E7=8E=B0?= =?UTF-8?q?=E6=9C=89=20improvementproposal:improvement=5Fproposal:delete?= =?UTF-8?q?=20=E6=9D=83=E9=99=90=E3=80=82=20=E5=9C=A8=20ImprovementProposa?= =?UTF-8?q?lService=20=E6=96=B0=E5=A2=9E=E4=BA=8B=E5=8A=A1=E6=96=B9?= =?UTF-8?q?=E6=B3=95=EF=BC=9A=E9=94=81=E5=AE=9A=E4=B8=BB=E8=A1=A8=E5=90=8E?= =?UTF-8?q?=EF=BC=8C=E4=BB=85=E5=85=81=E8=AE=B8=20bpm=5Fstatus=3D'2'=20?= =?UTF-8?q?=E4=B8=94=E5=AD=98=E5=9C=A8=E8=BF=90=E8=A1=8C=E4=B8=AD=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=AE=9E=E4=BE=8B=E7=9A=84=E6=8F=90=E6=A1=88=E6=92=A4?= =?UTF-8?q?=E5=9B=9E=EF=BC=9B=E6=B5=81=E7=A8=8B=E5=B7=B2=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E3=80=81=E5=B7=B2=E4=BD=9C=E5=BA=9F=E3=80=81=E8=8D=89=E7=A8=BF?= =?UTF-8?q?=E6=88=96=E5=AE=9E=E4=BE=8B=E4=B8=8D=E5=AD=98=E5=9C=A8=E6=97=B6?= =?UTF-8?q?=E6=8B=92=E7=BB=9D=E6=93=8D=E4=BD=9C=E3=80=82=20=E5=8F=82?= =?UTF-8?q?=E8=80=83=E5=85=9A=E5=A7=94=E4=BC=9A=E7=9A=84=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E6=B8=85=E7=90=86=E6=96=B9=E5=BC=8F=EF=BC=8C=E7=BB=88=E6=AD=A2?= =?UTF-8?q?=20Flowable=20=E8=BF=90=E8=A1=8C=E5=AE=9E=E4=BE=8B=E5=B9=B6?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=AF=A5=E5=AE=9E=E4=BE=8B=E7=9A=84=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E3=80=81=E5=AE=A1=E6=89=B9=E6=84=8F=E8=A7=81=E3=80=81?= =?UTF-8?q?=E6=8A=84=E9=80=81=E3=80=81=E6=B5=81=E7=A8=8B=E4=B8=AD=E9=97=B4?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=92=8C=E6=B5=81=E7=A8=8B=E6=97=A5=E5=BF=97?= =?UTF-8?q?=EF=BC=9B=E4=B8=8D=E6=94=B9=E5=8A=A8=E5=85=A8=E5=B1=80=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=BC=95=E6=93=8E=E4=BB=A3=E7=A0=81=E3=80=82=20?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=9C=AC=E8=BD=AE=20improvement=5Fdept=5Fsco?= =?UTF-8?q?re=E3=80=81improvement=5Finstitute=5Fvote=20=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=EF=BC=8C=E9=81=BF=E5=85=8D=E9=87=8D=E6=96=B0=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E5=90=8E=E5=A4=8D=E7=94=A8=E6=97=A7=E8=AF=84=E5=88=86=E3=80=81?= =?UTF-8?q?=E6=8A=95=E7=A5=A8=E7=BB=93=E6=9E=9C=E3=80=82=20=E5=B0=86?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E8=A1=8D=E7=94=9F=E5=AD=97=E6=AE=B5=E6=B8=85?= =?UTF-8?q?=E7=A9=BA=EF=BC=9A=E6=B5=81=E7=A8=8B=E5=AE=9E=E4=BE=8B=E3=80=81?= =?UTF-8?q?=E5=88=9D=E5=AE=A1/=E8=AF=84=E5=88=86/=E8=B4=9F=E8=B4=A3?= =?UTF-8?q?=E4=BA=BA=E5=A5=96=E9=A1=B9=E3=80=81=E8=AF=84=E5=88=86=E6=B1=87?= =?UTF-8?q?=E6=80=BB=E3=80=81=E6=89=80=E7=BA=A7=E6=8A=95=E7=A5=A8=E4=BA=BA?= =?UTF-8?q?=E6=95=B0=E4=B8=8E=E7=BB=93=E6=9E=9C=E3=80=81=E6=9C=80=E7=BB=88?= =?UTF-8?q?=E5=A5=96=E9=A1=B9=E3=80=81=E4=BA=BA=E5=B7=A5=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E3=80=81=E5=BD=92=E6=A1=A3=E4=BA=BA=E5=8F=8A=E5=BD=92=E6=A1=A3?= =?UTF-8?q?=E6=97=B6=E9=97=B4=EF=BC=9B=E4=BF=9D=E7=95=99=E6=8F=90=E6=A1=88?= =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E4=BF=A1=E6=81=AF=E3=80=81=E7=BC=96=E5=8F=B7?= =?UTF-8?q?=E5=92=8C=E4=B8=9A=E5=8A=A1=E9=99=84=E4=BB=B6=E3=80=82=20?= =?UTF-8?q?=E5=B0=86=E4=B8=BB=E8=A1=A8=20bpm=5Fstatus=20=E9=87=8D=E7=BD=AE?= =?UTF-8?q?=E4=B8=BA=201=EF=BC=8C=E4=BD=BF=E7=8E=B0=E6=9C=89=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E3=80=81=E5=88=A0=E9=99=A4=E5=92=8C=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E9=80=BB=E8=BE=91=E8=87=AA=E5=8A=A8=E6=81=A2?= =?UTF-8?q?=E5=A4=8D=E5=8F=AF=E7=94=A8=E3=80=82=20=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E6=93=8D=E4=BD=9C=E8=8F=9C=E5=8D=95=E5=9C=A8?= =?UTF-8?q?=E5=A4=84=E7=90=86=E4=B8=AD=E8=AE=B0=E5=BD=95=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E2=80=9C=E5=88=A0=E9=99=A4=E6=B5=81=E7=A8=8B=E2=80=9D=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=98=8E=E7=A1=AE=E6=8F=90=E7=A4=BA=E2=80=9C?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=90=8E=E5=B0=86=E5=9B=9E=E9=80=80=E4=B8=BA?= =?UTF-8?q?=E8=8D=89=E7=A8=BF=EF=BC=8C=E5=BD=93=E5=89=8D=E8=AF=84=E5=88=86?= =?UTF-8?q?=E3=80=81=E6=8A=95=E7=A5=A8=E5=92=8C=E5=AE=A1=E6=89=B9=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=B0=86=E8=A2=AB=E6=B8=85=E7=A9=BA=E2=80=9D=EF=BC=9B?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E5=90=8E=E5=88=B7=E6=96=B0=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E3=80=82=20=E4=B8=8D=E5=A2=9E=E5=8A=A0=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B5=81=E7=A8=8B=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E7=8E=B0=E6=9C=89=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4=E4=BB=8D?= =?UTF-8?q?=E5=8F=AA=E5=A4=84=E7=90=86=E8=8D=89=E7=A8=BF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ImprovementProposal.api.ts | 4 ++++ .../ImprovementProposalList.vue | 23 ++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/views/gh/improvementProposal/ImprovementProposal.api.ts b/src/views/gh/improvementProposal/ImprovementProposal.api.ts index dcd2a0b..7bb7c3c 100644 --- a/src/views/gh/improvementProposal/ImprovementProposal.api.ts +++ b/src/views/gh/improvementProposal/ImprovementProposal.api.ts @@ -17,6 +17,7 @@ enum Api { improvementInstituteVoteList = '/improvementproposal/improvementProposal/queryImprovementInstituteVoteByMainId', getLatestProposalSequence = '/improvementproposal/improvementProposal/getLatestProposalSequence', startProcess = '/improvementproposal/improvementProposal/startProcess', + withdrawProcess = '/improvementproposal/improvementProposal/withdrawProcess', bpmInitialReview = '/improvementproposal/improvementProposal/bpm/initialReview', bpmMyDeptScore = '/improvementproposal/improvementProposal/bpm/myDeptScore', bpmDeptScore = '/improvementproposal/improvementProposal/bpm/deptScore', @@ -110,6 +111,9 @@ export const getLatestProposalSequence = (year) => defHttp.get({url: Api.getLate /** 发起改善提案审批流程。 */ export const startProposalProcess = (id: string) => defHttp.post({ url: Api.startProcess, params: { id } }); +/** 删除运行中的改善提案流程,并把业务单据回退为草稿。 */ +export const withdrawProposalProcess = (id: string) => defHttp.post({ url: Api.withdrawProcess, params: { id } }); + /** 流程节点专用接口会在任务提交前保存业务字段和网关变量。 */ export const saveInitialReview = (params) => defHttp.post({ url: Api.bpmInitialReview, params }); export const queryMyDeptScore = (params) => defHttp.get({ url: Api.bpmMyDeptScore, params }); diff --git a/src/views/gh/improvementProposal/ImprovementProposalList.vue b/src/views/gh/improvementProposal/ImprovementProposalList.vue index 38ae9fb..4ba9b99 100644 --- a/src/views/gh/improvementProposal/ImprovementProposalList.vue +++ b/src/views/gh/improvementProposal/ImprovementProposalList.vue @@ -94,7 +94,7 @@ import {useModal} from '/@/components/Modal'; import ImprovementProposalModal from './components/ImprovementProposalModal.vue' import {columns, superQuerySchema} from './ImprovementProposal.data'; - import {list, deleteOne, batchDelete, getImportUrl, getExportUrl, startProposalProcess} from './ImprovementProposal.api'; + import {list, deleteOne, batchDelete, getImportUrl, getExportUrl, startProposalProcess, withdrawProposalProcess} from './ImprovementProposal.api'; import {downloadFile} from '/@/utils/common/renderUtils'; import JInput from "/@/components/Form/src/jeecg/components/JInput.vue"; import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue'; @@ -229,6 +229,17 @@ auth: 'improvementproposal:improvement_proposal:delete' }); } + if (isProcessing(record)) { + dropDownAction.push({ + label: '删除流程', + popConfirm: { + title: '确认删除流程吗?删除后提案将回退为草稿,当前评分、投票和审批数据将被清空。', + confirm: handleWithdrawProcess.bind(null, record), + placement: 'topLeft', + }, + auth: 'improvementproposal:improvement_proposal:delete' + }); + } dropDownAction.push( { label: '审批进度', @@ -257,11 +268,21 @@ handleSuccess(); } + /** 仅撤回运行中的流程,成功后服务端会把提案恢复为草稿。 */ + async function handleWithdrawProcess(record) { + await withdrawProposalProcess(record.id); + handleSuccess(); + } + /** 只有未绑定流程实例的草稿可以继续维护或发起。 */ function isDraft(record) { return String(record?.bpmStatus || '') === '1' && !record?.processInstanceId; } + function isProcessing(record) { + return String(record?.bpmStatus || '') === '2' && !!record?.processInstanceId; + } + /** * 审批进度 */