12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- 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<T> {
- code: number;
- msg: string;
- fieldValidations: { field: string, msg: string }[];
- data: T;
- }
- axios.interceptors.response.use((config: AxiosResponse<Res<object>>) => {
- 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
|