axios.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /* eslint-disable no-const-assign */
  2. import axios from 'axios'
  3. import router from '../../src/router/index'
  4. import { Message, Loading } from 'element-ui'
  5. // 构建axios实例
  6. axios.create({
  7. baseURL: process.env.BASE_API,
  8. timeout: 10000
  9. })
  10. let loadingInstance = null
  11. axios.interceptors.request.use(config => {
  12. const dom = document.getElementById('content')
  13. if (loadingInstance == null) loadingInstance = Loading.service({ target: dom })
  14. const token = sessionStorage.getItem('token')
  15. if (token) {
  16. config.headers.Authorization = 'Bearer ' + token
  17. }
  18. return config
  19. },
  20. err => {
  21. return Promise.reject(err)
  22. })
  23. axios.interceptors.response.use(
  24. response => {
  25. if (loadingInstance !== null) {
  26. loadingInstance.close()
  27. loadingInstance = null
  28. }
  29. if (response.data.errcode !== 0 || response.data.errcode === 403) {
  30. if (response.data.errmsg.cmd) {
  31. Message.error(response.data.errmsg.cmd)
  32. return false
  33. }
  34. Message.error(response.data.errmsg)
  35. return false
  36. }
  37. return response.data
  38. },
  39. error => {
  40. const { status, data } = error.response
  41. if (loadingInstance !== null) {
  42. loadingInstance.close()
  43. loadingInstance = null
  44. }
  45. if (status === 401) {
  46. Message.error('请重新登录')
  47. router.push('/login')
  48. return false
  49. }
  50. if (status === 500) {
  51. if (data.cmd) {
  52. Message.error(data.cmd)
  53. return false
  54. }
  55. if (data.errmsg) {
  56. Message.error(data.errmsg)
  57. return false
  58. }
  59. }
  60. Message.error(data.errmsg)
  61. return data
  62. }
  63. )
  64. export default axios