http.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. let server = {
  2. baseHost: '',
  3. host: '',
  4. mapKey: '', //高德地图key
  5. staticMapKey: '', //腾讯静态地图key
  6. api: {
  7. login: '',
  8. uploadImg: ''
  9. }
  10. }
  11. let request = (obj, method) => {
  12. let api = obj.api,
  13. params = obj.params ? obj.params : {},
  14. cb = obj.cb ? obj.cb : null,
  15. failCb = obj.failCb ? obj.failCb : null,
  16. hideLoading = obj.hideLoading ? obj.hideLoading : false;
  17. /**
  18. * 重构api
  19. */
  20. if (typeof server.api[api] == 'undefined') {
  21. wx.showModal({
  22. title: '错误',
  23. content: `接口${api}不存在`,
  24. showCancel: false
  25. })
  26. return
  27. }
  28. let url = server.baseHost + server.api[api];
  29. if (!hideLoading) {
  30. wx.showLoading({
  31. title: "加载中"
  32. })
  33. }
  34. /**
  35. * 重构params,加上token
  36. */
  37. if (api != 'login') {
  38. if (wx.getStorageSync('token')) {
  39. params.token = wx.getStorageSync('token')
  40. } else {
  41. //重新登录
  42. login(() => {
  43. request(obj, method)
  44. })
  45. }
  46. }
  47. /**
  48. * http类型
  49. */
  50. let header = {}
  51. if (method == 'POST') {
  52. header = {
  53. 'Content-Type': 'application/x-www-form-urlencoded'
  54. }
  55. }
  56. /**
  57. * 发送http请求
  58. */
  59. wx.request({
  60. url,
  61. data: params,
  62. header,
  63. method,
  64. dataType: 'json',
  65. responseType: 'text',
  66. success(res) {
  67. if (!hideLoading) {
  68. wx.hideLoading()
  69. }
  70. switch (res.data.code) {
  71. case 1:
  72. cb && cb(res.data.data)
  73. break
  74. case 2:
  75. //重新登录
  76. login(() => {
  77. request(obj, method)
  78. })
  79. break
  80. default:
  81. if (failCb) {
  82. return failCb(res.data)
  83. }
  84. // 后台返回内容末尾含关键字history,则前台点击确定返回上一页或是首页
  85. let keyword = "back";
  86. if (!res.data.msg) return
  87. wx.showModal({
  88. title: '提示',
  89. content: res.data.msg.split(keyword)[0],
  90. showCancel: false,
  91. success: function(e) {
  92. if (e.confirm && res.data.msg.indexOf(keyword) > -1) {
  93. let pages = getCurrentPages();
  94. if (pages.length > 1) {
  95. wx.navigateBack({})
  96. } else {
  97. wx.reLaunch({
  98. url: '/pages/tabBar/home/index',
  99. })
  100. }
  101. }
  102. }
  103. })
  104. }
  105. },
  106. fail(res) {
  107. console.log('fail', res)
  108. },
  109. complete(res) {
  110. }
  111. })
  112. }
  113. /**
  114. * HTTP基本请求
  115. */
  116. let $Get = (obj) => {
  117. request(obj, 'GET')
  118. }
  119. let $Post = (obj) => {
  120. request(obj, 'POST')
  121. }
  122. /**
  123. * 登录
  124. */
  125. let login = (cb) => {
  126. wx.login({
  127. success(res) {
  128. if (res.code) {
  129. $Post({
  130. api: "login",
  131. params: {
  132. code: res.code
  133. },
  134. cb: (res) => {
  135. if (res.token) {
  136. wx.setStorageSync('token', res.token)
  137. }
  138. }
  139. })
  140. }
  141. cb && cb()
  142. },
  143. fail(res) {
  144. console.log('login fail', res)
  145. },
  146. complete(res) {
  147. }
  148. })
  149. }
  150. export {
  151. server,
  152. $Get,
  153. $Post,
  154. login
  155. }