|
|
|
@ -8,13 +8,16 @@ |
|
|
|
* |
|
|
|
*/ |
|
|
|
import {message} from "@/utils/message.js"; |
|
|
|
|
|
|
|
import axios from 'axios' |
|
|
|
import Cookies from 'js-cookie' |
|
|
|
import router from '@/router' |
|
|
|
import qs from 'qs' |
|
|
|
import { clearLoginInfo } from '@/utils' |
|
|
|
import isPlainObject from 'lodash/isPlainObject' |
|
|
|
import { Loading, Message } from "element-ui"; |
|
|
|
import { tansParams, blobValidate } from "@/utils/index"; |
|
|
|
import { saveAs } from "file-saver"; |
|
|
|
let downloadLoadingInstance; |
|
|
|
|
|
|
|
axios.defaults.withCredentials=true |
|
|
|
axios.defaults.crossDomain=true |
|
|
|
@ -90,4 +93,43 @@ http.interceptors.response.use(response => { |
|
|
|
return Promise.reject(error) |
|
|
|
}) |
|
|
|
|
|
|
|
// 通用下载方法
|
|
|
|
export function globalDownload(url, params, filename, config) { |
|
|
|
downloadLoadingInstance = Loading.service({ |
|
|
|
text: "正在下载数据,请稍候", |
|
|
|
spinner: "el-icon-loading", |
|
|
|
background: "rgba(0, 0, 0, 0.7)", |
|
|
|
}); |
|
|
|
return http |
|
|
|
.post(url, params, { |
|
|
|
transformRequest: [ |
|
|
|
(params) => { |
|
|
|
return tansParams(params); |
|
|
|
}, |
|
|
|
], |
|
|
|
headers: { "Content-Type": "application/x-www-form-urlencoded" }, |
|
|
|
responseType: "blob", |
|
|
|
...config, |
|
|
|
}) |
|
|
|
.then(async (data) => { |
|
|
|
const isBlob = blobValidate(data); |
|
|
|
if (isBlob) { |
|
|
|
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) => { |
|
|
|
console.error(r); |
|
|
|
Message.error("下载文件出现错误,请联系管理员!"); |
|
|
|
downloadLoadingInstance.close(); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
export default http |
|
|
|
|