123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import axios from "axios";
- import { Capacitor } from '@capacitor/core';
- import { showNotify } from 'vant';
- import { useSystemStore } from "@/stores/modules/systemStore";
- import { fn_logout } from "@/utils";
- // 用于存储请求和对应的 AbortController
- const requestMap = new Map();
- const requestCountMap = new Map(); // 用于记录请求的次数
- const isNativeApp = Capacitor.isNativePlatform();
-
- const axiosInstance = axios.create({
- baseURL: (isNativeApp ? import.meta.env.VITE_PRO_IM_PATH : import.meta.env.VITE_DEV_IM_PATH) + "/api/v1", // 设置 API 基础 URL
- timeout: 300000, // 设置请求超时时间
- });
- const requestState = {
- success: [200],
- beOverdue: [886],
- NotAccessRight: [500],
- exception: [400],
- };
- const pathArr = ["/api/admin/system/login", "/api/logout"];
- axiosInstance.interceptors.request.use(
- (config) => {
-
- const systemStore = useSystemStore();
- systemStore.localLoading(true);
- if (!pathArr.includes(config.url)) {
- const token = localStorage.getItem("token");
- if (token && config.headers) {
- config.headers["Authorization"] = token;
- }
- }
- return config;
- },
- (err) => {
- const systemStore = useSystemStore();
- systemStore.localLoading();
- return Promise.reject(err);
- }
- );
- // 响应拦截器
- axiosInstance.interceptors.response.use(
- (res) => {
- const systemStore = useSystemStore();
- systemStore.localLoading();
- const { code, message: msg } = res.data;
- if (requestState.NotAccessRight.includes(code)) {
- // showNotify({ type: 'warning', message: msg });
- return Promise.reject(msg);
- }
- if (requestState.exception.includes(code)) {
- // showNotify({ type: 'warning', message: msg });
- return Promise.reject(msg);
- }
- return res.data;
- },
- (err) => {
- const systemStore = useSystemStore();
- systemStore.localLoading();
- const msg = err.response?.data ? err.response.data.message : "";
- // showNotify({ type: 'warning', message: msg });
- if (requestState.beOverdue.includes( err.status)) {
- //
- fn_logout();
- return undefined;
- }
- return Promise.reject(err);
- }
- );
- export default axiosInstance;
|