/** * 请求封装 * 根据环境自动切换 API 地址 */ import config from '@/config/index.js' const { baseUrl, timeout, debug, env } = config const noTokenUrls = [ '/oa/code/sendCode', // 获取验证码 '/codeLogin', // 登录接口 '/xcxLogin' // 一键登录 ]; // 核心请求方法 const request = (url, method = 'GET', data = {}) => { // 1. 检查当前接口是否需要token const needToken = !noTokenUrls.some(path => url.startsWith(path)); // 2. 获取本地存储的token const token = uni.getStorageSync('token') || ''; const fullUrl = baseUrl + url; // 构建请求头(有token则自动携带) const header = { 'Content-Type': 'application/json;charset=UTF-8' }; if (needToken && token) { header["Authorization"] = "Bearer " + token // Bearer } return new Promise((resolve, reject) => { uni.request({ url: fullUrl, method: method.toUpperCase(), // 统一转大写避免错误 data: data, // POST 参数放请求体 header: header, timeout: 10000, success: (res) => { resolve(res.data); }, fail: (err) => { // 统一错误提示 uni.showToast({ title: err.errMsg || '请求失败', icon: 'none' }); reject(err); } }); }); }; // 导出方法 export default { // GET 请求 get: (url, data = {}) => request(url, 'GET', data), // POST 请求 post: (url, data = {}) => request(url, 'POST', data) };