fix: stats loader and smtp daily reset

This commit is contained in:
2025-12-13 22:01:12 +08:00
parent 85a60009f3
commit 6bff5e4d97
20 changed files with 76 additions and 64 deletions

View File

@@ -3,7 +3,8 @@ import { computed, onBeforeUnmount, onMounted, ref } from 'vue'
import { fetchDockerStats, fetchRunningTasks, fetchServerInfo, fetchTaskStats } from '../api/tasks'
const loading = ref(false)
const initialLoading = ref(true)
const lastUpdatedAt = ref('')
const server = ref({
cpu_percent: '-',
@@ -60,8 +61,15 @@ const serverDiskDisplay = computed(() => `${server.value.disk_used} / ${server.v
let stop = false
let timer = null
function recordUpdatedAt() {
try {
lastUpdatedAt.value = new Date().toLocaleTimeString('zh-CN', { hour12: false })
} catch {
lastUpdatedAt.value = ''
}
}
async function loadOnce() {
loading.value = true
try {
const [serverInfo, dockerInfo, taskStat, running] = await Promise.all([
fetchServerInfo(),
@@ -74,10 +82,11 @@ async function loadOnce() {
docker.value = dockerInfo || docker.value
taskStats.value = taskStat || taskStats.value
monitor.value = running || monitor.value
recordUpdatedAt()
} catch {
// handled by interceptor
} finally {
loading.value = false
initialLoading.value = false
}
}
@@ -103,10 +112,10 @@ onBeforeUnmount(() => {
</script>
<template>
<div class="page-stack" v-loading="loading">
<div class="page-stack" v-loading="initialLoading">
<div class="app-page-title">
<h2>统计</h2>
<span class="app-muted">实时更新</span>
<span class="app-muted">{{ lastUpdatedAt ? `最后更新:${lastUpdatedAt}` : '实时更新' }}</span>
</div>
<el-row :gutter="12">