From e2d1d78bc72459a0ac2e2e337bbca7c8a1e41e17 Mon Sep 17 00:00:00 2001
From: wangrong <wangrong@shsening.com>
Date: 星期二, 29 九月 2026 22:44:02 +0800
Subject: [PATCH] 修改首页加logo等

---
 src/modules/report/components/screen-map-panel.vue |   45 ++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 38 insertions(+), 7 deletions(-)

diff --git a/src/modules/report/components/screen-map-panel.vue b/src/modules/report/components/screen-map-panel.vue
index b86dd28..4d72cd2 100755
--- a/src/modules/report/components/screen-map-panel.vue
+++ b/src/modules/report/components/screen-map-panel.vue
@@ -11,9 +11,16 @@
 			</div>
 		</div>
 
-		<!-- 鍦板浘涓讳綋 -->
+		<!-- 鍦板浘涓讳綋锛氱瓑鍙傛暟灏辩华鍐嶅垱寤猴紝閬垮厤澶╁湴鍥惧彧鍦ㄥ垵濮嬪寲鏃跺悆 center/zoom -->
 		<div class="map-panel__map">
-			<tdt-map :center="center" :zoom="zoom" :controls="controls" :loadConfig="MAP_LOAD">
+			<tdt-map
+				v-if="viewReady"
+				:center="center"
+				:zoom="zoom"
+				:controls="controls"
+				:loadConfig="MAP_LOAD"
+				@init="onMapInit"
+			>
 				<tdt-marker
 					v-for="item in list"
 					:key="keyOf(item)"
@@ -40,12 +47,15 @@
 
 import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue';
 import { TdtMap, TdtMarker, type LngLat } from 'vue-tianditu2';
+import { useCool } from '/@/cool';
 import {
 	DEFAULT_CENTER,
+	DEFAULT_ZOOM,
 	MAP_LOAD,
 	SORTER_ICON,
 	VEHICLE_ICON,
 	formatTime,
+	loadMapView,
 	siteIcon,
 	useMapsApi
 } from '../../maps/hooks/use-map';
@@ -97,12 +107,14 @@
 	}
 };
 
+const { service } = useCool();
 const api = useMapsApi();
 
 const layer = ref<LayerKey>('site');
 const list = ref<any[]>([]);
 const center = ref<LngLat>(DEFAULT_CENTER);
-const zoom = ref(12);
+const zoom = ref(DEFAULT_ZOOM);
+const viewReady = ref(false);
 const lastUpdate = ref('');
 
 const controls = ['Zoom', 'Scale'];
@@ -131,14 +143,29 @@
 	return cfg.value.icon(item);
 }
 
+function applyView(map: any) {
+	const [lon, lat] = center.value;
+	if (!map || !Number.isFinite(lon) || !Number.isFinite(lat)) return;
+	const TMap = (window as any).T;
+	const lnglat = TMap?.LngLat ? new TMap.LngLat(lon, lat) : [lon, lat];
+	if (typeof map.centerAndZoom === 'function') {
+		map.centerAndZoom(lnglat, zoom.value);
+	} else {
+		map.panTo?.(lnglat);
+		map.setZoom?.(zoom.value);
+	}
+	map.checkResize?.();
+}
+
+function onMapInit(map: any) {
+	applyView(map);
+	window.setTimeout(() => applyView(map), 200);
+}
+
 async function load() {
 	const res = await cfg.value.load();
 	list.value = Array.isArray(res) ? res : [];
 	lastUpdate.value = formatTime(new Date());
-	if (list.value[0]) {
-		center.value = pos(list.value[0]);
-		zoom.value = 13;
-	}
 }
 
 // 杞﹁締 / 鍒嗘嫞鍛樹负瀹炴椂浣嶇疆锛�30s 杞锛涚珯鐐规槸闈欐�佸彴璐︼紝涓嶈疆璇�
@@ -162,6 +189,10 @@
 });
 
 onMounted(async () => {
+	const view = await loadMapView(service);
+	center.value = view.center;
+	zoom.value = view.zoom;
+	viewReady.value = true;
 	await load();
 	startPolling();
 });

--
Gitblit v1.9.1