From cda2d0da271c90e6d118527ade5209e0c39cfdd9 Mon Sep 17 00:00:00 2001 From: Pang Date: Mon, 8 Apr 2024 08:13:30 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assets/js/components/NetworkException.vue | 32 +++++++++++++++++-- resources/assets/js/store/actions.js | 8 ----- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/resources/assets/js/components/NetworkException.vue b/resources/assets/js/components/NetworkException.vue index b6e994687..d872d4942 100644 --- a/resources/assets/js/components/NetworkException.vue +++ b/resources/assets/js/components/NetworkException.vue @@ -48,17 +48,43 @@ export default { }, computed: { - ...mapState([ 'ajaxNetworkException' ]), + ...mapState(['ajaxNetworkException']), }, watch: { ajaxNetworkException: { handler(v) { this.show = v; + if (v) { + this.checkNetwork(); + } }, immediate: true } - } + }, -}; + methods: { + isNotServer() { + let apiHome = $A.getDomain(window.systemInfo.apiUrl) + return this.$isSoftware && (apiHome == "" || apiHome == "public") + }, + + checkNetwork() { + this.__timer && clearTimeout(this.__timer); + this.__timer = setTimeout(() => { + if (!this.ajaxNetworkException) { + return; // 已经恢复 + } + if (this.isNotServer()) { + return; // 没有配置服务器地址 + } + this.$store.dispatch("call", { + url: "system/setting", + }).finally(() => { + this.checkNetwork(); + }); + }, 3000); + } + } +} diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index 7fa7fedfc..55d9265cc 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -216,14 +216,6 @@ export default { } params.error = (xhr, status) => { const networkException = window.navigator.onLine === false || (status === 0 && xhr.readyState === 4) - if (networkException && cloneParams.__networkFailureRetry !== true) { - // 网络异常,重试一次 - setTimeout(_ => { - cloneParams.__networkFailureRetry = true - dispatch("call", cloneParams).then(resolve).catch(reject) - }, 1000) - return - } if (params.checkNetwork !== false) { state.ajaxNetworkException = networkException }