升级warm-flow到2.1.0

This commit is contained in:
疯狂的狮子Li 2026-10-26 10:56:31 +08:00
parent 395dc0cc31
commit 1804f5b569
5 changed files with 40 additions and 72 deletions

View File

@ -25,4 +25,5 @@ export interface LeaveVO {
leaveDays?: number;
remark?: string;
status?: string;
flowCode?: string;
}

View File

@ -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<LeaveForm>) {
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<Array<{ value: string; label: string }>>([]);
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() {
<Form.Item name="status" hidden>
<Input />
</Form.Item>
{pageType === 'add' && (
{(pageType === 'add' || pageType === 'update') && (
<Form.Item label="流程定义">
<Select value={flowCode} options={flowCodeOptions} onChange={setFlowCode} />
<Select
value={flowCode || undefined}
options={flowCodeOptions}
disabled={flowCodeLocked}
onChange={setFlowCode}
placeholder="选择流程定义"
/>
</Form.Item>
)}
<Form.Item name="leaveType" label="请假类型" rules={[{ required: true, message: '请假类型不能为空' }]}>

View File

@ -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<FlowDefinitionForm>;
categoryOptions: CategoryTreeVO[];
autoPass: boolean;
onAutoPassChange: (autoPass: boolean) => void;
onCancel: () => void;
onFinish: (fields: FlowDefinitionForm) => Promise<boolean>;
}
@ -20,13 +18,9 @@ export default function DefinitionFormModal({
title,
form,
categoryOptions,
autoPass,
onAutoPassChange,
onCancel,
onFinish
}: DefinitionFormModalProps) {
const editId = Form.useWatch('id', form);
return (
<ModalForm<FlowDefinitionForm>
title={title}
@ -37,7 +31,6 @@ export default function DefinitionFormModal({
onOpenChange={nextOpen => !nextOpen && onCancel()}
onFinish={onFinish}
>
<ProFormText name="id" hidden />
<ProFormTreeSelect
name="category"
label="流程类别"
@ -64,16 +57,11 @@ export default function DefinitionFormModal({
rules={[{ required: true, message: '流程定义名称不能为空' }]}
/>
<Form.Item name="modelValue" label="设计器模式" rules={[{ required: true, message: '设计器模式不能为空' }]}>
<Radio.Group disabled={!!editId}>
<Radio.Group>
<Radio.Button value="CLASSICS">经典模式</Radio.Button>
<Radio.Button value="MIMIC">仿钉钉模式</Radio.Button>
</Radio.Group>
</Form.Item>
<Form.Item label="流程配置">
<Checkbox checked={autoPass} onChange={event => onAutoPassChange(event.target.checked)}>
下一节点执行人是当前任务处理人自动审批
</Checkbox>
</Form.Item>
<Form.Item name="formCustom" label="是否动态表单" rules={[{ required: true, message: '请选择是否动态表单' }]}>
<Radio.Group>
<Radio.Button value="Y" disabled>

View File

@ -11,7 +11,6 @@ export default function WorkflowProcessDefinitionDesignPage() {
const definitionId = search.get('definitionId') || '';
const params = new URLSearchParams({
id: definitionId,
onlyDesignShow: 'true',
Authorization: `Bearer ${getToken() || ''}`,
clientid: appEnv.clientId
});

View File

@ -22,9 +22,7 @@ import {
addDefinition,
copyDefinition,
deleteDefinition,
editDefinition,
exportDefinition,
getDefinition,
listDefinition,
publishDefinition,
unPublishList
@ -82,11 +80,9 @@ export default function WorkflowProcessDefinitionPage() {
const [selectedRows, setSelectedRows] = useState<FlowDefinitionVO[]>([]);
const [modalOpen, { setTrue: openModal, setFalse: closeModal }] = useBoolean(false);
const [modalTitle, setModalTitle] = useState('新增流程');
const [autoPass, setAutoPass] = useState(false);
const [uploadOpen, { setTrue: openUploadModal, setFalse: closeUploadModal }] = useBoolean(false);
const canAdd = hasPermi(userInfo, ['workflow:definition:add']);
const canEdit = hasPermi(userInfo, ['workflow:definition:edit']);
const canRemove = hasPermi(userInfo, ['workflow:definition:remove']);
const canImport = hasPermi(userInfo, ['workflow:definition:import']);
const canExport = hasPermi(userInfo, ['workflow:definition:export']);
@ -135,44 +131,16 @@ export default function WorkflowProcessDefinitionPage() {
...defaultForm,
category: category || ''
});
setAutoPass(false);
setModalTitle('新增流程');
openModal();
};
const openEdit = async (row?: FlowDefinitionVO) => {
const target = row || selectedOne;
if (!target?.id) return;
const res = await getDefinition(target.id);
const data = res.data || {};
form.resetFields();
form.setFieldsValue(data);
setAutoPass(false);
if (data.ext) {
try {
setAutoPass(!!JSON.parse(data.ext).autoPass);
} catch {
setAutoPass(false);
}
}
setModalTitle('修改流程');
openModal();
};
const submitForm = async (fields: FlowDefinitionForm) => {
const values = { ...form.getFieldsValue(true), ...fields };
const data = { ...values, ext: JSON.stringify({ autoPass }) };
if (data.id) {
await editDefinition(data);
} else {
await addDefinition(data);
switchTab('1');
}
await addDefinition(values);
switchTab('1');
message.success('操作成功');
form.resetFields();
if (data.id) {
actionRef.current?.reload();
}
return true;
};
@ -377,11 +345,6 @@ export default function WorkflowProcessDefinitionPage() {
添加
</Button>
),
canEdit && (
<Button key="edit" icon={<EditOutlined />} disabled={!selectedOne} onClick={() => openEdit()}>
修改
</Button>
),
canRemove && (
<Popconfirm key="delete" title="是否确认删除选中的流程定义?" onConfirm={() => handleDelete()}>
<Button danger icon={<DeleteOutlined />} disabled={!selectedIds.length}>
@ -409,8 +372,6 @@ export default function WorkflowProcessDefinitionPage() {
open={modalOpen}
form={form}
categoryOptions={categoryOptions}
autoPass={autoPass}
onAutoPassChange={setAutoPass}
onCancel={closeModal}
onFinish={submitForm}
/>