import axios from 'axios' import { ElMessage } from 'element-plus' /** 后台前端只读取 admin_token,避免误带小程序端或导游端 Token。 */ const http = axios.create({ baseURL: '/api/admin', timeout: 10000, }) function redirectToLogin() { localStorage.removeItem('admin_token') if (location.pathname !== '/login') location.href = '/login' } http.interceptors.request.use((config) => { const token = localStorage.getItem('admin_token') if (token) config.headers.Authorization = `Bearer ${token}` return config }) http.interceptors.response.use( (response) => { const body = response.data if (body.code !== 0) { const message = body.message || '请求失败' if (body.code === 401 || body.code === '401') { redirectToLogin() } ElMessage.error(message) const error = new Error(message) error.code = body.code return Promise.reject(error) } return body.data }, (error) => { if (error.response?.status === 401) { redirectToLogin() } ElMessage.error(error.response?.data?.message || error.message || '网络异常') return Promise.reject(error) }, ) export default http