diff --git a/frontend/src/pages/Workflow/Definition/components/EditModal.tsx b/frontend/src/pages/Workflow/Definition/components/EditModal.tsx index ededbe28..a070c7d2 100644 --- a/frontend/src/pages/Workflow/Definition/components/EditModal.tsx +++ b/frontend/src/pages/Workflow/Definition/components/EditModal.tsx @@ -11,10 +11,12 @@ import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Textarea } from '@/components/ui/textarea'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; -import { Loader2, FileText, Tag, AlignLeft, Folder } from 'lucide-react'; +import { Loader2 } from 'lucide-react'; import { useToast } from '@/components/ui/use-toast'; -import type { WorkflowDefinition, WorkflowCategoryResponse } from '../types'; +import type { WorkflowDefinition, WorkflowCategoryResponse, WorkflowDefinitionRequest } from '../types'; import { saveDefinition, updateDefinition, getWorkflowCategoryList } from '../service'; +import { getDefinitions as getFormDefinitions } from '@/pages/Form/Definition/service'; +import type { FormDefinitionResponse } from '@/pages/Form/Definition/types'; interface EditModalProps { visible: boolean; @@ -28,32 +30,34 @@ const EditModal: React.FC = ({ visible, onClose, onSuccess, reco const isEdit = !!record; const [submitting, setSubmitting] = useState(false); const [categories, setCategories] = useState([]); + const [formDefinitions, setFormDefinitions] = useState([]); const [formData, setFormData] = useState({ name: '', key: '', categoryId: undefined as number | undefined, + formDefinitionId: undefined as number | undefined, description: '', - triggers: [] as string[], }); useEffect(() => { if (visible) { loadCategories(); + loadFormDefinitions(); if (record) { setFormData({ name: record.name, key: record.key, categoryId: record.categoryId, + formDefinitionId: record.formDefinitionId, description: record.description || '', - triggers: record.triggers || [], }); } else { setFormData({ name: '', key: '', categoryId: undefined, + formDefinitionId: undefined, description: '', - triggers: [], }); } } @@ -73,6 +77,17 @@ const EditModal: React.FC = ({ visible, onClose, onSuccess, reco } }; + const loadFormDefinitions = async () => { + try { + const result = await getFormDefinitions({ status: 'PUBLISHED' }); + if (result?.content) { + setFormDefinitions(result.content); + } + } catch (error) { + console.error('加载表单定义失败:', error); + } + }; + const handleClose = () => { if (!submitting) { onClose(); @@ -124,22 +139,39 @@ const EditModal: React.FC = ({ visible, onClose, onSuccess, reco setSubmitting(true); try { - const submitData: WorkflowDefinition = { - ...formData, - id: record?.id || 0, - flowVersion: isEdit ? record.flowVersion : 1, - status: isEdit ? record.status : 'DRAFT', - graph: record?.graph || { nodes: [], edges: [] }, - formConfig: record?.formConfig || { formItems: [] }, - } as WorkflowDefinition; - if (isEdit && record) { + // 更新时需要传递完整的数据和版本号 + const submitData: WorkflowDefinitionRequest = { + name: formData.name, + key: formData.key, + categoryId: formData.categoryId, + formDefinitionId: formData.formDefinitionId, + flowVersion: record.flowVersion, // 流程版本 + description: formData.description, + graph: record.graph, + bpmnXml: record.bpmnXml, + status: record.status, + version: record.version, // 乐观锁版本号 + }; + await updateDefinition(record.id, submitData); toast({ title: '更新成功', description: `工作流 "${formData.name}" 已更新`, }); } else { + // 新建时初始化基本数据 + const submitData: WorkflowDefinitionRequest = { + name: formData.name, + key: formData.key, + categoryId: formData.categoryId, + formDefinitionId: formData.formDefinitionId, + flowVersion: 1, // 新建时流程版本为1 + description: formData.description, + graph: { nodes: [], edges: [] }, + status: 'DRAFT', + }; + await saveDefinition(submitData); toast({ title: '创建成功', @@ -161,8 +193,6 @@ const EditModal: React.FC = ({ visible, onClose, onSuccess, reco } }; - const selectedCategory = categories.find(c => c.id === formData.categoryId); - return ( @@ -172,8 +202,7 @@ const EditModal: React.FC = ({ visible, onClose, onSuccess, reco
{/* 流程分类 */}
-
{/* 流程标识 */}
-
+ {/* 流程名称 */} +
+ + setFormData(prev => ({ ...prev, name: e.target.value }))} + disabled={isEdit} + className="h-10" + /> +
+ {/* 描述 */}
-