instance.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import { axiosFactory } from "./setup";
  2. import { Dialog, Message } from "bill/index";
  3. import { showLoad, hideLoad } from "@/utils";
  4. import * as URL from "./constant";
  5. import { ResCode, ResCodeDesc } from "./constant";
  6. import { baseURL, params, appBackRoot } from "@/env";
  7. import GAxios from "axios";
  8. const instance = axiosFactory();
  9. export const {
  10. axios,
  11. addUnsetTokenURLS,
  12. delUnsetTokenURLS,
  13. addReqErrorHandler,
  14. addResErrorHandler,
  15. delReqErrorHandler,
  16. addUnsetResErrorURLS,
  17. delResErrorHandler,
  18. getToken,
  19. setToken,
  20. delToken,
  21. setDefaultURI,
  22. addHook,
  23. delHook,
  24. setHook,
  25. } = instance;
  26. const gotoLogin = () => {
  27. const loginHref = import.meta.env.DEV ? 'http://localhost:5174' : appBackRoot[params.app]
  28. location.href = loginHref + '?redirect=' + escape(location.href) + '#/login'
  29. // if (import.meta.env.DEV) {
  30. // GAxios.post("/service/manage/login", {
  31. // password: "MRinIEn3ExMjM0NTY=Q5Lm39urQWzN7k4oCG",
  32. // userName: "super-admin",
  33. // username: "super-admin",
  34. // }).then((res) => {
  35. // setToken(res.data.data.token)
  36. // setTimeout(() => location.reload())
  37. // });
  38. // } else {
  39. // const loginHref = `/admin/#/statistics/scene`
  40. // location.href = loginHref + '?redirect=' + escape(location.href)
  41. // }
  42. };
  43. addReqErrorHandler((err) => {
  44. // Message.error(err.message)
  45. console.error(err);
  46. hideLoad();
  47. gotoLogin();
  48. });
  49. addResErrorHandler((response, data) => {
  50. if (response && response.status !== 200) {
  51. Message.error(response.statusText);
  52. } else if (data) {
  53. const msg =
  54. data.code && ResCodeDesc[data.code]
  55. ? ResCodeDesc[data.code]
  56. : data?.message || data?.msg;
  57. if (data.code === ResCode.TOKEN_INVALID) {
  58. gotoLogin();
  59. } else if (data.code === ResCode.UN_AUTH) {
  60. Dialog.alert({content: msg, okText: '我知道了'}).then(() => {
  61. gotoLogin();
  62. })
  63. throw msg
  64. } else {
  65. Message.error(msg || '服务出现异常,请稍后再试');
  66. }
  67. }
  68. });
  69. addHook({
  70. before: (config) => {
  71. if (config.url !== URL.RECORD_STATUS) {
  72. showLoad();
  73. }
  74. },
  75. after: (config) => {
  76. if (!config || config.url !== URL.RECORD_STATUS) {
  77. hideLoad();
  78. }
  79. },
  80. });
  81. setDefaultURI(baseURL);
  82. const token = params.token || localStorage.getItem('token')
  83. token && setToken(token);
  84. export default axios;