From f4adcd3dffed0f3cea08ea464093e9e283f81b80 Mon Sep 17 00:00:00 2001 From: gaoyunqi Date: Wed, 27 Mar 2024 16:42:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A1=A8=E5=8D=95=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=99=A8magic-api=E8=B0=83=E7=94=A8=E4=B8=8D=E4=BC=9A=E5=BC=B9?= =?UTF-8?q?=E6=A1=86=EF=BC=8C=E8=80=8C=E6=98=AF=E4=BB=A5=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E9=97=AA=E7=83=81=E7=9A=84=E5=BD=A2=E5=BC=8F=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/magicApi/index.ts | 1 + src/components/SecondDev/AjaxErrorIcon.vue | 37 +++++++++++++++++++ src/hooks/core/useGlobalFlag.ts | 20 ++++++++++ src/utils/http/axios/index.ts | 15 ++++++-- .../components/components/DataFirstModal.vue | 16 +++++++- .../dev/components/CodeFirstModal.vue | 15 +++++++- .../dev/components/DataFirstModal.vue | 15 +++++++- types/axios.d.ts | 2 + 8 files changed, 114 insertions(+), 7 deletions(-) create mode 100644 src/components/SecondDev/AjaxErrorIcon.vue create mode 100644 src/hooks/core/useGlobalFlag.ts diff --git a/src/api/magicApi/index.ts b/src/api/magicApi/index.ts index 1e4139e..dde64ba 100644 --- a/src/api/magicApi/index.ts +++ b/src/api/magicApi/index.ts @@ -22,6 +22,7 @@ export const requestMagicApi = ( }, { errorMessageMode: mode, + ignoreErrorInEditor: true }, ); }; diff --git a/src/components/SecondDev/AjaxErrorIcon.vue b/src/components/SecondDev/AjaxErrorIcon.vue new file mode 100644 index 0000000..c771517 --- /dev/null +++ b/src/components/SecondDev/AjaxErrorIcon.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/src/hooks/core/useGlobalFlag.ts b/src/hooks/core/useGlobalFlag.ts new file mode 100644 index 0000000..3df4b63 --- /dev/null +++ b/src/hooks/core/useGlobalFlag.ts @@ -0,0 +1,20 @@ +import { ref } from 'vue'; + +const isEditorOpen = ref(false); +const hasAjaxError = ref(false); + +function ajaxError() { + hasAjaxError.value = true; + setTimeout(() => { + hasAjaxError.value = false; + }, 10000); +} + +export default function() { + return { + isEditorOpen, + hasAjaxError, + ajaxError + } +} + diff --git a/src/utils/http/axios/index.ts b/src/utils/http/axios/index.ts index 62a7ad6..e03717b 100644 --- a/src/utils/http/axios/index.ts +++ b/src/utils/http/axios/index.ts @@ -22,10 +22,12 @@ import { useGo } from '/@/hooks/web/usePage'; import { validateScript } from '/@/utils/event/design'; import { notification } from 'ant-design-vue'; import { throttle } from 'lodash-es'; +import useGlobalFlag from '/@/hooks/core/useGlobalFlag'; const globSetting = useGlobSetting(); const urlPrefix = globSetting.urlPrefix; const { createMessage, createErrorModal } = useMessage(); +const { isEditorOpen, ajaxError } = useGlobalFlag(); const showNetworkError = function() { notification.error({ @@ -92,10 +94,14 @@ const transform: AxiosTransform = { // errorMessageMode=‘modal’的时候会显示modal错误弹窗,而不是消息提示,用于一些比较重要的错误 // errorMessageMode='none' 一般是调用时明确表示不希望自动弹出错误提示 - if (options.errorMessageMode === 'modal') { - createErrorModal({ title: t('错误提示'), content: timeoutMsg }); - } else if (options.errorMessageMode === 'message') { - createMessage.error(timeoutMsg); + if (options.ignoreErrorInEditor && isEditorOpen.value) { + ajaxError(); + } else { + if (options.errorMessageMode === 'modal') { + createErrorModal({ title: t('错误提示'), content: timeoutMsg }); + } else if (options.errorMessageMode === 'message') { + createMessage.error(timeoutMsg); + } } throw new Error(timeoutMsg || t('请求出错,请稍候重试')); @@ -187,6 +193,7 @@ const transform: AxiosTransform = { let errMessage = ''; try { + if (code === 'ECONNABORTED' && message.indexOf('timeout') !== -1) { trNetworkError(); } else if (err?.includes('Network Error')) { diff --git a/src/views/form/design/components/components/DataFirstModal.vue b/src/views/form/design/components/components/DataFirstModal.vue index 5137e39..8482ee6 100644 --- a/src/views/form/design/components/components/DataFirstModal.vue +++ b/src/views/form/design/components/components/DataFirstModal.vue @@ -13,6 +13,7 @@
+ {{ t('上一步') }} @@ -34,12 +35,13 @@