diff --git a/web/src/views/HandDevice/Home/components/MapControls.vue b/web/src/views/HandDevice/Home/components/MapControls.vue index ebec43f..6b366e3 100644 --- a/web/src/views/HandDevice/Home/components/MapControls.vue +++ b/web/src/views/HandDevice/Home/components/MapControls.vue @@ -58,6 +58,8 @@ interface Props { isTrajectoriesActive?: boolean /** 绘制围栏按钮是否激活 */ isDrawFencesActive?: boolean + /** 是否隐藏顶部面板 */ + hideTopPanel?: boolean } interface Emits { @@ -75,7 +77,7 @@ withDefaults(defineProps(), { isMarkersActive: false, isFencesActive: false, isTrajectoriesActive: false, - isDrawFencesActive: false + isDrawFencesActive: false, }) defineEmits() diff --git a/web/src/views/HandDevice/Home/components/OpenLayerMap.vue b/web/src/views/HandDevice/Home/components/OpenLayerMap.vue index e8f2615..3211cd1 100644 --- a/web/src/views/HandDevice/Home/components/OpenLayerMap.vue +++ b/web/src/views/HandDevice/Home/components/OpenLayerMap.vue @@ -24,7 +24,7 @@ @time-change="setTrajectoryTime" @time-range-change="setTrajectoryTimeRange" /> -
+
@@ -106,12 +106,18 @@ const props = withDefaults(defineProps(), { showTrajectories: true, showMarkers: true, showFences: true, - showDrawFences: true + showDrawFences: true, + hideTopPanel: false }) + +const emit = defineEmits<{ + (e: 'fence-draw-complete', coordinates: [number, number][]): void + (e: 'refresh-fences'): void +}>() // 响应式状态 const showMarkers = ref(props.showMarkers) const showTrajectories = ref(false) -const showFences = ref(false) +const showFences = ref(props.showFences) const showDrawFences = ref(false) const mapContainerRef = ref(null) const handDetectorStore = useHandDetectorStore() @@ -258,10 +264,17 @@ const handleFenceDrawComplete = (coordinates: [number, number][]) => { return } console.log('围栏绘制完成:', coordinates) + emit('fence-draw-complete', coordinates) clearFenceDrawLayer() // 重置绘制状态 showDrawFences.value = false } + +const refreshFences = () => { + if (isMapInitialized) { + services.fenceService?.setFenceData(props.fences || []) + } +} // 监听 markers props 变化 watch( () => props.markers, @@ -278,11 +291,13 @@ onMounted(() => { initMap() }, 100) }) + +defineExpose({ refreshFences }) + diff --git a/web/src/views/gas/fence/FenceForm.vue b/web/src/views/gas/fence/FenceForm.vue index 033c451..6360edf 100644 --- a/web/src/views/gas/fence/FenceForm.vue +++ b/web/src/views/gas/fence/FenceForm.vue @@ -1,5 +1,5 @@