From 48243199b954aab061d69f57906010f630612c80 Mon Sep 17 00:00:00 2001 From: smail Date: Sun, 30 Aug 2026 21:25:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E8=BD=AE=E8=AF=A2=E7=94=9F=E5=91=BD=E5=91=A8=E6=9C=9F=E6=B8=85?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fe/src/views/Setup/Setup.js | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/fe/src/views/Setup/Setup.js b/fe/src/views/Setup/Setup.js index 67a3e14..398e27e 100644 --- a/fe/src/views/Setup/Setup.js +++ b/fe/src/views/Setup/Setup.js @@ -1,6 +1,6 @@ import './Setup.js' -import {computed, reactive, ref} from 'vue' +import {computed, onUnmounted, reactive, ref} from 'vue' import {ElMessage} from 'element-plus' @@ -379,6 +379,8 @@ export function usePage() { const buildFinalURL = (sslData) => buildSetupFinalURL(sslData, domainSettings.web_domain) let statusTimer = null + let dnsParamsTimer = null + let setupViewUnmounted = false let statusCheckRunning = false let statusCheckStartedAt = 0 const statusCheckTimeout = 10 * 60 * 1000 @@ -392,6 +394,19 @@ export function usePage() { statusCheckStartedAt = 0 } + const stopDNSParamsPolling = () => { + if (dnsParamsTimer !== null) { + window.clearTimeout(dnsParamsTimer) + dnsParamsTimer = null + } + } + + onUnmounted(() => { + setupViewUnmounted = true + stopStatusCheck() + stopDNSParamsPolling() + }) + const navigateToFormalService = (sslData) => { stopStatusCheck() fullscreenLoading.value = false @@ -473,11 +488,18 @@ export function usePage() { return setupRequest({"action": "getParams", "step": "ssl"}).then((res) => { assertSetupSuccess(res) sslSettings.paramsList = Array.isArray(res.data) ? res.data : [] - if (dnsChecking.value && sslSettings.paramsList.length === 0) { - setTimeout(getSSLDNSParams, 1000) + if (!setupViewUnmounted && dnsChecking.value && sslSettings.paramsList.length === 0) { + stopDNSParamsPolling() + dnsParamsTimer = window.setTimeout(() => { + dnsParamsTimer = null + getSSLDNSParams() + }, 1000) + } else if (sslSettings.paramsList.length > 0 || !dnsChecking.value) { + stopDNSParamsPolling() } return res }).catch((error) => { + stopDNSParamsPolling() showSetupError(error) return null })