request.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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 = getToken();
  29. if (token) {
  30. config.headers['Authorization'] = token
  31. }
  32. // 弹层相关
  33. loadingCount ++;
  34. return config
  35. },
  36. error => {
  37. // 弹层相关
  38. loadingCount --;
  39. if(loadingCount===0){
  40. loadingInstance.close();
  41. }
  42. Promise.reject(error)
  43. });
  44. // 响应拦截器
  45. service.interceptors.response.use(
  46. response => {
  47. // 弹层相关
  48. loadingCount --;
  49. if(loadingCount===0) {
  50. loadingInstance.close();
  51. }
  52. return response.data
  53. },
  54. error => {
  55. // 弹层相关
  56. loadingCount --;
  57. if(loadingCount===0){
  58. loadingInstance.close();
  59. }
  60. if (error.response && error.response.status === 401) {
  61. store.dispatch('logout')
  62. if (router.currentRoute.path !== '/login') {
  63. router.replace('/login').catch(() => {})
  64. }
  65. } else {
  66. const msg = error.response && error.response.data && error.response.data.message
  67. ? error.response.data.message
  68. : error.message || '请求失败'
  69. Message.error(msg)
  70. }
  71. return Promise.reject(error)
  72. }
  73. )
  74. export default service