import axios, { type AxiosError, type InternalAxiosRequestConfig } from 'axios' import { ElMessage } from 'element-plus' const request = axios.create({ baseURL: (import.meta as any).env?.VITE_API_BASE_URL || '/api/v1', timeout: 30000, }) request.interceptors.request.use( (config: InternalAxiosRequestConfig) => { const token = localStorage.getItem('pdg_token') if (token && config.headers) { config.headers.Authorization = `Bearer ${token}` } return config }, (error) => { return Promise.reject(error) } ) request.interceptors.response.use( (response) => { const res = response.data if (res.code !== 200) { ElMessage.error(res.message || '请求失败') return Promise.reject(new Error(res.message)) } return res }, (error: AxiosError) => { const status = error.response?.status if (status === 401) { ElMessage.error('登录已过期,请重新登录') localStorage.removeItem('pdg_token') localStorage.removeItem('pdg_refresh') window.location.href = '/login' } else { ElMessage.error((error.response?.data as any)?.message || '网络错误') } return Promise.reject(error) } ) export default request