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 @@
+
+
+
+
+
+
{{ t('app.title.exceptionTitle') }}
+
+
NO: {{ computedNoList.join(' ') }}
+
+
+
+
+
+
+
+
+
+
+
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';