From ad9a0011a5172eb5fbfbce6c1f2bc7362aa256a7 Mon Sep 17 00:00:00 2001 From: yangsy Date: Tue, 9 Jun 2026 13:17:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(vimp):=20=E6=96=B0=E5=A2=9E=E6=91=84?= =?UTF-8?q?=E5=83=8F=E5=A4=B4=E5=92=8C=E5=91=8A=E8=AD=A6=E9=80=9A=E9=81=93?= =?UTF-8?q?=E7=9A=84=E5=85=A8=E5=B1=80=E7=B4=A2=E5=BC=95=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=8F=8A=E6=9E=84=E5=BB=BA=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在摄像头、告警的Pinia存储中新增对应的数据记录与构建函数,并在渠道查询组合式函数中调用生成全局索引映射数据 --- .../vimp/composables/query/use-channels-query.ts | 2 ++ src/pages/vimp/stores/alarm.ts | 14 ++++++++++++++ src/pages/vimp/stores/camera.ts | 16 +++++++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/pages/vimp/composables/query/use-channels-query.ts b/src/pages/vimp/composables/query/use-channels-query.ts index 052b372..1a4703b 100644 --- a/src/pages/vimp/composables/query/use-channels-query.ts +++ b/src/pages/vimp/composables/query/use-channels-query.ts @@ -134,6 +134,7 @@ export const useChannelsQuery = () => { codeSites, compiledCodeAreas, }); + cameraStore.buildCameraRecord(siteCodeToCamerasMap); alarmStore.buildLineTabPanes({ sites: alarmSites, @@ -142,6 +143,7 @@ export const useChannelsQuery = () => { codeSites, compiledCodeAreas, }); + alarmStore.buildAlarmRecord(siteCodeToAlarmsMap); return null; }, diff --git a/src/pages/vimp/stores/alarm.ts b/src/pages/vimp/stores/alarm.ts index a98bf8f..0807d58 100644 --- a/src/pages/vimp/stores/alarm.ts +++ b/src/pages/vimp/stores/alarm.ts @@ -16,6 +16,7 @@ const buildSubAreaNodeKey = (siteCode: string, areaCode: string) => `${siteCode} export const useAlarmStore = defineStore('vimp-alarm-store', () => { const lineTabPanes = shallowRef([]); + const alarmRecord = shallowRef>({}); const buildLineTabPanes = (params: BuildLineTabPanesParams) => { const { sites, siteCodeToAlarmsMap, codeLines, codeSites, compiledCodeAreas } = params; @@ -154,8 +155,21 @@ export const useAlarmStore = defineStore('vimp-alarm-store', () => { lineTabPanes.value = result; }; + const buildAlarmRecord = (siteCodeToAlarmsMap: Map) => { + const record: Record = {}; + for (const [, alarms] of siteCodeToAlarmsMap) { + for (const alarm of alarms) { + record[alarm.code] = alarm; + } + } + alarmRecord.value = record; + }; + return { lineTabPanes, + alarmRecord, + buildLineTabPanes, + buildAlarmRecord, }; }); diff --git a/src/pages/vimp/stores/camera.ts b/src/pages/vimp/stores/camera.ts index 8924b63..2e00b1d 100644 --- a/src/pages/vimp/stores/camera.ts +++ b/src/pages/vimp/stores/camera.ts @@ -1,6 +1,6 @@ import { defineStore } from 'pinia'; import type { VimpChannel, VimpSite } from '../apis'; -import { shallowRef } from 'vue'; +import { ref, shallowRef } from 'vue'; import type { CameraMainAreaNodeOption, CameraNodeOption, CodeLines, CodeSites, CameraLineTabPane, CameraSiteNodeOption, CameraSubAreaNodeOption, CompiledCodeAreas } from '../types'; interface BuildLineTabPanesParams { @@ -16,6 +16,7 @@ const buildSubAreaNodeKey = (siteCode: string, areaCode: string) => `${siteCode} export const useCameraStore = defineStore('vimp-camera-store', () => { const lineTabPanes = shallowRef([]); + const cameraRecord = shallowRef>({}); const buildLineTabPanes = (params: BuildLineTabPanesParams) => { const { sites, siteCodeToCamerasMap, codeLines, codeSites, compiledCodeAreas } = params; @@ -153,8 +154,21 @@ export const useCameraStore = defineStore('vimp-camera-store', () => { lineTabPanes.value = result; }; + const buildCameraRecord = (siteCodeToCamerasMap: Map) => { + const record: Record = {}; + for (const [, cameras] of siteCodeToCamerasMap) { + for (const camera of cameras) { + record[camera.code] = camera; + } + } + cameraRecord.value = record; + }; + return { lineTabPanes, + cameraRecord, + buildLineTabPanes, + buildCameraRecord, }; });