request.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. import axios from "axios";
  2. import { ElMessage, ElNotification } from "element-plus";
  3. import router from "@/router";
  4. import { endLoading, startLoading } from "./loading";
  5. import { CyMessageBox } from "@/components/cy/message-box";
  6. import { useProgressBarStore } from "@/pinia/progress-bar-store";
  7. import XEUtils from "xe-utils";
  8. import { stringify } from "qs";
  9. const service = axios.create({
  10. baseURL: import.meta.env.VITE_BASE_URL,
  11. withCredentials: true,
  12. timeout: 0,
  13. showLoading: true,
  14. paramsSerializer: {
  15. serialize: stringify,
  16. },
  17. });
  18. /*axios请求拦截*/
  19. service.interceptors.request.use(
  20. config => {
  21. if (typeof config.jdtTitle !== "undefined") {
  22. useProgressBarStore().initialize({
  23. title: config.jdtTitle,
  24. isOpen: true,
  25. closeButton: false,
  26. });
  27. } else {
  28. if (
  29. config.url !== "/caseFrontSheet/printVerify" &&
  30. !config.url.startsWith("/mixLabelPrint")
  31. ) {
  32. if (config.showLoading) {
  33. startLoading();
  34. }
  35. }
  36. }
  37. config.headers["token"] = localStorage.token;
  38. return config;
  39. },
  40. error => {
  41. endLoading();
  42. return Promise.reject(error);
  43. }
  44. );
  45. service.interceptors.response.use(
  46. response => {
  47. endLoading();
  48. if (response.data.code === 200 || response.data.code === 0) {
  49. return response.data.data;
  50. }
  51. if (response.data.code === 2002) {
  52. return response.data;
  53. }
  54. if (response.data.code === 201) {
  55. ElMessage({
  56. type: "success",
  57. title: "成功",
  58. duration: 3500,
  59. dangerouslyUseHTMLString: true,
  60. message: response.data.message,
  61. });
  62. return response.data.data;
  63. }
  64. if (response.data.code === 202) {
  65. CyMessageBox.alert({
  66. type: "success",
  67. message: response.data.message,
  68. dangerouslyUseHTMLString: true,
  69. }).then(XEUtils.noop);
  70. return response.data.data;
  71. }
  72. if (response.data.code === 203) {
  73. ElNotification({
  74. type: "success",
  75. message: response.data.message,
  76. duration: 3000,
  77. title: "成功",
  78. });
  79. return response.data.data;
  80. }
  81. if (response.data.code > 1000 && response.data.code < 2000) {
  82. ElMessage({
  83. type: "error",
  84. message: response.data.message,
  85. duration: 3500,
  86. grouping: true,
  87. });
  88. } else if (response.data.code > 2000 && response.data.code < 3000) {
  89. if (response.data.code === 2003) {
  90. CyMessageBox.alert({
  91. type: "error",
  92. message: response.data.message,
  93. title: "提示",
  94. dangerouslyUseHTMLString: true,
  95. }).then(XEUtils.noop);
  96. } else {
  97. CyMessageBox.alert({
  98. type: "error",
  99. message: response.data.message,
  100. title: "提示",
  101. }).then(XEUtils.noop);
  102. }
  103. } else if (response.data.code > 3000 && response.data.code < 4000) {
  104. CyMessageBox.alert({
  105. type: "error",
  106. message: response.data.message,
  107. title: "提示",
  108. showIcon: false,
  109. }).then(() => {
  110. router.push("/login").then(XEUtils.noop);
  111. });
  112. } else if (response.data.code === 5001) {
  113. CyMessageBox.alert({
  114. type: "error",
  115. message: response.data.message,
  116. title: "提示",
  117. }).then(XEUtils.noop);
  118. }
  119. if (response.data.code === 6001) {
  120. ElMessage({
  121. message: response.data.message,
  122. type: "error",
  123. duration: 2500,
  124. grouping: true,
  125. });
  126. return {
  127. error: true,
  128. data: response.data.data,
  129. };
  130. } else if (response.data.code === 6002) {
  131. CyMessageBox.alert({
  132. type: "error",
  133. message: response.data.message,
  134. title: "提示",
  135. }).then(XEUtils.noop);
  136. return Promise.reject(response.data.data);
  137. }
  138. if (response.data.code > 7000 && response.data.code < 8000) {
  139. CyMessageBox.alert({
  140. type: "error",
  141. message: response.data.message,
  142. title: "提示",
  143. }).then(XEUtils.noop);
  144. return Promise.reject(response.data);
  145. }
  146. if (response.data.data) {
  147. return Promise.reject(response.data);
  148. }
  149. return Promise.reject(response.data.message || "服务器内部错误");
  150. },
  151. error => {
  152. endLoading();
  153. // 取消请求,不显示 message
  154. if (error.code && error.code === "ERR_CANCELED") {
  155. useProgressBarStore().initialize({
  156. title: "",
  157. isOpen: false,
  158. closeButton: true,
  159. });
  160. return Promise.reject(error);
  161. }
  162. ElMessage({
  163. message: error,
  164. type: "error",
  165. duration: 3500,
  166. grouping: true,
  167. });
  168. useProgressBarStore().initialize({
  169. title: "",
  170. isOpen: false,
  171. closeButton: true,
  172. });
  173. return Promise.reject(error);
  174. }
  175. );
  176. export default service;