From 345ed4726fbbb5a113a3fe22ff7dfb6a8ea243c7 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期三, 09 九月 2026 01:25:44 +0800
Subject: [PATCH] 统一首页香港时区统计与错误状态
---
src/views/Dashboard.vue | 17 +++++++++++++----
1 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/views/Dashboard.vue b/src/views/Dashboard.vue
index 510bc46..49f556f 100644
--- a/src/views/Dashboard.vue
+++ b/src/views/Dashboard.vue
@@ -20,6 +20,12 @@
const { records } = useTests()
const { records: todoRecords } = useTodos()
const currentOwner = computed(() => getCurrentUser()?.displayName || getCurrentUser()?.username || 'Admin')
+const dashboardError = ref('')
+const hongKongKey = (date: Date) => {
+ const parts = new Intl.DateTimeFormat('zh-CN', { timeZone: 'Asia/Hong_Kong', year: 'numeric', month: '2-digit', day: '2-digit' }).formatToParts(date)
+ const value = (type: string) => parts.find(item => item.type === type)?.value || ''
+ return `${value('year')}-${value('month')}-${value('day')}`
+}
onMounted(async () => {
try {
const [tests, groups] = await Promise.all([
@@ -30,7 +36,9 @@
// 首页的电池组总数来自后端列表,避免用页面种子推断业务事实。
batteryGroupCount.value = groups.total
} catch {
- // 页面保留当前已加载数据,错误提示由全局请求层处理。
+ dashboardError.value = '首页数据加载失败,请刷新后重试'
+ records.value = []
+ batteryGroupCount.value = 0
}
})
const batteryGroupCount = ref(0)
@@ -81,7 +89,7 @@
const periodData = computed(() => {
const now = new Date()
- const dayKey = (date: Date) => `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`
+ const dayKey = (date: Date) => hongKongKey(date)
const count = (key: string) => records.value.filter(item => item.createdAt.slice(0, key.length) === key).length
const weekLabels: string[] = []; const weekValues: number[] = []
for (let index = 6; index >= 0; index -= 1) { const date = new Date(now); date.setDate(now.getDate() - index); const key = dayKey(date); weekLabels.push(`${date.getMonth() + 1}/${date.getDate()}`); weekValues.push(count(key)) }
@@ -128,6 +136,7 @@
<template>
<div class="dashboard">
+ <el-alert v-if="dashboardError" :title="dashboardError" type="error" :closable="false" show-icon />
<section class="welcome-row">
<div>
<h2>欢迎回来,Admin</h2>
@@ -178,8 +187,8 @@
<div class="metrics">
<article><span>总测试数</span><strong>{{ records.length }}</strong></article>
<article><span>总电池组数</span><strong>{{ batteryGroupCount }}</strong></article>
- <article><span>日新增测试</span><strong>{{ records.filter(item => item.createdAt.slice(0, 10) === new Date().toISOString().slice(0, 10)).length }}</strong></article>
- <article><span>月新增测试</span><strong>{{ records.filter(item => item.createdAt.slice(0, 7) === new Date().toISOString().slice(0, 7)).length }}</strong></article>
+ <article><span>日新增测试</span><strong>{{ records.filter(item => item.createdAt.slice(0, 10) === hongKongKey(new Date())).length }}</strong></article>
+ <article><span>月新增测试</span><strong>{{ records.filter(item => item.createdAt.slice(0, 7) === hongKongKey(new Date()).slice(0, 7)).length }}</strong></article>
</div>
<section class="panel chart-panel">
--
Gitblit v1.7.1