import axios, {InternalAxiosRequestConfig, AxiosResponse} from "axios"; import {useUserStoreHook} from "@/store/modules/user"; // 创建 axios 实例 // @ts-ignore const service = axios.create({ baseURL: import.meta.env.VITE_APP_BASE_API, timeout: 50000, headers: {"Content-Type": "application/json;charset=utf-8"}, }); // 请求拦截器 service.interceptors.request.use( (config: InternalAxiosRequestConfig) => { const userStore = useUserStoreHook(); if (userStore.token) { //config.headers.Authorization = userStore.token; config.headers["access-token"] = userStore.token; } return config; }, (error: any) => { // @ts-ignore return Promise.reject(error); } ); // 响应拦截器 service.interceptors.response.use( (response: AxiosResponse) => { const {status, message} = response.data; if (status === 1) { return response.data; } // 响应数据为二进制流处理(Excel导出) if (response.data instanceof ArrayBuffer) { return response; } // ElMessage.error(message || "系统出错"); console.log(message || "系统出错"); return Promise.reject(new Error(message || "Error")); }, (error: any) => { if (error.response.data) { const {status, message} = error.response.data; // token 过期,重新登录 if (status === 10) { ElMessageBox.confirm("当前页面已失效,请重新登录", "提示", { confirmButtonText: "确定", type: "warning", }).then(() => { localStorage.clear(); window.location.href = "/"; }); } else { //ElMessage.error(message || "系统出错"); console.log(message || "系统出错"); } } return Promise.reject(error.message); } ); // 导出 axios 实例 export default service;