diff --git a/src/App.vue b/src/App.vue index 18bcdbd50..97600d8e3 100644 --- a/src/App.vue +++ b/src/App.vue @@ -3,6 +3,7 @@ + @@ -15,6 +16,7 @@ import { useDarkModeTheme } from '@/hooks/setting/useDarkModeTheme'; import 'dayjs/locale/zh-cn'; import { computed } from 'vue'; + import { ExceptionModal } from '@/views/sys/exception'; // support Multi-language const { getAntdLocale } = useLocale(); diff --git a/src/hooks/web/useMessage.tsx b/src/hooks/web/useMessage.tsx index ed847c3a7..8194bea19 100644 --- a/src/hooks/web/useMessage.tsx +++ b/src/hooks/web/useMessage.tsx @@ -114,6 +114,7 @@ export function useMessage() { successMessage, warnMessage, errorMessage, + createError500Modal, }; } diff --git a/src/modules/smart-app/i18n/lang/en_US.ts b/src/modules/smart-app/i18n/lang/en_US.ts index 75f2ac3a2..1ae5cef1a 100644 --- a/src/modules/smart-app/i18n/lang/en_US.ts +++ b/src/modules/smart-app/i18n/lang/en_US.ts @@ -87,6 +87,8 @@ export default { '404': 'The page you visited does not exist', '403': 'You do not have permission to access this page', backHome: 'Back Home', + exceptionTitle: + 'An error occurred in the system. Please submit the error and contact the administrator', }, common: { notice: { diff --git a/src/modules/smart-app/i18n/lang/zh_CN.ts b/src/modules/smart-app/i18n/lang/zh_CN.ts index 52a205df0..749af88bf 100644 --- a/src/modules/smart-app/i18n/lang/zh_CN.ts +++ b/src/modules/smart-app/i18n/lang/zh_CN.ts @@ -87,6 +87,7 @@ export default { '404': '您访问的页面不存在', '403': '您无权限访问此页面', backHome: '返回主页', + exceptionTitle: '系统发生错误,请提交错误,并联系管理员', }, common: { notice: { diff --git a/src/utils/http/axios/index.ts b/src/utils/http/axios/index.ts index f15dc3567..344f41732 100644 --- a/src/utils/http/axios/index.ts +++ b/src/utils/http/axios/index.ts @@ -22,7 +22,7 @@ import axios from 'axios'; const globSetting = useGlobSetting(); const urlPrefix = globSetting.urlPrefix; -const { createMessage, createErrorModal, createSuccessModal } = useMessage(); +const { createMessage, createErrorModal, createSuccessModal, createError500Modal } = useMessage(); /** * @description: 数据处理,方便区分多种处理方式 @@ -70,6 +70,7 @@ const transform: AxiosTransform = { return result; } + let continueDeal = true; // 在此处根据自己项目的实际情况对不同的code执行不同的操作 // 如果不希望中断当前请求,请return数据,否则直接抛出异常即可 let timeoutMsg = ''; @@ -80,6 +81,11 @@ const transform: AxiosTransform = { // 被动登出,带redirect地址 userStore.logout(false); break; + case ResultEnum.ERROR: + // 500错误 + createError500Modal(data as Result); + continueDeal = false; + break; default: if (message) { timeoutMsg = message; @@ -88,12 +94,13 @@ const transform: AxiosTransform = { // errorMessageMode='modal'的时候会显示modal错误弹窗,而不是消息提示,用于一些比较重要的错误 // errorMessageMode='none' 一般是调用时明确表示不希望自动弹出错误提示 - if (options.errorMessageMode === 'modal') { - createErrorModal({ title: t('sys.api.errorTip'), content: timeoutMsg }); - } else if (options.errorMessageMode === 'message') { - createMessage.error(timeoutMsg); + if (continueDeal) { + if (options.errorMessageMode === 'modal') { + createErrorModal({ title: t('sys.api.errorTip'), content: timeoutMsg }); + } else if (options.errorMessageMode === 'message') { + createMessage.error(timeoutMsg); + } } - throw new Error(timeoutMsg || t('sys.api.apiRequestFailed')); }, diff --git a/src/views/sys/exception/ExceptionModal.vue b/src/views/sys/exception/ExceptionModal.vue new file mode 100644 index 000000000..cd2b23f77 --- /dev/null +++ b/src/views/sys/exception/ExceptionModal.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/src/views/sys/exception/index.ts b/src/views/sys/exception/index.ts index 5002c4acb..a432ce89e 100644 --- a/src/views/sys/exception/index.ts +++ b/src/views/sys/exception/index.ts @@ -1 +1,3 @@ export { default as Exception } from './Exception.vue'; + +export { default as ExceptionModal } from './ExceptionModal.vue';