From 1119a7837323e052d3e6256cddd3283d919bd959 Mon Sep 17 00:00:00 2001
From: guonan <guonan201020@163.com>
Date: 星期四, 26 六月 2025 15:44:02 +0800
Subject: [PATCH] 提交

---
 src/views/left/KGSimOption/RealTimeSimulation.vue |  121 ++++++++++++++++++++++++++++++++++------
 1 files changed, 103 insertions(+), 18 deletions(-)

diff --git a/src/views/left/KGSimOption/RealTimeSimulation.vue b/src/views/left/KGSimOption/RealTimeSimulation.vue
index 3ca2832..4dc917b 100644
--- a/src/views/left/KGSimOption/RealTimeSimulation.vue
+++ b/src/views/left/KGSimOption/RealTimeSimulation.vue
@@ -73,15 +73,20 @@
   inject,
   reactive,
   onMounted,
+  onUnmounted,
 } from "vue";
 import { ElMessage } from "element-plus";
 import { initeWaterPrimitiveView } from "@/utils/water";
 import { SimAPIStore } from "@/store/simAPI";
+import { useSimStore } from "@/store/simulation.js";
 import { EventBus } from "@/eventBus"; // 寮曞叆浜嬩欢鎬荤嚎
 import { getDeviceInfoSHG, getYLJData } from "@/api/hpApi";
+import { getSimStart, getSimDataById } from "@/api/trApi";
 
 // 鑾峰彇 Store 瀹炰緥
-const simStore = SimAPIStore();
+const simAPIStore = SimAPIStore();
+
+const simStore = useSimStore();
 
 // 琛ㄥ崟鏁版嵁
 const formData = reactive({
@@ -200,12 +205,10 @@
 // 淇濆瓨鏂规
 const saveSim = async () => {
   try {
-    getYLJData("1101160300070101").then((res) => {
-      console.log(res, "resres");
-    });
+    // getYLJData("1101160300070101")
     updateSelectedGauges();
     formData.geom = props.selectedArea;
-    await simStore.addSimCheme(formData);
+    await simAPIStore.addSimCheme(formData);
     resetForm();
     EventBus.emit("close-selectArea");
   } catch (err) {}
@@ -214,24 +217,101 @@
 // 娉ㄥ叆妯℃嫙鎿嶄綔鏂规硶
 const { startSimulate, endSimulate } = inject("simulateActions");
 
+// 瀹炴椂妯℃嫙瀹氭椂鍣�
+let pollingInterval = null;
+
 async function startPlay() {
-  const selectedItems = filteredTableData.value.filter((item) => item.selected);
-  if (selectedItems.length > 0) {
-    console.log(
-      "閫変腑鐨勯」锛�",
-      selectedItems.map((item) => item.name)
-    );
-  } else {
-    console.log("鏈�変腑浠讳綍椤�");
-  }
-  console.log("褰撳墠閫変腑鐨勫尯鍩燂細", props.selectedArea);
   // 寮�濮嬫ā鎷熷墠闇�瑕佸厛淇濆瓨鏂规
+  updateSelectedGauges();
+
   formData.geom = props.selectedArea;
-  await simStore.addSimCheme(formData);
+
+  // 淇濆瓨鏂规
+  const resApi = await simAPIStore.addSimCheme(formData);
+  const schemeId = resApi.data?.data?.id;
+
+  if (!schemeId) {
+    ElMessage.error("鏂规淇濆瓨澶辫触锛屾湭鑾峰彇鍒版湁鏁� ID");
+    return;
+  }
+
   EventBus.emit("close-selectArea");
-  initeWaterPrimitiveView();
-  startSimulate();
+
+  // 鏄剧ず鍔犺浇涓彁绀�
+  const loadingMessage = ElMessage({
+    type: "info",
+    message: "姝e湪鍚姩妯℃嫙...",
+    duration: 0,
+    offset: 80,
+  });
+
+  try {
+    // 璋冪敤姹傝В鍣ㄥ苟鍒濆鍖栨ā鎷�
+    const resStart = await getSimStart(schemeId);
+
+    // 璇锋眰瀹屾垚鍚庡叧闂姞杞芥彁绀�
+    loadingMessage.close();
+
+    if (resStart.code === 200) {
+      const res = await getSimDataById(schemeId);
+      simStore.setSelectedScheme(res.data[0]);
+
+      simStore.layerDate = resStart.data;
+      initeWaterPrimitiveView();
+
+      try {
+        startSimulate(); // 杩欓噷鍙兘浼氭姤閿�
+      } catch (error) {
+        console.error("璋冪敤 startSimulate 鍑洪敊锛�", error);
+      }
+
+      // 寮�濮嬭疆璇换鍔★細姣� 5 鍒嗛挓璋冪敤涓�娆� getSimStart 骞舵洿鏂版柟妗堟暟鎹�
+      startPolling(schemeId);
+    } else {
+      ElMessage.error(resStart.message || "璋冪敤姹傝В鍣ㄥけ璐�");
+    }
+  } catch (error) {
+    loadingMessage.close();
+    ElMessage.error("璇锋眰澶辫触锛�" + (error.message || "鏈煡閿欒"));
+    console.error("璋冪敤 getSimStart 鍑洪敊锛�", error);
+  }
 }
+
+// 鍚姩杞鍑芥暟
+function startPolling(schemeId) {
+  stopPolling(); // 閬垮厤閲嶅鍚姩
+
+  pollingInterval = setInterval(async () => {
+    try {
+      const resStart = await getSimStart(schemeId);
+
+      if (resStart.code === 200) {
+        const res = await getSimDataById(schemeId);
+        simStore.setSelectedScheme(res.data[0]); // 鏇存柊鏂规鏁版嵁
+        simStore.layerDate = resStart.data; // 鏇存柊 layer 鏁版嵁
+
+        console.log("杞鑾峰彇鏈�鏂版暟鎹垚鍔�");
+      } else {
+        console.warn("杞璇锋眰澶辫触锛�", resStart.message);
+      }
+    } catch (error) {
+      console.error("杞璇锋眰寮傚父锛�", error);
+    }
+  }, 5 * 60 * 1000); // 姣� 5 鍒嗛挓鎵ц涓�娆�
+}
+
+// 鍋滄杞鍑芥暟
+function stopPolling() {
+  if (pollingInterval) {
+    clearInterval(pollingInterval);
+    pollingInterval = null;
+    console.log("杞宸插仠姝�");
+  }
+}
+
+EventBus.on("close-time", () => {
+  stopPolling();
+});
 
 const toggleDetails = () => {
   isCollapsed.value = !isCollapsed.value;
@@ -240,6 +320,11 @@
 const futurePredictions = () => {
   console.log("鏈潵棰勬祴鎸夐挳琚偣鍑�");
 };
+
+onUnmounted(() => {
+  EventBus.off("close-time");
+  stopPolling();
+});
 </script>
 
 <style scoped>

--
Gitblit v1.9.3