import axios from 'axios';
|
import Vue from 'vue';
|
import {
|
MessageBox,
|
Message
|
} from 'element-ui';
|
import Loading from './vab';
|
import store from '@/store';
|
import qs from 'qs';
|
import {
|
getStorage,
|
setStorage
|
} from '@/utils/sessionStorage';
|
|
const service = axios.create({
|
baseURL: process.env.VUE_APP_BASE_API, // api 的 base_url process.env.VUE_APP_BASE_API
|
timeout: 50000 // 请求超时时间
|
});
|
//请求
|
service.interceptors.request.use(config => {
|
return config;
|
|
error => {
|
console.log(error);
|
return Promise.reject(error);
|
};
|
});
|
|
// //响应
|
service.interceptors.response.use(
|
response => {
|
const res = response.data;
|
|
if (response.status === 200) {
|
return Promise.resolve(response);
|
} else {
|
Message.error('接口请求错误');
|
|
return Promise.reject(response);
|
}
|
},
|
error => {
|
if (error.response) {
|
switch (error.response.status) {
|
case 401:
|
MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
|
confirmButtonText: '重新登录',
|
cancelButtonText: '取消',
|
type: 'warning'
|
})
|
.then(() => {
|
store.dispatch('user/logout').then(() => {
|
window.location.href = '/';
|
});
|
})
|
.catch(() => {
|
if (!getStorage('accessToken')) {
|
store.dispatch('user/logout').then(() => {
|
window.location.href = '/';
|
});
|
}
|
});
|
break;
|
case 404:
|
Message({
|
message: '很抱歉,资源未找到!',
|
type: 'error'
|
});
|
break;
|
case 500:
|
Message({
|
message: '网络错误,请稍后再试!',
|
type: 'error'
|
});
|
break;
|
case 503:
|
Message({
|
message: '系统错误,请稍后再试!',
|
type: 'error'
|
});
|
break;
|
case 504:
|
Message({
|
message: '网络超时,请稍后再试!',
|
type: 'error'
|
});
|
break;
|
}
|
|
Vue.prototype.$Loading();
|
return Promise.reject(error);
|
}
|
}
|
);
|
|
export default service;
|