From 1804f5b5694002b3171d90a39c73d8be6d7c54ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 26 Oct 2026 10:56:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7warm-flow=E5=88=B02.1.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/workflow/leave/types.ts | 1 + src/pages/workflow/leave/leaveEdit.tsx | 51 +++++++++++++------ .../components/DefinitionFormModal.tsx | 16 +----- .../workflow/processDefinition/design.tsx | 1 - .../workflow/processDefinition/index.tsx | 43 +--------------- 5 files changed, 40 insertions(+), 72 deletions(-) diff --git a/src/api/workflow/leave/types.ts b/src/api/workflow/leave/types.ts index 7b263308..4c450172 100644 --- a/src/api/workflow/leave/types.ts +++ b/src/api/workflow/leave/types.ts @@ -25,4 +25,5 @@ export interface LeaveVO { leaveDays?: number; remark?: string; status?: string; + flowCode?: string; } diff --git a/src/pages/workflow/leave/leaveEdit.tsx b/src/pages/workflow/leave/leaveEdit.tsx index bf12e8b2..b3af864b 100644 --- a/src/pages/workflow/leave/leaveEdit.tsx +++ b/src/pages/workflow/leave/leaveEdit.tsx @@ -6,6 +6,7 @@ import dayjs from 'dayjs'; import { useEffect, useMemo, useState } from 'react'; import type { LeaveForm } from '@/api/workflow/leave/types'; import type { StartProcessBo } from '@/api/workflow/workflowCommon/types'; +import { listDefinition } from '@/api/workflow/definition'; import { addLeave, getLeave, updateLeave } from '@/api/workflow/leave'; import { startWorkFlow } from '@/api/workflow/task'; import ApprovalButton from '@/components/workflow/ApprovalButton'; @@ -18,15 +19,6 @@ const leaveTypeOptions = [ { value: '4', label: '婚假' } ]; -const flowCodeOptions = [ - { value: 'leave1', label: '请假申请-普通' }, - { value: 'leave2', label: '请假申请-排他网关' }, - { value: 'leave3', label: '请假申请-并行网关' }, - { value: 'leave4', label: '请假申请-会签' }, - { value: 'leave5', label: '请假申请-并行会签网关' }, - { value: 'leave6', label: '请假申请-排他并行会签' } -]; - const leaveTimeDefaultOpenValue = [dayjs().startOf('day'), dayjs().endOf('day')] as [dayjs.Dayjs, dayjs.Dayjs]; type PageType = 'add' | 'update' | 'view' | 'approval'; @@ -37,10 +29,7 @@ function calcLeaveDays(range?: [dayjs.Dayjs, dayjs.Dayjs]) { } function buildTaskVariables(data?: Partial) { - return { - leaveDays: data?.leaveDays, - userList: ['1', '3', '4'] - }; + return { day: data?.leaveDays }; } export default function WorkflowLeaveEditPage() { @@ -51,7 +40,9 @@ export default function WorkflowLeaveEditPage() { const id = query.get('id'); const taskId = query.get('taskId') || ''; const readonly = pageType === 'view'; - const [flowCode, setFlowCode] = useState('leave1'); + const [flowCode, setFlowCode] = useState(''); + const [flowCodeOptions, setFlowCodeOptions] = useState>([]); + const [flowCodeLocked, setFlowCodeLocked] = useState(false); const [loading, setLoading] = useState(false); const [submitLoading, setSubmitLoading] = useState(false); const [approvalOpen, { setTrue: openApprovalModal, set: setApprovalOpen }] = useBoolean(false); @@ -62,6 +53,15 @@ export default function WorkflowLeaveEditPage() { useEffect(() => { const load = async () => { form.resetFields(); + if (pageType === 'add' || pageType === 'update') { + const definitions = await listDefinition({ pageNum: 1, pageSize: 200 }); + const options = (definitions.data?.rows || []) + .filter(item => item.isPublish === 1) + .map(item => ({ value: item.flowCode, label: `${item.flowName}(${item.flowCode})` })); + setFlowCodeOptions(options); + setFlowCode(options[0]?.value || ''); + setFlowCodeLocked(false); + } if (!id || pageType === 'add') { form.setFieldsValue({}); return; @@ -69,6 +69,15 @@ export default function WorkflowLeaveEditPage() { setLoading(true); try { const res = await getLeave(id); + if (pageType === 'update' && res.data.flowCode) { + setFlowCode(res.data.flowCode); + setFlowCodeLocked(true); + setFlowCodeOptions(current => + current.some(item => item.value === res.data.flowCode) + ? current + : [...current, { value: res.data.flowCode!, label: res.data.flowCode! }] + ); + } form.setFieldsValue({ ...res.data, leaveTime: @@ -137,6 +146,10 @@ export default function WorkflowLeaveEditPage() { }; const submitFlow = async () => { + if (!flowCode) { + message.error('请选择流程定义'); + return; + } const data = await saveLeave(false, false); if (!data?.id) return; const payload: StartProcessBo = { @@ -183,9 +196,15 @@ export default function WorkflowLeaveEditPage() { - {pageType === 'add' && ( + {(pageType === 'add' || pageType === 'update') && ( - )} diff --git a/src/pages/workflow/processDefinition/components/DefinitionFormModal.tsx b/src/pages/workflow/processDefinition/components/DefinitionFormModal.tsx index 83b697bd..79495ce3 100644 --- a/src/pages/workflow/processDefinition/components/DefinitionFormModal.tsx +++ b/src/pages/workflow/processDefinition/components/DefinitionFormModal.tsx @@ -1,6 +1,6 @@ import type { FormInstance } from 'antd'; import { ModalForm, ProFormText, ProFormTreeSelect } from '@ant-design/pro-components'; -import { Checkbox, Form, Radio } from 'antd'; +import { Form, Radio } from 'antd'; import type { CategoryTreeVO } from '@/api/workflow/category/types'; import type { FlowDefinitionForm } from '@/api/workflow/definition/types'; @@ -9,8 +9,6 @@ interface DefinitionFormModalProps { title: string; form: FormInstance; categoryOptions: CategoryTreeVO[]; - autoPass: boolean; - onAutoPassChange: (autoPass: boolean) => void; onCancel: () => void; onFinish: (fields: FlowDefinitionForm) => Promise; } @@ -20,13 +18,9 @@ export default function DefinitionFormModal({ title, form, categoryOptions, - autoPass, - onAutoPassChange, onCancel, onFinish }: DefinitionFormModalProps) { - const editId = Form.useWatch('id', form); - return ( title={title} @@ -37,7 +31,6 @@ export default function DefinitionFormModal({ onOpenChange={nextOpen => !nextOpen && onCancel()} onFinish={onFinish} > -