From f1fbe8049ba01186f033037e6ae36d51915c7418 Mon Sep 17 00:00:00 2001
From: guonan <guonan201020@163.com>
Date: 星期二, 20 五月 2025 15:09:59 +0800
Subject: [PATCH] 调用求解器

---
 src/components/monifangzhen/schemeInfo.vue          |   77 ++++++---
 src/api/trApi.js                                    |   78 ++++++---
 src/views/Home.vue                                  |    3 
 src/views/left/KGSimOption/PredictiveSimulation.vue |   34 +++
 src/components/tools/Message.vue                    |   94 ++++++++---
 src/views/left/KGSimOption/HistorySimulation.vue    |   29 +++
 src/views/left/Left.vue                             |   25 ---
 src/views/left/CitySim.vue                          |   38 +++
 src/components/monifangzhen/schemeCard.vue          |   73 ++++++--
 src/views/left/KGSimOption/RealTimeSimulation.vue   |    2 
 10 files changed, 302 insertions(+), 151 deletions(-)

diff --git a/src/api/trApi.js b/src/api/trApi.js
index 7588136..1b9a699 100644
--- a/src/api/trApi.js
+++ b/src/api/trApi.js
@@ -32,6 +32,17 @@
   }
 }
 
+// 鏍规嵁鏂规id鑾峰彇鏂规鍒楄〃
+export async function getSimDataById(id) {
+  try {
+    const res = await instance.get(`/simu/selectPage?id=${id}`);
+    return res.data; // 杩斿洖瀹為檯鏁版嵁锛堥�氬父 res.data 鎵嶆槸鎺ュ彛杩斿洖鐨勫唴瀹癸級
+  } catch (error) {
+    console.error("Error fetching data:", error);
+    throw error; // 鎶涘嚭閿欒锛岃璋冪敤鏂瑰彲浠ユ崟鑾�
+  }
+}
+
 // 鏂板缓浠跨湡鏂规
 export async function createSimData(simData) {
   try {
@@ -57,45 +68,56 @@
     throw error;
   }
 }
