From f37845dd0a787dd42bf6c72e923433f30fcd8cc3 Mon Sep 17 00:00:00 2001
From: guonan <guonan201020@163.com>
Date: 星期四, 03 七月 2025 15:40:09 +0800
Subject: [PATCH] 实时模拟

---
 src/components/monifangzhen/schemeCard.vue |   86 +++++++++++++++++++++---------------------
 1 files changed, 43 insertions(+), 43 deletions(-)

diff --git a/src/components/monifangzhen/schemeCard.vue b/src/components/monifangzhen/schemeCard.vue
index ec72b32..c8c6c6e 100644
--- a/src/components/monifangzhen/schemeCard.vue
+++ b/src/components/monifangzhen/schemeCard.vue
@@ -29,6 +29,9 @@
             @click="startPlay(item)"
             >杩涘叆妯℃嫙</el-button
           >
+          <el-button size="small" v-show="item.type == 2" @click="rePlay(item)"
+            >鍘嗗彶鍥炴斁</el-button
+          >
           <!--  :disabled="item.status !== 2" -->
         </div>
       </div>
@@ -50,7 +53,15 @@
 
 <script setup>
 import { EventBus } from "@/eventBus"; // 寮曞叆浜嬩欢鎬荤嚎
-import { onMounted, ref, watch, defineEmits, onUnmounted } from "vue";
+import {
+  nextTick,
+  onMounted,
+  ref,
+  watch,
+  defineEmits,
+  onUnmounted,
+  inject,
+} from "vue";
 import dayjs from "dayjs";
 import { initeWaterPrimitiveView } from "@/utils/water";
 import Message from "@/components/tools/Message.vue";
@@ -61,11 +72,11 @@
 import { ElMessage, ElMessageBox } from "element-plus";
 const emit = defineEmits(["start", "end", "reset", "closeBtn"]);
 import {
-  getRegionData,
   getSimData,
   deleteSimData,
   getSimStart,
   getSimDataById,
+  getSimresult,
 } from "@/api/trApi.js";
 
 const simStore = useSimStore();
@@ -101,8 +112,9 @@
 // 瀹炴椂妯℃嫙浜斿垎閽熻姹備竴娆$殑瀹氭椂鍣�
 const realTimeSimInterval = ref(null);
 
+const { startSimulate, endSimulate } = inject("simulateActions");
+
 async function startPlay(item) {
-  console.log(item, "item");
   if (item.status === 2) {
     ElMessage.warning("褰撳墠鏂规姝e湪鍒嗘瀽涓�,鏃犳硶杩涘叆妯℃嫙锛�");
     return;
@@ -131,7 +143,7 @@
     currentScheme.value = item;
     schemeInfoShow.value = true;
     emit("closeBtn", false);
-    emit("start");
+    startSimulate();
     return;
   }
 
@@ -151,47 +163,35 @@
     return;
   }
 
-  // 澶勭悊 type == 2 鐨勬儏鍐碉紙瀹炴椂妯℃嫙锛�
-  if (item.type === 2) {
-    // 娓呴櫎宸叉湁瀹氭椂鍣紝闃叉閲嶅鍚姩
-    if (realTimeSimInterval.value) {
-      clearInterval(realTimeSimInterval.value);
-    }
-
-    // 鍗冲埢鎵ц涓�娆�
-    await executeRealTimeSimulation(item);
-
-    // 姣忛殧 5 鍒嗛挓鎵ц涓�娆�
-    realTimeSimInterval.value = setInterval(() => {
-      executeRealTimeSimulation(item);
-    }, 5 * 60 * 1000); // 5鍒嗛挓
-
-    return;
-  }
-
   // 榛樿鎯呭喌锛氭湁鏈嶅姟鍚嶇О
   simStore.setSelectedScheme(item);
 }
 
-// 灏佽瀹炴椂妯℃嫙鐨勫紓姝ユ搷浣�
-async function executeRealTimeSimulation(item) {
-  try {
-    const ress = await getSimStart(item.id);
-
-    const res = await getSimDataById(item.id);
-
-    item.serviceName = res.data[0]?.serviceName || null;
-    simStore.setSelectedScheme(item);
-    getScheme();
-
-    if (ress.code === 200) {
-      simStore.layerDate = ress.data;
-      initeWaterPrimitiveView();
-      emit("start");
-    }
-  } catch (e) {
-    console.error("瀹炴椂妯℃嫙鑾峰彇妯℃嫙鏁版嵁澶辫触锛�", e);
-  }
+// 瀹炴椂妯℃嫙鍘嗗彶鍥炴斁
+function rePlay(item) {
+  // 褰撳墠閫変腑鐨勬柟妗�
+  simStore.setSelectedScheme(item);
+  // 鎷縤d鍘昏姹俽esults鎺ュ彛锛屽鏋滈暱搴︿笉涓�0锛屽垯鍙互杩涜鍘嗗彶鍥炴斁
+  getSimresult(item.id)
+    .then((res) => {
+      if (res.code == 500) {
+        // 濡傛灉闀垮害涓�0锛屾彁绀虹敤鎴峰苟涓斾笉杩涜鍚庣画鎿嶄綔
+        ElMessage.warning("鎻愮ず锛氭病鏈夊彲鍥炴斁鐨勬暟鎹紒");
+        return; // 闃绘鍚庣画鎿嶄綔
+      } else {
+        simStore.rePlayList = res.data;
+        console.log(simStore.rePlayList, "lisi");
+      }
+      // 浣跨敤 nextTick 纭繚 DOM 鏇存柊鍚庡啀鎵ц鍚庣画鎿嶄綔
+      nextTick(() => {
+        initeWaterPrimitiveView();
+        startSimulate();
+      });
+    })
+    .catch((error) => {
+      console.log("璇锋眰澶辫触锛�", error);
+      // 閿欒澶勭悊
+    });
 }
 
 function handleBack(value) {
@@ -221,10 +221,10 @@
         item.result == "鍒涘缓浠跨湡" ||
         item.result == "瀹屾垚" ||
         item.result == "-1" ||
-        item.result == null
+        item.result == "鍋滄" ||
+        item.result == "杩愯涓�"
     );
     simAPIStore.shouldPoll = !shouldStop; // 淇敼 Pinia 鐘舵��
-    console.log(shouldStop, "aaaaaaaaaaaaaaaa");
     // 3. 濡傛灉闇�瑕佸仠姝�
     if (shouldStop) {
       if (intervalId) {

--
Gitblit v1.9.3