import { cancelUploadUsingPut, preUploadUsingPost, uploadFileChunkUsingPost, } from "@/pages/DataManagement/dataset.api"; import { Button, Empty, Progress, Tag } from "antd"; import { DeleteOutlined, FileTextOutlined } from "@ant-design/icons"; import { useEffect } from "react"; import { useFileSliceUpload } from "@/hooks/useSliceUpload"; export default function TaskUpload() { const { createTask, taskList, removeTask, handleUpload, registerStreamUploadListener } = useFileSliceUpload( { preUpload: preUploadUsingPost, uploadChunk: uploadFileChunkUsingPost, cancelUpload: cancelUploadUsingPut, }, true, // showTaskCenter true // enableStreamUpload ); useEffect(() => { const uploadHandler = (e: Event) => { const customEvent = e as CustomEvent; console.log('[TaskUpload] Received upload event detail:', customEvent.detail); const { files } = customEvent.detail; const task = createTask(customEvent.detail); console.log('[TaskUpload] Created task with prefix:', task.prefix); handleUpload({ task, files }); }; window.addEventListener("upload:dataset", uploadHandler); return () => { window.removeEventListener("upload:dataset", uploadHandler); }; }, [createTask, handleUpload]); // 注册流式上传监听器 useEffect(() => { const unregister = registerStreamUploadListener(); return unregister; }, [registerStreamUploadListener]); return (
{taskList.length > 0 && taskList.map((task) => (
{task.title}
{task.streamUploadInfo && (
} size="small"> 按行分割 已上传: {task.streamUploadInfo.uploadedLines} 行 {task.streamUploadInfo.totalFiles > 1 && ( ({task.streamUploadInfo.fileIndex}/{task.streamUploadInfo.totalFiles} 文件) )}
)}
))} {taskList.length === 0 && ( )}
); }