From d06f7ad0231d5fb029ab8520bf442590d3bab20b Mon Sep 17 00:00:00 2001
From: guonan <guonan201020@163.com>
Date: 星期三, 16 七月 2025 15:29:13 +0800
Subject: [PATCH] 完善监测设备弹窗

---
 src/store/simulation.js |  155 ++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 132 insertions(+), 23 deletions(-)

diff --git a/src/store/simulation.js b/src/store/simulation.js
index cbb2e60..e810802 100644
--- a/src/store/simulation.js
+++ b/src/store/simulation.js
@@ -1,9 +1,29 @@
 // stores/ui.js
 import { defineStore } from 'pinia'
 import { ref } from 'vue'
-
-export const useSimStore = defineStore('ui', () => {
-    // 鎵�鏈塙I鐘舵��
+import { showDeviceDetail } from "@/store";
+export const useSimStore = defineStore('simulation', () => {
+    // 鏂潰鏁版嵁
+    const crossSection = ref([])
+    const openDia = ref(true)
+    // 鍘嗗彶鍥炴斁鍒楄〃
+    const rePlayList = ref([])
+    // 鍖椾含甯傛墍鏈夋潙鐨刢ode
+    const townCodeAll = ref([])
+    // 瀹炴椂妯℃嫙鏈�鏂扮殑layer
+    const layerDate = ref("")
+    // 甯ф暟
+    const frameNum = ref(0)
+    // 鐩綍鏍戦�変腑
+    const userSelectedLayers = ref([])
+    // 闅愭偅鐐瑰垪琛�
+    const DeviceShowSwitch = ref(false)
+    const DangerShowSwitch = ref(false)
+    const DangerPoint = ref([])
+    // 娉ヤ綅璁�
+    const selectNWJ = ref()
+    // 鐩戞祴璁惧鍒楄〃
+    const devices = ref([])
     const navigationShow = ref(true)
     const leftShow = ref(false)
     const rightShow = ref(false)
@@ -20,12 +40,43 @@
     const weatherShow = ref(false)
     const barShow = ref(false)
     const deviceShow = ref(false)
-    const showResultAssess = ref(false)
     const showLayerTree = ref(true)
-    const showDangerAssess = ref(false)
     const schemCard = ref([])
+    const backToHome = ref(false)
+    const selectedScheme = ref(null)
+    // 褰撳墠妯℃嫙缁忕含搴�
+    const currentInfo = ref({})
+    // 鍥句緥
+    const waterLegendData = ref([])
+    // 妯℃嫙浠跨湡鍥句緥
+    const isShowEarth = ref(false)
+    // 闄嶉洦鏁版嵁鍒楄〃
+    const rainFalls = ref()
+    // 闄嶉洦鍗曚綅
+    const intensityUnit = ref()
+    // 鏂规涓嬫按娣辨祦閫熺瓑鏁版嵁
+    let schemWaterInfo = ref([])
+    const setSelectedScheme = (scheme) => {
+        selectedScheme.value = scheme;
 
-    // 鍒濆鍖栨柟娉�
+        try {
+            const parsedData = JSON.parse(scheme.data);
+
+            // 鍙湁褰� rainfalls 鍜� intensityUnit 瀛樺湪涓旈潪绌烘椂鎵嶈祴鍊�
+            if (parsedData.rainfalls && parsedData.intensityUnit) {
+                rainFalls.value = parsedData.rainfalls;
+                intensityUnit.value = parsedData.intensityUnit;
+            } else {
+                console.warn("缂哄皯蹇呰鐨� rainfalls 鎴� intensityUnit 瀛楁");
+            }
+        } catch (error) {
+            console.error("瑙f瀽 scheme.data 鍑洪敊", error);
+        }
+    };
+    const clearSelectedScheme = () => {
+        selectedScheme.value = null
+    }
+
     const init = () => {
         navigationShow.value = true
         leftShow.value = false
@@ -37,29 +88,25 @@
         locationShow.value = false
         tableShow.value = false
         flowShow.value = false
+        backToHome.value = false
         rightRiverShow.value = false
         showPreview.value = false
         deviceShow.value = false
-        showResultAssess.value = false
-        showDangerAssess.value = false
         schemCard.value = []
     }
-    // 鏂规鐩稿叧
+
     const setSchemCard = (data) => {
         schemCard.value = data
     }
 
-    // 娣诲姞鍗曚釜鏂规鏁版嵁
     const addSchemCard = (item) => {
         schemCard.value.unshift(item)
     }
 
-    // 鍒犻櫎鎸囧畾鏂规鏁版嵁
     const removeSchemCardItem = (id) => {
         schemCard.value = schemCard.value.filter(item => item.id !== id)
     }
 
-    // 鏇存柊鎸囧畾鏂规鏁版嵁
     const updateSchemCardItem = (id, newData) => {
         const index = schemCard.value.findIndex(item => item.id === id)
         if (index !== -1) {
@@ -67,32 +114,59 @@
         }
     }
 
+    const flyToHomeView = () => {
+        const view = {
+            destination: {
+                x: -2355432.569004413,
+                y: 4687573.191838412,
+                z: 4098726.315265574,
+            },
+            orientation: {
+                pitch: -0.9541030830183503,
+                roll: 0.00031421159527500464,
+                heading: 6.140424766644804,
+            },
+        };
+        viewer.scene.camera.flyTo(view);
+    }
 
     const startYHGL = () => {
         init()
+        flyToHomeView()
         locationShow.value = true
+        isShowEarth.value = true
+
     }
 
     const startZHJC = () => {
         init()
+        flyToHomeView()
         functionShow.value = true
         deviceShow.value = true
+        isShowEarth.value = true
+
     }
 
     const startMNFZ = () => {
         init()
+        flyToHomeView()
         leftShow.value = true
-        rightRiverShow.value = true
+        isShowEarth.value = false
+
     }
 
     const startMNPG = () => {
         init()
-        // showResultAssess.value = true
-        // showDangerAssess.value = true
+        isShowEarth.value = false
+    }
+
+    const setBackToHome = (value) => {
+        backToHome.value = value
     }
 
     // 瀵艰埅鐐瑰嚮
     const handleNavClick = (index) => {
+        showDeviceDetail.value = false;
         switch (index) {
             case 1:
                 startYHGL()
@@ -108,7 +182,15 @@
                 break
         }
     }
+
+    const updateSelectedLayers = (keys) => {
+        userSelectedLayers.value = keys;
+    }
+
+
+
     return {
+        // UI 鐘舵��
         navigationShow,
         leftShow,
         rightShow,
@@ -125,19 +207,46 @@
         weatherShow,
         barShow,
         deviceShow,
-        showResultAssess,
         showLayerTree,
-        showDangerAssess,
-        handleNavClick,
+        schemCard,
+        backToHome,
+        rainFalls,
+        intensityUnit,
+        DangerPoint,
+        DeviceShowSwitch,
+        DangerShowSwitch,
+        waterLegendData,
+        currentInfo,
+        isShowEarth,
+        userSelectedLayers,
+        devices,
+        frameNum,
+        schemWaterInfo,
+        layerDate,
+        rePlayList,
+        selectNWJ,
+        openDia,
+        crossSection,
+
+        // 鏂规鐩稿叧鏂规硶
+        setSchemCard,
+        addSchemCard,
+        removeSchemCardItem,
+        updateSchemCardItem,
+        setBackToHome,
+
+        // 鉁� 鏆撮湶 selectedScheme 鍙婂叾鏂规硶
+        selectedScheme,          // 鍝嶅簲寮忓紩鐢�
+        setSelectedScheme,      // 鏂规硶
+        clearSelectedScheme,    // 鏂规硶
+
+        // 鎺у埗閫昏緫
         init,
         startYHGL,
         startZHJC,
         startMNFZ,
         startMNPG,
-        schemCard,
-        setSchemCard,
-        addSchemCard,
-        removeSchemCardItem,
-        updateSchemCardItem,
+        handleNavClick,
+        updateSelectedLayers
     }
 })
\ No newline at end of file

--
Gitblit v1.9.3