axios.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. sessionStorage.clear()
  48. router.push('/login')
  49. return false
  50. }
  51. if (status === 500) {
  52. if (data.cmd) {
  53. Message.error(data.cmd)
  54. return false
  55. }
  56. if (data.errmsg) {
  57. Message.error(data.errmsg)
  58. return false
  59. }
  60. }
  61. Message.error(data.errmsg)
  62. return data
  63. }
  64. )
  65. export default axios