电速宝
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // api.jshttp://zlink.bjdexn.cn
  2. // const baseUrl = 'http://192.168.8.102:8088'; // 替换为您的接口基础 URL
  3. const esosUrl = 'https://esos-iot.com'; // 线上
  4. const baseUrl = 'https://esos-iot.com:9443'; // 线上
  5. // const baseUrl = 'http://192.168.8.105:8888'; // 替换为您的接口基础 URL
  6. //
  7. // 封装网络请求方法
  8. // isPublic: true 不检验token
  9. // useEsos: true 使用esosUrl地址
  10. function request(url, method, data, options = {}) {
  11. const { isPublic = false, useEsos = false } = options;
  12. return new Promise((resolve, reject) => {
  13. // 动态选择根地址
  14. const rootUrl = useEsos ? esosUrl : baseUrl;
  15. const header = {
  16. 'Content-Type': 'application/x-www-form-urlencoded'
  17. };
  18. // -- //
  19. // 非公共接口需携带 Token
  20. if (!isPublic) {
  21. const token = wx.getStorageSync('token');
  22. if (token) {
  23. header['Authorization'] = `Bearer ${token}`;
  24. } else {
  25. redirectToLogin('请先登录');
  26. reject({ code: 401, message: '未找到认证 Token' });
  27. return;
  28. }
  29. }
  30. wx.request({
  31. url: rootUrl + url,
  32. header,
  33. method,
  34. data,
  35. success: (res) => {
  36. console.log(res);
  37. // Token 失效或未授权
  38. if ([320, 400, 401, 403].includes(res.data.code)) {
  39. handleTokenInvalid(res.data.msg || '登录已过期');
  40. reject(res.data);
  41. return;
  42. }
  43. // 请求成功但业务逻辑错误(如 code != 200)
  44. if (res.statusCode === 200||res.data.code==0) {
  45. res.data.code === 200||res.data.code === 0 ? resolve(res.data) : reject(res.data);
  46. } else {
  47. reject(res.data.msg || { code: res.statusCode, message: '请求异常' });
  48. }
  49. },
  50. fail: (err) => {
  51. console.error('请求失败:', err);
  52. wx.showToast({ title: '网络错误', icon: 'none' });
  53. reject(err);
  54. }
  55. });
  56. });
  57. }
  58. // 跳转到登录页
  59. function redirectToLogin(message = '') {
  60. wx.clearStorageSync();
  61. const pages = getCurrentPages();
  62. const currentRoute = pages[pages.length - 1]?.route || '';
  63. // 避免重复跳转
  64. if (!currentRoute.includes('/package-user/pages/login/index')) {
  65. wx.showToast({ title: message, icon: 'none' });
  66. wx.reLaunch({ url: '/package-user/pages/login/index' });
  67. }
  68. }
  69. // 处理 Token 失效
  70. function handleTokenInvalid(message) {
  71. console.warn('Token 失效:', message);
  72. redirectToLogin(message || '请重新登录');
  73. }
  74. // 导出封装的请求方法
  75. module.exports = {
  76. request: request
  77. };