diff --git a/src/components/home/overview.vue b/src/components/home/overview.vue index 40fd839..d3dc3b7 100644 --- a/src/components/home/overview.vue +++ b/src/components/home/overview.vue @@ -4,21 +4,27 @@ import { useCurrentProject } from '@/composables/useCurrentProject' import { useDbStore } from '@/store/modules/db' const db = useDbStore() -const { hasCurrentProject } = useCurrentProject() +const { hasCurrentProject, currentProjectId } = useCurrentProject() const now = new Date() const dateStr = `${now.getFullYear()}年${now.getMonth() + 1}月${now.getDate()}日` +const projectWorkRecords = computed(() => { + if (!hasCurrentProject.value || currentProjectId.value == null) + return [] + return (db.work_record || []).filter(item => item.project_id === currentProjectId.value) +}) + const totalCompactionArea = computed(() => { if (!hasCurrentProject.value) return null - return (db.work_record || []).reduce((sum, item) => sum + (item.compaction_area ?? 0), 0) + return projectWorkRecords.value.reduce((sum, item) => sum + (item.compaction_area ?? 0), 0) }) const totalDuration = computed(() => { if (!hasCurrentProject.value) return null - return (db.work_record || []).reduce((sum, item) => sum + (item.duration ?? 0), 0) + return projectWorkRecords.value.reduce((sum, item) => sum + (item.duration ?? 0), 0) }) const onlineCount = computed(() => { @@ -40,8 +46,9 @@ function formatCount(value: number | null) { } onMounted(async () => { - if (!db.work_record?.length) - await db.loadAll() + if (!hasCurrentProject.value || currentProjectId.value == null) + return + await db.loadByProject(currentProjectId.value) }) diff --git a/src/components/home/progress.vue b/src/components/home/progress.vue index 2e64830..4b4dcc9 100644 --- a/src/components/home/progress.vue +++ b/src/components/home/progress.vue @@ -5,18 +5,14 @@ import { calcUncompactedArea } from '@/service/project' import { useDbStore } from '@/store/modules/db' const db = useDbStore() -const { currentProject: storedProject, hasCurrentProject } = useCurrentProject() +const { hasCurrentProject, currentProjectId } = useCurrentProject() const currentProject = computed(() => { - if (!hasCurrentProject.value) + if (!hasCurrentProject.value || currentProjectId.value == null) return null const list = db.project || [] - const storedId = storedProject.value?.id - if (storedId == null) - return null - - return list.find(item => item.id === storedId) || null + return list.find(item => item.id === currentProjectId.value) || null }) const progressPercent = computed(() => { @@ -84,8 +80,9 @@ function formatPercent(value: number | null) { } onMounted(async () => { - if (!db.project?.length) - await db.loadAll() + if (!hasCurrentProject.value || currentProjectId.value == null) + return + await db.loadByProject(currentProjectId.value) }) diff --git a/src/components/home/projectList.vue b/src/components/home/projectList.vue index 0e5a741..1e7b703 100644 --- a/src/components/home/projectList.vue +++ b/src/components/home/projectList.vue @@ -1,18 +1,12 @@