适用于所有的vue项目的导入导出
注:只适用http
一、在 request.js封装方法
// 通用下载方法
export function download(url, params, filename) {
downloadLoadingInstance = Loading.service({
text: "正在下载数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
})
return server.post(url, params, {
transformRequest: [(params) => {
return tansParams(params)
}],
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
responseType: 'blob'
}).then(async (data) => {
const isLogin = await blobValidate(data);
if (isLogin) {
const blob = new Blob([data])
saveAs(blob, filename)
} else {
const resText = await data.text();
const rspObj = JSON.parse(resText);
const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
Message.error(errMsg);
}
downloadLoadingInstance.close();
}).catch((r) => {
Message.error('下载文件出现错误,请联系管理员!')
downloadLoadingInstance.close();
})
}
二、main,js引入该方法(以对象方式引入),并注册
import {download } from "../src/utils/request"
Vue.prototype.download = download
三、全局使用
通过事件触发该方法,里面需传3个参数,
url为后端给的下载方法的后半段
params为需要下载的数量
filename为下载的名字与类型
/** 导出按钮操作 */
handleExport() {
this.download(
"system/user/export",
{ ...this.queryParams },
`user_${new Date().getTime()}.xlsx`
);
},