request.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import axios from 'axios'
  2. import base from './base'
  3. import store from '../../src/store/store.js'
  4. import ElementUI from 'element-ui'
  5. import router from '../../src/router/index.js'
  6. axios.defaults.baseURL = base.url
  7. const http = axios.create({
  8. timeout: 1000 * 300,
  9. withCredentials: true,
  10. headers: {
  11. 'Content-Type': 'application/json; charset=utf-8'
  12. }
  13. })
  14. /**
  15. * 请求拦截
  16. */
  17. var timer = '' //删除定时器
  18. var DoNotExecute = false //当请求成功后不再执行
  19. http.interceptors.request.use(config => {
  20. config.headers['token'] = window.sessionStorage.getItem('token') // 请求头带上token
  21. if (store.state.controlload == false) {
  22. timer = setTimeout(function() {
  23. if (DoNotExecute == false) {
  24. store.commit('controlload', true)
  25. }
  26. clearTimeout(timer)
  27. }, 500);
  28. }
  29. return config
  30. }, error => {
  31. return Promise.reject(error)
  32. })
  33. /**
  34. * 响应拦截
  35. */
  36. http.interceptors.response.use(response => {
  37. if (store.state.controlload) {
  38. store.commit('controlload', false)
  39. } else {
  40. DoNotExecute = true
  41. }
  42. if (response.data && response.data.code === 401) { // 401, token失效
  43. ElementUI.Message.error("请重新登录");
  44. router.push({
  45. name: 'slgn'
  46. })
  47. } else if (response.data.code < 0) {
  48. if (response.data.code == -2) {
  49. return response
  50. } else {
  51. ElementUI.Message.error(response.data.msg);
  52. // 没有返回值会报错
  53. return "错误"
  54. }
  55. } else {
  56. return response
  57. }
  58. }, error => {
  59. if (store.state.controlload) {
  60. store.commit('controlload', false)
  61. } else {
  62. DoNotExecute = true
  63. }
  64. return Promise.reject(error.message)
  65. })
  66. http.adornUrl = (s) => {
  67. return 'proxyApi'
  68. }
  69. export default http;