import axios from 'axios' import qs from 'qs' import { getToken } from '@/utils/auth' // import load from '@/utils/loading' import cleanDeep from 'clean-deep' /** * 导出模板 * @param {*} params * params: { * url: xxx, * params: {}, * fileName: xxx.xls * } */ export const Export = (that, params, message, func) => { // 报表导出 let url = params.url const options = { method: params.method ? params.method : 'get', headers: { Authorization: getToken() }, // params: params.params, url, responseType: "blob" }; if (options.method == 'post') { options.data = params.params } else { options.params = params.params } that.$confirm((message || "您确定下载模板"), "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" }) .then(() => { // load.startLoading() axios(cleanDeep(options)).then(res => { let blob = new Blob([res.data], { // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' type: "application/vnd.ms-excel;charset=utf-8" //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8 }); let text = (new Response(blob)).text() text.then(res => { // 判断是否报错 if (res.indexOf('code') != -1) { let json = JSON.parse(res) if (json.code == 403) { that.$message.error(`登录过期,请重新登录!`) setTimeout(() => { that.$store.dispatch('user/resetToken').then(() => { location.reload() }) }, 1000); return } else if(json.code == 200){ that.$message.success(json.msg || json.message) } else { that.$message.error(json.msg || json.message) } if (func) { func() } } else { let objectUrl = URL.createObjectURL(blob); let link = document.createElement("a"); let fname = params.fileName || "导出文件.xls"; //下载文件的名字 link.href = objectUrl; link.setAttribute("download", fname); document.body.appendChild(link); link.click(); if (func) { func() } } }) // load.endLoading(); }).catch(error => { console.log(error) that.$message.error('下载失败,请联系管理员'); // load.endLoading(); }); }) .catch(() => {}); }