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()); }