axios.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import axios, { InternalAxiosRequestConfig, AxiosResponse } from "axios";
  2. import { useUserStoreHook } from "@/store/modules/user";
  3. // 请求拦截器
  4. axios.interceptors.request.use(
  5. (config: InternalAxiosRequestConfig) => {
  6. console.log("请求拦截了");
  7. const accessToken = localStorage.getItem("token");
  8. if (accessToken) {
  9. config.headers.Authorization = accessToken;
  10. }
  11. return config;
  12. },
  13. (error: any) => {
  14. return Promise.reject(error);
  15. }
  16. );
  17. // 响应拦截器
  18. axios.interceptors.response.use(
  19. (response: AxiosResponse) => {
  20. console.log("ddddddddd");
  21. const { code, msg } = response.data;
  22. console.log("响应拦截了", JSON.stringify(response.data));
  23. if (code === "200") {
  24. return response.data;
  25. }
  26. // 响应数据为二进制流处理(Excel导出)
  27. if (response.data instanceof ArrayBuffer) {
  28. return response;
  29. }
  30. // token 过期,重新登录
  31. if (code === "4106") {
  32. ElMessageBox.confirm("当前页面已失效,请重新登录", "提示", {
  33. confirmButtonText: "确定",
  34. cancelButtonText: "取消",
  35. type: "warning",
  36. }).then(() => {
  37. const userStore = useUserStoreHook();
  38. userStore.resetToken().then(() => {
  39. location.reload();
  40. });
  41. });
  42. } else {
  43. ElMessage.error(msg || "系统出错");
  44. }
  45. return Promise.reject(new Error(msg || "Error"));
  46. },
  47. (error: any) => {
  48. console.log("aaaaaa");
  49. if (error.response.data) {
  50. const { code, msg } = error.response.data;
  51. }
  52. return Promise.reject(error.message);
  53. }
  54. );
  55. export default axios;