邃芒慧语、照片说话(PC) https://photo.metavatar.cc/
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 

62 rader
1.6 KiB

  1. import axios, { InternalAxiosRequestConfig, AxiosResponse } from "axios";
  2. import { useUserStoreHook } from "@/store/modules/user";
  3. // 创建 axios 实例
  4. const service = axios.create({
  5. baseURL: import.meta.env.VITE_APP_BASE_API,
  6. timeout: 50000,
  7. headers: { "Content-Type": "application/json;charset=utf-8" },
  8. });
  9. // 请求拦截器
  10. service.interceptors.request.use(
  11. (config: InternalAxiosRequestConfig) => {
  12. const userStore = useUserStoreHook();
  13. if (userStore.token) {
  14. config.headers.Authorization = userStore.token;
  15. }
  16. return config;
  17. },
  18. (error: any) => {
  19. return Promise.reject(error);
  20. }
  21. );
  22. // 响应拦截器
  23. service.interceptors.response.use(
  24. (response: AxiosResponse) => {
  25. const { code, msg } = response.data;
  26. if (code === "00000") {
  27. return response.data;
  28. }
  29. // 响应数据为二进制流处理(Excel导出)
  30. if (response.data instanceof ArrayBuffer) {
  31. return response;
  32. }
  33. ElMessage.error(msg || "系统出错");
  34. return Promise.reject(new Error(msg || "Error"));
  35. },
  36. (error: any) => {
  37. if (error.response.data) {
  38. const { code, msg } = error.response.data;
  39. // token 过期,重新登录
  40. if (code === "A0230") {
  41. ElMessageBox.confirm("当前页面已失效,请重新登录", "提示", {
  42. confirmButtonText: "确定",
  43. type: "warning",
  44. }).then(() => {
  45. localStorage.clear();
  46. window.location.href = "/";
  47. });
  48. } else {
  49. ElMessage.error(msg || "系统出错");
  50. }
  51. }
  52. return Promise.reject(error.message);
  53. }
  54. );
  55. // 导出 axios 实例
  56. export default service;