// 1. 直接使用 CDN 全局的 axios const axios = window.axios; // 2. 基础配置(无 export 语句) axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'; const service = axios.create({ baseURL: '', // 不使用baseURL前缀,直接使用完整路径 timeout: 10000 }); // 3. request 拦截器(删除所有依赖若依工具的代码) service.interceptors.request.use(config => { // 从 cookie 取若依的 Admin-Token(确保登录状态) const token = document.cookie.replace(/(?:(?:^|.*;\s*)Admin-Token\s*=\s*([^;]*).*$)|^.*$/, '$1'); if (token) { config.headers['Authorization'] = 'Bearer ' + token; } return config; }, error => { console.log(error); return Promise.reject(error); // 必须加 return,否则吞错误 }); // 4. response 拦截器(简化,无 element-ui 依赖) service.interceptors.response.use(res => { // 二进制数据直接返回(如需下载可保留) if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') { return res.data; } // 状态码处理(用原生 alert 替代弹窗) const code = res.data.code || 200; if (code === 401) { alert('登录过期,请重新登录若依系统'); return Promise.reject('登录过期'); } else if (code !== 200) { alert('接口失败:' + (res.data.msg || '未知错误')); return Promise.reject('接口错误'); } else { return res.data; // 若依接口返回的 data 已处理,直接返回 } }, error => { // 错误提示(原生 alert) let msg = error.message; if (msg === "Network Error") msg = "后端连接异常"; else if (msg.includes("timeout")) msg = "请求超时"; else if (msg.includes("status code")) msg = "接口" + msg.substr(-3) + "异常"; alert(msg); return Promise.reject(error); }); // 5. 核心:挂载到全局 window,无任何 export window.request = service;