diff --git a/src/pages/device-page.vue b/src/pages/device-page.vue index f190760..bb7e024 100644 --- a/src/pages/device-page.vue +++ b/src/pages/device-page.vue @@ -222,7 +222,16 @@ const deviceTreeInsts = useTemplateRef('deviceTreeInsts'); const onClickLocateDeviceTree = () => { selectedTab.value = (selectedDevice.value?.deviceType ?? selectedTab.value) as DeviceTypeCode; selectedKeys.value = selectedDevice.value?.id ? [selectedDevice.value.id] : undefined; - expandedKeys.value = route.query['stationCode'] ? [route.query['stationCode'] as string] : undefined; + + const stationCode = route.query['stationCode'] as string | undefined; + let expanded: string[] | undefined = stationCode ? [stationCode] : undefined; + if (selectedTab.value === DeviceType.Nvr && stationCode) { + const nvrs = (lineDevices.value?.[stationCode]?.[DeviceType.Nvr] ?? []) as NdmNvrResultVO[]; + const clusterKeys = nvrs.filter((nvr) => !!nvr.clusterList?.trim() && nvr.clusterList !== nvr.ipAddress).map((nvr) => String(nvr.id)); + expanded = [...(expanded ?? []), ...clusterKeys]; + } + expandedKeys.value = expanded; + // 由于数据量大所以开启虚拟滚动, // 但是无法知晓NTree内部的虚拟列表容器何时创建完成,所以使用setTimeout延迟固定时间后执行滚动 scrollDeviceTreeToSelectedDevice();