From 148be10186422e1b53bbf9ff849a3371056dafd8 Mon Sep 17 00:00:00 2001 From: yangsy Date: Mon, 1 Jun 2026 02:54:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D(vimp=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E4=B8=AD=E5=BF=83):=20=E6=8C=89=E7=BC=96=E7=A0=81=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E7=AB=99=E7=82=B9=E4=B8=8E=E9=80=9A=E9=81=93=E4=BB=A5?= =?UTF-8?q?=E7=A8=B3=E5=AE=9AUI=E6=98=BE=E7=A4=BA=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增通用排序工具函数,对站点和通道数组按code字段排序,确保线路面板、站点节点和通道节点的显示顺序稳定一致,避免UI因数据源顺序波动出现跳动。 --- .../query/use-device-center-query.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/pages/vimp/composables/query/use-device-center-query.ts b/src/pages/vimp/composables/query/use-device-center-query.ts index 34b19a8..268fc64 100644 --- a/src/pages/vimp/composables/query/use-device-center-query.ts +++ b/src/pages/vimp/composables/query/use-device-center-query.ts @@ -30,6 +30,20 @@ const buildTrainAreas = () => { return codeTrainAreas; }; +const compareByCode = (a: T, b: T) => { + if (a.code < b.code) return -1; + if (a.code > b.code) return 1; + return 0; +}; +const sortSitesByCode = (sites: VimpStation[]) => { + sites.sort(compareByCode); +}; +const sortChannelsMapByCode = (siteCodeToChannelsMap: Map) => { + for (const channels of siteCodeToChannelsMap.values()) { + channels.sort(compareByCode); + } +}; + export const useDeviceCenterQuery = () => { const cameraStore = useCameraStore(); const alarmStore = useAlarmStore(); @@ -105,6 +119,13 @@ export const useDeviceCenterQuery = () => { }); } + // 1. 站点数组排序:稳定线路面板顺序和站点节点顺序 + sortSitesByCode(cameraSites); + sortSitesByCode(alarmSites); + // 2. 每站通道数组排序:稳定区域节点顺序和通道节点顺序 + sortChannelsMapByCode(siteCodeToCamerasMap); + sortChannelsMapByCode(siteCodeToAlarmsMap); + cameraStore.buildLineTabPanes({ sites: cameraSites, siteCodeToCamerasMap: siteCodeToCamerasMap,