From 6cc17bd234d981ef06cf8e888a1d4b8a14f51f41 Mon Sep 17 00:00:00 2001 From: guonan <guonan201020@163.com> Date: 星期四, 10 七月 2025 11:14:16 +0800 Subject: [PATCH] 断面 --- src/components/menu/CrossSectionalAnalysis.vue | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 50 insertions(+), 5 deletions(-) diff --git a/src/components/menu/CrossSectionalAnalysis.vue b/src/components/menu/CrossSectionalAnalysis.vue index 0b65a1f..b4478aa 100644 --- a/src/components/menu/CrossSectionalAnalysis.vue +++ b/src/components/menu/CrossSectionalAnalysis.vue @@ -75,8 +75,13 @@ <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'; +const simStore = useSimStore(); +const { selectedScheme } = storeToRefs(simStore); const viewer = window.viewer; +let selectedSchemeId = selectedScheme.value.id let pickedPointsCross = ref([]); let pickHandlerCross = null; @@ -110,7 +115,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); @@ -218,6 +229,13 @@ pickedEntitiesIds.value = []; isWallCreated.value = false; isUploaded.value = false; + if (pickHandlerCross) { + pickHandlerCross.destroy(); + pickHandlerCross = null; + } + isPicking.value = false; + console.log('杩欓噷鍙戦�佽姹傦紝娓呯┖閮鐨別charts2'); + } function initPickHandler() { if (isPicking.value) { @@ -249,7 +267,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 +277,7 @@ const point1 = pickedPointsCross.value[0]; const point2 = pickedPointsCross.value[1]; +console.log(point1,point2); console.log('绗竴涓偣淇℃伅锛�', { longitude: point1.longitude, @@ -269,11 +290,35 @@ 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 + 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