import { request } from "@cqsjjb/jjb-common-lib/http"; import { useState } from "react"; /** * 删除文件 */ function useDeleteFile(returnType = "object") { // loading状态 const [loading, setLoading] = useState(false); // 删除文件 const deleteFile = (options) => { if (!options) throw new Error("请传入 options"); setLoading(true); return new Promise((resolve, reject) => { const { files = [], single = true } = options; if (!files) throw new Error("请传入 files"); if (!Array.isArray(files)) throw new Error("请传入有效的 files"); // 如果没有文件则直接返回 if (files.length === 0) { setLoading(false); resolve(); return; } // 单文件并且没有文件路径则直接返回 if (single) { const firstFile = files[0]; if (!firstFile.filePath) { setLoading(false); resolve(); return; } } // 多文件并且没有文件id则直接返回 else { const validFiles = files.filter(f => f.id); if (validFiles.length === 0) { setLoading(false); resolve(); return; } } // 发送请求 request( single ? `/basic-info/imgFiles/delete?filePath=${files[0].filePath}` : `/basic-info/imgFiles/ids?ids=${files.filter(f => f.id).map(f => f.id)}`, "delete", ) .then((res) => { resolve(res.data); }) .catch((err) => { reject(err); }) .finally(() => { setLoading(false); }); }); }; if (returnType === "array") return [loading, deleteFile]; return { loading, deleteFile }; } export default useDeleteFile;