instance.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { axiosFactory } from './setup'
  2. import { message } from 'ant-design-vue'
  3. import { showLoading, hideLoading } from '@/components/loading'
  4. import { ResCode, ResCodeDesc, POST_LOGIN } from './constant'
  5. import { baseURL } from '@/env'
  6. import { router, RoutesName } from '@/router'
  7. const instance = axiosFactory()
  8. export const {
  9. axios,
  10. addUnsetTokenURLS,
  11. delUnsetTokenURLS,
  12. addReqErrorHandler,
  13. addResErrorHandler,
  14. delReqErrorHandler,
  15. delResErrorHandler,
  16. getToken,
  17. setToken,
  18. delToken,
  19. setDefaultURI,
  20. addHook,
  21. delHook,
  22. setHook
  23. } = instance
  24. export const gotoLogin = () => {
  25. router.push({ name: RoutesName.login })
  26. }
  27. addReqErrorHandler(err => {
  28. // showLoading()
  29. gotoLogin()
  30. })
  31. addResErrorHandler((response, data) => {
  32. if (response && response.status && response.status !== 200) {
  33. message.error('服务错误,请稍后再试')
  34. } else if (data) {
  35. const msg =
  36. data.code && ResCodeDesc[data.code]
  37. ? ResCodeDesc[data.code]
  38. : data?.message || data?.msg
  39. if (data.code === ResCode.TOKEN_INVALID) {
  40. gotoLogin()
  41. } else if (data.code === ResCode.NO_ACCESS) {
  42. router.replace({ name: RoutesName.projects })
  43. } else {
  44. message.error(msg)
  45. }
  46. }
  47. })
  48. addHook({
  49. before: () => {
  50. showLoading()
  51. },
  52. after: () => {
  53. hideLoading()
  54. }
  55. })
  56. setDefaultURI(baseURL)
  57. addUnsetTokenURLS(POST_LOGIN)
  58. // if (!token) {
  59. // tokenInvalid()
  60. // } else {
  61. // setToken(token)
  62. // }
  63. export default axios