refactor(ops): 优化任务心跳和组件刷新机制
后端改动: - 添加 ops_job_heartbeats.last_result 字段记录任务执行结果 - 优化告警评估器统计信息(规则数/事件数/邮件数) - 统一各定时任务的心跳记录格式 前端改动: - 重构 OpsConcurrencyCard 使用父组件统一控制刷新节奏 - 移除独立的 5 秒刷新定时器,改用 refreshToken 机制 - 修复 TypeScript 类型错误
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
<script setup lang="ts">
|
||||
import { computed, onMounted, onUnmounted, ref, watch } from 'vue'
|
||||
import { computed, ref, watch } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { useIntervalFn } from '@vueuse/core'
|
||||
import { opsAPI, type OpsAccountAvailabilityStatsResponse, type OpsConcurrencyStatsResponse } from '@/api/admin/ops'
|
||||
|
||||
interface Props {
|
||||
platformFilter?: string
|
||||
groupIdFilter?: number | null
|
||||
refreshToken: number
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
@@ -233,15 +233,13 @@ async function loadData() {
|
||||
}
|
||||
}
|
||||
|
||||
// 定期刷新(5秒)
|
||||
const { pause: pauseRefresh, resume: resumeRefresh } = useIntervalFn(
|
||||
// 刷新节奏由父组件统一控制(OpsDashboard Header 的刷新状态/倒计时)
|
||||
watch(
|
||||
() => props.refreshToken,
|
||||
() => {
|
||||
if (realtimeEnabled.value) {
|
||||
loadData()
|
||||
}
|
||||
},
|
||||
5000,
|
||||
{ immediate: false }
|
||||
if (!realtimeEnabled.value) return
|
||||
loadData()
|
||||
}
|
||||
)
|
||||
|
||||
function getLoadBarClass(loadPct: number): string {
|
||||
@@ -271,23 +269,15 @@ function formatDuration(seconds: number): string {
|
||||
return `${hours}h`
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
loadData()
|
||||
resumeRefresh()
|
||||
})
|
||||
|
||||
onUnmounted(() => {
|
||||
pauseRefresh()
|
||||
})
|
||||
|
||||
watch(realtimeEnabled, async (enabled) => {
|
||||
if (!enabled) {
|
||||
pauseRefresh()
|
||||
} else {
|
||||
resumeRefresh()
|
||||
await loadData()
|
||||
}
|
||||
})
|
||||
watch(
|
||||
() => realtimeEnabled.value,
|
||||
async (enabled) => {
|
||||
if (enabled) {
|
||||
await loadData()
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
Reference in New Issue
Block a user