http.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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 serverName = isProduction ? '' : ''
  6. // const serverName = isProduction ? '' : 'http://192.168.0.135:8105'
  7. const vue = new Vue()
  8. axios.defaults.baseURL = serverName
  9. axios.defaults.headers['X-Requested-with'] = 'XMLHttpRequest'
  10. // 拦截请求,做登陆,或head处理
  11. axios.interceptors.request.use(
  12. function (config) {
  13. if (config.method === 'post') {
  14. config.data.rnd = Math.random()
  15. }
  16. config.headers['token'] = window.localStorage.getItem('cjt_token')
  17. return config
  18. }, function (error) {
  19. // 对请求错误做些什么
  20. return Promise.reject(error)
  21. }
  22. )
  23. // 拦截返回,做错误统一处理
  24. axios.interceptors.response.use(
  25. response => {
  26. let data = response.data
  27. let code = Number(response.data.code)
  28. switch (code) {
  29. case -1:
  30. break
  31. case 4500:
  32. vue.$alert('没有获得授权,请联系系统管理员', '提示', {
  33. confirmButtonText: '确定',
  34. callback: function () {
  35. }
  36. })
  37. break
  38. case 5001:
  39. if (window.localStorage.getItem('cjt_token')) {
  40. window.localStorage.setItem('cjt_token', '')
  41. vue.$alert('登录状态失效,请重新登录', '提示', {
  42. confirmButtonText: '确定',
  43. callback: function () {
  44. router.push('/login')
  45. }
  46. })
  47. }
  48. break
  49. case 5002:
  50. if (window.localStorage.getItem('cjt_token')) {
  51. window.localStorage.setItem('cjt_token', '')
  52. vue.$alert('登录状态失效,请重新登录', '提示', {
  53. confirmButtonText: '确定',
  54. callback: function () {
  55. router.push('/login')
  56. }
  57. })
  58. }
  59. break
  60. case 500:
  61. vue.$alert('服务器错误', '提示', {
  62. confirmButtonText: '确定',
  63. callback: function () {
  64. }
  65. })
  66. break
  67. case 0:
  68. break
  69. }
  70. // tryHideFullScreenLoading()
  71. return data
  72. },
  73. error => {
  74. vue.$alert('服务器错误', '提示', {
  75. confirmButtonText: '确定',
  76. callback: function () {
  77. }
  78. })
  79. return Promise.reject(error)
  80. }
  81. )
  82. export { serverName, axios }