import axios from 'axios' import base from './base' import store from '../../src/store/store.js' import ElementUI from 'element-ui' import router from '../../src/router/index.js' axios.defaults.baseURL = base.url const http = axios.create({ timeout: 1000 * 300, withCredentials: true, headers: { 'Content-Type': 'application/json; charset=utf-8' } }) /** * 请求拦截 */ var timer = '' //删除定时器 var DoNotExecute = false //当请求成功后不再执行 http.interceptors.request.use(config => { config.headers['token'] = window.sessionStorage.getItem('token') // 请求头带上token if (store.state.controlload == false) { timer = setTimeout(function() { if (DoNotExecute == false) { store.commit('controlload', true) } clearTimeout(timer) }, 500); } return config }, error => { return Promise.reject(error) }) /** * 响应拦截 */ http.interceptors.response.use(response => { if (store.state.controlload) { store.commit('controlload', false) } else { DoNotExecute = true } if (response.data && response.data.code === 401) { // 401, token失效 ElementUI.Message.error("请重新登录"); router.push({ name: 'slgn' }) } else if (response.data.code < 0) { if (response.data.code == -2) { return response } else { ElementUI.Message.error(response.data.msg); // 没有返回值会报错 return "错误" } } else { return response } }, error => { if (store.state.controlload) { store.commit('controlload', false) } else { DoNotExecute = true } return Promise.reject(error.message) }) http.adornUrl = (s) => { return 'proxyApi' } export default http;