合伙人运营小程序
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

index.js 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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 = 'http://192.168.8.33:8886'; // 线上
  5. const baseUrl = 'https://esos-iot.com:9442'; // 替换为您的接口基础 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, msg: '未找到认证 Token' });
  27. return;
  28. }
  29. }
  30. //
  31. wx.request({
  32. url: rootUrl + url,
  33. header,
  34. method,
  35. data,
  36. success: (res) => {
  37. console.log(res);
  38. // Token 失效或未授权
  39. if ([320, 400, 401, 403].includes(res.data.code)) {
  40. handleTokenInvalid(res.data.msg || '登录已过期');
  41. reject(res.data);
  42. return;
  43. }
  44. // 请求成功但业务逻辑错误(如 code != 200)
  45. if (res.statusCode === 200||res.data.code==0) {
  46. res.data.code === 200||res.data.code === 0 ? resolve(res.data) : reject(res.data);
  47. } else {
  48. reject(res.data.msg || { code: res.statusCode, msg: '请求异常' });
  49. }
  50. },
  51. fail: (err) => {
  52. console.error('请求失败:', err);
  53. wx.showToast({ title: '网络错误', icon: 'none' });
  54. reject(err);
  55. }
  56. });
  57. });
  58. }
  59. // 跳转到登录页
  60. function redirectToLogin(msg = '') {
  61. wx.clearStorageSync();
  62. const pages = getCurrentPages();
  63. const currentRoute = pages[pages.length - 1]?.route || '';
  64. // 避免重复跳转
  65. if (!currentRoute.includes('/pages/login/index')) {
  66. wx.showToast({ title: msg, icon: 'none' });
  67. wx.reLaunch({ url: '/pages/login/index' });
  68. }
  69. }
  70. // 处理 Token 失效
  71. function handleTokenInvalid(msg) {
  72. console.warn('Token 失效:', msg);
  73. redirectToLogin(msg || '请重新登录');
  74. }
  75. // 导出封装的请求方法
  76. module.exports = {
  77. request: request
  78. };