2025-07-09 | wangjuncheng | ![]() |
2025-07-09 | guonan | ![]() |
2025-07-09 | guonan | ![]() |
src/api/hpApi.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/trApi.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/menu/CrossSectionalAnalysis.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/menu/TimeLine.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/tools/LayerTree.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/hpApi.js
@@ -178,7 +178,7 @@ export async function getDeviceInfoByPage(data, pageNum) { const response = await axios.post("/hp/deviceInfo/getData", { filterObject: { "divisionDistrict": data, "divisionDistrictList": [data], // 所属项目 // 如果不加这个,则返回的全是强震仪(1933099069385355265) "belongObjList": [ src/api/trApi.js
@@ -191,4 +191,18 @@ throw error; // 抛出错误,让调用方可以捕获 } } export async function getCrossSection(data) { // console.log(data,'发送的数据!'); try { const res = await instance.get("/simu/crossSection", { params: data }); return res.data; // 返回实际数据(通常 res.data 才是接口返回的内容) } catch (error) { console.error("Error fetching data:", error); throw error; // 抛出错误,让调用方可以捕获 } } // ************************************************************************************************************** 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; @@ -229,6 +234,8 @@ pickHandlerCross = null; } isPicking.value = false; console.log('这里发送请求,清空郭楠的echarts2'); } function initPickHandler() { if (isPicking.value) { @@ -260,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; @@ -268,6 +277,7 @@ const point1 = pickedPointsCross.value[0]; const point2 = pickedPointsCross.value[1]; console.log(point1,point2); console.log('第一个点信息:', { longitude: point1.longitude, @@ -280,11 +290,34 @@ latitude: point2.latitude, cartesian: point2.cartesian }); const startPoint = `${point1.longitude},${point1.latitude}`; const endPoint = `${point2.longitude},${point2.latitude}`; const result = await getCrossSectionInfo(startPoint, endPoint); console.log(result,'这里是郭楠需要的断面数据'); isUploaded.value = true; ElMessage.success('正在进行--断面截面--数据分析上传,请稍等...'); } // 获取真实数据 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 }); src/components/menu/TimeLine.vue
@@ -340,8 +340,9 @@ } // 触发进度更新 const progress = currentTime.value / totalDuration; emit("timeUpdate", progress * 100); // const progress = currentTime.value / totalDuration; // 实时模拟应该不用显示弹窗吧 // emit("timeUpdate", progress * 100); // 如果需要触发某些更新函数,也可以保留 updateWaterColorByTime(); @@ -1076,7 +1077,11 @@ watch( () => finishPlay.value, (newVal) => { if (newVal && selectedScheme.value.type === 2) { if ( newVal && selectedScheme.value.type === 2 && simStore.rePlayList.length > 0 ) { handlePlayFinished(); } } src/components/tools/LayerTree.vue
@@ -239,22 +239,62 @@ * 清除图层实体 * @param {String} layerName - 图层名称 */ function clearLayerEntities(layerName) { // 暂且保留 // async function clearLayerEntities(layerName) { // const list = treeMap.get(layerName); // if (list && Array.isArray(list)) { // for (const item of list) { // const entity = await item; // if (layerName == "综合监测设备信息") { // removeEntities(entity.deviceId); // } else if (layerName == "孙胡沟隐患点") { // removeEntities(entity.hdId); // } // } // } // treeMap.delete(layerName); // } /** * 清除图层实体 * @param {String} layerName - 图层名称 */ // 此函数优化了在模拟仿真页面,如果点击目录树选中取消,泥位计仍显示 async function clearLayerEntities(layerName) { const isMnfzPage = route.path === "/mnfz"; // 判断是否为 /mnfz 页面 const list = treeMap.get(layerName); if (list && Array.isArray(list)) { list.forEach((entity) => { clearAllPoints(); }); for (const item of list) { const entity = await item; console.log(entity,'eeeeeeeee') let shouldRemove = true; // 默认要删除 // 如果是 /mnfz 页面,并且是“泥位计”,则不删除 if (isMnfzPage && entity.type === "泥位计") { shouldRemove = false; } if (shouldRemove) { if (layerName === "综合监测设备信息") { removeEntities(entity.deviceId); } else if (layerName === "孙胡沟隐患点") { removeEntities(entity.hdId); } } } } treeMap.delete(layerName); } // 监控设备开关变化 watchEffect(() => { watchEffect(async () => { clearLayerEntities("综合监测设备信息"); if (simStore.DeviceShowSwitch) { const deviceList = simStore.devices // 使用 Promise.all 等待所有异步操作完成 const deviceListPromises = simStore.devices .filter((item) => item.deviceName?.includes("孙胡沟")) .map(async (item) => { const entity = viewer.entities.getById(item.deviceId); @@ -263,8 +303,12 @@ item.id = item.deviceId; item.className = "device"; item.showLabel = true; await createPoint(item); await createPoint(item); // 确保 createPoint 返回一个 Promise 或者本身就是异步函数 return item; // 返回处理后的 item }); // 等待所有异步操作完成 const deviceList = await Promise.all(deviceListPromises); if (deviceList.length) { treeMap.set("综合监测设备信息", deviceList); @@ -273,13 +317,15 @@ }); // 监控隐患点开关变化 watchEffect(() => { watchEffect(async () => { clearLayerEntities("孙胡沟隐患点"); if (simStore.DangerShowSwitch) { const dangerPoints = simStore.DangerPoint.filter((item) => const filteredPoints = simStore.DangerPoint.filter((item) => item.position?.includes("孙胡沟") ).map(async (item) => { ); const dangerPointPromises = filteredPoints.map(async (item) => { const entity = viewer.entities.getById(item.hdId); item.id = item.hdId; item.name = item.hdName; @@ -288,11 +334,18 @@ item.showBillboard = true; item.type = item.disasterType; item.className = "district"; await createPoint(item); await createPoint(item); // 确保 createPoint 是异步函数 return item; // 返回处理好的 item }); if (dangerPoints.length) { treeMap.set("孙胡沟隐患点", dangerPoints); try { const resolvedPoints = await Promise.all(dangerPointPromises); if (resolvedPoints.length) { treeMap.set("孙胡沟隐患点", resolvedPoints); } } catch (error) { console.error("创建隐患点时发生错误:", error); } } });