+
+// 寮�濮嬫ā鎷�
+export async function getSimStart(ids) {
+  try {
+    const res = await instance.get(`/simu/start?id=${ids}`);
+    return res.data;
+  } catch (error) {
+    console.error("Error deleting simulation data:", error);
+    throw error;
+  }
+}
 // **************************************************************************************************************
 // 瑙f瀽json鑾峰彇娉ョ煶娴佸弬鏁�
 export function parseWaterSimulationData(jsonData) {
   try {
-      const startTime = jsonData.duration.start; // 鐩存帴浣跨敤鍘熷鏃堕棿
-      const endTime = jsonData.duration.end; // 鐩存帴浣跨敤鍘熷鏃堕棿
-      const extension = jsonData.extension;
-      const terrainSizes = jsonData.terrain.size; // 鍒嗚鲸鐜�
-      const waterTimestamps = jsonData.waters.data.map((timestamp) => {
-          return timestamp; // 涓嶈繘琛屾椂闂存牸寮忓寲
-      });
-      return {
-          startTime: startTime, // 鍘熷鏃堕棿
-          endTime: endTime, // 鍘熷鏃堕棿
-          extension: {
-              maxHeight: extension.maxHeight,
-              minHeight: extension.minHeight,
-              maxX: extension.maxx,
-              maxY: extension.maxy,
-              minX: extension.minx,
-              minY: extension.miny,
-          },
-          terrainSizes: terrainSizes,
-          flowUrl: jsonData.flowUrl,
-          waterUrl: jsonData.waterUrl,
-          version: jsonData.version,
-          waterTimestamps: waterTimestamps, // 鍘熷鏃堕棿鏁扮粍
-      };
+    const startTime = jsonData.duration.start; // 鐩存帴浣跨敤鍘熷鏃堕棿
+    const endTime = jsonData.duration.end; // 鐩存帴浣跨敤鍘熷鏃堕棿
+    const extension = jsonData.extension;
+    const terrainSizes = jsonData.terrain.size; // 鍒嗚鲸鐜�
+    const waterTimestamps = jsonData.waters.data.map((timestamp) => {
+      return timestamp; // 涓嶈繘琛屾椂闂存牸寮忓寲
+    });
+    return {
+      startTime: startTime, // 鍘熷鏃堕棿
+      endTime: endTime, // 鍘熷鏃堕棿
+      extension: {
+        maxHeight: extension.maxHeight,
+        minHeight: extension.minHeight,
+        maxX: extension.maxx,
+        maxY: extension.maxy,
+        minX: extension.minx,
+        minY: extension.miny,
+      },
+      terrainSizes: terrainSizes,
+      flowUrl: jsonData.flowUrl,
+      waterUrl: jsonData.waterUrl,
+      version: jsonData.version,
+      waterTimestamps: waterTimestamps, // 鍘熷鏃堕棿鏁扮粍
+    };
   } catch (error) {
-      console.error("瑙f瀽姘存ā鎷熸暟鎹椂鍑洪敊:", error);
-      return null;
+    console.error("瑙f瀽姘存ā鎷熸暟鎹椂鍑洪敊:", error);
+    return null;
   }
 }
 
 // 閫氳繃鎺ュ彛鍘昏姹俲son锛屽皢璇锋眰鐨刯son瑙f瀽鑾峰彇娉ョ煶娴佸弬鏁�
 export async function fetchWaterSimulationData(serviceInfo) {
   try {
-    // const response = await fetch(`/simu/${serviceInfo}/layer.json`); // 鍙戣捣璇锋眰
-    const response = await fetch(`/simu/c2h1dc/layer.json`); // 鍙戣捣璇锋眰
+    const response = await fetch(`/simu/${serviceInfo}/layer.json`); // 鍙戣捣璇锋眰
+    // const response = await fetch(`/simu/c2h1dc/layer.json`); // 鍙戣捣璇锋眰
     if (!response.ok) {
       throw new Error(`HTTP error! status: ${response.status}`);
     }
diff --git a/src/components/monifangzhen/schemeCard.vue b/src/components/monifangzhen/schemeCard.vue
index 413eb16..4c2d825 100644
--- a/src/components/monifangzhen/schemeCard.vue
+++ b/src/components/monifangzhen/schemeCard.vue
@@ -13,9 +13,10 @@
         <p>鍒涘缓鏃堕棿 : {{ formatTime(item.createTime) }}</p>
         <p>
           鏂规鐘舵�� :
-          <span style="color: aquamarine">{{
+          <span style="color: aquamarine">{{ item.result || "鍒涘缓浠跨湡" }}</span>
+          <!-- <span style="color: aquamarine">{{
             statusText[item.status] || "鏈煡"
-          }}</span>
+          }}</span> -->
         </p>
       </div>
       <div class="cardMenu">
@@ -24,7 +25,7 @@
             >鏂规璇︽儏</el-button
           >
           <el-button size="small" @click="startPlay(item)">杩涘叆妯℃嫙</el-button>
-          <!--  :disabled="item.taskStatus !== 2" -->
+          <!--  :disabled="item.status !== 2" -->
         </div>
       </div>
     </el-card>
@@ -52,6 +53,7 @@
 import schemeInfo from "@/components/monifangzhen/schemeInfo.vue";
 import { ElMessage, ElMessageBox } from "element-plus";
 const emit = defineEmits(["start", "end", "reset", "closeBtn"]);
+import { getSimStart, getSimDataById } from "@/api/trApi";
 
 const simStore = useSimStore();
 // 閫変腑鐨勬柟妗� ID
@@ -85,25 +87,41 @@
 }
 
 function startPlay(item) {
-  // if (item.taskStatus !== 2) {
-  //   alert("褰撳墠鏂规灏氭湭瀹屾垚锛屾棤娉曡繘鍏ユā鎷燂紒");
-  //   return;
-  // }
-  // if (!item.serviceName) {
-  //   ElMessage({
-  //     message: "serviceName 涓嶅瓨鍦紝鏃犳硶缁х画锛�",
-  //     type: "warning",
-  //   });
-  //   return; // 闃绘鍚庣画閫昏緫鎵ц
-  // }
-  console.log(item,'iteeeeeeeem');
-  simStore.setSelectedScheme(item);
+  // 鍒嗘瀽涓�
+  if (item.status == 2) {
+    ElMessage.warning("褰撳墠鏂规姝e湪鍒嗘瀽涓�,鏃犳硶杩涘叆妯℃嫙锛�");
+    return;
+  }
+  // 鍑洪敊
+  if (item.status == 20) {
+    ElMessage.error("褰撳墠鏂规鍒嗘瀽鍑洪敊,璇烽噸鏂版柊寤烘柟妗堬紒");
+    return;
+  }
+  // 璋冪敤姹傝В鍣ㄥ苟鎷垮埌鏈�鏂扮敓鎴愮殑serviceName
+  // 鏂板垱寤虹殑鏂规娌℃湁鐘舵�佷互鍙妔erviceName鍒欐墽琛岃皟鐢ㄦ眰瑙e櫒
+  if (!item.status && !item.serviceName) {
+    getSimStart(item.id).then((res) => {
+      getSimDataById(item.id).then((res) => {
+        item.serviceName = res.data[0].serviceName;
+        simStore.setSelectedScheme(item);
+        console.log(item, "鏃犳湇鍔″悕绉�");
+        ElMessage.warning("褰撳墠鏂规姝e湪鍒嗘瀽涓�,璇风◢鍚庡啀妯℃嫙");
+        getScheme();
+      });
+    });
+  } else {
+    simStore.setSelectedScheme(item);
+    console.log("鏈夋湇鍔″悕绉�");
+  }
 
-  currentScheme.value = item;
-  schemeInfoShow.value = true;
-  emit("closeBtn", false);
-  initeWaterPrimitiveView();
-  emit("start");
+  // 姹傝В鍣ㄦ眰瑙e畬鎴愪箣鍚庢墠鍙互鏄剧ず鏃堕棿杞�
+  if (item.status == 10) {
+    initeWaterPrimitiveView();
+    currentScheme.value = item;
+    schemeInfoShow.value = true;
+    emit("closeBtn", false);
+    emit("start");
+  }
 }
 function endPlay() {
   emit("end");
@@ -125,7 +143,15 @@
 import { getRegionData, getSimData, deleteSimData } from "@/api/trApi.js";
 
 onMounted(() => {
-  getScheme();
+  getScheme(); // 椤甸潰鍔犺浇鏃剁珛鍗宠幏鍙栨暟鎹�
+  intervalId = setInterval(getScheme, 60 * 1000); // 姣忛殧涓�鍒嗛挓鎵ц涓�娆�
+});
+
+onUnmounted(() => {
+  if (intervalId !== null) {
+    clearInterval(intervalId); // 娓呴櫎瀹氭椂鍣�
+    intervalId = null; // 閲嶇疆 intervalId
+  }
 });
 
 const props = defineProps({
@@ -133,8 +159,9 @@
   showAddIns: Boolean,
 });
 
-// 鑾峰彇浠跨湡鍒楄〃
 const schemeList = ref([]);
+let intervalId = null; // 鐢ㄤ簬瀛樺偍 setInterval 鐨勮繑鍥炲��
+// 鑾峰彇鏂规鍒楄〃
 async function getScheme() {
   try {
     const res = await getSimData();
diff --git a/src/components/monifangzhen/schemeInfo.vue b/src/components/monifangzhen/schemeInfo.vue
index df5c387..100d392 100644
--- a/src/components/monifangzhen/schemeInfo.vue
+++ b/src/components/monifangzhen/schemeInfo.vue
@@ -1,13 +1,18 @@
 <template>
   <div class="listCard">
-    <div class="top"><span>鏂规璇︽儏</span>
-    </div>
+    <div class="top"><span>鏂规璇︽儏</span></div>
     <div class="details">
       <div v-if="formattedData.length" class="input-group">
-        <div v-for="(item, index) in formattedData" :key="index" class="input-item">
+        <div
+          v-for="(item, index) in formattedData"
+          :key="index"
+          class="input-item"
+        >
           <label>{{ item.name }}</label>
-          <span :class="{ 'clickable': item.isClickable }"
-            @click="item.isClickable ? openGaugeDialog(item.gauges) : null">
+          <span
+            :class="{ clickable: item.isClickable }"
+            @click="item.isClickable ? openGaugeDialog(item.gauges) : null"
+          >
             {{ item.value }}
           </span>
         </div>
@@ -16,14 +21,22 @@
         <p style="text-align: center">鏆傛棤鏂规淇℃伅</p>
       </div>
     </div>
-    <div>
-
-    </div>
+    <div></div>
   </div>
-  <Message @close="close" class="mess" v-show="messageShow" :mesData="mesData" />
+  <Message
+    @close="close"
+    class="mess"
+    v-show="messageShow"
+    :mesData="mesData"
+  />
   <!-- 娣诲姞闆ㄩ噺璁″脊绐� -->
   <div class="dialoog">
-    <el-dialog v-model="dialogVisible" title="闆ㄩ噺璁¤鎯�" width="50%" :before-close="handleClose">
+    <el-dialog
+      v-model="dialogVisible"
+      title="闆ㄩ噺璁¤鎯�"
+      width="50%"
+      :before-close="handleClose"
+    >
       <div class="table-container">
         <el-table :data="gaugesData" border stripe height="100%">
           <el-table-column prop="name" label="鍚嶇О"></el-table-column>
@@ -39,12 +52,17 @@
       </template> -->
     </el-dialog>
   </div>
-
 </template>
 
 <script setup>
 import { defineProps, defineEmits, inject, ref, watch } from "vue";
-import { ElDialog, ElTable, ElTableColumn, ElButton ,ElMessage} from "element-plus";
+import {
+  ElDialog,
+  ElTable,
+  ElTableColumn,
+  ElButton,
+  ElMessage,
+} from "element-plus";
 import dayjs from "dayjs";
 // 鍏叡渚濊禆
 const props = defineProps({ selectedScheme: { type: Object, default: null } });
@@ -54,13 +72,12 @@
 // 鐘舵�佺鐞�
 const formattedData = ref([]);
 
-
 // 鏄犲皠琛�
 const areaTypeMap = {
   0: "鑷畾涔夊尯鍩熶豢鐪�",
   1: "琛屾斂鍖哄垝浠跨湡",
   2: "閲嶇偣鍖哄煙浠跨湡",
-  3: "閲嶇偣娌熶豢鐪�"
+  3: "閲嶇偣娌熶豢鐪�",
 };
 
 const statusMap = {
@@ -68,17 +85,25 @@
   1: "棰勫鐞�",
   2: "鍒嗘瀽涓�",
   10: "瀹屾垚",
-  20: "鍑洪敊"
+  20: "鍑洪敊",
 };
 
 const typeMap = {
   1: "棰勬祴妯℃嫙",
   2: "瀹炴椂妯℃嫙",
-  3: "鍘嗗彶妯℃嫙"
+  3: "鍘嗗彶妯℃嫙",
 };
 
 // 璺宠繃瀛楁鍒楄〃
-const skipKeys = ["geom", "id", "serviceName", "updateTime", "updateUser", "createUser", "bak"];
+const skipKeys = [
+  "geom",
+  "id",
+  "serviceName",
+  "updateTime",
+  "updateUser",
+  "createUser",
+  "bak",
+];
 
 // 澶勭悊 data 瀛楁瑙f瀽
 function parseDataField(dataStr) {
@@ -92,24 +117,24 @@
       intensity: "闄嶉洦寮哄害锛坢m/灏忔椂锛夛細",
       prediction: "闄嶉洦鍦烘锛�",
       model: "闄嶉洦妯″紡锛�",
-      history: "鍘嗗彶闄嶉洦锛�"
+      history: "鍘嗗彶闄嶉洦锛�",
     };
 
     const result = Object.entries(parsed)
       .filter(([k]) => fields[k])
       .map(([k, v]) => ({
         name: fields[k],
-        value: v || "鏃�"
+        value: v || "鏃�",
       }));
 
     // 澶勭悊闆ㄩ噺璁℃暟鎹�
-    if (parsed.gauges && Array.isArray(parsed.gauges)) {
-      const gaugeNames = parsed.gauges.map(g => g.name).join(", ") || "鏃�";
+    if (parsed.type == 2 && parsed.gauges && Array.isArray(parsed.gauges)) {
+      const gaugeNames = parsed.gauges.map((g) => g.name).join(", ") || "鏃�";
       result.push({
         name: "闆ㄩ噺璁″垪琛細",
-        value: '鏌ョ湅闆ㄩ噺璁″垪琛�',
+        value: "鏌ョ湅闆ㄩ噺璁″垪琛�",
         isClickable: true,
-        gauges: parsed.gauges
+        gauges: parsed.gauges,
       });
     }
 
@@ -136,7 +161,7 @@
     const entries = Object.entries(newScheme);
     const areaType = newScheme.areaType;
 
-    console.log(newScheme, 'news');
+    // console.log(newScheme, "news");
 
     const result = entries.reduce((acc, [key, value]) => {
       if (skipKeys.includes(key)) return acc;
@@ -185,11 +210,11 @@
 // 鎵撳紑闆ㄩ噺璁″脊绐�
 function openGaugeDialog(gauges) {
   if (Array.isArray(gauges) && gauges.length > 0) {
-    gaugesData.value = gauges.map(g => ({
+    gaugesData.value = gauges.map((g) => ({
       name: g.name || "鏈煡",
       x: g.x != null ? g.x.toFixed(2) : "-",
       y: g.y != null ? g.y.toFixed(2) : "-",
-      r: g.r || "-"
+      r: g.r || "-",
     }));
     dialogVisible.value = true;
   } else {
diff --git a/src/components/tools/Message.vue b/src/components/tools/Message.vue
index 43fad94..5fa5261 100644
--- a/src/components/tools/Message.vue
+++ b/src/components/tools/Message.vue
@@ -5,17 +5,27 @@
     <div class="message-context">
       <div v-for="(item, key) in messageList" :key="key" class="message-item">
         <div class="message-name">{{ item.name }}</div>
-        <div class="message-value" v-if="!(item.name.includes('闆ㄩ噺璁″垪琛�'))">
+        <div class="message-value" v-if="!item.name.includes('闆ㄩ噺璁″垪琛�')">
           {{ item.value }}
         </div>
-        <div v-if="item.name.includes('闆ㄩ噺璁″垪琛�')" @click="openDialog" 
-          style="color: #5bc0de; cursor: pointer;">
+        <div
+          v-if="item.name.includes('闆ㄩ噺璁″垪琛�')"
+          @click="openDialog"
+          style="color: #5bc0de; cursor: pointer"
+        >
           鏌ョ湅闆ㄩ噺璁″垪琛�
         </div>
       </div>
     </div>
-    <el-dialog title="闆ㄩ噺璁¤鎯�" v-model="dialogVisible" :width="'60%'" :before-close="handleClose"
-      style="background-color: rgb(5,75,69);">
+
+    <!-- 闆ㄩ噺璁″脊绐� -->
+    <el-dialog
+      title="闆ㄩ噺璁¤鎯�"
+      v-model="dialogVisible"
+      width="60%"
+      :before-close="handleClose"
+      style="background-color: rgb(5, 75, 69)"
+    >
       <div class="table-container">
         <el-table :data="gaugesData" border stripe height="100%">
           <el-table-column prop="name" label="鍚嶇О"></el-table-column>
@@ -24,11 +34,6 @@
           <el-table-column prop="r" label="鍗婂緞(r)"></el-table-column>
         </el-table>
       </div>
-      <!-- <template #footer>
-        <span class="dialog-footer">
-          <el-button @click="dialogVisible = false">鍏� 闂�</el-button>
-        </span>
-      </template> -->
     </el-dialog>
   </div>
 </template>
@@ -54,12 +59,11 @@
 function openDialog() {
   if (gaugesData.value.length > 0) {
     dialogVisible.value = true;
-  }else {
+  } else {
     ElMessage({
       message: "鏈壘鍒伴洦閲忚鏁版嵁锛�",
       type: "warning",
     });
-    return; // 闃绘鍚庣画閫昏緫鎵ц
   }
 }
 
@@ -79,10 +83,25 @@
     }
 
     const formattedData = [];
-    const areaType = newMesData.areaType !== undefined ? newMesData.areaType : null;
+    const areaType =
+      newMesData.areaType !== undefined ? newMesData.areaType : null;
+
+    // 鑾峰彇褰撳墠鐨� type 鍊�
+    const currentType = newMesData.type;
 
     for (const [key, value] of Object.entries(newMesData)) {
-      if (["geom", "id", "serviceName", "updateTime", "updateUser", "createUser", "bak"].includes(key)) continue;
+      if (
+        [
+          "geom",
+          "id",
+          "serviceName",
+          "updateTime",
+          "updateUser",
+          "createUser",
+          "bak",
+        ].includes(key)
+      )
+        continue;
 
       if (key === "createTime" && typeof value === "number") {
         formattedData.push({ name: "鍒涘缓鏃堕棿锛�", value: formatDate(value) });
@@ -96,7 +115,10 @@
           2: "閲嶇偣鍖哄煙浠跨湡",
           3: "閲嶇偣娌熶豢鐪�",
         };
-        formattedData.push({ name: "鍖哄煙绫诲埆锛�", value: areaTypeMap[value] || "鏈煡" });
+        formattedData.push({
+          name: "鍖哄煙绫诲埆锛�",
+          value: areaTypeMap[value] || "鏈煡",
+        });
         continue;
       }
 
@@ -108,14 +130,20 @@
           10: "瀹屾垚",
           20: "鍑洪敊",
         };
-        formattedData.push({ name: "浠跨湡鐘舵�侊細", value: statusMap[value] || "鏈煡" });
+        formattedData.push({
+          name: "浠跨湡鐘舵�侊細",
+          value: statusMap[value] || "鏈煡",
+        });
         continue;
       }
 
       if (key === "type") {
         if (![1, 2].includes(areaType)) {
           const typeMap = { 1: "棰勬祴妯℃嫙", 2: "瀹炴椂妯℃嫙", 3: "鍘嗗彶妯℃嫙" };
-          formattedData.push({ name: "妯℃嫙绫诲埆锛�", value: typeMap[value] || "鏈煡" });
+          formattedData.push({
+            name: "妯℃嫙绫诲埆锛�",
+            value: typeMap[value] || "鏈煡",
+          });
         }
         continue;
       }
@@ -138,11 +166,14 @@
       if (key === "data" && typeof value === "string") {
         try {
           const parsedData = JSON.parse(value);
-          console.log('Parsed Data:', parsedData);
+
           // 澶勭悊 data 涓殑鍚勪釜瀛楁
           const addField = (fieldKey, label) => {
             if (parsedData[fieldKey] !== undefined) {
-              formattedData.push({ name: `${label}锛歚, value: parsedData[fieldKey] || "鏃�" });
+              formattedData.push({
+                name: `${label}锛歚,
+                value: parsedData[fieldKey] || "鏃�",
+              });
             }
           };
 
@@ -153,8 +184,12 @@
           addField("model", "闄嶉洦妯″紡");
           addField("history", "鍘嗗彶闄嶉洦");
 
-          // 澶勭悊闆ㄩ噺璁℃暟鎹�
-          if (parsedData.gauges && Array.isArray(parsedData.gauges)) {
+          // 鍒ゆ柇 type 鏄惁涓� 2锛屽喅瀹氭槸鍚︽坊鍔犻洦閲忚淇℃伅
+          if (
+            currentType == 2 &&
+            parsedData.gauges &&
+            Array.isArray(parsedData.gauges)
+          ) {
             gaugesData.value = parsedData.gauges.map((gauge) => ({
               name: gauge.name || "鏈煡",
               x: gauge.x != null ? gauge.x.toFixed(2) : "-",
@@ -162,8 +197,11 @@
               r: gauge.r || "-",
             }));
 
-            const gaugeNames = gaugesData.value.map(g => g.name).join(", ");
-            formattedData.push({ name: "闆ㄩ噺璁″垪琛細", value: gaugeNames || "鏃�" });
+            const gaugeNames = gaugesData.value.map((g) => g.name).join(", ");
+            formattedData.push({
+              name: "闆ㄩ噺璁″垪琛細",
+              value: gaugeNames || "鏃�",
+            });
           }
         } catch (e) {
           formattedData.push({ name: "鏁版嵁锛�", value: value || "鏃�" });
@@ -175,8 +213,6 @@
     }
 
     messageList.value = formattedData;
-    console.log(messageList.value, 'wwwwwwwwwwwwwwwwwwwwwwwwwwwwww');
-
   },
   { immediate: true }
 );
@@ -264,8 +300,8 @@
   max-width: 200px;
 }
 .table-container {
-  max-height: 500px;  // 鎺у埗鏈�澶ч珮搴︼紝瓒呰繃鍒欏嚭鐜版粴鍔ㄦ潯
-  overflow-y: auto;   // 鍨傜洿婊氬姩
+  max-height: 500px;
+  overflow-y: auto;
   padding: 10px;
   border-radius: 4px;
 }
@@ -274,7 +310,7 @@
   padding-top: 10px;
   padding-bottom: 10px;
 }
-/deep/.el-dialog__title{
+/deep/.el-dialog__title {
   color: #fff !important;
 }
 .table-container .el-table {
@@ -282,4 +318,4 @@
   border-radius: 4px;
   box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/src/views/Home.vue b/src/views/Home.vue
index 0c755e4..cc0b587 100644
--- a/src/views/Home.vue
+++ b/src/views/Home.vue
@@ -59,7 +59,6 @@
 // import DangerAssess from "@/components/monifangzhen/DangerAssess.vue";
 import { showDeviceDetail } from "@/store";
 import { setupTokenRefresh, getDangerPoint } from "@/api/hpApi.js";
-import { getSimData, fetchWaterSimulationData } from "@/api/trApi.js";
 import { convertToWKT } from "@/utils/wktUtils";
 
 const route = useRoute();
@@ -103,7 +102,7 @@
 
 onMounted(async () => {
   setupTokenRefresh(); // 鑾峰彇瀹忓浘token
-  getSimData(); //娴嬭瘯tr鍚庣
+  // getSimData(); //娴嬭瘯tr鍚庣
   // 鑾峰彇闅愭偅鐐瑰垪琛紙鍥犱负涓杞悗绔帴鍙h幏鍙栧姞杞芥椂闂磋緝闀匡級
   getDangerPoint().then((res) => {
     simStore.DangerPoint = res.data.pageData;
diff --git a/src/views/left/CitySim.vue b/src/views/left/CitySim.vue
index cdc0e91..dd8bf81 100644
--- a/src/views/left/CitySim.vue
+++ b/src/views/left/CitySim.vue
@@ -145,7 +145,7 @@
       </el-form>
       <div style="display: flex; justify-content: flex-end">
         <el-button type="primary" @click="addSimCheme">淇濆瓨鏂规</el-button>
-        <el-button type="success" @click="startPlay">寮�濮嬫ā鎷�</el-button>
+        <el-button type="success" @click="startPlay">淇濆瓨骞跺紑濮嬫ā鎷�</el-button>
       </div>
     </div>
   </div>
@@ -158,7 +158,8 @@
 import { ElMessage, ElMessageBox } from "element-plus";
 import { initeWaterPrimitiveView } from "@/utils/water";
 import { SimAPIStore } from "@/store/simAPI";
-import { getRegionData } from "@/api/trApi";
+import { getRegionData, getSimStart, getSimDataById } from "@/api/trApi";
+
 import { storeToRefs } from "pinia";
 import dayjs from "dayjs";
 import { EventBus } from "@/eventBus"; // 寮曞叆浜嬩欢鎬荤嚎
@@ -472,11 +473,34 @@
 
 // 寮�濮嬫ā鎷�
 async function startPlay() {
-  // 寮�濮嬫ā鎷熷墠闇�瑕佸厛淇濆瓨鏂规
-  await simStore.addSimCheme(forms);
-  EventBus.emit("close-selectArea");
-  initeWaterPrimitiveView();
-  startSimulate();
+  try {
+    // 淇濆瓨鏂规
+    const res = await simStore.addSimCheme(forms);
+    const schemeId = res.data?.data?.id;
+
+    if (!schemeId) {
+      ElMessage.error("鏂规淇濆瓨澶辫触锛屾湭鑾峰彇鍒版湁鏁� ID");
+      return;
+    }
+
+    // 璋冪敤姹傝В鍣�
+    const simStartRes = await getSimStart(schemeId);
+    console.log(simStartRes, "getSimStart 杩斿洖缁撴灉");
+
+    // 鍏抽棴閫夋嫨鍖哄煙绐楀彛銆佸垵濮嬪寲瑙嗗浘骞跺紑濮嬫ā鎷�
+    EventBus.emit("close-selectArea");
+    // 鏆傛椂涓嶅湪姝ゅ寮�濮嬫ā鎷燂紝妯℃嫙閮藉湪鏂规鍒楄〃涓繘琛屾ā鎷�
+    // initeWaterPrimitiveView();
+    // startSimulate();
+
+    ElMessage.warning({
+      message: "璇疯繑鍥炴柟妗堝垪琛ㄥ紑濮嬫ā鎷燂紒",
+      duration: 10000, // 鎻愮ず妗嗘樉绀烘椂闀匡紝鍗曚綅涓烘绉掞紝榛樿鏄�3000姣
+    });
+  } catch (error) {
+    console.error("鍚姩妯℃嫙杩囩▼涓彂鐢熼敊璇細", error);
+    ElMessage.error("鍚姩妯℃嫙澶辫触锛岃绋嶅悗鍐嶈瘯");
+  }
 }
 </script>
 
diff --git a/src/views/left/KGSimOption/HistorySimulation.vue b/src/views/left/KGSimOption/HistorySimulation.vue
index 2e0d2b9..71f022b 100644
--- a/src/views/left/KGSimOption/HistorySimulation.vue
+++ b/src/views/left/KGSimOption/HistorySimulation.vue
@@ -175,13 +175,32 @@
 async function startPlay() {
   try {
     formData.geom = props.selectedArea;
-    await simStore.addSimCheme(formData);
+    // 淇濆瓨鏂规
+    const res = await simStore.addSimCheme(formData);
+    const schemeId = res.data?.data?.id;
+
+    if (!schemeId) {
+      ElMessage.error("鏂规淇濆瓨澶辫触锛屾湭鑾峰彇鍒版湁鏁� ID");
+      return;
+    }
+
+    // 璋冪敤姹傝В鍣�
+    const simStartRes = await getSimStart(schemeId);
+    console.log(simStartRes, "getSimStart 杩斿洖缁撴灉");
+
+    // 鍏抽棴閫夋嫨鍖哄煙绐楀彛銆佸垵濮嬪寲瑙嗗浘骞跺紑濮嬫ā鎷�
     EventBus.emit("close-selectArea");
-    initeWaterPrimitiveView();
-    startSimulate();
-    ElMessage.success("妯℃嫙寮�濮�");
+    // 鏆傛椂涓嶅湪姝ゅ寮�濮嬫ā鎷燂紝妯℃嫙閮藉湪鏂规鍒楄〃涓繘琛屾ā鎷�
+    // initeWaterPrimitiveView();
+    // startSimulate();
+
+    ElMessage.warning({
+      message: "璇疯繑鍥炴柟妗堝垪琛ㄥ紑濮嬫ā鎷燂紒",
+      duration: 10000, // 鎻愮ず妗嗘樉绀烘椂闀匡紝鍗曚綅涓烘绉掞紝榛樿鏄�3000姣
+    });
+
   } catch (error) {
-    ElMessage.error("妯℃嫙鍚姩澶辫触");
+    ElMessage.error("鍚姩妯℃嫙澶辫触锛岃绋嶅悗鍐嶈瘯");
   }
 }
 </script>
diff --git a/src/views/left/KGSimOption/PredictiveSimulation.vue b/src/views/left/KGSimOption/PredictiveSimulation.vue
index 1f1eed4..9ef983d 100644
--- a/src/views/left/KGSimOption/PredictiveSimulation.vue
+++ b/src/views/left/KGSimOption/PredictiveSimulation.vue
@@ -259,11 +259,35 @@
 
 // 寮�濮嬫ā鎷�
 async function startPlay() {
-  forms.geom = props.selectedArea;
-  await simStore.addSimCheme(forms);
-  EventBus.emit("close-selectArea");
-  initeWaterPrimitiveView();
-  startSimulate();
+  try {
+    formData.geom = props.selectedArea;
+    // 淇濆瓨鏂规
+    const res = await simStore.addSimCheme(forms);
+    const schemeId = res.data?.data?.id;
+
+    if (!schemeId) {
+      ElMessage.error("鏂规淇濆瓨澶辫触锛屾湭鑾峰彇鍒版湁鏁� ID");
+      return;
+    }
+
+    // 璋冪敤姹傝В鍣�
+    const simStartRes = await getSimStart(schemeId);
+    console.log(simStartRes, "getSimStart 杩斿洖缁撴灉");
+
+    // 鍏抽棴閫夋嫨鍖哄煙绐楀彛銆佸垵濮嬪寲瑙嗗浘骞跺紑濮嬫ā鎷�
+    EventBus.emit("close-selectArea");
+    // 鏆傛椂涓嶅湪姝ゅ寮�濮嬫ā鎷燂紝妯℃嫙閮藉湪鏂规鍒楄〃涓繘琛屾ā鎷�
+    // initeWaterPrimitiveView();
+    // startSimulate();
+
+    ElMessage.warning({
+      message: "璇疯繑鍥炴柟妗堝垪琛ㄥ紑濮嬫ā鎷燂紒",
+      duration: 10000, // 鎻愮ず妗嗘樉绀烘椂闀匡紝鍗曚綅涓烘绉掞紝榛樿鏄�3000姣
+    });
+
+  } catch (error) {
+    ElMessage.error("鍚姩妯℃嫙澶辫触锛岃绋嶅悗鍐嶈瘯");
+  }
 }
 
 // 鎵撳紑鏂规
diff --git a/src/views/left/KGSimOption/RealTimeSimulation.vue b/src/views/left/KGSimOption/RealTimeSimulation.vue
index 217790c..d3192ae 100644
--- a/src/views/left/KGSimOption/RealTimeSimulation.vue
+++ b/src/views/left/KGSimOption/RealTimeSimulation.vue
@@ -188,7 +188,7 @@
     .filter((item) => item.selected)
     .map((item) => ({
       id: item.deviceCode,
-      deviceName: item.deviceName,
+      name: item.deviceName,
       x: item.longitude,
       y: item.latitude,
       r: 10000,
diff --git a/src/views/left/Left.vue b/src/views/left/Left.vue
index 20a3514..d4d97dd 100644
--- a/src/views/left/Left.vue
+++ b/src/views/left/Left.vue
@@ -401,31 +401,6 @@
 }
 const schemeCardRef = ref(null);
 
-// function deleteSelectedScheme() {
-//   const selectedId = schemeCardRef.value.getSelectedId();
-//   const selectedScheme = simStore.schemCard.find(
-//     (item) => item.id === selectedId
-//   );
-//   if (!selectedId) {
-//     ElMessage.warning("璇峰厛閫夋嫨涓�涓柟妗堬紒");
-//     return;
-//   }
-//   ElMessageBox.confirm(
-//     `纭畾瑕佸垹闄�  "${selectedScheme.name}" 鏂规鍚楋紵`,
-//     "鍒犻櫎纭",
-//     {
-//       confirmButtonText: "纭畾",
-//       cancelButtonText: "鍙栨秷",
-//       type: "warning",
-//     }
-//   )
-//     .then(() => {
-//       simStore.removeSchemCardItem(selectedId);
-//       ElMessage.success(`鏂规 "${selectedScheme.name}" 鍒犻櫎鎴愬姛锛乣);
-//     })
-//     .catch(() => { });
-// }
-
 function start(form) {
   emits("start", form);
 }

--
Gitblit v1.9.3