index.js 3.8 KB

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