1.html部分
<template>
<el-button
style="margin-left: 20px"
size="small"
type="primary"
@click="exportHandle"
>导出</el-button>
</template>
2.js部分
//导出
exportHandle() {
this.$axios
.post(`/api/ATF/GetCfg_Excel`, this.multipleSelection) //接口和参数要根据实际情况来换
.then((res) => {
let blob = this.base64ToBlob(res.data.data); //base64编码
var evt = document.createEvent("HTMLEvents");
evt.initEvent("click", true, true);
//initEvent 不加后两个参数在FF下会报错 (事件类型,是否冒泡,是否阻止浏览器的默认行为)
let aLink = document.createElement("a");
aLink.download = res.data.message; //文件名
aLink.href = URL.createObjectURL(blob);
aLink.click();
});
},
// base64转blob
base64ToBlob(code) {
var parts = code.split(";base64,");
var contentType = parts[0].split(":")[1];
var raw = window.atob(parts[1]);
var rawLength = raw.length;
var uInt8Array = new Uint8Array(rawLength);
for (var i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
}
return new Blob([uInt8Array], {
type: contentType,
});
},