import axios from 'axios' import { ElMessage } from 'element-plus' import { useRouter } from 'vue-router' const router = useRouter() const instance = axios.create({ baseURL: `http://${import.meta.env.VITE_APP_SERVICE_HOST}:9002/`, timeout: 10000, }) // 请求拦截器 instance.interceptors.request.use( (config) => { // 添加头部token const token = localStorage.getItem('token') if (token) { config.headers.Authorization = token } return config }, (error) => { return Promise.reject(error) }, ) // 响应拦截器 instance.interceptors.response.use( (response) => { if (response.status !== 200) { ElMessage.error('请求失败') return Promise.reject(new Error('请求失败')) } const { data: { code }, } = response if (code !== 0) { if (code === 40001) { localStorage.removeItem('token') ElMessage.error('登录过期,请重新登录') router.replace('/login') return Promise.reject(new Error('登录过期,请重新登录')) } ElMessage.error(response.data.message) return Promise.reject(response.data || {}) } return response.data }, (error) => { let msg = '请求失败' if (error.response && error.response.data && error.response.data.message) { msg = error.response.data.message } if (error.status !== 200) { ElMessage.error(msg) return Promise.reject(new Error(msg)) } return Promise.reject(error) }, ) export default instance