feat(annotation): 更新标注任务创建对话框的数据集预览功能

- 替换 previewDatasetUsingGet 为 queryDatasetFilesUsingGet 接口
- 使用 App.useApp() 获取 message 实例替代直接导入
- 调整数据集预览表格结构显示文件名和大小信息
- 修改预览模态框标题和宽度设置
- 优化文件大小格式化显示功能
- 统一错误处理消息提示方式
This commit is contained in:
2026-01-19 18:47:57 +08:00
parent 1c5ff37985
commit fe5c0fd0a3

View File

@@ -1,6 +1,6 @@
import { queryDatasetsUsingGet, previewDatasetUsingGet } from "@/pages/DataManagement/dataset.api";
import { queryDatasetsUsingGet, queryDatasetFilesUsingGet } from "@/pages/DataManagement/dataset.api";
import { mapDataset } from "@/pages/DataManagement/dataset.const";
import { Button, Form, Input, Modal, Select, message, Radio, Table } from "antd";
import { App, Button, Form, Input, Modal, Select, Radio, Table } from "antd";
import TextArea from "antd/es/input/TextArea";
import { useEffect, useState } from "react";
import { Eye } from "lucide-react";
@@ -22,6 +22,7 @@ export default function CreateAnnotationTask({
onClose: () => void;
onRefresh: () => void;
}) {
const { message } = App.useApp();
const [manualForm] = Form.useForm();
const [datasets, setDatasets] = useState<Dataset[]>([]);
const [templates, setTemplates] = useState<AnnotationTemplate[]>([]);
@@ -97,9 +98,9 @@ export default function CreateAnnotationTask({
}
setDatasetPreviewLoading(true);
try {
const res = await previewDatasetUsingGet(selectedDatasetId, { limit: 10 });
if (res.code === 200 && res.data) {
setDatasetPreviewData(res.data || []);
const res = await queryDatasetFilesUsingGet(selectedDatasetId, { page: 0, size: 10 });
if (res.code === '0' && res.data) {
setDatasetPreviewData(res.data.content || []);
setDatasetPreviewVisible(true);
} else {
message.error("获取数据集预览失败");
@@ -272,13 +273,13 @@ export default function CreateAnnotationTask({
labelConfig: finalLabelConfig,
};
await createAnnotationTaskUsingPost(requestData);
message?.success?.("创建标注任务成功");
message.success("创建标注任务成功");
onClose();
onRefresh();
} catch (err: any) {
console.error("Create annotation task failed", err);
const msg = err?.message || err?.data?.message || "创建失败,请稍后重试";
(message as any)?.error?.(msg);
message.error(msg);
} finally {
setSubmitting(false);
}
@@ -523,8 +524,8 @@ export default function CreateAnnotationTask({
<Modal
open={datasetPreviewVisible}
onCancel={() => setDatasetPreviewVisible(false)}
title="数据集预览"
width={900}
title="数据集预览(前10条文件)"
width={700}
footer={[
<Button key="close" onClick={() => setDatasetPreviewVisible(false)}>
@@ -533,25 +534,29 @@ export default function CreateAnnotationTask({
>
<Table
dataSource={datasetPreviewData}
columns={
datasetPreviewData.length > 0
? Object.keys(datasetPreviewData[0]).map((key) => ({
title: key,
dataIndex: key,
key: key,
ellipsis: true,
render: (value: any) => {
if (typeof value === 'object') {
return JSON.stringify(value);
}
return String(value ?? '');
},
}))
: []
}
rowKey={(_, index) => String(index)}
columns={[
{
title: "文件名",
dataIndex: "fileName",
key: "fileName",
ellipsis: true,
},
{
title: "大小",
dataIndex: "fileSize",
key: "fileSize",
width: 120,
render: (value: number) => {
if (!value) return "-";
if (value < 1024) return `${value} B`;
if (value < 1024 * 1024) return `${(value / 1024).toFixed(1)} KB`;
return `${(value / 1024 / 1024).toFixed(1)} MB`;
},
},
]}
rowKey="id"
pagination={false}
scroll={{ x: 'max-content', y: 400 }}
scroll={{ y: 300 }}
size="small"
/>
</Modal>