From e7557e07fbdaa9247024b301e1a2ba41390741ad Mon Sep 17 00:00:00 2001 From: guonan <guonan201020@163.com> Date: 星期四, 10 七月 2025 16:55:24 +0800 Subject: [PATCH] 123 --- src/components/menu/CrossSectionalAnalysis.vue | 62 ++++++++++++++++++++++++++++--- 1 files changed, 56 insertions(+), 6 deletions(-) diff --git a/src/components/menu/CrossSectionalAnalysis.vue b/src/components/menu/CrossSectionalAnalysis.vue index 7c9db5e..a06fbb1 100644 --- a/src/components/menu/CrossSectionalAnalysis.vue +++ b/src/components/menu/CrossSectionalAnalysis.vue @@ -75,8 +75,15 @@ <script setup> import { ElMessage } from 'element-plus'; import { ref, onMounted, defineExpose } from "vue"; +import { getCrossSection } from '@/api/trApi.js'; // 鍋囪浣犳湁鐪熷疄鎺ュ彛 +import { useSimStore } from '@/store/simulation'; +import { storeToRefs } from 'pinia'; +import { EventBus } from "@/eventBus"; +const simStore = useSimStore(); +const { selectedScheme } = storeToRefs(simStore); const viewer = window.viewer; +let selectedSchemeId = selectedScheme.value.id let pickedPointsCross = ref([]); let pickHandlerCross = null; @@ -110,7 +117,13 @@ // 閫夊彇涓や釜鏂潰鐐瑰潗鏍囧苟缁樺埗鏂潰鎴潰 function addPointToViewer(point) { if (pickedPointsCross.value.length >= 2) { - clearPoints(); + for (const id of pickedEntitiesIds.value) { + viewer.entities.remove(viewer.entities.getById(id)); + } + pickedPointsCross.value = []; + pickedEntitiesIds.value = []; + isWallCreated.value = false; + isUploaded.value = false; } pickedPointsCross.value.push(point); drawPointOnMap(point); @@ -164,14 +177,14 @@ ); const cylinderBottomHeight = 0; - const cylinderTopHeight = terrainHeight + 190; + const cylinderTopHeight = terrainHeight + 100; const cartesianBottom = viewer.scene.globe.ellipsoid.cartographicToCartesian( Cesium.Cartographic.fromDegrees(midLon, midLat, cylinderBottomHeight) ); const CrosscylinderEntity = viewer.entities.add({ position: cartesianBottom, cylinder: { - length: 190.0, + length: 100.0, topRadius: 1.0, bottomRadius: 1.0, material: Cesium.Color.YELLOW, @@ -218,6 +231,15 @@ pickedEntitiesIds.value = []; isWallCreated.value = false; isUploaded.value = false; + if (pickHandlerCross) { + pickHandlerCross.destroy(); + pickHandlerCross = null; + } + isPicking.value = false; + simStore.crossSection = [] + EventBus.emit("clear-dM") + console.log('杩欓噷鍙戦�佽姹傦紝娓呯┖閮鐨別charts2'); + } function initPickHandler() { if (isPicking.value) { @@ -249,7 +271,9 @@ pickHandlerCross.setInputAction(clickAction, Cesium.ScreenSpaceEventType.LEFT_CLICK); } -function confirmPoints() { +async function confirmPoints() { + console.log(selectedSchemeId,'杩欓噷鎷跨殑鏄柟妗堢殑鏁版嵁'); + if (pickedPointsCross.value.length < 2) { ElMessage.warning('璇峰厛閫夋嫨涓や釜鐐瑰悗鍐嶈繘琛岀‘璁わ紒'); return; @@ -257,6 +281,7 @@ const point1 = pickedPointsCross.value[0]; const point2 = pickedPointsCross.value[1]; +console.log(point1,point2); console.log('绗竴涓偣淇℃伅锛�', { longitude: point1.longitude, @@ -269,11 +294,36 @@ latitude: point2.latitude, cartesian: point2.cartesian }); - + const startPoint = `${point1.longitude},${point1.latitude}`; + const endPoint = `${point2.longitude},${point2.latitude}`; + const result = await getCrossSectionInfo(startPoint, endPoint); + simStore.crossSection = result + EventBus.emit("redraw-dM") + console.log(result,'杩欓噷鏄儹妤犻渶瑕佺殑鏂潰鏁版嵁'); + isUploaded.value = true; ElMessage.success('姝e湪杩涜--鏂潰鎴潰--鏁版嵁鍒嗘瀽涓婁紶锛岃绋嶇瓑...'); + } - + // 鑾峰彇鐪熷疄鏁版嵁 +function getCrossSectionInfo(a, b) { + const params = { + startPoint: a, + endPoint: b, + id: selectedSchemeId + }; + return getCrossSection(params).then(data => { + if (data && data.code === 200) { + return data.data; // 杩斿洖鍘熷鏁版嵁鏁扮粍 + } else { + return []; + } + }).catch(error => { + console.error('鑾峰彇鏁版嵁鏃跺彂鐢熼敊璇�:', error); + ElMessage.warning('鏁版嵁鏈夎锛岃鑱旂郴绠$悊鍛樻垨閲嶆柊杩涜妯℃嫙锛�'); + return []; + }); +} defineExpose({ clearPoints }); -- Gitblit v1.9.3