import axios from 'axios' import { Message } from 'element-ui' import store from '../store' import { showLoading, hideLoading } from './apiHelper' // 创建axios实例 const service = axios.create({ baseURL: process.env.VUE_APP_BJD_API, // api的base_url timeout: 40000, // 请求超时时间2 withCredentials: true }) // request拦截器 service.interceptors.request.use(config => { showLoading() const token = localStorage.getItem('token') if (token) { config.headers.Authorization = token } return config }, error => { // Do something with request error hideLoading() console.error(error) // for debug Promise.reject(error) }) // respone拦截器 service.interceptors.response.use( response => { hideLoading() const res = response.data if (res.returnCode === '1000') { return res } if (res.code === 1) { if (res.data !== null) { if (res.data.returnCode) { if (res.data.returnCode === 1) { return res.data.returnData } else if (res.data.returnCode === '20011') { Message({ showClose: true, message: res.returnMsg, type: 'error', duration: 500, onClose: () => { store.dispatch('FedLogOut').then(() => { location.reload()// 为了重新实例化vue-router对象 避免bug }) } }) return Promise.reject('未登录') } else { Message({ message: res.data.returnMsg || '请求处理异常,请稍后再试', type: 'error', duration: 3 * 1000 }) return Promise.reject(res) } } else { return res.data } } return null } if (res.returnCode === 1) { return res.returnData } else if (res.returnCode === '20011') { Message({ showClose: true, message: res.returnMsg, type: 'error', duration: 500, onClose: () => { store.dispatch('FedLogOut').then(() => { location.reload()// 为了重新实例化vue-router对象 避免bug }) } }) return Promise.reject('未登录') } else { let msg = '' if (res.message) { msg = res.message } else if (res.msg) { msg = res.msg } else { msg = res.returnMsg } if (res.data && res.data.constructor === String) { msg = msg ? msg + ':' + res.data : res.data } Message({ message: msg, type: 'error', duration: 3 * 1000 }) return Promise.reject(res) } }, error => { hideLoading() console.error('err' + error) // for debug Message({ message: error.response.data.msg, type: 'error', duration: 3 * 1000 }) return Promise.reject(error) } ) export default service