import axios from 'axios' import { ElMessage } from 'element-plus' import router from '../router' // 创建 axios 实例 const request = axios.create({ baseURL: '/api', timeout: 10000 }) // 请求拦截器:自动添加 token request.interceptors.request.use( (config) => { const token = localStorage.getItem('token') if (token) { config.headers.Authorization = `Bearer ${token}` } return config }, (error) => { return Promise.reject(error) } ) // 响应拦截器:统一处理错误(config.quiet = true 时不弹窗) request.interceptors.response.use( (response) => { return response.data }, (error) => { const status = error.response?.status const message = error.response?.data?.message || '请求失败' const quiet = error.config?.quiet const isLogin = error.config?.url?.includes('/user/login') if (!quiet) { if (status === 401) { localStorage.removeItem('token') localStorage.removeItem('userInfo') router.push('/login') ElMessage.error('登录已过期,请重新登录') } else if (status === 403 && !isLogin) { ElMessage.error('权限不足') } else { ElMessage.error(message) } } return Promise.reject(error) } ) export default request