mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-27 22:55:59 +00:00
清理无用文件和资源,调整代码格式统一双引号,修复部分组件路径引用问题 删除大量无用图片资源和组件文件,统一代码风格使用双引号,修复国际化文件路径引用,调整部分组件逻辑,优化项目结构
99 lines
3.1 KiB
TypeScript
99 lines
3.1 KiB
TypeScript
import axios, { AxiosResponse } from "axios";
|
|
import { ElLoading, ElMessage } from "element-plus";
|
|
import { saveAs as fileSaverSaveAs } from "file-saver";
|
|
import { Auth } from "@/utils/auth";
|
|
import errorCode from "@/utils/errorCode";
|
|
import { blobValidate } from "@/utils/common";
|
|
|
|
const baseURL = import.meta.env.VITE_APP_BASE_API;
|
|
let downloadLoadingInstance: any;
|
|
|
|
interface DownloadUtil {
|
|
name(name: string, isDelete?: boolean): void;
|
|
resource(resource: string): void;
|
|
zip(url: string, name: string): void;
|
|
saveAs(text: Blob | string, name: string, opts?: any): void;
|
|
printErrMsg(data: Blob): Promise<void>;
|
|
}
|
|
|
|
const download: DownloadUtil = {
|
|
name(name: string, isDelete: boolean = true): void {
|
|
const url =
|
|
baseURL + "/common/download?fileName=" + encodeURIComponent(name) + "&delete=" + isDelete;
|
|
axios({
|
|
method: "get",
|
|
url,
|
|
responseType: "blob",
|
|
headers: { Authorization: "Bearer " + Auth.getAccessToken() },
|
|
}).then((res: AxiosResponse<Blob>) => {
|
|
const isBlob = blobValidate(res.data);
|
|
if (isBlob) {
|
|
const blob = new Blob([res.data]);
|
|
download.saveAs(blob, decodeURIComponent(res.headers["download-filename"]));
|
|
} else {
|
|
download.printErrMsg(res.data);
|
|
}
|
|
});
|
|
},
|
|
|
|
resource(resource: string): void {
|
|
const url = baseURL + "/common/download/resource?resource=" + encodeURIComponent(resource);
|
|
axios({
|
|
method: "get",
|
|
url,
|
|
responseType: "blob",
|
|
headers: { Authorization: "Bearer " + Auth.getAccessToken() },
|
|
}).then((res: AxiosResponse<Blob>) => {
|
|
const isBlob = blobValidate(res.data);
|
|
if (isBlob) {
|
|
const blob = new Blob([res.data]);
|
|
download.saveAs(blob, decodeURIComponent(res.headers["download-filename"]));
|
|
} else {
|
|
download.printErrMsg(res.data);
|
|
}
|
|
});
|
|
},
|
|
|
|
zip(url: string, name: string): void {
|
|
const fullUrl = baseURL + url;
|
|
downloadLoadingInstance = ElLoading.service({
|
|
text: "正在下载数据,请稍候",
|
|
background: "rgba(0, 0, 0, 0.7)",
|
|
});
|
|
axios({
|
|
method: "get",
|
|
url: fullUrl,
|
|
responseType: "blob",
|
|
headers: { Authorization: "Bearer " + Auth.getAccessToken() },
|
|
})
|
|
.then((res: AxiosResponse<Blob>) => {
|
|
const isBlob = blobValidate(res.data);
|
|
if (isBlob) {
|
|
const blob = new Blob([res.data], { type: "application/zip" });
|
|
download.saveAs(blob, name);
|
|
} else {
|
|
download.printErrMsg(res.data);
|
|
}
|
|
downloadLoadingInstance.close();
|
|
})
|
|
.catch((r: any) => {
|
|
console.error(r);
|
|
ElMessage.error("下载文件出现错误,请联系管理员!");
|
|
downloadLoadingInstance.close();
|
|
});
|
|
},
|
|
|
|
saveAs(text: Blob | string, name: string, opts?: any): void {
|
|
fileSaverSaveAs(text, name, opts);
|
|
},
|
|
|
|
async printErrMsg(data: Blob): Promise<void> {
|
|
const resText = await data.text();
|
|
const rspObj = JSON.parse(resText);
|
|
const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode["default"];
|
|
ElMessage.error(errMsg);
|
|
},
|
|
};
|
|
|
|
export default download;
|