//自己内部封装的axios 正常的配置即可
import axios from '@/utils/axiosConfig';
import { Message } from 'element-ui';
/**
*
* @param {请求路径,请求参数,表格名称,导出的条数} obj
*/
function fileDownLoad(obj) {
axios.post(
obj.url,
obj.param,
{responseType: "blob"}
).then(res => {
if (res.status === 200) {
console.log(res);
const aLink = document.createElement("a");
// 判断浏览器是否支持blob对象
try {
//该实例化的方式第一个参数必须是数组的格式
var blob = new Blob([res.data], {
//⬇️很重要,如果配置其他的类型,一直出现表格内容乱码的情况,换成这种会成功
type: 'text/plain;charset=utf-8'
})
} catch (e) {
//旧版本浏览器下的blob创建对象
window.BlobBuilder = window.BlobBuilder ||
window.WebKitBlobBuilder ||
window.MozBlobBuilder ||
window.MSBlobBuilder;
if (e.name == 'TypeError' && window.BlobBuilder) {
var blobbuilder = new BlobBuilder();
BlobBuilder.append(res.data);
var blob = blobbuilder.getBlob("application/octet-stream;charset=utf-8");
} else {
Message.error("浏览器版本较低,暂不支持该文件类型下载");
}
}
aLink.href = URL.createObjectURL(blob);
//⬇️表格命名的地方
aLink.download = `${obj.name}.xls`;
aLink.click();
document.body.appendChild(aLink);
aLink.remove();
Message.success(`下载成功!,下载数量共${obj.number}条`);
} else {
Message.error(`${res.msg}`)
}
}
)
}
export default fileDownLoad;
vue.js 封装公用的导出表格方法
最新推荐文章于 2023-05-17 11:51:16 发布