Files
DataMate/frontend/src/pages/KnowledgeManagement/components/ImportKnowledgeItemsDialog.tsx
Jerry Yan 34fa184b69 feat(knowledge): 添加知识管理功能模块
- 实现知识集的创建、编辑、删除功能
- 实现知识条目的创建、编辑、删除功能
- 添加知识集详情页面展示功能
- 实现知识条目导入数据集文件功能
- 添加知识管理主页列表展示功能
- 实现知识集和知识条目的状态管理
- 集成标签管理和搜索过滤功能
- 添加知识条目的批量操作支持
2026-01-21 11:48:36 +08:00

98 lines
2.7 KiB
TypeScript

import { useState } from "react";
import { Button, Form, Modal, message, Select } from "antd";
import { PlusOutlined } from "@ant-design/icons";
import DatasetFileTransfer from "@/components/business/DatasetFileTransfer";
import { Dataset, DatasetFile } from "@/pages/DataManagement/dataset.model";
import {
importKnowledgeItemsUsingPost,
} from "../knowledge-management.api";
import { knowledgeStatusOptions } from "../knowledge-management.const";
import { KnowledgeStatusType } from "../knowledge-management.model";
export default function ImportKnowledgeItemsDialog({
setId,
onImported,
disabled,
}: {
setId: string;
onImported: () => void;
disabled?: boolean;
}) {
const [open, setOpen] = useState(false);
const [form] = Form.useForm();
const [selectedFilesMap, setSelectedFilesMap] = useState<Record<string, DatasetFile>>({});
const [selectedDataset, setSelectedDataset] = useState<Dataset | null>(null);
const handleSubmit = async () => {
if (!selectedDataset) {
message.warning("请先选择数据集");
return;
}
const fileIds = Object.keys(selectedFilesMap);
if (fileIds.length === 0) {
message.warning("请至少选择一个文件");
return;
}
const values = await form.validateFields();
try {
await importKnowledgeItemsUsingPost(setId, {
datasetId: selectedDataset.id,
fileIds,
status: values.status || undefined,
});
message.success("导入成功");
setOpen(false);
setSelectedFilesMap({});
setSelectedDataset(null);
form.resetFields();
onImported();
} catch {
message.error("导入失败,请重试");
}
};
return (
<>
<Button
icon={<PlusOutlined />}
onClick={() => {
form.resetFields();
form.setFieldsValue({ status: KnowledgeStatusType.DRAFT });
setOpen(true);
}}
disabled={disabled}
>
</Button>
<Modal
title="导入数据集文件"
open={open}
onCancel={() => {
setOpen(false);
setSelectedFilesMap({});
setSelectedDataset(null);
}}
onOk={handleSubmit}
okText="确定"
cancelText="取消"
width={1000}
maskClosable={false}
>
<Form form={form} layout="vertical">
<Form.Item label="条目状态" name="status">
<Select options={knowledgeStatusOptions} />
</Form.Item>
</Form>
<DatasetFileTransfer
open={open}
selectedFilesMap={selectedFilesMap}
onSelectedFilesChange={setSelectedFilesMap}
onDatasetSelect={setSelectedDataset}
/>
</Modal>
</>
);
}