checkStatus.ts 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import type { ErrorMessageMode } from '/#/axios';
  2. import { useMessage } from '/@/hooks/web/useMessage';
  3. import { useI18n } from '/@/hooks/web/useI18n';
  4. // import router from '/@/router';
  5. // import { PageEnum } from '/@/enums/pageEnum';
  6. import { useUserStoreWithOut } from '/@/store/modules/user';
  7. import projectSetting from '/@/settings/projectSetting';
  8. import { SessionTimeoutProcessingEnum } from '/@/enums/appEnum';
  9. import { AUTO_LOGIN_USERNAME } from '/@/store/constant';
  10. const { createMessage, createErrorModal } = useMessage();
  11. const error = createMessage.error!;
  12. const stp = projectSetting.sessionTimeoutProcessing;
  13. export function checkStatus(status: number, msg: string, errorMessageMode: ErrorMessageMode = 'message'): void {
  14. const { t } = useI18n();
  15. const userStore = useUserStoreWithOut();
  16. let errMessage = '';
  17. switch (status) {
  18. case 400:
  19. errMessage = `${msg}`;
  20. break;
  21. // 401: Not logged in
  22. // Jump to the login page if not logged in, and carry the path of the current page
  23. // Return to the current page after successful login. This step needs to be operated on the login page.
  24. case 401:
  25. userStore.setToken(undefined);
  26. errMessage = msg || t('sys.api.errMsg401');
  27. if (stp === SessionTimeoutProcessingEnum.PAGE_COVERAGE) {
  28. userStore.setSessionTimeout(true);
  29. } else {
  30. // 经由自动登录的账号需要在登录信息过期之后重新登录
  31. const continuallyLogin = userStore.getIsAutoLogin;
  32. if (continuallyLogin) {
  33. userStore.continuallyLogin();
  34. } else {
  35. userStore.logout(true);
  36. }
  37. }
  38. break;
  39. case 403:
  40. errMessage = t('sys.api.errMsg403');
  41. break;
  42. // 404请求不存在
  43. case 404:
  44. errMessage = t('sys.api.errMsg404');
  45. break;
  46. case 405:
  47. errMessage = t('sys.api.errMsg405');
  48. break;
  49. case 408:
  50. errMessage = t('sys.api.errMsg408');
  51. break;
  52. case 500:
  53. errMessage = t('sys.api.errMsg500');
  54. break;
  55. case 501:
  56. errMessage = t('sys.api.errMsg501');
  57. break;
  58. case 502:
  59. errMessage = t('sys.api.errMsg502');
  60. break;
  61. case 503:
  62. errMessage = t('sys.api.errMsg503');
  63. break;
  64. case 504:
  65. errMessage = t('sys.api.errMsg504');
  66. break;
  67. case 505:
  68. errMessage = t('sys.api.errMsg505');
  69. break;
  70. default:
  71. }
  72. if (errMessage) {
  73. if (errorMessageMode === 'modal') {
  74. createErrorModal({ title: t('sys.api.errorTip'), content: errMessage });
  75. } else if (errorMessageMode === 'message') {
  76. error({ content: errMessage, key: `global_error_message_status_${status}` });
  77. }
  78. }
  79. }