feat(vimp): 新增摄像头和告警通道的全局索引记录及构建方法

在摄像头、告警的Pinia存储中新增对应的数据记录与构建函数,并在渠道查询组合式函数中调用生成全局索引映射数据
This commit is contained in:
yangsy
2026-06-09 13:17:59 +08:00
parent 8403a41cef
commit ad9a0011a5
3 changed files with 31 additions and 1 deletions
@@ -134,6 +134,7 @@ export const useChannelsQuery = () => {
codeSites, codeSites,
compiledCodeAreas, compiledCodeAreas,
}); });
cameraStore.buildCameraRecord(siteCodeToCamerasMap);
alarmStore.buildLineTabPanes({ alarmStore.buildLineTabPanes({
sites: alarmSites, sites: alarmSites,
@@ -142,6 +143,7 @@ export const useChannelsQuery = () => {
codeSites, codeSites,
compiledCodeAreas, compiledCodeAreas,
}); });
alarmStore.buildAlarmRecord(siteCodeToAlarmsMap);
return null; return null;
}, },
+14
View File
@@ -16,6 +16,7 @@ const buildSubAreaNodeKey = (siteCode: string, areaCode: string) => `${siteCode}
export const useAlarmStore = defineStore('vimp-alarm-store', () => { export const useAlarmStore = defineStore('vimp-alarm-store', () => {
const lineTabPanes = shallowRef<AlarmLineTabPane[]>([]); const lineTabPanes = shallowRef<AlarmLineTabPane[]>([]);
const alarmRecord = shallowRef<Record<string, VimpChannel>>({});
const buildLineTabPanes = (params: BuildLineTabPanesParams) => { const buildLineTabPanes = (params: BuildLineTabPanesParams) => {
const { sites, siteCodeToAlarmsMap, codeLines, codeSites, compiledCodeAreas } = params; const { sites, siteCodeToAlarmsMap, codeLines, codeSites, compiledCodeAreas } = params;
@@ -154,8 +155,21 @@ export const useAlarmStore = defineStore('vimp-alarm-store', () => {
lineTabPanes.value = result; lineTabPanes.value = result;
}; };
const buildAlarmRecord = (siteCodeToAlarmsMap: Map<string, VimpChannel[]>) => {
const record: Record<string, VimpChannel> = {};
for (const [, alarms] of siteCodeToAlarmsMap) {
for (const alarm of alarms) {
record[alarm.code] = alarm;
}
}
alarmRecord.value = record;
};
return { return {
lineTabPanes, lineTabPanes,
alarmRecord,
buildLineTabPanes, buildLineTabPanes,
buildAlarmRecord,
}; };
}); });
+15 -1
View File
@@ -1,6 +1,6 @@
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import type { VimpChannel, VimpSite } from '../apis'; 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'; import type { CameraMainAreaNodeOption, CameraNodeOption, CodeLines, CodeSites, CameraLineTabPane, CameraSiteNodeOption, CameraSubAreaNodeOption, CompiledCodeAreas } from '../types';
interface BuildLineTabPanesParams { interface BuildLineTabPanesParams {
@@ -16,6 +16,7 @@ const buildSubAreaNodeKey = (siteCode: string, areaCode: string) => `${siteCode}
export const useCameraStore = defineStore('vimp-camera-store', () => { export const useCameraStore = defineStore('vimp-camera-store', () => {
const lineTabPanes = shallowRef<CameraLineTabPane[]>([]); const lineTabPanes = shallowRef<CameraLineTabPane[]>([]);
const cameraRecord = shallowRef<Record<string, VimpChannel>>({});
const buildLineTabPanes = (params: BuildLineTabPanesParams) => { const buildLineTabPanes = (params: BuildLineTabPanesParams) => {
const { sites, siteCodeToCamerasMap, codeLines, codeSites, compiledCodeAreas } = params; const { sites, siteCodeToCamerasMap, codeLines, codeSites, compiledCodeAreas } = params;
@@ -153,8 +154,21 @@ export const useCameraStore = defineStore('vimp-camera-store', () => {
lineTabPanes.value = result; lineTabPanes.value = result;
}; };
const buildCameraRecord = (siteCodeToCamerasMap: Map<string, VimpChannel[]>) => {
const record: Record<string, VimpChannel> = {};
for (const [, cameras] of siteCodeToCamerasMap) {
for (const camera of cameras) {
record[camera.code] = camera;
}
}
cameraRecord.value = record;
};
return { return {
lineTabPanes, lineTabPanes,
cameraRecord,
buildLineTabPanes, buildLineTabPanes,
buildCameraRecord,
}; };
}); });