直接上代码
/**
* 导出Excel
* @param {*请求地址} url
* @param {*请求参数} para
* get
*/
export const download_excel = (url, para, isTemplate) => {
let tips = "确认导出吗?";
isTemplate ? (tips = "确认下载该模板吗?") : "确认导出吗?";
MessageBox.confirm(tips, "警告", {
type: "warning"
})
.then(() => {
axios
.get(url, {
responseType: "arraybuffer",
params: para
})
.then(res => {
if (!res) return;
if (
!res.headers["content-disposition"] &&
!res.headers["content-disposition"].indexOf("=") > -1
) {
return;
}
let filename = res.headers["content-disposition"].split("=")[1];
let blob = new Blob([res.data], {
type: "application/octet-stream"
});
if ("msSaveOrOpenBlob" in navigator) {
window.navigator.msSaveOrOpenBlob(blob, filename);
} else {
window.URL.revokeObjectURL(blobURL);
let blobURL = window.URL.createObjectURL(blob);
let link = document.createElement("a");
link.style.display = "none";
link.href = blobURL;
link.setAttribute("download", filename);
document.body.appendChild(link);
link.click();
window.URL.revokeObjectURL(blobURL);
}
});
})
.catch(() => { });
};
/**
* 导出Excel
* @param {*请求地址} url
* @param {*请求参数} para
* post
*/
export const download_excel_post = (url, para, isTemplate) => {
let tips = "确认导出吗?";
isTemplate ? (tips = "确认下载该模板吗?") : "确认导出吗?";
MessageBox.confirm(tips, "警告", {
type: "warning"
}).then(() => {
axios
.post(url, para,{
responseType: "arraybuffer"
}).then(res => {
if (!res) return;
if (
!res.headers["content-disposition"] &&
!res.headers["content-disposition"].indexOf("=") > -1
) {
return;
}
let filename = res.headers["content-disposition"].split("=")[1];
// let filename = 'Channel'
//自定义下载文件名称
// let filename = 'Channel' + '.' + res.headers["content-disposition"].split(".")[1];
let blob = new Blob([res.data], {
type: "application/octet-stream"
});
if ("msSaveOrOpenBlob" in navigator) {
window.navigator.msSaveOrOpenBlob(blob, filename);
} else {
window.URL.revokeObjectURL(blobURL);
let blobURL = window.URL.createObjectURL(blob);
let link = document.createElement("a");
link.style.display = "none";
link.href = blobURL;
link.setAttribute("download", filename);
document.body.appendChild(link);
link.click();
window.URL.revokeObjectURL(blobURL);
}
})
}).catch(() => { })
}
在使用文件种引入封装的方法文件
这里我做了按钮控制,可以忽略
<el-button type="primary" @click="exportSubmit" v-if="this.permissions['ChannelInfo_export'] == true">导出</el-button>```
```bash
import { download_excel_post } from "@/api/dicType";
直接调用,传入参数
exportSubmit() {
download_excel_post(
"/sp-bm-channel/bm_channel_person_info/exportexcel",
this.formInline
//这里是传出查询的条件,根据条件导出
);
},