diff --git a/src/components/device-tree.vue b/src/components/device-page/device-tree.vue
similarity index 72%
rename from src/components/device-tree.vue
rename to src/components/device-page/device-tree.vue
index 563eaf0..30bf5f9 100644
--- a/src/components/device-tree.vue
+++ b/src/components/device-page/device-tree.vue
@@ -1,12 +1,4 @@
-
+
+
@@ -204,28 +231,30 @@ const scrollDeviceTreeToSelectedDevice = (timeout: number = 500) => {
在线
离线
-
+
+ 收起
定位
-
+
-
+
();
+ const selectedDeviceType = ref(DeviceType.Camera);
+ const selectedDevice = ref();
+
+ const initFromRoute = (lineDevices: LineDevices) => {
+ const { stationCode, deviceType, deviceDBId } = route.query;
+ if (stationCode) {
+ selectedStationCode.value = stationCode as string;
+ }
+ if (deviceType) {
+ selectedDeviceType.value = deviceType as DeviceTypeVal;
+ }
+ // 如果有设备ID参数,尝试找到对应设备
+ if (deviceDBId && selectedStationCode.value && selectedDeviceType.value) {
+ const deviceId = deviceDBId as string;
+ const stationDevices = lineDevices[selectedStationCode.value];
+ if (stationDevices) {
+ const typedDevices = stationDevices[selectedDeviceType.value];
+ if (typedDevices) {
+ const device = typedDevices.find((device) => device.id === deviceId);
+ if (device) {
+ selectedDevice.value = device;
+ }
+ }
+ }
+ }
+ };
+
+ const selectDevice = (device: NdmDeviceResultVO, stationCode: string) => {
+ selectedDevice.value = device;
+ selectedStationCode.value = stationCode;
+ selectedDeviceType.value = getDeviceTypeVal(device.deviceType);
+ };
+
+ const syncToRoute = () => {
+ const query = { ...route.query };
+ if (selectedStationCode.value) {
+ query['stationCode'] = selectedStationCode.value;
+ }
+ if (selectedDeviceType.value) {
+ query['deviceType'] = selectedDeviceType.value;
+ }
+ if (selectedDevice.value?.id) {
+ query['deviceDBId'] = selectedDevice.value.id;
+ }
+ router.replace({ query });
+ };
+
+ watch([selectedStationCode, selectedDevice], () => syncToRoute());
+
+ return {
+ selectedStationCode,
+ selectedDeviceType,
+ selectedDevice,
+
+ initFromRoute,
+ selectDevice,
+ syncToRoute,
+ };
+}
diff --git a/src/pages/device-page.vue b/src/pages/device-page.vue
index 01aa1fb..f55101e 100644
--- a/src/pages/device-page.vue
+++ b/src/pages/device-page.vue
@@ -1,17 +1,31 @@
-
-
-
-
-
- 返回
-
-
- {{ selectedDevice }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+