济菏高速业务端

57 lines
1.4 KiB

import request from "@/utils/request";
import { Message } from "element-ui";
export function delay(ms = 240) {
return new Promise((resolve) => setTimeout(() => resolve(void 0), ms));
}
/**
*
* @param {{ method?: string; url: string; data?: string; type?: string; filename?: string; }} options
*/
export function exportFile({
url,
method = "post",
data,
type = "application/vnd.ms-excel",
filename = "download",
ext = "xlsx",
} = {}) {
if (!url) return;
const loadingMessage = Message.info({
message: `文件下载中...`,
duration: 0,
customClass: "loading-message",
iconClass: "el-icon-loading",
});
request({
url,
method,
responseType: "blob",
data: {
...data,
},
params: {
...data,
},
})
.then((result) => {
const blob = new Blob([result], { type });
const downloadElement = document.createElement("a");
const href = window.URL.createObjectURL(blob);
downloadElement.href = href;
downloadElement.download = result.filename || `${filename}.${ext}`;
document.body.appendChild(downloadElement);
downloadElement.click();
document.body.removeChild(downloadElement);
window.URL.revokeObjectURL(href);
Message.success("文件下载成功");
})
.catch((err) => {
Message.error("文件下载失败");
})
.finally(() => loadingMessage.close());
}