let baseUrl = ''; if (process.env.NODE_ENV === 'development') { baseUrl = 'http://192.168.0.224:8080'; // 开发环境 } else { baseUrl = 'http://192.168.1.224:8080'; // 生产环境 } export default function request(url, data = {}, method = "GET") { return new Promise((resolve, reject) => { // 加载中提示(提升用户体验) uni.showLoading({ title: '请求中...', mask: true }); uni.request({ url: baseUrl + url, data: data, method: method, header: { "token": uni.getStorageSync("token") || '', 'content-type': 'application/json' }, success: (res) => { uni.hideLoading(); // 关闭加载提示 // 处理HTTP状态码(网络层面) if (res.statusCode !== 200) { const errMsg = `请求失败(${res.statusCode})`; uni.showToast({ title: errMsg, icon: "none", duration: 2000 }); reject(errMsg); return; } // 处理业务状态码(后端返回的data里) const resData = res.data || {}; // 兼容后端返回空的情况 // 优先处理token过期(401) if (resData.code === 401) { uni.showToast({ title: '登录过期,请重新登录', icon: 'none', duration: 2000 }); uni.clearStorageSync('token'); setTimeout(() => { uni.reLaunch({ url: '/pages/login/login' }); }, 1500); reject('token 过期'); return; } // 业务成功(code=1) if (resData.code === 200) { resolve(resData.data); // 只返回核心数据,简化页面调用 } // 业务失败(code=2) else if (resData.code === 500) { const errMsg = resData.msg || '请求失败'; uni.showToast({ title: errMsg, icon: "none", duration: 2000 }); resolve(null) // reject(errMsg); } else { const errMsg = resData.msg || '业务异常'; uni.showToast({ title: errMsg, icon: "none", duration: 2000 }); reject(errMsg); } }, fail: (err) => { uni.hideLoading(); // 关闭加载提示 uni.showToast({ title: '网络连接失败', icon: "none", duration: 2000 }); reject(err); } }); }); } export const get = (url, data) => request(url, data, 'GET'); export const post = (url, data) => request(url, data, 'POST');