2025-10-28 11:28:18 +08:00
|
|
|
import { request } from "@cqsjjb/jjb-common-lib/http";
|
|
|
|
|
import { useState } from "react";
|
|
|
|
|
|
|
|
|
|
/**
|
2025-11-03 16:50:34 +08:00
|
|
|
* 删除文件
|
2025-10-28 11:28:18 +08:00
|
|
|
*/
|
2025-11-01 17:58:18 +08:00
|
|
|
function useDeleteFile(returnType = "object") {
|
2025-10-28 11:28:18 +08:00
|
|
|
// loading状态
|
|
|
|
|
const [loading, setLoading] = useState(false);
|
|
|
|
|
|
|
|
|
|
// 删除文件
|
|
|
|
|
const deleteFile = (options) => {
|
2025-11-01 17:58:18 +08:00
|
|
|
if (!options)
|
|
|
|
|
throw new Error("请传入 options");
|
|
|
|
|
|
2025-10-28 11:28:18 +08:00
|
|
|
setLoading(true);
|
|
|
|
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
2025-11-04 10:07:18 +08:00
|
|
|
const { files = [], single = true } = options;
|
2025-10-28 11:28:18 +08:00
|
|
|
|
2025-11-01 17:58:18 +08:00
|
|
|
if (!files)
|
|
|
|
|
throw new Error("请传入 files");
|
2025-11-04 10:07:18 +08:00
|
|
|
if (!Array.isArray(files))
|
|
|
|
|
throw new Error("请传入有效的 files");
|
|
|
|
|
|
|
|
|
|
// 如果没有文件则直接返回
|
2025-11-05 10:52:55 +08:00
|
|
|
if (files.length === 0) {
|
|
|
|
|
setLoading(false);
|
2025-11-04 10:07:18 +08:00
|
|
|
resolve();
|
2025-11-05 10:52:55 +08:00
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-10-28 11:28:18 +08:00
|
|
|
|
|
|
|
|
// 发送请求
|
2025-11-01 17:58:18 +08:00
|
|
|
request(
|
2025-11-05 10:52:55 +08:00
|
|
|
single
|
|
|
|
|
? `/basic-info/imgFiles/delete?filePath=${files[0].filePath}`
|
|
|
|
|
: `/basic-info/imgFiles/ids?ids=${files.filter(f => f.id).map(f => f.id)}`,
|
2025-11-01 17:58:18 +08:00
|
|
|
"delete",
|
|
|
|
|
)
|
2025-10-28 11:28:18 +08:00
|
|
|
.then((res) => {
|
|
|
|
|
resolve(res.data);
|
|
|
|
|
})
|
|
|
|
|
.catch((err) => {
|
|
|
|
|
reject(err);
|
|
|
|
|
})
|
|
|
|
|
.finally(() => {
|
|
|
|
|
setLoading(false);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2025-11-01 17:58:18 +08:00
|
|
|
if (returnType === "array")
|
|
|
|
|
return [loading, deleteFile];
|
|
|
|
|
return { loading, deleteFile };
|
2025-10-28 11:28:18 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default useDeleteFile;
|