import React, { useState, useEffect } from "react"; import { Modal, Form, Input, Select, Space, message, } from "antd"; import { createAnnotationTemplateUsingPost, updateAnnotationTemplateByIdUsingPut, } from "../annotation.api"; import type { AnnotationTemplate } from "../annotation.model"; import { DataTypeMap, ClassificationMap, AnnotationTypeMap } from "../annotation.const"; import TemplateConfigurationTreeEditor from "../components/TemplateConfigurationTreeEditor"; const { TextArea } = Input; const { Option } = Select; interface TemplateFormProps { visible: boolean; mode: "create" | "edit"; template?: AnnotationTemplate; onSuccess: () => void; onCancel: () => void; } const TemplateForm: React.FC = ({ visible, mode, template, onSuccess, onCancel, }) => { const [form] = Form.useForm(); const [loading, setLoading] = useState(false); const [labelConfig, setLabelConfig] = useState(""); const selectedDataType = Form.useWatch("dataType", form); useEffect(() => { if (visible && template && mode === "edit") { form.setFieldsValue({ name: template.name, description: template.description, dataType: template.dataType, labelingType: template.labelingType, style: template.style, category: template.category, }); setLabelConfig(template.labelConfig || ""); } else if (visible && mode === "create") { form.resetFields(); // Set default values form.setFieldsValue({ style: "horizontal", category: "custom", }); setLabelConfig(""); } }, [visible, template, mode, form]); const handleSubmit = async () => { try { const values = await form.validateFields(); if (!labelConfig.trim()) { message.error("请配置标注模板"); return; } setLoading(true); console.log("Form values:", values); const requestData = { name: values.name, description: values.description, dataType: values.dataType, labelingType: values.labelingType, style: values.style, category: values.category, labelConfig: labelConfig.trim(), }; console.log("Request data:", requestData); let response; if (mode === "create") { response = await createAnnotationTemplateUsingPost(requestData); } else { response = await updateAnnotationTemplateByIdUsingPut(template!.id, requestData); } if (response.code === 200) { message.success(`模板${mode === "create" ? "创建" : "更新"}成功`); form.resetFields(); onSuccess(); } else { message.error(response.message || `模板${mode === "create" ? "创建" : "更新"}失败`); } } catch (error: unknown) { const hasErrorFields = typeof error === "object" && error !== null && "errorFields" in error; if (hasErrorFields) { message.error("请填写所有必填字段"); } else { message.error(`模板${mode === "create" ? "创建" : "更新"}失败`); console.error(error); } } finally { setLoading(false); } }; return (