import dateUtil from ‘~/plugins/dateUtil’
/**
- 下载文件
- url 请求地址
- method: post get
- method=post时,传递data参数,method=get时,传递params参数
- setFileName为空时,默认设置文件名
*/
function createElementToExportFile (url, method, params, data, setFileName, axios) {
axios({
url,
responseType: ‘blob’, // 服务器返回的数据类型
method,
params,
data
}).then((res) => {
const content = res.data
const blob = new Blob([content]) // 构造一个blob对象来处理数据
let fileName = ‘’ // 导出文件名
if (setFileName) {
fileName = setFileName
} else {
fileName = dateUtil.formatTimeInYmd(new Date()) + ‘.xls’
}
// 对于标签,只有 Firefox 和 Chrome(内核) 支持 download 属性
// IE10以上支持blob但是依然不支持download
if (‘download’ in document.createElement(‘a’)) { // 支持a标签download的浏览器
const link = document.createElement(‘a’) // 创建a标签
link.download = fileName // a标签添加属性
link.style.display = ‘none’
link.href = URL.createObjectURL(blob)
document.body.appendChild(link)
link.click() // 执行下载
URL.revokeObjectURL(link.href) // 释放url
document.body.removeChild(link) // 释放标签
} else { // 其他浏览器
navigator.msSaveBlob(blob, fileName)
}
}).catch((error) => {
console.log(error)
})
}
export default {
createElementToExportFile
}
// 关于在文件中调用
import exportFile from ‘~/plugins/exportFile’
methods:{
testFuc(){
exportFile.createElementToExportFile(url, ‘post’, null, params, null, this.$axios)
}
}