request.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. // import store from '../store'
  2. import {
  3. handleLoginFailure
  4. } from '@/utils'
  5. import {
  6. baseImagePath
  7. } from '@/config'
  8. // wx2527c0aabd4401d4
  9. const app = getApp();
  10. const baseUrl = "https://api.biaodianfuhao.net"
  11. // const baseUrl = "http://192.168.1.14:8080" //chang
  12. // const baseUrl = "http://192.168.31.193:8000"
  13. // const baseUrl = "http://rjding.natappfree.cc"
  14. const defaultOpt = {
  15. login: true
  16. }
  17. const baseRequest = (options) => {
  18. let showLoading = options.loading;
  19. const token = app.globalData.requestToken;
  20. // const token ="eyJhbGciOiJIUzUxMiJ9.eyJ1c2VySWQiOjE2NzM2MTQ5MDQwOTI3ODY2ODksImFjY291bnQiOiIxMzI1MjgwNjY2MCIsInV1aWQiOiI4MTc3NDg0OS1kZDk0LTRiZmMtOTRmNy1kZTJlYWQ4OWMwOTEiLCJyZW1lbWJlck1lIjp0cnVlLCJleHBpcmF0aW9uRGF0ZSI6MTY5MDQ0NDY5MTcyMCwiY2FUb2tlbiI6bnVsbCwib3RoZXJzIjpudWxsLCJzdWIiOiIxNjczNjE0OTA0MDkyNzg2Njg5IiwiaWF0IjoxNjg4NjkxNjU5LCJleHAiOjE2OTA0NDQ2OTF9.qGR9O5AHgnzlkeDkyWJOFm5p6mdzAaUk1LOIQ2lTeAxSqL1yRsZFhYu2CoBDp-k3UMmvqGcClNDNpficDjpTeg"
  21. // const token =
  22. // "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VySWQiOjE1NjIyNTk1MTQ2ODA0NTUxNjksImFjY291bnQiOiIxNTE2NDAzNTkxMCIsInV1aWQiOiJkMGI2YTI1Yy1jY2M1LTRiZTYtOGNhMC1jMWNmY2E5ZTRjMmEiLCJyZW1lbWJlck1lIjp0cnVlLCJleHBpcmF0aW9uRGF0ZSI6MTY4OTQwODAzOTcyOCwiY2FUb2tlbiI6bnVsbCwib3RoZXJzIjpudWxsLCJzdWIiOiIxNTYyMjU5NTE0NjgwNDU1MTY5IiwiaWF0IjoxNjg3NjU1MDA3LCJleHAiOjE2ODk0MDgwMzl9.12ZiVUyjFGhXCOlsx_927RrQVYG43Ke7Gk4-peYzpJkLDKLBW0XATWcxL-wCSYRaAgXEr6GqyR0jhDOHfc1eqA"
  23. // 合并传参过来的 headers
  24. // 如果接口需要登录,携带 token 去请求
  25. options.header = {
  26. ...options.header,
  27. }
  28. options.url = baseUrl + options.url;
  29. // console.log('请求参数=======>',options.url,options.data);
  30. if (options.login === true) {
  31. options.header = {
  32. ...options.header,
  33. token: token
  34. }
  35. }
  36. // console.log(options);
  37. return new Promise((resolve, reject) => {
  38. if (showLoading) {
  39. uni.showLoading({
  40. title: '加载中'
  41. });
  42. }
  43. // console.log(options.data);
  44. uni.request({
  45. url: options.url,
  46. method: options.method,
  47. data: options.data || options.params,
  48. header: options.header,
  49. success(res) {
  50. // console.log('url='+options.url,'请求响应',res);
  51. uni.getNetworkType({
  52. success: function(res) {
  53. showLoading = false;
  54. if (res.networkType == 'none') {
  55. uni.showToast({
  56. icon: 'none',
  57. title: '接口请求出错,请检查手机网络',
  58. success(res) {}
  59. });
  60. }
  61. }
  62. });
  63. if (res.data.code != "00000") {
  64. if (res.data.code == "A0104") {
  65. uni.showToast({
  66. icon: 'none',
  67. title: res.data.message + '',
  68. success() {},
  69. complete() {
  70. }
  71. });
  72. reject(res.data.message);
  73. } else if (res.data.code == "00001") {
  74. uni.showToast({
  75. icon: 'none',
  76. title: res.data.data,
  77. success() {},
  78. complete() {
  79. }
  80. });
  81. reject(res.data);
  82. } else {
  83. uni.showToast({
  84. icon: 'none',
  85. title: res.data.message + '',
  86. success() {},
  87. complete() {
  88. }
  89. });
  90. reject(res.data.message);
  91. }
  92. }
  93. resolve(res.data);
  94. },
  95. fail(error) {
  96. uni.getNetworkType({
  97. success: function(res) {
  98. if (res.networkType == 'none') {
  99. uni.showToast({
  100. icon: 'none',
  101. title: '接口请求出错,请检查手机网络',
  102. success(res) {}
  103. });
  104. }
  105. }
  106. });
  107. console.log(error);
  108. uni.showToast({
  109. icon: 'none',
  110. title: '接口请求出错:' + error.errMsg,
  111. success(res) {}
  112. });
  113. reject(error);
  114. },
  115. complete(res) {
  116. uni.hideLoading();
  117. }
  118. });
  119. });
  120. };
  121. /**
  122. * http 请求基础类
  123. * 参考文档 https://www.kancloud.cn/yunye/axios/234845
  124. *
  125. */
  126. const request = ['post', 'put', 'patch'].reduce((request, method) => {
  127. /**
  128. *
  129. * @param url string 接口地址
  130. * @param data object get参数
  131. * @param options object axios 配置项
  132. * @returns {AxiosPromise}
  133. */
  134. request[method] = (url, data = {}, options = {}) => {
  135. return baseRequest(Object.assign({
  136. url,
  137. data,
  138. method
  139. }, defaultOpt, options))
  140. }
  141. return request
  142. }, {});
  143. ['get', 'delete', 'head'].forEach(method => {
  144. /**
  145. *
  146. * @param url string 接口地址
  147. * @param params object get参数
  148. * @param options object axios 配置项
  149. * @returns {AxiosPromise}
  150. */
  151. request[method] = (url, params = {}, options = {}) => {
  152. return baseRequest(Object.assign({
  153. url,
  154. params,
  155. method
  156. }, defaultOpt, options))
  157. }
  158. })
  159. export default request