axios封装
export const getDownload = (url, params) => {
let accessToken = getStore('accessToken')
return axios({
method: 'get',
url: `${base}${url}`,
params: params,
responseType: 'blob',
headers: {
'accessToken': accessToken
}
})
}
接口封装
export const downloadApi = (params) => {
return getDownload(`/a/b/c`,params)
}
下载封装
export function makeDownload(res, fileName){
let content = res
let blob = new Blob([content])
if('download' in document.createElement('a')){
let elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
} else {
navigator.msSaveBlob(blob, fileName)
}
}
执行下载
tableDownload(){
downloadApi().then((res=>{
let _this = this
let r = new FileReader()
r.onload = function() {
try {
let resData = JSON.parse(this.result)
if(!resData.statusBool) {
_this.$message.warning(resData.message)
}
} catch (err) {
makeDownload(res, '信息表格.pdf')
}
}
r.readAsText(res)
})).catch(() => {
this.$message.warning("下载失败")
})
}