油批
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
2.4 KiB

2 years ago
import Vue from "vue";
import axios from "axios";
import utils from "@/utils/encode";
//加密白名单
const encryptWhite = [];
const env = process.env.VUE_APP_ENV;
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API,
timeout: 20000,
});
// 请求拦截
service.interceptors.request.use(
(config) => {
2 years ago
let token = localStorage.getItem("businessToken");
2 years ago
if (token) {
config.headers["Authorization"] = token;
} else delete config.headers["Authorization"];
const JSESSIONID = utils.uuid();
config.headers["JSESSIONID"] = JSESSIONID;
config.headers["token"] = utils.bcrypt(JSESSIONID);
2 years ago
config.headers['dataSources'] = 'WEB'
2 years ago
if (env === "development") {
return config;
}
if (env === "production" || ebv === "test") {
//加密
config.data = {
params: utils.encrypt(JSON.stringify(config.data)),
};
}
if (config.responseType === "blob" && !encryptWhite.includes(config.url)) {
const data = {
params: utils.encrypt(JSON.stringify(config.data)),
};
config.data = data;
}
return config;
},
(error) => {
console.log("axios request error:", error);
return Promise.reject();
}
);
// 响应拦截
service.interceptors.response.use(
(response) => {
const res = response.data;
const contentType = response.headers["content-type"];
//流文件
if (!contentType.includes("application/json")) return res;
if (env === "production" || env === "test") {
if (res.encrypt === 1) {
const dataParam = JSON.parse(utils.decrypt(res.data));
res.data = JSON.stringify(dataParam) === "{}" ? null : dataParam;
}
}
if (res && res.code) {
if (res.code === 42011) {
Vue.prototype.$message.error(res.msg || "您的登录已失效,请重新登录");
2 years ago
localStorage.removeItem("businessToken");
2 years ago
setTimeout(() => {
window.location.reload();
}, 1000);
return;
}
// 白名单
if (![20000, 42014, 46001].includes(res.code)) {
console.log("code码:" + res.code);
Vue.prototype.$message.error(res.msg);
return Promise.reject();
} else {
return res;
}
}
},
(error) => {
Vue.prototype.$message.error("请求失败");
console.log("axios response error:", error);
return Promise.reject(error);
}
);
export default service;