import { Button, message, Modal, Popconfirm, Space, Upload, UploadFile, UploadProps, } from "antd"; import { useEffect, useState } from "react"; import { inject, observer } from "mobx-react"; import FileViewer from "@codesmith-99/react-file-preview"; import { UploadOutlined } from "@ant-design/icons"; import Config from "@/util/config"; interface ArchiveUploadFile extends UploadFile { file_type: string | undefined; file_url: string | undefined; } const FileListPage = (props: any) => { const { folderStore, archivesStore, id } = props; const [fileList, setFileList] = useState([]); const [isModalOpen, setIsModalOpen] = useState(false); const [fileNmae, setFileName] = useState(""); const bprops: UploadProps = { name: "file", action: `${Config.baseUrl}v1/public/fts/upload`, headers: { authorization: "authorization-text", }, onChange(info) { if (info.file.status === "done") { message.success(`${info.file.name} file uploaded successfully`); saveHandler(info.fileList); } else if (info.file.status === "error") { message.error(`${info.file.name} file upload failed.`); } }, }; const getFileList = () => { folderStore.getAlist(id).then((res) => { setFileList(folderStore.alist); }); }; useEffect(() => { getFileList(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [id]); const getFileTypeFromUrl = (url) => { if (url === "" || url.length === 0) return; // 解析URL以提取文件名 const filename = url.split("/").pop(); // 获取文件扩展名 const fileExtension = filename.split(".").pop(); // 返回文件扩展名 return fileExtension; }; const preView = (imageUrl) => { let fileType = getFileTypeFromUrl(imageUrl); switch (fileType) { case "jpeg": return ; case "jpg": return ; case "png": return ; case "pdf": return (
;
); case "mp4": return (
); case "docx": return (
{ console.log("error doc", e); }} />
); case "": return
; default: return
; } }; const saveHandler = (files) => { let file = files[files.length - 1]; file = { file_url: file.url, file_type: file.type, file_name: file.name, ...file, }; archivesStore.save(id, [file]).then(() => { getFileList(); }); }; return (
{fileList?.map((item: any) => { return (
{item?.file_name} 下载 { archivesStore.deleteItem(item.id).then(() => { getFileList(); }); }} onCancel={() => {}} okText="Yes" cancelText="No" >
); })} setIsModalOpen(false)} > {preView(fileNmae)}
); }; export default inject("archivesStore", "folderStore")(observer(FileListPage));