export function exportOps(params) {
return instance({
url: `/OpsRecord/export`,
params: params,
method: "get",
headers: {
"Content-Type": "application/json; charset=utf-8",
},
responseType: "blob",
baseURL: `/netcare/`
});
}//接口请求一定要设置类型responseType: "blob",
当导出为excel表时经常excel打不开,说文件名或扩展名不对,这时从disposition里面拿是解决办法
exportHandle() {
var type=this.viewformData.type=='excel'?`application/vnd.ms-excel;charset=utf-8`:`application/vnd.ms-pdf`
this.$api.exportOps(this.viewformData).then((res) => {
const disposition = res.headers['content-disposition'];
let fileName = '导出文件.xlsx';
if (disposition) {
const utf8Filename = disposition.match(/filename\*=(?:UTF-\d['"]*)?([^;"'\n]*)/i)?.[1];
if (utf8Filename) {
fileName = decodeURIComponent(utf8Filename);
} else {
const defaultFilename = disposition.match(/filename=["']?([^;"'\n]*)/i)?.[1];
if (defaultFilename) fileName = defaultFilename;
}
}
if (res.status==200) {
var blob = new Blob([res.data], {
type:type,
});
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, fileName);
} else {
var downloadElement = document.createElement("a");
var href = window.URL.createObjectURL(blob); //创建下载的链接
downloadElement.href = href;
downloadElement.download = fileName; //下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放掉blob对象
}
this.$message({
message: "导出成功",
type: "success",
});
} else {
this.$message({
message: "导出失败",
type: "error",
});
}
this.dialogPlanVisible = false
this.viewformData={//导出
type:'excel',
customerName:'',
responseType:'',
eventTypes:'',
startTime: '',
endTime: '',
}
}).catch(() => {})
},