From a778ac23b54a00b8281b62166475eaccab0b5fc9 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Mon, 19 Jan 2026 15:55:23 +0800 Subject: [PATCH] =?UTF-8?q?feat(annotation):=20=E6=B7=BB=E5=8A=A0=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=8F=97=E9=99=90=E7=BC=96=E8=BE=91=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入 restrictedMode 属性控制表单编辑权限 - 在数据对象区域显示锁定状态提示 - 禁用受限制字段的输入功能 - 隐藏受限制时的删除和添加按钮 - 在标签控件区域显示可编辑状态提示 - 更新XML编辑器为只读模式并显示相应提示 - 添加模板选择状态跟踪功能 --- .../components/CreateAnnotationTaskDialog.tsx | 35 ++++-- .../components/TemplateConfigurationForm.tsx | 118 ++++++++++++------ 2 files changed, 106 insertions(+), 47 deletions(-) diff --git a/frontend/src/pages/DataAnnotation/Create/components/CreateAnnotationTaskDialog.tsx b/frontend/src/pages/DataAnnotation/Create/components/CreateAnnotationTaskDialog.tsx index 1aedcc5..bef90ec 100644 --- a/frontend/src/pages/DataAnnotation/Create/components/CreateAnnotationTaskDialog.tsx +++ b/frontend/src/pages/DataAnnotation/Create/components/CreateAnnotationTaskDialog.tsx @@ -1,6 +1,6 @@ import { queryDatasetsUsingGet } from "@/pages/DataManagement/dataset.api"; import { mapDataset } from "@/pages/DataManagement/dataset.const"; -import { Button, Form, Input, Modal, Select, message, Tabs, Radio, Typography } from "antd"; +import { Button, Form, Input, Modal, Select, message, Tabs, Radio } from "antd"; import TextArea from "antd/es/input/TextArea"; import { useEffect, useState } from "react"; import { @@ -33,6 +33,8 @@ export default function CreateAnnotationTask({ const [previewTaskData, setPreviewTaskData] = useState>({}); const [configMode, setConfigMode] = useState<"template" | "custom">("template"); const [templateEditTab, setTemplateEditTab] = useState<"visual" | "xml">("visual"); + // 是否已选择模板(用于启用受限编辑模式) + const [hasSelectedTemplate, setHasSelectedTemplate] = useState(false); useEffect(() => { if (!open) return; @@ -76,6 +78,7 @@ export default function CreateAnnotationTask({ setPreviewTaskData({}); setConfigMode("template"); setTemplateEditTab("visual"); + setHasSelectedTemplate(false); } }, [open, manualForm]); @@ -179,6 +182,15 @@ export default function CreateAnnotationTask({ // 当选择模板时,加载模板配置到表单 const handleTemplateSelect = (value: string, option: any) => { + // 处理清除选择的情况 + if (!value) { + setHasSelectedTemplate(false); + setCustomXml(""); + return; + } + + setHasSelectedTemplate(true); + if (option && option.config) { setCustomXml(option.config); } @@ -297,7 +309,7 @@ export default function CreateAnnotationTask({