import axios from 'axios' import { Message } from 'element-ui'; import router from '../router/index' const service = axios.create({ // baseURL: 'http://10.250.0.252:5010', // api 的 base_url // baseURL: '', // api 的 base_url baseURL: '/it/api', // api 的 base_url timeout: 90000 // request timeout }) // 请求拦截 设置统一header service.interceptors.request.use( config => { const accessToken = localStorage.getItem('accessToken') if (accessToken) { config.headers.accessToken = accessToken } return config }, error => { return Promise.reject(error) } ) // 响应拦截 401 token过期处理 service.interceptors.response.use( response => { const data = response && response.data ? response.data : {} // 兼容后端返回结构:{ success, code, message, data } if (data && data.code === 500) { Message.error('服务异常') return Promise.reject(new Error(data.message || '服务异常')) } else if (data && data.code === 451) { router.push({ name: 'login' }) Message.error(data.message || '登录已失效,请重新登录') return Promise.reject(new Error(data.message || '登录已失效')) } else if (data && data.success === false) { Message.error(data.message || '请求失败') return Promise.reject(new Error(data.message || '请求失败')) } else if (data && data.code !== undefined && data.code !== 20000) { Message.error(data.message || '请求失败') return Promise.reject(new Error(data.message || '请求失败')) } else { return response.data } }, error => { // 非 2xx 时会进入这里(如 40009/40012),后端通常会带 JSON body const data = error && error.response && error.response.data ? error.response.data : null if (data && typeof data === 'object') { if (data.success === false) { Message.error(data.message || '请求失败') } else if (data.code && data.code !== 20000 && data.message) { Message.error(data.message || '请求失败') } } else if (error && error.message) { Message.error(error.message) } return Promise.reject(error) } ) export default service