import axios from "axios";
import config from "./config.utils";
import moment from "moment";
import { Message } from "element-ui";
function exportData({
url,
method = "post",
params = {},
header = {
"Content-Type": "application/json"
},
responseType = "blob"
}) {
let axiosObj = {
url: `${config.apiPath.service}${url}`,
method: method || "post",
data: params,
params: params,
responseType: responseType,
withCredentials: true,
headers: {
...header
}
};
if (method == "post") {
delete axiosObj.params;
}
if (method == "get") {
delete axiosObj.data;
}
return axios({ ...axiosObj });
}
//导出文件
export function downloadFile({ url, method = "get", params, header }, { fileName, fileType = 'xlsx' }) {
let filesName = `${fileName}-${moment(new Date()).format("YYYY-MM-DD")}`
return new Promise((resolve, reject) => {
exportData({ url, method, params, header })
.then(res => {
if (res.status == 200) {
const fileReader = new FileReader();
fileReader.readAsText(res.data);
fileReader.onload = function () {
try {
// 解析成功 说明是json文件
const jsonData = JSON.parse(this.result);
if (jsonData.code) {
Message.error(jsonData.message);
reject(false);
}
} catch (e) {
// 没成功是正常文件流
const link = document.createElement("a");
let blob = new Blob([res.data], {
type: "application/vnd.ms-excel"
});
link.style.display = "none";
link.href = URL.createObjectURL(blob);
link.setAttribute("download", `${filesName}.${fileType}`);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
resolve(true);
}
};
} else {
reject(false);
}
})
.catch(e => {
reject(false);
});
});
}
文件导出方法
最新推荐文章于 2024-09-30 15:42:36 发布