import axios, {AxiosResponse} from 'axios' import {ElMessage} from 'element-plus' import router from "../router"; import {getToken} from "@/util/tokenUtil"; axios.defaults.baseURL = import.meta.env.VITE_API_BASE_URL axios.interceptors.request.use(config => { const token = getToken() if (token) { config.headers["Authorization"] = token } return config; }, error => Promise.reject(error)) interface Res { code: number; msg: string; fieldValidations: { field: string, msg: string }[]; data: T; } axios.interceptors.response.use((config: AxiosResponse>) => { if (config.data.code === 0) { if (config.data.msg) { ElMessage({type: 'success', message: config.data.msg}); } } else if (config.data.code === 100) { ElMessage({type: 'warning', message: config.data.msg}); router.push("/login").then() return Promise.reject() } else { if (config.data.msg) { ElMessage({type: 'warning', message: config.data.msg}); } if (config.data.fieldValidations) { config.data.fieldValidations.forEach((item: { msg: string }) => { ElMessage({type: 'warning', message: item.msg}); }) } } return config }, error => { ElMessage({type: 'error', message: error}); return Promise.reject(error) }) export default axios