// api.jshttp://zlink.bjdexn.cn // const baseUrl = 'http://192.168.8.102:8088'; // 替换为您的接口基础 URL const esosUrl = 'https://esos-iot.com'; // 线上 const baseUrl = 'https://esos-iot.com:9443'; // 线上 // const baseUrl = 'http://192.168.8.105:8888'; // 替换为您的接口基础 URL // // 封装网络请求方法 // isPublic: true 不检验token // useEsos: true 使用esosUrl地址 function request(url, method, data, options = {}) { const { isPublic = false, useEsos = false } = options; return new Promise((resolve, reject) => { // 动态选择根地址 const rootUrl = useEsos ? esosUrl : baseUrl; const header = { 'Content-Type': 'application/x-www-form-urlencoded' }; // -- // // 非公共接口需携带 Token if (!isPublic) { const token = wx.getStorageSync('token'); if (token) { header['Authorization'] = `Bearer ${token}`; } else { redirectToLogin('请先登录'); reject({ code: 401, message: '未找到认证 Token' }); return; } } wx.request({ url: rootUrl + url, header, method, data, success: (res) => { console.log(res); // Token 失效或未授权 if ([320, 400, 401, 403].includes(res.data.code)) { handleTokenInvalid(res.data.msg || '登录已过期'); reject(res.data); return; } // 请求成功但业务逻辑错误(如 code != 200) if (res.statusCode === 200||res.data.code==0) { res.data.code === 200||res.data.code === 0 ? resolve(res.data) : reject(res.data); } else { reject(res.data.msg || { code: res.statusCode, message: '请求异常' }); } }, fail: (err) => { console.error('请求失败:', err); wx.showToast({ title: '网络错误', icon: 'none' }); reject(err); } }); }); } // 跳转到登录页 function redirectToLogin(message = '') { wx.clearStorageSync(); const pages = getCurrentPages(); const currentRoute = pages[pages.length - 1]?.route || ''; // 避免重复跳转 if (!currentRoute.includes('/package-user/pages/login/index')) { wx.showToast({ title: message, icon: 'none' }); wx.reLaunch({ url: '/package-user/pages/login/index' }); } } // 处理 Token 失效 function handleTokenInvalid(message) { console.warn('Token 失效:', message); redirectToLogin(message || '请重新登录'); } // 导出封装的请求方法 module.exports = { request: request };