From e50196bff10f0196307b2567ed6c0829eadd8ff6 Mon Sep 17 00:00:00 2001
From: wujingjing <gersonwu@qq.com>
Date: 星期一, 10 二月 2025 12:12:25 +0800
Subject: [PATCH] 设备显示隐藏

---
 src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/Map.vue                    |    7 ---
 src/model/map/OLMap.ts                                                                                 |   67 ++++++++++++++++++++++++++++-----
 src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/panelTool/ThemeControl.vue |    8 +---
 src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/LayerControl.vue           |   12 -----
 src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/panelTool/LayerControl.vue |    4 +-
 src/components/chat/smallChat/index.vue                                                                |   15 ++++++-
 src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/BasicMap.vue               |    5 --
 7 files changed, 77 insertions(+), 41 deletions(-)

diff --git a/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/BasicMap.vue b/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/BasicMap.vue
index ac47e38..ee1ac3e 100644
--- a/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/BasicMap.vue
+++ b/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/BasicMap.vue
@@ -34,7 +34,7 @@
 				</div>
 			</div>
 		</div>
-		<LayerControl v-if="olMap" :olMap="olMap" class="absolute top-3 left-3 z-10" />
+		<!-- <LayerControl v-if="olMap" :olMap="olMap" class="absolute top-3 left-3 z-10" /> -->
 
 		<!-- <PropertyPanel class="absolute top-14 left-10 z-14"></PropertyPanel> -->
 		<PanelTool
@@ -93,14 +93,12 @@
 		data: any;
 		config?: {
 			sourceType: GaoDeSourceType;
-			markerIsVisible: boolean;
 		};
 		isFullscreen: boolean;
 	}>(),
 	{
 		config: () => ({
 			sourceType: GaoDeSourceType.Vector,
-			markerIsVisible: true,
 		}),
 	}
 );
@@ -457,7 +455,6 @@
 	olMap.value = new OLMap({
 		container: containerRef.value,
 		sourceType: props.config?.sourceType,
-		markerIsVisible: props.config?.markerIsVisible,
 	});
 
 	addMarkerLayer();
diff --git a/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/LayerControl.vue b/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/LayerControl.vue
index 677c237..fd70f7b 100644
--- a/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/LayerControl.vue
+++ b/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/LayerControl.vue
@@ -109,7 +109,6 @@
 	{
 		id: ROOT_OVERLAY_TYPE.Marker,
 		label: '璁惧',
-		checked: props.olMap.markerIsVisible.value,
 	},
 ]);
 const initTreeChecked = () => {
@@ -131,16 +130,7 @@
 };
 
 let isHumanCheckTrigger = false;
-watch(
-	() => props.olMap.markerIsVisible.value,
-	(val) => {
-		if (isHumanCheckTrigger) {
-			isHumanCheckTrigger = false;
-			return;
-		}
-		setTreeChecked(val);
-	}
-);
+
 
 const handleNodeClick = (data: any, node: any) => {
 	if (data.id === ROOT_OVERLAY_TYPE.Marker) {
diff --git a/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/Map.vue b/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/Map.vue
index 9b59df8..52d3e07 100644
--- a/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/Map.vue
+++ b/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/Map.vue
@@ -25,7 +25,6 @@
 				<div v-if="isRenderFullscreen" v-show="isFullscreen" class="absolute inset-0 z-50 w-full h-full">
 					<BasicMap
 						ref="fullScreenMapRef"
-						:config="fullScreenMapConfig"
 						:isFullscreen="true"
 						class="h-full"
 						:data="data"
@@ -87,10 +86,7 @@
 	}
 };
 
