index.js 4.1 KB

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