From 5fef8eec51504e1892219314dc7f46abf8f0d381 Mon Sep 17 00:00:00 2001 From: yarnom Date: Fri, 4 Jul 2025 14:12:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/page/device_overview.html | 80 +++++++++++++++---- 1 file changed, 64 insertions(+), 16 deletions(-) diff --git a/sec-beidou/src/main/resources/templates/page/device_overview.html b/sec-beidou/src/main/resources/templates/page/device_overview.html index e34e129d..2035f6d0 100644 --- a/sec-beidou/src/main/resources/templates/page/device_overview.html +++ b/sec-beidou/src/main/resources/templates/page/device_overview.html @@ -1440,18 +1440,14 @@ function locateDeviceOnMap(deviceId, latitude, longitude) { currentSearchedDevice = deviceId; filterByDeviceId(deviceId); - - var layerIndex = layer.open({ - title: '', - type: 2, - shade: 0.2, - maxmin: true, - shadeClose: true, - anim: 2, - offset: 'rb', - area: ['100%', '50%'], - content: '../page/gnss_q_status?query=' + deviceId, - }); + + layer.closeAll(); + + } + + function locateDeviceDirectly(deviceId) { + currentSearchedDevice = deviceId; + filterByDeviceId(deviceId); } function updateFilterButtonsState(state) { @@ -1485,11 +1481,14 @@ } if (found && targetFeature) { - // 将地图中心移动到该设备位置 var geometry = targetFeature.getGeometry(); var deviceCoord = geometry.getCoordinates(); - map.getView().setCenter(deviceCoord); - map.getView().setZoom(15); + + map.getView().animate({ + center: deviceCoord, + zoom: 16, + duration: 800 + }); layer.msg('已定位到设备: ' + deviceId); } else { @@ -1537,8 +1536,12 @@ }); function queryDevices(status_type) { + // 首先过滤地图上的设备显示 + filterDevicesByStatus(status_type); + + // 然后打开设备列表弹窗 var index = layer.open({ - title: '', + title: '设备列表', type: 2, shade: 0.2, maxmin: true, @@ -1549,6 +1552,51 @@ content: '../page/gnss_q_status?query=' + status_type, }); } + + // 新增:根据状态过滤地图上的设备 + function filterDevicesByStatus(status_type) { + var savedMyLocationFeature = myLocationFeature; + vectorSource.clear(); + + if (savedMyLocationFeature) { + vectorSource.addFeature(savedMyLocationFeature); + } + + // 根据状态类型显示对应的设备 + switch(status_type) { + case 'warning1': + for (var i = 0; i < orangeFeatures.length; i++) { + vectorSource.addFeature(orangeFeatures[i]); + } + marker_state = 2; + break; + case 'warning2': + for (var i = 0; i < redFeatures.length; i++) { + vectorSource.addFeature(redFeatures[i]); + } + marker_state = 3; + break; + case 'offline': + case 'no_fwd': + case 'nofixed': + case 'nogga': + // 对于这些状态,显示所有设备,让用户在弹窗中选择 + for (var i = 0; i < allFeatures.length; i++) { + vectorSource.addFeature(allFeatures[i]); + } + marker_state = 1; + break; + default: + // 默认显示所有设备 + for (var i = 0; i < allFeatures.length; i++) { + vectorSource.addFeature(allFeatures[i]); + } + marker_state = 1; + break; + } + + vectorLayer.changed(); + } function onWarningFilterChange() { var filterValue = document.getElementById('warningFilter').value;