request.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. import { useStores } from "@/store/modules/index";
  2. import configs from "@/config";
  3. import { getToken } from "@/utils/auth";
  4. import modal from "@/plugins/modal.plugins";
  5. import common from "@/plugins/common.plugins";
  6. let timeout = 10000;
  7. /**
  8. * @校验结果方法
  9. * @param {数据集} res
  10. * @param {结果抛出} resolve
  11. * @param {控制台打印} reject
  12. */
  13. function verification(res, resolve, reject) {
  14. const useStore = useStores();
  15. const data = typeof res.data === "string" ? JSON.parse(res.data) : res.data;
  16. const code = data.code || 200;
  17. if (code === 401) {
  18. // modal.confirm("登录状态已过期,您可以继续留在该页面,或者重新登录?").then((res) => {
  19. // if (res) {
  20. // useStore.LogOut().then((res) => {
  21. // uni.reLaunch({ url: "/pages/login" });
  22. // });
  23. // }
  24. // });
  25. uni.reLaunch({ url: "/pages/login" });
  26. modal.closeLoading();
  27. reject("无效的会话,或者会话已过期,请重新登录。");
  28. } else if (code === 404 || res.statusCode === 404) {
  29. if (data.msg.indexOf(":") !== -1) {
  30. modal.msg(data.msg.split(":")[1]);
  31. reject(data.msg.split(":")[1]);
  32. } else {
  33. modal.msg(data.msg);
  34. reject(data.msg);
  35. }
  36. modal.closeLoading();
  37. } else if (code === 500 || res.statusCode === 500 || code === 'BIZ-0000') {
  38. if (data.msg.indexOf(":") !== -1) {
  39. modal.msg(data.msg.split(":")[1]);
  40. reject(data.msg.split(":")[1]);
  41. } else {
  42. modal.msg(data.msg);
  43. reject(data.msg);
  44. }
  45. modal.closeLoading();
  46. } else if (code !== 200 && code !== "0") {
  47. reject(code);
  48. }
  49. resolve(data);
  50. }
  51. const request = (config) => {
  52. // 是否需要设置 token
  53. const isToken = (config.headers || {}).isToken === false;
  54. config.header = config.header || {};
  55. if (getToken() && !isToken) {
  56. config.header["Authorization"] = getToken();
  57. }
  58. // get请求映射params参数
  59. if (config.params) {
  60. let url = config.url + "?" + common.tansParams(config.params);
  61. url = url.slice(0, -1);
  62. config.url = url;
  63. }
  64. return new Promise((resolve, reject) => {
  65. uni
  66. .request({
  67. method: config.method || "get",
  68. timeout: config.timeout || timeout,
  69. url: config.baseUrl || configs.baseUrl + config.url,
  70. data: config.data,
  71. header: config.header,
  72. dataType: "json",
  73. })
  74. .then((res) => {
  75. if (res.error) {
  76. modal.msg("后端接口连接异常");
  77. reject("后端接口连接异常");
  78. return;
  79. }
  80. verification(res, resolve, reject);//调用校验结果方法
  81. })
  82. .catch((error) => {
  83. let { message } = error;
  84. if (!message) return;
  85. if (message === "Network Error") {
  86. message = "后端接口连接异常";
  87. } else if (message.includes("timeout")) {
  88. message = "系统接口请求超时";
  89. } else if (message.includes("Request failed with status code")) {
  90. message = "系统接口" + message.substr(message.length - 3) + "异常";
  91. }
  92. reject(error);
  93. });
  94. });
  95. };
  96. const uploads = (config) => {
  97. const useStore = useStores();
  98. // 是否需要设置 token
  99. const isToken = (config.headers || {}).isToken === false;
  100. config.header = config.header || {};
  101. if (getToken() && !isToken) {
  102. config.header["Authorization"] = getToken();
  103. }
  104. // get请求映射params参数
  105. if (config.params) {
  106. let url = config.url + "?" + common.tansParams(config.params);
  107. url = url.slice(0, -1);
  108. config.url = url;
  109. }
  110. return new Promise((resolve, reject) => {
  111. uni.uploadFile({
  112. timeout: config.timeout || timeout,
  113. url: configs.baseUrl + config.url,
  114. filePath: config.filePath,
  115. name: config.name || "file",
  116. header: config.header,
  117. formData: config.formData,
  118. success: (res) => {
  119. verification(res, resolve, reject);//调用校验结果方法
  120. },
  121. fail: (error) => {
  122. let { message } = error;
  123. if (message == "Network Error") {
  124. message = "后端接口连接异常";
  125. } else if (message.includes("timeout")) {
  126. message = "系统接口请求超时";
  127. } else if (message.includes("Request failed with status code")) {
  128. message = "系统接口" + message.substr(message.length - 3) + "异常";
  129. }
  130. reject(error);
  131. },
  132. });
  133. });
  134. };
  135. export {
  136. request,
  137. uploads
  138. };