-const fullScreenMapConfig = ref({
-	sourceType: GaoDeSourceType.Vector,
-	markerIsVisible: true,
-});
+
 // 鍒囨崲鍏ㄥ睆
 const toggleFullScreen = async () => {
 	isFullscreen.value = !isFullscreen.value;
@@ -99,7 +95,6 @@
 	if (isFullscreen.value) {
 		const config = normalMapRef.value.olMap.getConfig();
 		if (!isRenderFullscreen.value) {
-			fullScreenMapConfig.value = config;
 			isRenderFullscreen.value = true;
 		} else {
 			// fullScreenMapRef.value.olMap.setConfig(config);
diff --git a/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/panelTool/LayerControl.vue b/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/panelTool/LayerControl.vue
index 740dbac..158a571 100644
--- a/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/panelTool/LayerControl.vue
+++ b/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/panelTool/LayerControl.vue
@@ -51,7 +51,7 @@
 	const checkedKeys = node.checkedKeys;
 	isHumanCheckTrigger = true;
 	travelTree(layerInfo.value, (layer) => {
-		if (layer.type === 'layer') {
+		if (layer.type === 'layer' || layer.type === 'equip') {
 			const id = layer.id;
 			if (!checkedKeys.includes(id)) {
 				layer.isVisible = false;
@@ -90,7 +90,7 @@
 		}
 		const keys = [];
 		travelTree(val, (item) => {
-			if (item.type === 'layer') {
+			if (item.type === 'layer'|| item.type === 'equip') {
 				if (item.isVisible) {
 					keys.push(item.id);
 				}
diff --git a/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/panelTool/ThemeControl.vue b/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/panelTool/ThemeControl.vue
index 635553f..33bde66 100644
--- a/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/panelTool/ThemeControl.vue
+++ b/src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/panelTool/ThemeControl.vue
@@ -377,9 +377,7 @@
 
 		return styles;
 	};
-	const allLayers = props.olMap.layerInfo.value.reduce((preVal, curVal) => {
-		return preVal.concat(curVal.children.map((item) => item));
-	}, []);
+	const allLayers = props.olMap.getAllLayers();
 	for (const item of allLayers) {
 		if (props.olMap?.unsupportedLayers.includes(item.id)) {
 			continue;
@@ -399,9 +397,7 @@
 	const ids = allIds.join(',');
 
 	if (!ids) {
-		const allLayers = props.olMap.layerInfo.value.reduce((preVal, curVal) => {
-			return preVal.concat(curVal.children.map((item) => item.model));
-		}, []);
+		const allLayers = props.olMap.getAllLayerModels();
 		for (const item of allLayers) {
 			const originStyle = item.get('originStyle');
 			originStyle && item.setStyle(originStyle);
diff --git a/src/components/chat/smallChat/index.vue b/src/components/chat/smallChat/index.vue
index 15bd148..f8b0821 100644
--- a/src/components/chat/smallChat/index.vue
+++ b/src/components/chat/smallChat/index.vue
@@ -293,10 +293,21 @@
 			break;
 
 		case '鏄剧ず璁惧':
-			props.olMap.toggleMarkerOverlayVisible(true);
+			const equipOverlay = props.olMap.getEquipOverlay();
+			if (equipOverlay) {
+				equipOverlay.isVisible = true;
+				// 寮哄埗瑙﹀彂鏇存柊
+				props.olMap.layerInfo.value = props.olMap.layerInfo.value.concat([])
+			}
 			break;
 		case '闅愯棌璁惧':
-			props.olMap.toggleMarkerOverlayVisible(false);
+			const equipOverlay1 = props.olMap.getEquipOverlay();
+			if (equipOverlay1) {
+				equipOverlay1.isVisible = false;
+				// 寮哄埗瑙﹀彂鏇存柊
+				props.olMap.layerInfo.value = props.olMap.layerInfo.value.concat([])
+
+			}
 			break;
 		case '鑱氱劍璁惧':
 			props.olMap.adjustViewToMarkers();
diff --git a/src/model/map/OLMap.ts b/src/model/map/OLMap.ts
index 783d561..c9cbde8 100644
--- a/src/model/map/OLMap.ts
+++ b/src/model/map/OLMap.ts
@@ -61,7 +61,6 @@
 };
 type MapConfig = {
 	sourceType: GaoDeSourceType;
-	markerIsVisible: boolean;
 };
 
 type OLEventType = 'blackClick' | 'featureChange' | 'featureHoverChange';
@@ -91,7 +90,6 @@
 	themeInfo = ref([] as any[]);
 
 	activeSourceType: Ref<GaoDeSourceType> = ref(GaoDeSourceType.Vector);
-	markerIsVisible: Ref<boolean> = ref(true);
 	interactLayer: VectorLayer<VectorSource<Feature<Geometry>>, Feature<Geometry>> = null;
 
 	/** @description 褰撳墠婵�娲荤姸鎬� feature */
@@ -126,13 +124,12 @@
 	}
 
 	constructor(options: OLMapOptions) {
-		const { container, view, sourceType, markerIsVisible } = defaultsDeep(options, {
+		const { container, view, sourceType } = defaultsDeep(options, {
 			view: {
 				center: [13247019.404399557, 4721671.572580107],
 				zoom: 8,
 			},
 			sourceType: GaoDeSourceType.Vector,
-			markerIsVisible: true,
 		} as OLMapOptions) as OLMapOptions;
 		this.source = new XYZ({
 			crossOrigin: 'anonymous',
@@ -153,7 +150,6 @@
 			interactions: olDefaults({ doubleClickZoom: false }),
 		});
 		this.activeSourceType.value = sourceType;
-		this.markerIsVisible.value = markerIsVisible;
 		this.applySourceType(this.activeSourceType.value);
 		this.listenMapClick();
 		this.addBasicControl();
@@ -356,6 +352,24 @@
 		this.adjustViewToOverlays(markers);
 	}
 
+
+	checkEquipIsShow() {
+		for (const item of this.layerInfo.value) {
+			if (item.id === 'equip') {
+				return item.isVisible;
+			}
+		}
+		return false;
+	}
+
+	getEquipOverlay() {
+		for (const item of this.layerInfo.value) {
+			if (item.type === 'equip') {
+				return item;
+			}
+			
+		}
+	}
 	createEleOverlay(dom: string | HTMLElement, position = [0, 0]) {
 		const ele = typeof dom === 'string' ? (document.querySelector(dom) as HTMLElement) : dom;
 		if (!ele) return;
@@ -366,7 +380,7 @@
 			stopEvent: false,
 			className: 'z-[999]',
 		});
-		eleOverlay.setVisible(this.markerIsVisible.value);
+		eleOverlay.setVisible(this.checkEquipIsShow());
 
 		return eleOverlay;
 	}
@@ -475,6 +489,27 @@
 		this.themeInfo.value = themeInfo;
 	}
 
+	getAllLayers() {
+		const allLayers = this.layerInfo.value.reduce((preVal, curVal) => {
+			if (preVal.children && preVal.children.length > 0) {
+				return preVal.concat(curVal.children.map((item) => item));
+			} else {
+				return preVal;
+			}
+		}, []);
+		return allLayers;
+	}
+
+	getAllLayerModels() {
+		return this.layerInfo.value.reduce((preVal, curVal) => {
+			if (preVal.children && preVal.children.length > 0) {
+				return preVal.concat(curVal.children.map((item) => item.model));
+			} else {
+				return preVal;
+			}
+		}, []);
+	}
+
 	/** @description 璁板綍鎵�鏈夊浘灞� */
 	setAllLayers(layerModels: Layer[], layers: any[], layerGroup: any[]) {
 		// this.layerInfo.value = layerModels.map((layer, index) => {
@@ -525,6 +560,22 @@
 			mapGroupItem.children.push(data);
 			return preVal;
 		}, []);
+		const that = this;
+		this.layerInfo.value.push({
+			id: 'equip',
+			title: '鐩戞祴璁惧',
+			children: [],
+			_isVisible: true,
+			get isVisible() {
+				return this._isVisible;
+			},
+			set isVisible(val) {
+				console.log("馃殌 ~ val:", val)
+				this._isVisible = val;
+				that.toggleMarkerOverlayVisible(val);
+			},
+			type: 'equip',
+		});
 	}
 
 	/**
@@ -553,21 +604,17 @@
 				}
 			}
 		});
-		this.markerIsVisible.value = visible;
 	}
 
 	getConfig(): MapConfig {
 		return {
 			sourceType: this.activeSourceType.value,
-			markerIsVisible: this.markerIsVisible.value,
 		};
 	}
 
 	setConfig(config: MapConfig) {
 		this.activeSourceType.value = config.sourceType;
-		this.markerIsVisible.value = config.markerIsVisible;
 		this.applySourceType(this.activeSourceType.value);
-		this.toggleMarkerOverlayVisible(this.markerIsVisible.value);
 	}
 
 	private addBasicControl() {

--
Gitblit v1.9.3