From 3525571fabc51c6e8b6e6ea6334b953993d2f643 Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Tue, 19 Aug 2025 16:26:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=90=8E=E7=AB=AF=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web-antd/src/api/workflow/task/model.d.ts | 4 +- .../src/views/workflow/leave/api/model.d.ts | 1 + .../src/views/workflow/leave/data.tsx | 8 ++ .../src/views/workflow/leave/leave-form.vue | 86 +++++++++++-------- 4 files changed, 63 insertions(+), 36 deletions(-) diff --git a/apps/web-antd/src/api/workflow/task/model.d.ts b/apps/web-antd/src/api/workflow/task/model.d.ts index 6ae21043..407fe570 100644 --- a/apps/web-antd/src/api/workflow/task/model.d.ts +++ b/apps/web-antd/src/api/workflow/task/model.d.ts @@ -63,9 +63,9 @@ export interface StartWorkFlowReqData { */ variables: Record; /** - * 流程实例业务扩展业务对象 + * 流程实例业务扩展业务对象 必须要有不能为null 可以为空对象 */ - flowInstanceBizExtBo?: Record; + flowInstanceBizExtBo: Record; } export interface TaskOperationData { diff --git a/apps/web-antd/src/views/workflow/leave/api/model.d.ts b/apps/web-antd/src/views/workflow/leave/api/model.d.ts index c1b0dbf7..8d3ba150 100644 --- a/apps/web-antd/src/views/workflow/leave/api/model.d.ts +++ b/apps/web-antd/src/views/workflow/leave/api/model.d.ts @@ -35,6 +35,7 @@ export interface LeaveVO { * */ status: string; + applyCode?: string; } export interface LeaveForm extends BaseEntity { diff --git a/apps/web-antd/src/views/workflow/leave/data.tsx b/apps/web-antd/src/views/workflow/leave/data.tsx index 8eabf0e7..5f6b3226 100644 --- a/apps/web-antd/src/views/workflow/leave/data.tsx +++ b/apps/web-antd/src/views/workflow/leave/data.tsx @@ -136,6 +136,14 @@ export const modalSchema: () => VbenFormSchema[] = () => [ ], }, defaultValue: 'frontend', + dependencies: { + componentProps: (model) => { + return { + disabled: model.id, + }; + }, + triggerFields: ['id'], + }, }, { label: '请假类型', diff --git a/apps/web-antd/src/views/workflow/leave/leave-form.vue b/apps/web-antd/src/views/workflow/leave/leave-form.vue index 6268d2ff..5dbc15f8 100644 --- a/apps/web-antd/src/views/workflow/leave/leave-form.vue +++ b/apps/web-antd/src/views/workflow/leave/leave-form.vue @@ -60,14 +60,22 @@ onMounted(async () => { const router = useRouter(); /** - * 提取通用逻辑 + * 获取已经处理好的表单参数 */ -async function handleSaveOrUpdate() { +async function getFormData() { let data = cloneDeep(await formApi.getValues()) as any; - data = omit(data, 'flowType'); + data = omit(data, 'flowType', 'type'); // 处理日期 data.startDate = dayjs(data.dateRange[0]).format('YYYY-MM-DD HH:mm:ss'); data.endDate = dayjs(data.dateRange[1]).format('YYYY-MM-DD HH:mm:ss'); + return data; +} + +/** + * 暂存/提交 提取通用逻辑 + */ +async function handleSaveOrUpdate() { + const data = await getFormData(); if (id) { data.id = id; return await leaveUpdate(data); @@ -103,37 +111,47 @@ async function handleStartWorkFlow() { } // 获取发起类型 const { type } = await formApi.getValues(); - if (type === 'backend') { - let data = cloneDeep(await formApi.getValues()) as any; - data = omit(data, 'flowType', 'type'); - // 处理日期 - data.startDate = dayjs(data.dateRange[0]).format('YYYY-MM-DD HH:mm:ss'); - data.endDate = dayjs(data.dateRange[1]).format('YYYY-MM-DD HH:mm:ss'); - await submitAndStartWorkflow(data); - await handleCompleteOrCancel(); - } else { - // 保存业务 - const leaveResp = await handleSaveOrUpdate(); - // 启动流程 - const taskVariables = { - leaveDays: leaveResp!.leaveDays, - userList: ['1', '3', '4'], - }; - const formValues = await formApi.getValues(); - const flowCode = formValues?.flowType ?? 'leave1'; - const startWorkFlowData: StartWorkFlowReqData = { - businessId: leaveResp!.id, - flowCode, - variables: taskVariables, - }; - const { taskId } = await startWorkFlow(startWorkFlowData); - // 打开窗口 - applyModalApi.setData({ - taskId, - taskVariables, - variables: {}, - }); - applyModalApi.open(); + /** + * 这里只是demo 实际只会用到一种 + */ + switch (type) { + // 后端发起流程 + case 'backend': { + const data = await getFormData(); + await submitAndStartWorkflow(data); + await handleCompleteOrCancel(); + break; + } + // 前端发起流程 + case 'frontend': { + // 保存业务 + const leaveResp = await handleSaveOrUpdate(); + // 启动流程 + const taskVariables = { + leaveDays: leaveResp!.leaveDays, + userList: ['1', '3', '4'], + }; + const formValues = await formApi.getValues(); + const flowCode = formValues?.flowType ?? 'leave1'; + const startWorkFlowData: StartWorkFlowReqData = { + businessId: leaveResp!.id, + flowCode, + variables: taskVariables, + flowInstanceBizExtBo: { + businessTitle: '请假申请 - 自定义业务标题', + businessCode: leaveResp!.applyCode, + }, + }; + const { taskId } = await startWorkFlow(startWorkFlowData); + // 打开窗口 + applyModalApi.setData({ + taskId, + taskVariables, + variables: {}, + }); + applyModalApi.open(); + break; + } } } catch (error) { console.error(error);