import axios from 'axios' import store from '@/store' import { Message } from 'element-ui' /** *文件下载 */ export function downloadFile (config) { return axios({ method: 'post', timeout: 300000, url: `${process.env.VUE_APP_CURRENTMODE === 'development' ? '/api' : window.API_BASE_URL}${config.url}`, data: config.data, // 传递参数 responseType: 'blob', // 表明返回服务器返回的数据类型 // 设置请求头信息 headers: { Authorization: 'Bearer ' + store.state.token }, // `onUploadProgress` 允许为上传处理进度事件 onUploadProgress: config.onUploadProgress, onDownloadProgress: config.onDownloadProgress }).then(response => { if (!response.headers['content-disposition']) { Message({ message: '导出失败!', type: 'error' }) return } return new Promise(function (resolve, reject) { if (response.data) { const blob = new Blob([response.data]) const link = document.createElement('a') link.style.display = 'none' link.href = URL.createObjectURL(blob) // response.headers['content-disposition'].split(';')[1].split('=')[1] link.setAttribute('download', config.fileName + config.type) document.body.appendChild(link) link.click() document.body.removeChild(link) resolve(1) Message({ message: '导出成功!', type: 'success' }) } else { reject(response.msg) } }) }).catch(error => { // 请求失败, console.log(error) }) }