instance.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { axiosFactory } from './setup'
  2. import { message } from 'ant-design-vue'
  3. import { showLoading, hideLoading } from '@/components/loading'
  4. import { ResCode, ResCodeDesc } from './constant'
  5. import { baseURL, token } from '@/env'
  6. const instance = axiosFactory()
  7. export const {
  8. axios,
  9. addUnsetTokenURLS,
  10. delUnsetTokenURLS,
  11. addReqErrorHandler,
  12. addResErrorHandler,
  13. delReqErrorHandler,
  14. delResErrorHandler,
  15. getToken,
  16. setToken,
  17. delToken,
  18. setDefaultURI,
  19. addHook,
  20. delHook,
  21. setHook
  22. } = instance
  23. export const gotoLogin = () => {
  24. const loginHref = import.meta.env.DEV
  25. ? 'https://test.4dkankan.com'
  26. : 'https://www.4dkankan.com'
  27. location.replace(
  28. 'https://test.4dkankan.com' +
  29. '?redirect=' +
  30. escape(location.href) +
  31. '#/login/login'
  32. )
  33. }
  34. const tokenInvalid = () => {
  35. message.error(ResCodeDesc[ResCode.TOKEN_INVALID])
  36. setTimeout(gotoLogin, 1000)
  37. }
  38. addReqErrorHandler(err => {
  39. showLoading()
  40. tokenInvalid()
  41. })
  42. addResErrorHandler((response, data) => {
  43. if (response && response.status !== 200) {
  44. } else if (data) {
  45. const msg =
  46. data.code && ResCodeDesc[data.code]
  47. ? ResCodeDesc[data.code]
  48. : data?.message || data?.msg
  49. if (data.code === ResCode.TOKEN_INVALID) {
  50. tokenInvalid()
  51. } else {
  52. message.error(msg)
  53. }
  54. }
  55. })
  56. addHook({
  57. before: () => showLoading(),
  58. after: config => config && hideLoading()
  59. })
  60. console.log(baseURL)
  61. setDefaultURI(baseURL)
  62. if (!token) {
  63. tokenInvalid()
  64. } else {
  65. setToken(token)
  66. }
  67. export default axios