requestConfig.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. import request from "@/node_modules/zhouWei-request/js_sdk/request";
  2. import base from '@/common/baseUrl';
  3. let version_code = '';
  4. // // #ifdef APP-PLUS
  5. // import {
  6. // getCurrentNo
  7. // } from '@/uni_modules/zhouWei-APPUpdate/js_sdk/appUpdate';
  8. // import {
  9. // isString
  10. // } from "util";
  11. // import { log } from "console";
  12. // setTimeout(() => {
  13. // getCurrentNo(function(res) {
  14. // console.log("版本号", res);
  15. // version_code = res.versionCode;
  16. // });
  17. // }, 200);
  18. // // #endif
  19. //可以new多个request来支持多个域名请求
  20. let $http = new request({
  21. //接口请求地址
  22. baseUrl: base.baseUrl,
  23. //服务器本地上传文件地址
  24. fileUrl: base.baseUrl,
  25. // 服务器上传图片默认url
  26. defaultUploadUrl: "api/common/v1/upload_image",
  27. // 服务器上传文件名称
  28. defaultFileName: "file",
  29. //设置请求头(如果使用报错跨域问题,可能是content-type请求类型和后台那边设置的不一致)
  30. header: {
  31. 'content-type': 'application/json;',
  32. // 'project_token': base.projectToken, //项目token(可删除)
  33. }
  34. });
  35. //请求开始拦截器
  36. $http.requestStart = function(options) {
  37. if (options.load) {
  38. }
  39. // 图片、视频上传大小限制
  40. if (options.method == "FILE") {
  41. // 文件最大字节: options.maxSize 可以在调用方法的时候加入参数
  42. let maxSize = options.maxSize || '';
  43. for (let item of options.files) {
  44. if (item.fileType == 'image') {
  45. if (maxSize && item.size > maxSize) {
  46. setTimeout(() => {
  47. uni.showToast({
  48. title: "图片过大,请重新上传",
  49. icon: "none"
  50. });
  51. }, 500);
  52. return false;
  53. }
  54. } else if (item.fileType == "video") {
  55. if (item.duration < 3) {
  56. setTimeout(() => {
  57. uni.showToast({
  58. title: "视频长度不足3秒,请重新上传",
  59. icon: "none"
  60. });
  61. }, 500);
  62. return false;
  63. }
  64. }
  65. }
  66. }
  67. // #ifdef APP-PLUS
  68. // 添加当前版本号
  69. if (version_code) {
  70. options.header['version_code'] = version_code;
  71. }
  72. // #endif
  73. //请求前加入token
  74. options.header.sign = getApp().globalData.headerSign
  75. // options.header["content-type"] = "application/json"
  76. return options;
  77. }
  78. //请求结束
  79. $http.requestEnd = function(options) {
  80. }
  81. let loginPopupNum = 0;
  82. let num = 0
  83. $http.dataFactory = function(res) {
  84. console.log("接口请求数据", {
  85. url: res.url,
  86. resolve: res.response,
  87. header: res.header,
  88. data: res.data,
  89. method: res.method,
  90. });
  91. if (res.response.statusCode && res.response.statusCode == 200) {
  92. let httpData = res.response.data ;
  93. if (typeof(httpData) == "string") {
  94. httpData = JSON.parse(httpData);
  95. }
  96. //判断数据是否请求成功
  97. if (httpData.success == "yes" || httpData.statusCode == "200") {
  98. // 返回正确的结果(then接受数据)
  99. // 返回Promise对象,支持链式调用和await操作
  100. return Promise.resolve( res.response);
  101. } else if (isString(httpData.resultCode)) {
  102. } else { //其他错误提示
  103. if (res.isPrompt) {
  104. uni.showToast({
  105. title: httpData.info || httpData.msg,
  106. icon: "none",
  107. duration: 3000
  108. });
  109. }
  110. // 返回错误的结果(catch接受数据)
  111. return Promise.reject({
  112. statusCode: 0,
  113. errMsg: "【request】" + (httpData.info || httpData.msg),
  114. data: res.data
  115. });
  116. }
  117. } else {
  118. // 返回错误的结果(catch接受数据)
  119. return Promise.reject({
  120. statusCode: res.response.statusCode,
  121. errMsg: "【request】数据工厂验证不通过",
  122. data: res.data
  123. });
  124. }
  125. };
  126. var content = 0
  127. // 错误回调
  128. $http.requestError = function(e) {
  129. // e.statusCode === 0 是参数效验错误抛出的
  130. if (e.statusCode === 0) {
  131. throw e;
  132. } else {
  133. if (content != 0) {
  134. uni.showToast({
  135. title: "网络错误,请检查一下网络",
  136. icon: "none"
  137. });
  138. } else {
  139. content = 1
  140. }
  141. }
  142. }
  143. export default $http;