feat(sensor): 完善监测点结果编辑与图层切换

This commit is contained in:
2026-08-03 19:00:16 +08:00
parent 5592c27386
commit 5d9c40e454
12 changed files with 463 additions and 127 deletions
@@ -1,6 +1,6 @@
"use client";
import React, { useEffect, useMemo, useState } from "react";
import React, { useEffect, useMemo, useRef, useState } from "react";
import {
Box,
Button,
@@ -53,6 +53,7 @@ interface SchemaItem {
interface SchemeQueryProps {
schemes?: SchemeRecord[];
active?: boolean;
onSchemesChange?: (schemes: SchemeRecord[]) => void;
onEdit?: (id: number) => void;
network?: string;
@@ -77,6 +78,7 @@ export const createMonitoringSchemeQueryState =
const SchemeQuery: React.FC<SchemeQueryProps> = ({
schemes: externalSchemes,
active = true,
onSchemesChange,
onEdit,
network = NETWORK_NAME,
@@ -98,6 +100,8 @@ const SchemeQuery: React.FC<SchemeQueryProps> = ({
const [highlightLayer, setHighlightLayer] =
useState<VectorLayer<VectorSource> | null>(null);
const activeRef = useRef(active);
activeRef.current = active;
const [highlightFeatures, setHighlightFeatures] = useState<Feature[]>([]);
// 使用外部提供的 schemes 或内部状态
const schemes =
@@ -142,6 +146,7 @@ const SchemeQuery: React.FC<SchemeQueryProps> = ({
queryable: false,
},
});
highlightLayer.setVisible(activeRef.current);
map.addLayer(highlightLayer);
setHighlightLayer(highlightLayer);
@@ -151,6 +156,10 @@ const SchemeQuery: React.FC<SchemeQueryProps> = ({
};
}, [map]);
useEffect(() => {
highlightLayer?.setVisible(active);
}, [active, highlightLayer]);
// 高亮要素的函数
useEffect(() => {
if (!highlightLayer) {