request.js 5.5 KB

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