request.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import axios from 'axios'
  2. import router from '@/router'
  3. import store from '@/store'
  4. import { Message,Loading } from 'element-ui'
  5. import { getToken,removeToken } from '@/utils/auth'
  6. import { tansParams,judgmentNetworkReturnAddress } from "@/utils/index";
  7. //判定http或者https
  8. let urlText = window.location.href.split('://')[0]+'://';
  9. //弹窗状态开关
  10. let messageData = null;
  11. // 弹层数据
  12. let loadingInstance = {};
  13. let options = {
  14. text:"",
  15. spinner:"",
  16. background: 'rgba(0, 0, 0, 0.1)'
  17. };
  18. let loadingCount = 0;
  19. const service = axios.create({
  20. baseURL: urlText+judgmentNetworkReturnAddress(),
  21. timeout: Number(process.env.VUE_APP_TIMEOUT) || 15000
  22. })
  23. // 请求拦截器
  24. service.interceptors.request.use(
  25. config => {
  26. // 弹层相关
  27. loadingInstance = Loading.service(options)
  28. // const token = localStorage.getItem('token')
  29. const token = getToken();
  30. if (token) {
  31. config.headers['Authorization'] = token
  32. }
  33. // 弹层相关
  34. loadingCount ++;
  35. return config
  36. },
  37. error => {
  38. // 弹层相关
  39. loadingCount --;
  40. if(loadingCount===0){
  41. loadingInstance.close();
  42. }
  43. Promise.reject(error)
  44. });
  45. // 响应拦截器
  46. service.interceptors.response.use(
  47. response => {
  48. // 弹层相关
  49. loadingCount --;
  50. if(loadingCount===0) {
  51. loadingInstance.close();
  52. }
  53. return response.data
  54. },
  55. error => {
  56. // 弹层相关
  57. loadingCount --;
  58. if(loadingCount===0){
  59. loadingInstance.close();
  60. }
  61. if (error.response && error.response.status === 401) {
  62. store.dispatch('logout')
  63. if (router.currentRoute.path !== '/login') {
  64. router.replace('/login').catch(() => {})
  65. }
  66. } else {
  67. const msg = error.response && error.response.data && error.response.data.message
  68. ? error.response.data.message
  69. : error.message || '请求失败'
  70. Message.error(msg)
  71. }
  72. return Promise.reject(error)
  73. }
  74. )
  75. export default service