From 0399e8ede4209f0bc9223cbdcf566a22e83ee1d9 Mon Sep 17 00:00:00 2001 From: Ironsp <1522278303@qq.com> Date: Thu, 17 Sep 2026 10:41:07 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E8=81=94=E8=B0=83=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/home/overview.vue | 17 +++++++--- src/components/home/progress.vue | 15 ++++----- src/components/home/projectList.vue | 15 ++------- src/components/home/status.vue | 4 +-- src/components/home/warning.vue | 12 +++---- src/components/settings/projectForm.vue | 44 +++++++++++++++---------- src/composables/useCurrentProject.ts | 25 ++++++++++++-- src/pages/project/index.vue | 2 ++ src/service/project.ts | 13 ++++++-- src/service/rtkTrack.ts | 9 +++++ src/service/workRecord.ts | 2 +- src/store/modules/db.ts | 29 +++++++++++++--- 12 files changed, 127 insertions(+), 60 deletions(-) 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 @@