index.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. "use strict";
  2. import axios from "axios";
  3. import router from "@/router";
  4. import { showLoadingToast,showToast,closeToast } from "vant";
  5. // Full config: https://github.com/axios/axios#request-config
  6. // axios.defaults.baseURL = process.env.baseURL || process.env.apiUrl || '';
  7. // axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
  8. // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
  9. // 请求数
  10. let LOADINGCOUNT = 0;
  11. let LOADING;
  12. let config = {
  13. baseURL: import.meta.env.VITE_APP_API_URL,
  14. timeout: 10*60 * 1000, // Timeout
  15. // withCredentials: true, // Check cross-site Access-Control
  16. };
  17. const _axios = axios.create(config);
  18. _axios.interceptors.request.use(
  19. function (config) {
  20. // Do something before request is sent
  21. if (LOADINGCOUNT === 0) {
  22. LOADING = showLoadingToast ({
  23. message: "loading...",
  24. duration: 0,
  25. forbidClick: true,
  26. });
  27. }
  28. LOADINGCOUNT++;
  29. config.headers.Authorization=localStorage.getItem('token')||''
  30. return config;
  31. },
  32. function (error) {
  33. // Do something with request error
  34. return Promise.reject(error);
  35. }
  36. );
  37. // Add a response interceptor
  38. _axios.interceptors.response.use(
  39. function (response) {
  40. // Do something with response data
  41. const data=response.data
  42. //关闭loading
  43. LOADINGCOUNT--;
  44. if (LOADINGCOUNT === 0) {
  45. // closeToast()
  46. LOADING.close()
  47. }
  48. if(response.status!==200){
  49. setTimeout(() => {
  50. showToast('网络异常')
  51. }, 100);
  52. }
  53. if(!data){
  54. setTimeout(() => {
  55. showToast('服务器开了个小差')
  56. }, 100);
  57. }
  58. if(data.Ret===408){//token失效
  59. showToast(data.Msg)
  60. router.replace('/login')
  61. }
  62. if(data.Ret===403){
  63. setTimeout(() => {
  64. showToast(data.Msg)
  65. }, 100);
  66. }
  67. return data;
  68. },
  69. function (error) {
  70. // Do something with response error
  71. return Promise.reject(error);
  72. }
  73. );
  74. /**
  75. * 导出get请求方法
  76. * @url 请求地址
  77. * @params get请求参数
  78. */
  79. export const get = (url, params) => {
  80. return _axios.get(url, { params });
  81. };
  82. /**
  83. * 导出post请求方法
  84. * @url 请求地址
  85. * @params post请求参数
  86. */
  87. export const post = (url, params) => {
  88. return _axios.post(url, params);
  89. };