index.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. import {
  2. baseUrl
  3. } from "@/config"
  4. import platform from "@/utils/platform"
  5. import getEnv from "@/utils/env" // 获取环境变量
  6. import store from "@/store"
  7. import {
  8. wipeNulish
  9. } from '@/utils/utils.js'
  10. function requestHandle(obj) {
  11. let header = obj.header || {}
  12. const reqData = wipeNulish(obj.data) || {}
  13. const accessToken = uni.getStorageSync('accessToken') || ''
  14. const tokenType = uni.getStorageSync('tokenType') || ''
  15. const Authorization = accessToken && tokenType ? `${tokenType} ${accessToken}` : ''
  16. const customRes = obj.customRes
  17. const plat = platform()
  18. const env = getEnv()
  19. let base = (plat === 'H5' && env === 'dev') ? '/api' : baseUrl
  20. const BASE_URL = obj.url.indexOf("http") > -1 || obj.url.indexOf("https://") > -1 ? obj.url : base + obj.url;
  21. Object.assign(header, {
  22. Authorization: Authorization,
  23. platform: plat
  24. })
  25. if (plat === 'APP-PLUS') {
  26. Object.assign(header, store.state.info.versionInfo)
  27. }
  28. // header.channel = 2 // 渠道-提货卡
  29. if (obj.loading) {
  30. uni.showLoading({
  31. mask: true
  32. })
  33. }
  34. return new Promise((resolve, reject) => {
  35. uni.request({
  36. method: obj.method,
  37. url: BASE_URL,
  38. data: reqData,
  39. header: header,
  40. dataType: "json"
  41. }).then(response => {
  42. uni.hideLoading()
  43. let [error, {
  44. data: {
  45. data,
  46. code,
  47. msg
  48. }
  49. }] = response
  50. if (error) {
  51. uni.showToast({
  52. title: "服务器炸了",
  53. icon: 'none'
  54. })
  55. }
  56. if (customRes) {
  57. resolve(response[1].data)
  58. } else if (code === 424) { // 登录过期
  59. uni.removeStorageSync('accessToken')
  60. uni.removeStorageSync('tokenType')
  61. uni.removeStorageSync('userInfo')
  62. uni.removeStorageSync('currentBuyerAddr')
  63. // uni.removeStorageSync('payOpenId')
  64. const pages = getCurrentPages()
  65. if (pages[pages.length - 1].$page.fullPath.includes('login')) {
  66. return
  67. }
  68. // uni.showToast({
  69. // title: msg,
  70. // icon: 'none',
  71. // mask: true
  72. // })
  73. setTimeout(() => {
  74. uni.reLaunch({
  75. url: '/pages/login/index'
  76. })
  77. }, 1000)
  78. } else if (code !== 0) {
  79. uni.showToast({
  80. title: msg || '服务器开小差',
  81. icon: 'none'
  82. })
  83. } else {
  84. resolve(data)
  85. }
  86. }).catch(error => {
  87. uni.hideLoading()
  88. /**获取网络状态 */
  89. uni.getNetworkType({
  90. success: function(res) {
  91. if (res.networkType === 'none') {
  92. console.log('网络未连接,请检查网络状态')
  93. uni.showToast({
  94. title: '网络未连接,请检查网络状态',
  95. mask: false,
  96. icon: 'none'
  97. })
  98. } else {
  99. uni.showToast({
  100. title: '网络连接超时',
  101. icon: 'none'
  102. })
  103. }
  104. }
  105. })
  106. reject(error)
  107. })
  108. })
  109. }
  110. // customRes 用于自定义反参状态处理,凡是未加此参数 都当作反参code是0处理
  111. const request = {
  112. get: (obj) => {
  113. return new Promise((resolve, reject) => {
  114. requestHandle({
  115. method: 'GET',
  116. url: obj.url,
  117. data: obj.data,
  118. header: obj.header,
  119. customRes: obj.customRes,
  120. loading: obj.loading
  121. })
  122. .then((res) => {
  123. resolve(res)
  124. })
  125. .catch((err) => {
  126. reject(err)
  127. })
  128. });
  129. },
  130. post: (obj) => {
  131. return new Promise((resolve, reject) => {
  132. requestHandle({
  133. method: 'POST',
  134. url: obj.url,
  135. data: obj.data,
  136. header: obj.header,
  137. customRes: obj.customRes,
  138. loading: obj.loading
  139. })
  140. .then((res) => {
  141. resolve(res)
  142. })
  143. .catch((err) => {
  144. reject(err)
  145. })
  146. })
  147. },
  148. put: (obj) => {
  149. return new Promise((resolve, reject) => {
  150. requestHandle({
  151. method: 'PUT',
  152. url: obj.url,
  153. data: obj.data,
  154. header: obj.header,
  155. customRes: obj.customRes,
  156. loading: obj.loading
  157. })
  158. .then((res) => {
  159. resolve(res)
  160. })
  161. .catch((err) => {
  162. reject(err)
  163. })
  164. })
  165. },
  166. del: (obj) => {
  167. return new Promise((resolve, reject) => {
  168. requestHandle({
  169. method: 'DELETE',
  170. url: obj.url,
  171. data: obj.data,
  172. header: obj.header,
  173. customRes: obj.customRes,
  174. loading: obj.loading
  175. })
  176. .then((res) => {
  177. resolve(res)
  178. })
  179. .catch((err) => {
  180. reject(err)
  181. })
  182. })
  183. }
  184. }
  185. export default request