@@ -185,7 +245,18 @@ export default function ImportConfiguration({
},
]}
>
- {importFileRender()}
+
+
+
+
+ 本地文件上传
+ 拖拽文件到此处或点击选择文件
+
)}
diff --git a/frontend/src/pages/DataManagement/Detail/components/Overview.tsx b/frontend/src/pages/DataManagement/Detail/components/Overview.tsx
index ed3754b..f5466e7 100644
--- a/frontend/src/pages/DataManagement/Detail/components/Overview.tsx
+++ b/frontend/src/pages/DataManagement/Detail/components/Overview.tsx
@@ -82,11 +82,6 @@ export default function Overview({ dataset, filesOperation }) {
label: "更新时间",
children: dataset.updatedAt,
},
- {
- key: "dataSource",
- label: "数据源",
- children: dataset.dataSource || "未知",
- },
{
key: "description",
label: "描述",
diff --git a/frontend/src/pages/DataManagement/hooks/useFilesOperation.ts b/frontend/src/pages/DataManagement/Detail/useFilesOperation.ts
similarity index 97%
rename from frontend/src/pages/DataManagement/hooks/useFilesOperation.ts
rename to frontend/src/pages/DataManagement/Detail/useFilesOperation.ts
index 17ca811..1c58b19 100644
--- a/frontend/src/pages/DataManagement/hooks/useFilesOperation.ts
+++ b/frontend/src/pages/DataManagement/Detail/useFilesOperation.ts
@@ -6,7 +6,7 @@ import { App } from "antd";
import { useState } from "react";
import {
deleteDatasetFileUsingDelete,
- downloadFile,
+ downloadFileByIdUsingGet,
exportDatasetUsingPost,
queryDatasetFilesUsingGet,
} from "../dataset.api";
@@ -51,7 +51,7 @@ export function useFilesOperation(dataset: Dataset) {
const handleDownloadFile = async (file: DatasetFile) => {
console.log("批量下载文件:", selectedFiles);
// 实际导出逻辑
- await downloadFile(dataset.id, file.id, file.fileName);
+ await downloadFileByIdUsingGet(dataset.id, file.id, file.fileName);
// 假设导出成功
message.success({
content: `已导出 1 个文件`,
diff --git a/frontend/src/pages/DataManagement/Home/DataManagement.tsx b/frontend/src/pages/DataManagement/Home/DataManagement.tsx
index 76430ed..ec81a64 100644
--- a/frontend/src/pages/DataManagement/Home/DataManagement.tsx
+++ b/frontend/src/pages/DataManagement/Home/DataManagement.tsx
@@ -119,7 +119,13 @@ export default function DatasetManagementPage() {
fetchData,
setSearchParams,
handleFiltersChange,
- } = useFetchData(queryDatasetsUsingGet, mapDataset);
+ } = useFetchData
(
+ queryDatasetsUsingGet,
+ mapDataset,
+ 30000, // 30秒轮询间隔
+ true, // 自动刷新
+ [fetchStatistics] // 额外的轮询函数
+ );
const handleDownloadDataset = async (dataset: Dataset) => {
await downloadDatasetUsingGet(dataset.id, dataset.name);
@@ -138,9 +144,12 @@ export default function DatasetManagementPage() {
setShowUploadDialog(true);
};
- useEffect(() => {
- fetchStatistics();
- }, []);
+ const handleRefresh = async (showMessage = true) => {
+ await fetchData();
+ if (showMessage) {
+ message.success("数据已刷新");
+ }
+ };
const operations = [
{
@@ -173,6 +182,13 @@ export default function DatasetManagementPage() {
key: "delete",
label: "删除",
danger: true,
+ confirm: {
+ title: "确认删除该数据集?",
+ description: "删除后该数据集将无法恢复,请谨慎操作。",
+ okText: "删除",
+ cancelText: "取消",
+ okType: "danger",
+ },
icon: ,
onClick: (item: Dataset) => handleDeleteDataset(item.id),
},
@@ -306,7 +322,7 @@ export default function DatasetManagementPage() {
{/* Header */}
数据管理
-
+
{/* tasks */}
{viewMode === "card" ? renderCardView() : renderListView()}
);
diff --git a/frontend/src/pages/DataManagement/dataset.api.ts b/frontend/src/pages/DataManagement/dataset.api.ts
index 59f8a0e..e2cb656 100644
--- a/frontend/src/pages/DataManagement/dataset.api.ts
+++ b/frontend/src/pages/DataManagement/dataset.api.ts
@@ -1,4 +1,4 @@
-import { get, post, put, del, download, upload } from "@/utils/request";
+import { get, post, put, del, download } from "@/utils/request";
// 数据集统计接口
export function getDatasetStatisticsUsingGet() {
@@ -35,15 +35,8 @@ export function deleteDatasetByIdUsingDelete(id: string | number) {
}
// 下载数据集
-export function downloadDatasetUsingGet(
- id: string | number,
- filename?: string
-) {
- return download(
- `/api/data-management/datasets/${id}/download`,
- null,
- filename
- );
+export function downloadDatasetUsingGet(id: string | number) {
+ return download(`/api/data-management/datasets/${id}/files/download`);
}
// 验证数据集
@@ -61,8 +54,16 @@ export function uploadDatasetFileUsingPost(id: string | number, data: any) {
return post(`/api/data-management/datasets/${id}/files`, data);
}
-export function downloadFile(id: string | number) {
- return download(`/api/data-management/datasets/${id}/files/download`);
+export function downloadFileByIdUsingGet(
+ id: string | number,
+ fileId: string | number,
+ fileName: string
+) {
+ return download(
+ `/api/data-management/datasets/${id}/files/${fileId}/download`,
+ null,
+ fileName
+ );
}
// 删除数据集文件
diff --git a/frontend/src/pages/DataManagement/dataset.const.tsx b/frontend/src/pages/DataManagement/dataset.const.tsx
index 4ac6f63..8950506 100644
--- a/frontend/src/pages/DataManagement/dataset.const.tsx
+++ b/frontend/src/pages/DataManagement/dataset.const.tsx
@@ -12,6 +12,7 @@ import {
CloseCircleOutlined,
FileOutlined,
} from "@ant-design/icons";
+import { AnyObject } from "antd/es/_util/type";
import {
FileImage,
FileText,
@@ -194,7 +195,7 @@ export const dataSourceMap: Record
= {
export const dataSourceOptions = Object.values(dataSourceMap);
-export function mapDataset(dataset: Dataset) {
+export function mapDataset(dataset: AnyObject): Dataset {
const { icon: IconComponent, iconColor } =
datasetTypeMap[dataset?.datasetType] || {};
return {
diff --git a/frontend/src/pages/DataManagement/hooks/index.ts b/frontend/src/pages/DataManagement/hooks/index.ts
deleted file mode 100644
index dda61af..0000000
--- a/frontend/src/pages/DataManagement/hooks/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { useFilesOperation } from "./useFilesOperation";
-export { useImportFile } from "./useImportFile";
\ No newline at end of file
diff --git a/frontend/src/pages/DataManagement/hooks/useImportFile.tsx b/frontend/src/pages/DataManagement/hooks/useImportFile.tsx
deleted file mode 100644
index 8b8b7b9..0000000
--- a/frontend/src/pages/DataManagement/hooks/useImportFile.tsx
+++ /dev/null
@@ -1,61 +0,0 @@
-import { Upload, type UploadFile } from "antd";
-import { InboxOutlined } from "@ant-design/icons";
-import { useMemo, useState } from "react";
-import type { Dataset } from "@/pages/DataManagement/dataset.model";
-import { sliceFile } from "@/utils/file.util";
-
-const { Dragger } = Upload;
-
-export const useImportFile = () => {
- const [fileList, setFileList] = useState([]);
- const fileSliceList = useMemo(() => {
- const sliceList = fileList.map((file) => {
- const slices = sliceFile(file);
- return { originFile: file, slices, name: file.name, size: file.size };
- });
- return sliceList;
- }, [fileList]);
-
- const resetFiles = () => {
- setFileList([]);
- };
-
- const handleUpload = async (dataset: Dataset) => {
- const formData = new FormData();
- fileList.forEach((file) => {
- formData.append("file", file);
- });
- window.dispatchEvent(
- new CustomEvent("upload:dataset", {
- detail: { dataset, files: fileSliceList },
- })
- );
- resetFiles();
- };
-
- const handleBeforeUpload = (_, files: UploadFile[]) => {
- setFileList([...fileList, ...files]);
- return false;
- };
-
- const handleRemoveFile = (file: UploadFile) => {
- setFileList((prev) => prev.filter((f) => f.uid !== file.uid));
- };
-
- const importFileRender = () => (
-
-
-
-
- 本地文件上传
- 拖拽文件到此处或点击选择文件
-
- );
-
- return { fileList, resetFiles, handleUpload, importFileRender };
-};
diff --git a/frontend/src/pages/Layout/Sidebar.tsx b/frontend/src/pages/Layout/Sidebar.tsx
index a63a6ed..f881d80 100644
--- a/frontend/src/pages/Layout/Sidebar.tsx
+++ b/frontend/src/pages/Layout/Sidebar.tsx
@@ -71,7 +71,7 @@ const AsiderAndHeaderLayout = () => {
- ModelEngine
+ DataMate
)}