http.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. const util = require('../utils/util');
  2. const storeKeys = require('../utils/storageKeys');
  3. const app = getApp()
  4. let timer = null;
  5. let goLoginState = false; //是否已经触发跳转登录页面
  6. const http = {
  7. errorModel: (content, showCancel, confirmText, callback)=> {
  8. wx.showModal({
  9. title: '提示',
  10. content: content,
  11. showCancel: showCancel,
  12. confirmText: confirmText,
  13. confirmColor: '#E73E2D',
  14. success(res) {
  15. if (res.confirm) {
  16. callback();
  17. }
  18. }
  19. })
  20. },
  21. request: (model)=> {
  22. // if (model.data != null && url.indexOf("{") > 0 && url.indexOf("}") > 0) {
  23. // for (var key in model.data) {
  24. // if (url.indexOf("{" + key + "}") >= 0) {
  25. // url = url.replace("{" + key + "}", model.data[key]);
  26. // }
  27. // }
  28. // }
  29. // clearInterval(timer);
  30. // timer = null;
  31. // timer = setInterval(()=>{
  32. // wx.showLoading({
  33. // title: "加载中"
  34. // });
  35. // },3000);
  36. wx.request({
  37. url: model.url,
  38. data: model.data,
  39. header: {
  40. "Content-Type": "application/json",
  41. "Access-Token": model.token
  42. },
  43. method: model.method,
  44. success: (res)=> {
  45. // clearInterval(timer);
  46. // timer = null;
  47. let statusCode = res.data.status;
  48. // let pages = getCurrentPages(), currPage = null;
  49. // if (pages.length) {
  50. // currPage = pages[pages.length - 1];
  51. // }
  52. // let route = currPage.route;
  53. // 成功的请求状态
  54. if (statusCode == 200 || statusCode == 201) {
  55. model.success(res);
  56. } else {
  57. wx.hideLoading();
  58. // 未登录或者失效
  59. if (statusCode == 401 || statusCode == 444) {
  60. util.removeStorageSync(storeKeys.TOKEN);
  61. util.removeStorageSync(storeKeys.CARETOTAl);
  62. wx.removeTabBarBadge({
  63. index: 2,
  64. })
  65. if(!model.noLogin && !goLoginState){
  66. goLoginState = true;
  67. wx.navigateTo({
  68. url: "/pages/tabBar/login/login"
  69. })
  70. }
  71. } else {
  72. if (statusCode == 404) {
  73. wx.showToast({
  74. title: '资源404',
  75. icon: 'none',
  76. duration: 2000
  77. })
  78. }
  79. // if (statusCode == 500) {
  80. // if (!model.noToast) {
  81. // wx.showToast({
  82. // title: res.data.message,
  83. // icon: 'none',
  84. // duration: 1000
  85. // })
  86. // }
  87. // }
  88. else {
  89. if (res.data && res.data.message) {
  90. if (!model.noToast) {
  91. wx.showToast({
  92. title: res.data.message,
  93. icon: 'none',
  94. duration: 1500
  95. })
  96. }
  97. }
  98. }
  99. }
  100. model.error(res); //异常后可操作
  101. }
  102. },
  103. fail:()=>{
  104. wx.hideLoading();
  105. // util.toast("网络不佳,请求超时",3000)
  106. }
  107. })
  108. },
  109. getRequest: (model)=> {
  110. wx.request({
  111. url: model.url,
  112. data: model.data,
  113. header: {
  114. "Content-Type": "application/json",
  115. "Access-Token": model.token
  116. },
  117. method: model.method,
  118. success: function (res) {
  119. let statusCode = res.statusCode;
  120. let pages = getCurrentPages(),currPage = null;
  121. if (pages.length) {
  122. currPage = pages[pages.length - 1];
  123. }
  124. // 成功的请求状态
  125. if (statusCode == 200 || statusCode == 201) {
  126. model.success(res);
  127. } else {
  128. wx.hideLoading();
  129. // 未登录或者失效
  130. if (statusCode == 401 || statusCode == 444) {
  131. util.removeStorageSync(storeKeys.TOKEN);
  132. utils.removeStorageSync(storeKeys.CARETOTAl);
  133. } else {
  134. if (statusCode == 404) {
  135. wx.showToast({
  136. title: '资源404',
  137. icon: 'none',
  138. duration: 2000
  139. })
  140. }else if (statusCode == 500) {
  141. wx.showToast({
  142. title: '服务器开小差',
  143. icon: 'none',
  144. duration: 1000
  145. })
  146. } else {
  147. if (res.data.error && res.data.error.message) {
  148. if(!model.noToast){
  149. wx.showToast({
  150. title: res.data.error.message, icon: 'none', duration: 1000
  151. })
  152. }
  153. }
  154. }
  155. }
  156. model.error(res); //异常后可操作
  157. }
  158. }
  159. })
  160. },
  161. };
  162. module.exports = {
  163. request: http.request,
  164. getRequest: http.getRequest
  165. }