/*
|
* @Description:
|
* @Author: 王旭
|
* @Date: 2022-03-03 15:10:54
|
* @LastEditTime: 2023-07-17 15:23:15
|
* @LastEditors: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git
|
*/
|
import axios from "axios";
|
import { Message ,Loading} from "element-ui";
|
import store from "@/store";
|
import { getToken } from "@/utils/auth";
|
import { tansParams, blobValidate } from "@/utils/ruoyi";
|
let downloadLoadingInstance;
|
// create an axios instance
|
const service = axios.create({
|
// baseURL: BASE_URL, // api的base_url
|
timeout: 35000, // 请求超时时间
|
headers: {
|
"content-type": "application/json;charset=UTF-8",
|
"Cross-Origin-Opener-Policy": "same-origin",
|
"Cross-Origin-Embedder-Policy": "require-corp"
|
},
|
// withCredentials: true,
|
});
|
|
// request interceptor
|
service.interceptors.request.use(
|
(config) => {
|
// 请求携带token
|
if (store.getters.token) {
|
}
|
config.headers["X-Token"] = getToken();
|
config.headers['Authorization'] = 'Bearer ' + getToken();
|
//加载loading
|
store.commit("UPDATE_API_COUNT", "add");
|
|
// get请求映射params参数
|
if (config.method === 'get' && config.params) {
|
let url = config.url + '?' + tansParams(config.params);
|
url = url.slice(0, -1);
|
config.params = {};
|
config.url = url;
|
}
|
return config;
|
},
|
(error) => {
|
//减去loading
|
store.commit("UPDATE_API_COUNT", "sub");
|
console.log(error); // for debug
|
return Promise.reject(error);
|
}
|
); service.interceptors.response.use(
|
(response) => {
|
store.commit("UPDATE_API_COUNT", "sub");
|
//console.log(response)
|
//返回因有ResponeType===Blob ,分开处理
|
if (Object.prototype.toString.call(response.data).indexOf("Blob") > -1) {
|
let reader = new FileReader()
|
reader.onload = function (e) {
|
{
|
try {
|
let str = this.result.toString();
|
let res = JSON.parse(str);
|
if (res.code !== 200) {
|
Message.error(res.msg);
|
}
|
} catch { }
|
}
|
}
|
reader.readAsText(response.data, "utf-8");
|
} else {
|
// if (response.data.code !== 200) {
|
// Message.error(response.data.msg);
|
// }
|
}// 报错提示
|
return response.data;
|
},
|
(error) => {
|
store.commit("UPDATE_API_COUNT", "sub");
|
debugger;
|
const { status, data } = error.response;
|
//返回因有ResponeType===Blob ,分开处理
|
if (Object.prototype.toString.call(data).indexOf("Blob") > -1) {
|
let reader = new FileReader()
|
reader.onload = function (e) {
|
{
|
let str = this.result.toString();
|
let res = JSON.parse(str);
|
Message({
|
message: res.message,
|
type: "error",
|
duration: 5 * 1000,
|
});
|
}
|
}
|
reader.readAsText(data, "utf-8");
|
} else {
|
Message({
|
message: data.message,
|
type: "error",
|
duration: 5 * 1000,
|
});
|
}
|
return Promise.reject(error);
|
}
|
);
|
// 通用下载方法
|
export function download(url, params, filename, config) {
|
downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
|
return service.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 service;
|