import React, { useState, useEffect } from 'react'; import { Modal, Form, Input, Switch, message } from 'antd'; import FlowgramEditor from './flowgram/Editor'; import type { FlowgramGraph } from './flowgram/types'; interface FlowgramWorkflowModalProps { visible: boolean; scenario?: any; onCancel: () => void; onOk: (values: any) => void; } const FlowgramWorkflowModal: React.FC = ({ visible, scenario, onCancel, onOk, }) => { const [form] = Form.useForm(); const [loading, setLoading] = useState(false); const [workflowGraph, setWorkflowGraph] = useState(); useEffect(() => { if (visible && scenario) { form.setFieldsValue({ name: scenario.name, isDisabled: scenario.isDisabled === 1, }); if (scenario.workflowGraph) { setWorkflowGraph(scenario.workflowGraph); } } else if (visible) { form.resetFields(); setWorkflowGraph(undefined); } }, [visible, scenario, form]); const handleOk = async () => { try { const values = await form.validateFields(); // Validate workflow has nodes if (!workflowGraph || workflowGraph.nodes.length === 0) { message.error('请添加至少一个节点到工作流'); return; } setLoading(true); const submitData = { ...values, workflowGraph, isDisabled: values.isDisabled ? 1 : 0, }; if (scenario) { submitData.id = scenario.id; } await onOk(submitData); form.resetFields(); setWorkflowGraph(undefined); } catch (error) { console.error('表单验证失败:', error); } finally { setLoading(false); } }; const handleCancel = () => { form.resetFields(); setWorkflowGraph(undefined); onCancel(); }; return (
); }; export default FlowgramWorkflowModal;