index.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  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 ? `${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. 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. message
  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 === 9001) { // 登录过期
  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: '登录已过期',
  71. icon: 'none',
  72. mask: true
  73. })
  74. console.log('过期');
  75. setTimeout(() => {
  76. uni.reLaunch({
  77. url: '/pages/login/index'
  78. })
  79. }, 1000)
  80. } else if (code !== 1) {
  81. uni.showToast({
  82. title: message || '服务器开小差',
  83. icon: 'none'
  84. })
  85. } else {
  86. resolve(data)
  87. }
  88. }).catch(error => {
  89. uni.hideLoading()
  90. /**获取网络状态 */
  91. uni.getNetworkType({
  92. success: function(res) {
  93. if (res.networkType === 'none') {
  94. console.log('网络未连接,请检查网络状态')
  95. uni.showToast({
  96. title: '网络未连接,请检查网络状态',
  97. mask: false,
  98. icon: 'none'
  99. })
  100. } else {
  101. uni.showToast({
  102. title: '网络连接超时',
  103. icon: 'none'
  104. })
  105. }
  106. }
  107. })
  108. reject(error)
  109. })
  110. })
  111. }
  112. // customRes 用于自定义反参状态处理,凡是未加此参数 都当作反参code是0处理
  113. const request = {
  114. get: (obj) => {
  115. return new Promise((resolve, reject) => {
  116. requestHandle({
  117. method: 'GET',
  118. url: obj.url,
  119. data: obj.data,
  120. header: obj.header,
  121. customRes: obj.customRes,
  122. loading: obj.loading
  123. })
  124. .then((res) => {
  125. resolve(res)
  126. })
  127. .catch((err) => {
  128. reject(err)
  129. })
  130. });
  131. },
  132. post: (obj) => {
  133. return new Promise((resolve, reject) => {
  134. requestHandle({
  135. method: 'POST',
  136. url: obj.url,
  137. data: obj.data,
  138. header: obj.header,
  139. customRes: obj.customRes,
  140. loading: obj.loading
  141. })
  142. .then((res) => {
  143. resolve(res)
  144. })
  145. .catch((err) => {
  146. reject(err)
  147. })
  148. })
  149. },
  150. put: (obj) => {
  151. return new Promise((resolve, reject) => {
  152. requestHandle({
  153. method: 'PUT',
  154. url: obj.url,
  155. data: obj.data,
  156. header: obj.header,
  157. customRes: obj.customRes,
  158. loading: obj.loading
  159. })
  160. .then((res) => {
  161. resolve(res)
  162. })
  163. .catch((err) => {
  164. reject(err)
  165. })
  166. })
  167. },
  168. del: (obj) => {
  169. return new Promise((resolve, reject) => {
  170. requestHandle({
  171. method: 'DELETE',
  172. url: obj.url,
  173. data: obj.data,
  174. header: obj.header,
  175. customRes: obj.customRes,
  176. loading: obj.loading
  177. })
  178. .then((res) => {
  179. resolve(res)
  180. })
  181. .catch((err) => {
  182. reject(err)
  183. })
  184. })
  185. }
  186. }
  187. export default request