import axios from 'axios';
import ElementUI from 'element-ui';
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
axios.defaults.retry = 2;
axios.defaults.transformRequest = [
function(data) {
let arr = [];
for (let it in data) {
arr.push(encodeURIComponent(it) + '=' + encodeURIComponent(data[it]));
}
return arr.join('&');
}
];
let http = axios.create({
baseURL: '',
// `transformResponse` 在传递给 then/catch 前,允许修改响应数据
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
});
http.interceptors.request.use(
(config) => {
config.data.userToken = localStorage.getItem('user_token');
document.querySelector('#loading-icon').classList.add('show');
return config;
},
(error) => {
document.querySelector('#loading-icon').classList.remove('show');
return Promise.reject(error);
}
);
//http response 封装后台返回拦截器
http.interceptors.response.use(
(response) => {
document.querySelector('#loading-icon').classList.remove('show');
//当返回信息为未登录或者登录失效的时候重定向为登录页面
if (response.data.Code == '-402' || response.data.message == '用户未登录或登录超时,请登录!') {
// debugger;
window.location.href = '#/login';
} else {
if (response.data.Code == -301) {
// secondRequestHandler(response.config.url, response.config.data);
//console.log(response);
let param = {};
param.userTrue = 1;
let dataArr = response.config.data.split('&');
if (dataArr.length) {
dataArr.forEach((val) => {
let ls = val.split('=');
if (ls[0]) {
param[ls[0]] = ls[1];
}
});
}
if (confirm(response.data.Msg)) {
return new Promise((resolve, reject) => {
http
.post(response.config.url, param)
.then((res) => {
console.log(res);
resolve(res);
})
.catch((error2) => {
reject(error2);
});
});
}
} else if (response.data.Code == -1) {
ElementUI.Message({
showClose: true,
type: 'error',
message: response.data.Msg
});
return response;
} else if (response.data.Code == 1) {
return response;
} else if ([ -101, -401, -402, -403 ].indexOf(response.data.Code) === -1) {
ElementUI.Message({
showClose: true,
type: 'error',
message: response.data.Msg
});
return response;
}
}
return response;
},
(error) => {
ElementUI.Message({
showClose: true,
type: 'error',
message: '系统错误,请联系管理员'
});
document.querySelector('#loading-icon').classList.remove('show');
return Promise.reject(error);
}
);
export default http;