/* eslint-disable no-const-assign */ import axios from 'axios' import router from '../../src/router/index' import { Message, Loading } from 'element-ui' // 构建axios实例 axios.create({ baseURL: process.env.BASE_API, timeout: 10000 }) let loadingInstance = null axios.interceptors.request.use(config => { const dom = document.getElementById('content') if (loadingInstance == null) loadingInstance = Loading.service({ target: dom }) const token = sessionStorage.getItem('token') if (token) { config.headers.Authorization = 'Bearer ' + token } return config }, err => { return Promise.reject(err) }) axios.interceptors.response.use( response => { if (loadingInstance !== null) { loadingInstance.close() loadingInstance = null } if (response.data.errcode !== 0 || response.data.errcode === 403) { if (response.data.errmsg.cmd) { Message.error(response.data.errmsg.cmd) return false } Message.error(response.data.errmsg) return false } return response.data }, error => { const { status, data } = error.response if (loadingInstance !== null) { loadingInstance.close() loadingInstance = null } if (status === 401) { Message.error('请重新登录') router.push('/login') return false } if (status === 500) { if (data.cmd) { Message.error(data.cmd) return false } if (data.errmsg) { Message.error(data.errmsg) return false } } Message.error(data.errmsg) return data } ) export default axios