比较菜,大家参考一下就好.
//使用windos.location导出,this.imgUrl.imgUrl为全局的请求路径,自己设置 item是传过来的值
window.location.href =this.imgUrl.imgUrl+`/report/downloadExcel?id=${item.id}`
// 导出
async excel() {
try {
const token = sessionStorage.getItem('token')
const res = await this.$axios.get(
this.imgUrl.imgUrl + '/report/downloadBasicListExcel',
{
params: {
releaseTime: this.form.releaseTime ? this.form.releaseTime : null,
releaseEndTime: this.form.releaseEndTime ? this.form.releaseEndTime : null,
sceneLine: this.form.sceneLine ? this.form.sceneLine : null,
abilityType: this.form.abilityType ? this.form.abilityType : null,
sceneName: this.form.sceneName ? this.form.sceneName : null,
operationName: this.form.operationName? this.form.operationName: null,
reqAbilityMpName: this.form.reqAbilityMpName? this.form.reqAbilityMpName:null,
abilityPath: this.form.abilityPath ? this.form.abilityPath : null,
appName: this.form.appName ? this.form.appName : null, //系统名称
},
timeout: this.timeout * 1000,
headers: {
'content-type': 'application/json',
'timeout': 50 * 1000,
'access-token': token || null,
// 'tenant': tenant || 1,
'Accept': 'application/json, text/plain',
},
responseType: 'blob',
}
)
// 没数据的时候,根据后端返回的文件流的size判断
if (res.data.size === 0) {
return message.warn('当前条件没有数据')
}
//res.data为相应的文件流
const link = document.createElement('a')
const blob = new Blob([res.data], {type: 'application/vnd.ms-excel'})
link.style.display = 'none'
link.href = URL.createObjectURL(blob)
// 导出的文件名
link.download = '能力用量清单'
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
} catch (err) {
console.log('err is ->', err)
return message.error('导出时间超时')
}
},
使用$axios没有走请求拦截器,有拦截器的可以使用拦截器的那个,不然就是自己添加一下相应的token,请求时间啥的