From db57d827999ae0f5f8af7c13a1a8c2c5950e48a4 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Fri, 24 Oct 2025 22:22:34 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E3=80=90antd=E3=80=91=E3=80=90bpm?= =?UTF-8?q?=E3=80=91oa=20=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/bpm/oa/leave/create.vue | 21 +++++++------------ .../processInstance/create/modules/form.vue | 1 - 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/apps/web-antd/src/views/bpm/oa/leave/create.vue b/apps/web-antd/src/views/bpm/oa/leave/create.vue index f5df0d528..19917d107 100644 --- a/apps/web-antd/src/views/bpm/oa/leave/create.vue +++ b/apps/web-antd/src/views/bpm/oa/leave/create.vue @@ -6,6 +6,7 @@ import { computed, onMounted, ref, watch } from 'vue'; import { confirm, Page, useVbenForm } from '@vben/common-ui'; import { BpmCandidateStrategyEnum, BpmNodeIdEnum } from '@vben/constants'; +import { useTabs } from '@vben/hooks'; import { IconifyIcon } from '@vben/icons'; import { Button, Card, message, Space } from 'ant-design-vue'; @@ -20,6 +21,8 @@ import ProcessInstanceTimeline from '#/views/bpm/processInstance/detail/modules/ import { useFormSchema } from './data'; +const { closeCurrentTab } = useTabs(); + const formLoading = ref(false); // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 const processDefineKey = 'oa_leave'; // 流程定义 Key @@ -51,11 +54,11 @@ const [Form, formApi] = useVbenForm({ /** 提交申请 */ async function onSubmit() { + // 1.1 表单校验 const { valid } = await formApi.validate(); if (!valid) { return; } - // 1.2 审批相关:校验指定审批人 if (startUserSelectTasks.value?.length > 0) { for (const userTask of startUserSelectTasks.value) { @@ -70,19 +73,16 @@ async function onSubmit() { // 提交表单 const data = (await formApi.getValues()) as BpmOALeaveApi.Leave; - // 审批相关:设置指定审批人 if (startUserSelectTasks.value?.length > 0) { data.startUserSelectAssignees = startUserSelectAssignees.value; } - // 格式化开始时间和结束时间的值 const submitData: BpmOALeaveApi.Leave = { ...data, startTime: Number(data.startTime), endTime: Number(data.endTime), }; - try { formLoading.value = true; await (formData.value?.id @@ -93,12 +93,9 @@ async function onSubmit() { content: $t('ui.actionMessage.operationSuccess'), key: 'action_process_msg', }); - await router.push({ name: 'BpmOALeave', }); - } catch (error: any) { - message.error(error.message); } finally { formLoading.value = false; } @@ -111,8 +108,7 @@ function onBack() { icon: 'warning', beforeClose({ isConfirm }) { if (isConfirm) { - // TODO @ziye、@jason:是不是要关闭当前标签哈。 - router.back(); + closeCurrentTab(); } return Promise.resolve(true); }, @@ -132,7 +128,6 @@ async function getApprovalDetail() { ), }), // 解决 GET 无法传递对象的问题,后端 String 再转 JSON }); - if (!data) { message.error('查询不到审批详情信息!'); return; @@ -182,21 +177,20 @@ watch( }, ); +/** 初始化 */ onMounted(async () => { const processDefinitionDetail: any = await getProcessDefinition( undefined, processDefineKey, ); - if (!processDefinitionDetail) { message.error('OA 请假的流程模型未配置,请检查!'); return; } - processDefinitionId.value = processDefinitionDetail.id; startUserSelectTasks.value = processDefinitionDetail.startUserSelectTasks; - getApprovalDetail(); + await getApprovalDetail(); }); @@ -220,7 +214,6 @@ onMounted(async () => { :show-status-icon="false" @select-user-confirm="selectUserConfirm" /> -