diff --git a/backend/app/api/endpoints/logs.py b/backend/app/api/endpoints/logs.py index a8909b5..66ce223 100755 --- a/backend/app/api/endpoints/logs.py +++ b/backend/app/api/endpoints/logs.py @@ -37,7 +37,7 @@ async def get_login_logs( items = [{ "id": l.id, "user_id": l.user_id, "user_account": l.user_account, "action": l.action, "session_id": l.session_id, - "error_msg": l.error_msg, "created_at": l.created_at.isoformat() + "error_msg": l.error_msg, "created_at": l.created_at.strftime("%Y-%m-%dT%H:%M:%S+08:00") if l.created_at else None } for l in logs] return ApiResponse(data={"total": total, "page": page, "page_size": page_size, "items": items}) diff --git a/frontend/src/views/Dashboard.vue b/frontend/src/views/Dashboard.vue index cf4504b..37a0908 100644 --- a/frontend/src/views/Dashboard.vue +++ b/frontend/src/views/Dashboard.vue @@ -216,10 +216,13 @@ onMounted(async () => { await loadMonthlyTrend() window.addEventListener('resize', handleResize) window.addEventListener('page-refresh', loadDashboard) + // 每30秒自动刷新数据看板 + _dashTimer = setInterval(loadDashboard, 30000) }) onUnmounted(() => { window.removeEventListener('resize', handleResize) window.removeEventListener('page-refresh', loadDashboard) + if (_dashTimer) clearInterval(_dashTimer) dailyChartInst?.dispose() monthlyChartInst?.dispose() }) diff --git a/frontend/src/views/Interactions.vue b/frontend/src/views/Interactions.vue index 053202e..59a9081 100644 --- a/frontend/src/views/Interactions.vue +++ b/frontend/src/views/Interactions.vue @@ -194,12 +194,19 @@ async function handleExport() { const a = document.createElement('a'); a.href = url; a.download = 'interactions.xlsx'; a.click() } +let _autoRefreshTimer = null + onMounted(async () => { await loadArticleDomain() // 先等域名加载完 load() window.addEventListener('page-refresh', load) + // 每30秒自动刷新互动记录 + _autoRefreshTimer = setInterval(load, 30000) +}) +onUnmounted(() => { + window.removeEventListener('page-refresh', load) + if (_autoRefreshTimer) clearInterval(_autoRefreshTimer) }) -onUnmounted(() => window.removeEventListener('page-refresh', load))