http.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import axios from 'axios'
  2. import Vue from 'vue'
  3. import router from '../router'
  4. var isProduction = process.env.NODE_ENV === 'production'
  5. const vue = new Vue()
  6. let loading = ''
  7. // 配置请求域名
  8. let layoutBoxIsShow
  9. const serverName = isProduction ? '/zhoushan' : 'http://192.168.0.135:8017/zhoushan'
  10. // http://192.168.0.135:8017
  11. const exceptUrls = ['/login']
  12. axios.defaults.baseURL = serverName
  13. axios.defaults.headers['X-Requested-with'] = 'XMLHttpRequest'
  14. axios.interceptors.request.use(function (config) {
  15. for (let i = 0; i < exceptUrls.length; i++) {
  16. let url = exceptUrls[i]
  17. if (config.url.indexOf(url) > -1) {
  18. config.baseURL = serverName.replace('/zhoushan', '')
  19. }
  20. }
  21. config.headers['token'] = window.localStorage.getItem('token')
  22. loading = vue.$loading({
  23. lock: true,
  24. text: 'Loading',
  25. spinner: 'el-icon-loading',
  26. background: 'rgba(0, 0, 0, 0.7)'
  27. })
  28. return config
  29. }, function (error) {
  30. // 对请求错误做些什么
  31. return Promise.reject(error)
  32. })
  33. // 配置response拦截器
  34. axios.interceptors.response.use(
  35. response => {
  36. loading.close()
  37. let data = response.data
  38. let code = Number(response.data.code)
  39. switch (code) {
  40. case -1:
  41. break
  42. case 102:
  43. break
  44. case 5001:
  45. if (!layoutBoxIsShow) {
  46. layoutBoxIsShow = true
  47. window.localStorage.setItem('token', '')
  48. vue.$alert('登录状态失效,请重新登录', '提示', {
  49. confirmButtonText: '确定',
  50. callback: function () {
  51. layoutBoxIsShow = false
  52. router.push('/login')
  53. }
  54. })
  55. }
  56. break
  57. case 0:
  58. break
  59. }
  60. return data
  61. },
  62. error => {
  63. loading.close()
  64. // if (error.response) {
  65. // switch (error.response.code) {
  66. // case 5001:
  67. // window.localStorage.setItem('token', '')
  68. // vue.$alert('登录状态失效,请重新登录', '提示', {
  69. // confirmButtonText: '确定',
  70. // callback: function () {
  71. // router.push('/login')
  72. // }
  73. // })
  74. // break
  75. // }
  76. // }
  77. return Promise.reject(error)
  78. }
  79. )
  80. export { serverName, axios }