| | |
| | | import { useSimStore } from "@/store/simulation"; |
| | | import { storeToRefs } from "pinia"; |
| | | const simStore = useSimStore(); |
| | | const { selectedScheme, currentInfo } = storeToRefs(simStore); |
| | | const { selectedScheme, currentInfo, selectNWJ } = storeToRefs(simStore); // 新增监听 selectNWJ |
| | | import { EventBus } from "@/eventBus"; |
| | | |
| | | const pickedPoints = ref([]); |
| | |
| | | const isPickingActive = ref(false); |
| | | const currentTime = ref(0); |
| | | let serviceInfo = ref(null); |
| | | |
| | | const isCurrentInfoFromSelectNWJ = ref(false); |
| | | const props = defineProps({ |
| | | playingTime: { |
| | | type: String, |
| | |
| | | }); |
| | | |
| | | const viewer = window.viewer; |
| | | serviceInfo = selectedScheme.value.serviceName; |
| | | |
| | | function getPickPosition(windowPosition) { |
| | | if (!viewer) return null; |
| | |
| | | height: cartographic.height |
| | | }; |
| | | } |
| | | |
| | | function addPointToViewer(point, index) { |
| | | const displayTime = currentTime.value || "未设置时间"; |
| | | const schemeInfo = selectedScheme.value; |
| | | serviceInfo = schemeInfo.serviceName; |
| | | |
| | | // 如果已有选中点,则先清除 |
| | | if (pickedPoints.value.length >= 1) { |
| | |
| | | currentInfo.value = { |
| | | longitude: point.longitude, |
| | | latitude: point.latitude, |
| | | serviceInfo: serviceInfo |
| | | serviceInfo: serviceInfo, |
| | | deviceName: null |
| | | }; |
| | | // 请求数据并更新 label |
| | | getFlowRateInfo(point.longitude, point.latitude, displayTime).then(result => { |
| | |
| | | if (position) { |
| | | const index = pickedPoints.value.length; |
| | | addPointToViewer(position, index); |
| | | |
| | | } |
| | | }, Cesium.ScreenSpaceEventType.LEFT_CLICK); |
| | | } |
| | |
| | | isPickingActive.value = true; |
| | | ElMessage.success(`开始--流量流速--拾取坐标功能,请点击地图选择点位!选取完请及时关闭,避免影响其他功能!`); |
| | | } |
| | | |
| | | function stopPicking() { |
| | | if (handler.value) { |
| | | handler.value.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); |
| | |
| | | } |
| | | isPickingActive.value = false; |
| | | } |
| | | |
| | | function togglePick() { |
| | | if (isPickingActive.value) { |
| | | stopPicking(); |
| | |
| | | isPickingActive.value = true; |
| | | } |
| | | } |
| | | |
| | | watch( |
| | | () => props.playingTime, |
| | | async (newVal, oldVal) => { |
| | |
| | | `.trim(); |
| | | } |
| | | } |
| | | |
| | | function endCalculation() { |
| | | pickedPoints.value.forEach(pointInfo => { |
| | | if (pointInfo.labelEntity) viewer.entities.remove(pointInfo.labelEntity); |
| | |
| | | pickedPoints.value = []; |
| | | EventBus.emit("clear-water-depth"); |
| | | EventBus.emit("clear-water-velocity"); |
| | | |
| | | } |
| | | |
| | | defineExpose({ |
| | | endCalculation, |
| | | stopPicking |
| | | }); |
| | | |
| | | function getFlowRateInfo(lon, lat, time) { |
| | | const params = { |
| | | lon: lon, |
| | |
| | | serviceName: serviceInfo |
| | | }; |
| | | return getFlowRate(params).then(data => { |
| | | // console.log('获取到的数据:', data); |
| | | if (data && data.code === 200) { |
| | | return { |
| | | depth: data.data.depth.toFixed(2), |
| | |
| | | return { depth: 'N/A', velocity: 'N/A' }; |
| | | }); |
| | | } |
| | | |
| | | // 👇 监听 simStore.selectNWJ,当其有值时执行清除操作 |
| | | watch(() => selectNWJ.value, (newVal) => { |
| | | if (newVal != null && newVal !== '') { |
| | | // 👇 有值时自动停止拾取并清除实体 |
| | | if (isPickingActive.value) stopPicking(); |
| | | if (pickedPoints.value.length > 0) endCalculation(); |
| | | console.log(newVal,'asdasdasdads'); |
| | | const { longitude, latitude ,deviceName} = newVal; |
| | | currentInfo.value = { |
| | | longitude, |
| | | latitude, |
| | | serviceInfo: serviceInfo, |
| | | deviceName |
| | | }; |
| | | console.log(currentInfo.value, '这里进行数据的打印'); |
| | | |
| | | isCurrentInfoFromSelectNWJ.value = true; |
| | | |
| | | // 👇 可选:调用一次分析函数来加载数据(根据你的业务需要决定是否启用) |
| | | // getFlowRateInfo(longitude, latitude, currentTime.value).then(...) |
| | | |
| | | } else { |
| | | // 👇 如果 selectNWJ 被清空,恢复手动选择能力 |
| | | isCurrentInfoFromSelectNWJ.value = false; |
| | | } |
| | | }, |
| | | { immediate: true }); |
| | | |
| | | </script> |
| | | <style lang="less" scoped></style> |