From 54cfe1d96c315f9dea2fd447b4d03f2c8d21bce6 Mon Sep 17 00:00:00 2001 From: zhanglc Date: Mon, 8 Dec 2025 16:40:06 +0800 Subject: [PATCH 1/7] =?UTF-8?q?feat:=20=E3=80=90bpm=E3=80=91bpmn=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8:=20=E4=B8=9A=E5=8A=A1=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E6=B7=BB=E5=8A=A0=E9=87=8D=E6=96=B0=E5=8F=91?= =?UTF-8?q?=E8=B5=B7=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/bpm/oa/leave/create.vue | 25 +++++++++++++++++++++++++ src/views/bpm/oa/leave/index.vue | 19 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/views/bpm/oa/leave/create.vue b/src/views/bpm/oa/leave/create.vue index cf4a13e2a..bacf6ce30 100644 --- a/src/views/bpm/oa/leave/create.vue +++ b/src/views/bpm/oa/leave/create.vue @@ -79,6 +79,7 @@ defineOptions({ name: 'BpmOALeaveCreate' }) const message = useMessage() // 消息弹窗 const { delView } = useTagsViewStore() // 视图操作 const { push, currentRoute } = useRouter() // 路由 +const { query } = useRoute() // 查询参数 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 const formData = ref({ @@ -190,6 +191,25 @@ const daysDifference = () => { return Math.floor(diffTime / oneDay) } +/** 获取请假数据,用于重新发起时自动填充 */ +const getLeaveData = async (id: number) => { + formLoading.value = true + const data = await LeaveApi.getLeave(id) + if(!data){ + message.error('重新发起请假失败,原因:请假数据不存在') + return + } + if (data) { + formData.value = { + type: data.type, + reason: data.reason, + startTime: data.startTime, + endTime: data.endTime + } + } + formLoading.value = false +} + /** 初始化 */ onMounted(async () => { // TODO @小北:这里可以简化,统一通过 getApprovalDetail 处理么? @@ -205,6 +225,11 @@ onMounted(async () => { processDefinitionId.value = processDefinitionDetail.id startUserSelectTasks.value = processDefinitionDetail.startUserSelectTasks + // 如果有业务编号,说明是重新发起,需要加载原有数据 + if (query.id) { + await getLeaveData(Number(query.id)) + } + // 审批相关:加载最新的审批详情,主要用于节点预测 await getApprovalDetail() }) diff --git a/src/views/bpm/oa/leave/index.vue b/src/views/bpm/oa/leave/index.vue index 1d1d42740..bde88826b 100644 --- a/src/views/bpm/oa/leave/index.vue +++ b/src/views/bpm/oa/leave/index.vue @@ -140,6 +140,14 @@ > 取消 + + 重新发起 + @@ -206,6 +214,17 @@ const handleCreate = () => { router.push({ name: 'OALeaveCreate' }) } +/** 重新发起操作 */ +const handleReInitiate = (row: LeaveApi.LeaveVO) => { + router.push({ + name: 'OALeaveCreate', + query: { + id: row.id, + processInstanceId: row.processInstanceId + } + }) +} + /** 详情操作 */ const handleDetail = (row: LeaveApi.LeaveVO) => { router.push({ From 265dd5f7dc9387d04f696dcded530a254941a1d2 Mon Sep 17 00:00:00 2001 From: zhanglc Date: Mon, 8 Dec 2025 16:44:35 +0800 Subject: [PATCH 2/7] =?UTF-8?q?fix:=20=E3=80=90bpm=E3=80=91bpmn=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8:=20=E4=B8=9A=E5=8A=A1=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E7=9A=84=E9=87=8D=E6=96=B0=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=8F=AA=E9=99=90=E5=B7=B2=E5=AE=8C=E7=BB=93?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/bpm/oa/leave/index.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/views/bpm/oa/leave/index.vue b/src/views/bpm/oa/leave/index.vue index bde88826b..5fbbf3a82 100644 --- a/src/views/bpm/oa/leave/index.vue +++ b/src/views/bpm/oa/leave/index.vue @@ -141,6 +141,7 @@ 取消 Date: Tue, 9 Dec 2025 10:10:43 +0800 Subject: [PATCH 3/7] refactor: format code and remove redundant check --- src/views/bpm/oa/leave/create.vue | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/views/bpm/oa/leave/create.vue b/src/views/bpm/oa/leave/create.vue index bacf6ce30..a4bf607a6 100644 --- a/src/views/bpm/oa/leave/create.vue +++ b/src/views/bpm/oa/leave/create.vue @@ -195,17 +195,15 @@ const daysDifference = () => { const getLeaveData = async (id: number) => { formLoading.value = true const data = await LeaveApi.getLeave(id) - if(!data){ + if (!data) { message.error('重新发起请假失败,原因:请假数据不存在') return } - if (data) { - formData.value = { - type: data.type, - reason: data.reason, - startTime: data.startTime, - endTime: data.endTime - } + formData.value = { + type: data.type, + reason: data.reason, + startTime: data.startTime, + endTime: data.endTime } formLoading.value = false } From 5fb94d9e738d0677f4847f43702e94da7b801193 Mon Sep 17 00:00:00 2001 From: zhanglc Date: Tue, 9 Dec 2025 10:22:20 +0800 Subject: [PATCH 4/7] refactor: remove unused parameters --- src/views/bpm/oa/leave/index.vue | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/views/bpm/oa/leave/index.vue b/src/views/bpm/oa/leave/index.vue index 5fbbf3a82..9fab923a0 100644 --- a/src/views/bpm/oa/leave/index.vue +++ b/src/views/bpm/oa/leave/index.vue @@ -145,7 +145,7 @@ v-hasPermi="['bpm:oa-leave:create']" link type="primary" - @click="handleReInitiate(scope.row)" + @click="handleReCreate(scope.row)" > 重新发起 @@ -216,12 +216,11 @@ const handleCreate = () => { } /** 重新发起操作 */ -const handleReInitiate = (row: LeaveApi.LeaveVO) => { +const handleReCreate = (row: LeaveApi.LeaveVO) => { router.push({ name: 'OALeaveCreate', query: { - id: row.id, - processInstanceId: row.processInstanceId + id: row.id } }) } From 815af152538af910919eff0b89197c606ba0fb62 Mon Sep 17 00:00:00 2001 From: zhanglc Date: Tue, 9 Dec 2025 11:00:09 +0800 Subject: [PATCH 5/7] =?UTF-8?q?feat:=E3=80=90bpm=E3=80=91=E6=88=91?= =?UTF-8?q?=E7=9A=84=E6=B5=81=E7=A8=8B=E6=B7=BB=E5=8A=A0=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E5=8F=91=E8=B5=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/bpm/model/index.ts | 1 + src/views/bpm/processInstance/index.vue | 21 +++++++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/api/bpm/model/index.ts b/src/api/bpm/model/index.ts index 63b6af6ad..6d2b4d224 100644 --- a/src/api/bpm/model/index.ts +++ b/src/api/bpm/model/index.ts @@ -6,6 +6,7 @@ export type ProcessDefinitionVO = { deploymentTIme: string suspensionState: number formType?: number + formCustomCreatePath?: string } export type ModelVO = { diff --git a/src/views/bpm/processInstance/index.vue b/src/views/bpm/processInstance/index.vue index d6fc83d38..c25ca7025 100644 --- a/src/views/bpm/processInstance/index.vue +++ b/src/views/bpm/processInstance/index.vue @@ -275,21 +275,26 @@ const resetQuery = () => { /** 发起流程操作 **/ const handleCreate = async (row?: ProcessInstanceVO) => { - // 如果是【业务表单】,不支持重新发起 if (row?.id) { const processDefinitionDetail = await DefinitionApi.getProcessDefinition( row.processDefinitionId ) + //如果是【业务表单】,跳转到对应的发起界面 if (processDefinitionDetail.formType === 20) { - message.error('重新发起流程失败,原因:该流程使用业务表单,不支持重新发起') - return + await router.push({ + path: processDefinitionDetail.formCustomCreatePath, + query: { + id: row.businessKey + } + }) + } else if (processDefinitionDetail.formType === 10) { + //如果是【流程表单】,跳转到流程发起界面 + await router.push({ + name: 'BpmProcessInstanceDynamicFormCreate', + query: { processInstanceId: row.id } + }) } } - // 跳转发起流程界面 - await router.push({ - name: 'BpmProcessInstanceCreate', - query: { processInstanceId: row?.id } - }) } /** 查看详情 */ From 3348bae5ad8bbe97e6d3be56721cf84c408d8ebd Mon Sep 17 00:00:00 2001 From: zhanglc Date: Tue, 9 Dec 2025 14:19:47 +0800 Subject: [PATCH 6/7] fix: correct parameter name of 'BpmProcessInstanceCreate' --- src/views/bpm/processInstance/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/bpm/processInstance/index.vue b/src/views/bpm/processInstance/index.vue index c25ca7025..9d7d6cc72 100644 --- a/src/views/bpm/processInstance/index.vue +++ b/src/views/bpm/processInstance/index.vue @@ -290,7 +290,7 @@ const handleCreate = async (row?: ProcessInstanceVO) => { } else if (processDefinitionDetail.formType === 10) { //如果是【流程表单】,跳转到流程发起界面 await router.push({ - name: 'BpmProcessInstanceDynamicFormCreate', + name: 'BpmProcessInstanceCreate', query: { processInstanceId: row.id } }) } From 43627ad90e59bbe97bed5514e3845a1897136255 Mon Sep 17 00:00:00 2001 From: zhanglc Date: Tue, 9 Dec 2025 14:49:12 +0800 Subject: [PATCH 7/7] fix: correct parameter name of 'oldId' --- src/views/bpm/oa/leave/create.vue | 8 ++++---- src/views/bpm/oa/leave/index.vue | 2 +- src/views/bpm/processInstance/index.vue | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/views/bpm/oa/leave/create.vue b/src/views/bpm/oa/leave/create.vue index a4bf607a6..06aedb09f 100644 --- a/src/views/bpm/oa/leave/create.vue +++ b/src/views/bpm/oa/leave/create.vue @@ -192,9 +192,9 @@ const daysDifference = () => { } /** 获取请假数据,用于重新发起时自动填充 */ -const getLeaveData = async (id: number) => { +const getLeaveData = async (oldId: number) => { formLoading.value = true - const data = await LeaveApi.getLeave(id) + const data = await LeaveApi.getLeave(oldId) if (!data) { message.error('重新发起请假失败,原因:请假数据不存在') return @@ -224,8 +224,8 @@ onMounted(async () => { startUserSelectTasks.value = processDefinitionDetail.startUserSelectTasks // 如果有业务编号,说明是重新发起,需要加载原有数据 - if (query.id) { - await getLeaveData(Number(query.id)) + if (query.oldId) { + await getLeaveData(Number(query.oldId)) } // 审批相关:加载最新的审批详情,主要用于节点预测 diff --git a/src/views/bpm/oa/leave/index.vue b/src/views/bpm/oa/leave/index.vue index 9fab923a0..c1b24098b 100644 --- a/src/views/bpm/oa/leave/index.vue +++ b/src/views/bpm/oa/leave/index.vue @@ -220,7 +220,7 @@ const handleReCreate = (row: LeaveApi.LeaveVO) => { router.push({ name: 'OALeaveCreate', query: { - id: row.id + oldId: row.id } }) } diff --git a/src/views/bpm/processInstance/index.vue b/src/views/bpm/processInstance/index.vue index 9d7d6cc72..7dd73a222 100644 --- a/src/views/bpm/processInstance/index.vue +++ b/src/views/bpm/processInstance/index.vue @@ -284,7 +284,7 @@ const handleCreate = async (row?: ProcessInstanceVO) => { await router.push({ path: processDefinitionDetail.formCustomCreatePath, query: { - id: row.businessKey + oldId: row.businessKey } }) } else if (processDefinitionDetail.formType === 10) {