From cf188bb94ab53fdd2fdf8f0eb01db9688a10ef5d Mon Sep 17 00:00:00 2001 From: 2256907009 <2256907009@qq.com> Date: Wed, 15 Apr 2026 16:18:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=95=B0=E6=8D=AE=E8=BF=81=E7=A7=BB?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/virtualization/VmDetail.vue | 15 ++++++- src/views/virtualization/VmManage.vue | 62 ++++++++++++++++++++++++--- 2 files changed, 70 insertions(+), 7 deletions(-) diff --git a/src/views/virtualization/VmDetail.vue b/src/views/virtualization/VmDetail.vue index 256bdd1..60d3aa9 100644 --- a/src/views/virtualization/VmDetail.vue +++ b/src/views/virtualization/VmDetail.vue @@ -1611,7 +1611,9 @@ const handleDetailMigrateState = () => { loadDataMigrateProgress() startMigratePolling() } + startDetailAutoRefresh() } else if (!vm.migrating) { + stopDetailAutoRefresh() if (migratePollingTimer) { stopMigratePolling() dataMigrateProgressData.value = null @@ -2287,12 +2289,21 @@ const migrateProgressBarStatus = (stage) => { let migratePollingTimer = null const startMigratePolling = () => { stopMigratePolling() - migratePollingTimer = setInterval(loadDataMigrateProgress, 5000) + migratePollingTimer = setInterval(loadDataMigrateProgress, 3000) } const stopMigratePolling = () => { if (migratePollingTimer) { clearInterval(migratePollingTimer); migratePollingTimer = null } } +let detailAutoRefreshTimer = null +const startDetailAutoRefresh = () => { + if (detailAutoRefreshTimer) return + detailAutoRefreshTimer = setInterval(() => { loadDetail() }, 3000) +} +const stopDetailAutoRefresh = () => { + if (detailAutoRefreshTimer) { clearInterval(detailAutoRefreshTimer); detailAutoRefreshTimer = null } +} + const abortLoading = ref(false) const handleAbortMigrate = () => { ElMessageBox.confirm('确定要中断当前数据迁移吗?此操作不可恢复!', '中断迁移', { @@ -3361,7 +3372,7 @@ onActivated(() => { if (loadedVmId !== vmId.value) initPage() }) onDeactivated(() => { isPageActive = false; stopMigratePolling() }) -onBeforeUnmount(() => { isPageActive = false; disposeCharts(); stopMigratePolling() }) +onBeforeUnmount(() => { isPageActive = false; disposeCharts(); stopMigratePolling(); stopDetailAutoRefresh() }) onMounted(() => { isPageActive = true; initPage() }) diff --git a/src/views/virtualization/VmManage.vue b/src/views/virtualization/VmManage.vue index 03026ab..d9a5ad6 100644 --- a/src/views/virtualization/VmManage.vue +++ b/src/views/virtualization/VmManage.vue @@ -49,10 +49,21 @@ - - + - {{ vmStatusLabel(row.status) }} - 迁移中 + + + 迁移中 + + {{ migrateProgressMap[row.id] }}% + + + {{ vmStatusLabel(row.status) }}