From a57caa72a54efe9de3fe26a6c36d3e8038267377 Mon Sep 17 00:00:00 2001
From: guonan <guonan201020@163.com>
Date: 星期四, 17 七月 2025 09:09:49 +0800
Subject: [PATCH] 修改x按钮

---
 src/components/monifangzhen/schemeCard.vue |  685 ++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 416 insertions(+), 269 deletions(-)

diff --git a/src/components/monifangzhen/schemeCard.vue b/src/components/monifangzhen/schemeCard.vue
index d43de36..b3d1b9d 100644
--- a/src/components/monifangzhen/schemeCard.vue
+++ b/src/components/monifangzhen/schemeCard.vue
@@ -1,24 +1,47 @@
 <template>
   <div class="listCard">
     <!-- <div>鏂规鏁伴噺: {{ simStore.schemCard.length }}</div> -->
-    <el-card v-for="(item, key) in simStore.schemCard" :key="key" :class="{ selected: selectedId === item.id }"
-    @click="selectScheme(item.id)">
+    <el-card
+      v-if="!schemeInfoShow"
+      v-for="(item, key) in schemeList"
+      :key="key"
+      :class="{ selected: selectedId === item.id }"
+      @click="selectScheme(item.id)"
+    >
       <div>
         <p>鏂规鍚嶇О : {{ item.name }}</p>
         <p>鍒涘缓鏃堕棿 : {{ formatTime(item.createTime) }}</p>
         <p>
           鏂规鐘舵�� :
-          <span style="color: aquamarine">{{ statusText[item.taskStatus] || "鏈煡" }}</span>
+          <span style="color: aquamarine">
+            {{ item.result === "-1" ? "鍑洪敊" : item.result || "鍒涘缓浠跨湡" }}
+          </span>
         </p>
       </div>
       <div class="cardMenu">
         <div style="float: right; margin-top: 3px">
-          <el-button size="small" @click="setSchemClick(item)">鏂规璇︽儏</el-button>
-          <el-button size="small" @click="startPlay(item)">杩涘叆妯℃嫙</el-button>
-          <!--  :disabled="item.taskStatus !== 2" -->
+          <el-button size="small" @click="setSchemClick(item)"
+            >鏂规璇︽儏</el-button
+          >
+          <el-button
+            size="small"
+            v-show="item.type !== 2"
+            @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>
     </el-card>
+    <schemeInfo
+      v-if="schemeInfoShow"
+      :selectedScheme="currentScheme"
+      @back="handleBack"
+    />
+    <flowRateTab v-if="schemeInfoShow"> 123 </flowRateTab>
   </div>
   <Message
     @close="close"
@@ -29,294 +52,415 @@
 </template>
 
 <script setup>
-import { ref } from "vue";
+import { EventBus } from "@/eventBus"; // 寮曞叆浜嬩欢鎬荤嚎
+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";
 import { useSimStore } from "@/store/simulation.js";
+import { SimAPIStore } from "@/store/simAPI";
+import schemeInfo from "@/components/monifangzhen/schemeInfo.vue";
+import flowRateTab from "@/components/monifangzhen/flowRateTab.vue";
+import { ElMessage, ElMessageBox } from "element-plus";
+const emit = defineEmits(["start", "end", "reset", "closeBtn"]);
+import {
+  getSimData,
+  deleteSimData,
+  getSimStart,
+  getSimDataById,
+  getSimresult,
+} from "@/api/trApi.js";
+
+import { getAeraTownCode, getDeviceNWJ } from "@/api/hpApi";
+import { createPoint, removeEntities, clearAllPoints } from "@/utils/map";
+import { deviceDictList, getDictName } from "@/constant/dict.js";
 
 const simStore = useSimStore();
+const simAPIStore = SimAPIStore();
 // 閫変腑鐨勬柟妗� ID
 const selectedId = ref(null);
-
+// 褰撳墠閫変腑鐨勬柟妗堜俊鎭�
+const currentScheme = ref(null);
 // 閫変腑鏂规
 function selectScheme(id) {
   selectedId.value = id;
 }
-simStore.setSchemCard([
-  {
-    area: "瀛欒儭娌�",
-    areaId: "0",
-    createTime: "2025-01-13 19:33:04",
-    datPath: "e:/data/hydro/11011611021801/1878767214615695362",
-    dataType: 2,
-    dataValue: "",
-    depthThreshold: 0,
-    endTime: "2023-08-01 01:59:59",
-    fileCount: 299,
-    fileName: "涓滄睙娌熼洦閲忚0110.xls",
-    hotStart: false,
-    id: "1878767214431145986",
-    name: "闄嶉洦鏁版嵁锛氭埧灞卞尯涓滄睙娌熸暟鎹�",
-    noRainTime: 0,
-    outputPeriod: 600,
-    shpPath: "e:/data/hydro/11011611021801/shp",
-    simulateType: 1,
-    startTime: "2023-07-30 00:00:00",
-    taskId: "1878767214615695362",
-    taskStatus: 2,
-    updateTime: "2025-01-13 19:33:04",
-    userId: "0",
-  },
-  {
-    area: "瀛欒儭娌�",
-    areaId: "0",
-    createTime: "2025-01-10 14:33:49",
-    datPath: "e:/data/hydro/11011611021801/1877604741980196866",
-    dataType: 2,
-    dataValue: "",
-    depthThreshold: 0,
-    endTime: "2023-08-02 01:00:00",
-    fileCount: 450,
-    fileName: "涓滄睙娌熼洦閲忚0110.xls",
-    hotStart: false,
-    id: "1877604741590126594",
-    name: "涓滄睙娌�0729-0801",
-    noRainTime: 0,
-    outputPeriod: 600,
-    shpPath: "e:/data/hydro/11011611021801/shp",
-    simulateType: 1,
-    startTime: "2023-07-29 22:00:00",
-    taskId: "1877604741980196866",
-    taskStatus: 2,
-    updateTime: "2025-01-10 14:33:49",
-    userId: "0",
-  },
-  {
-    area: "瀛欒儭娌�",
-    areaId: "0",
-    createTime: "2024-12-27 12:28:45",
-    datPath: "e:/data/hydro/11011611021801/1872499838538584065",
-    dataType: 2,
-    dataValue: "",
-    depthThreshold: 0,
-    endTime: "2023-08-02 09:00:00",
-    fileCount: 654,
-    fileName: "涓滄睙娌熼洦閲忚0110.xls",
-    hotStart: false,
-    id: "1872499838278537217",
-    name: "鍖椾含甯�731鏆撮洦",
-    noRainTime: 0,
-    outputPeriod: 600,
-    shpPath: "e:/data/hydro/11011611021801/shp",
-    simulateType: 1,
-    startTime: "2023-07-28 20:00:00",
-    taskId: "1872499838538584065",
-    taskStatus: 2,
-    updateTime: "2024-12-27 12:28:45",
-    userId: "0",
-  },
-  {
-    area: "瀛欒儭娌�",
-    areaId: "0",
-    createTime: "2024-12-20 15:00:11",
-    datPath: "e:/data/hydro/11011611021801/1870001233680502786",
-    dataType: 0,
-    dataValue: "",
-    depthThreshold: 0,
-    endTime: "2024-12-20 06:00:00",
-    fileCount: 86,
-    fileName: "",
-    hotStart: false,
-    id: "1870001233646948354",
-    name: "闆ㄥ己30mm",
-    noRainTime: 0,
-    outputPeriod: 300,
-    shpPath: "e:/data/hydro/11011611021801/shp",
-    simulateType: 1,
-    startTime: "2024-12-20 00:00:00",
-    taskId: "1870001233680502786",
-    taskStatus: 2,
-    updateTime: "2024-12-20 15:00:11",
-    userId: "0",
-  },
-  {
-    area: "瀛欒儭娌�",
-    areaId: "0",
-    createTime: "2024-12-19 17:34:34",
-    datPath: "e:/data/hydro/11011611021801/1869677696923045889",
-    dataType: 2,
-    dataValue: "",
-    depthThreshold: 0,
-    endTime: "2023-08-01 03:00:44",
-    fileCount: 388,
-    fileName: "鎴祦鍧濋洦閲忚0068.xls",
-    hotStart: false,
-    id: "1869677696608473090",
-    name: "鎴祦鍧濇暟鎹ā鎷�0729-0731",
-    noRainTime: 0,
-    outputPeriod: 600,
-    shpPath: "e:/data/hydro/11011611021801/shp",
-    simulateType: 1,
-    startTime: "2023-07-29 21:00:13",
-    taskId: "1869677696923045889",
-    taskStatus: 2,
-    updateTime: "2024-12-19 17:34:34",
-    userId: "0",
-  },
-  {
-    area: "瀛欒儭娌�",
-    areaId: "0",
-    createTime: "2024-12-13 15:03:24",
-    datPath: "e:/data/hydro/11011611021801/1867465327392165890",
-    dataType: 2,
-    dataValue: "",
-    depthThreshold: 0,
-    endTime: "2023-07-31 12:00:00",
-    fileCount: 288,
-    fileName: "涓滄睙娌熼洦閲忚0110.xls",
-    hotStart: false,
-    id: "1867465327106953218",
-    name: "涓滄睙娌熸暟鎹ā鎷�0729-0731",
-    noRainTime: 0,
-    outputPeriod: 600,
-    shpPath: "e:/data/hydro/11011611021801/shp",
-    simulateType: 1,
-    startTime: "2023-07-29 12:00:00",
-    taskId: "1867465327392165890",
-    taskStatus: 2,
-    updateTime: "2024-12-13 15:03:24",
-    userId: "0",
-  },
-  {
-    area: "瀛欒儭娌�",
-    areaId: "0",
-    createTime: "2024-11-28 19:01:16",
-    datPath: "e:/data/hydro/11011611021801/1862089369491931138",
-    dataType: 2,
-    dataValue: "",
-    depthThreshold: 0,
-    endTime: "2023-07-31 00:00:00",
-    fileCount: 145,
-    fileName: "涓滄睙娌熼洦閲忚0110.xls",
-    hotStart: false,
-    id: "1862089369462571010",
-    name: "涓滄睙娌熼洦閲�0731",
-    noRainTime: 0,
-    outputPeriod: 600,
-    shpPath: "e:/data/hydro/11011611021801/shp",
-    simulateType: 1,
-    startTime: "2023-07-30 00:00:00",
-    taskId: "1862089369491931138",
-    taskStatus: 2,
-    updateTime: "2024-11-28 19:01:16",
-    userId: "0",
-  },
-  {
-    area: "瀛欒儭娌�",
-    areaId: "0",
-    createTime: "2024-11-28 18:47:45",
-    datPath: "e:/data/hydro/11011611021801/1862085967261270017",
-    dataType: 0,
-    dataValue: "",
-    depthThreshold: 0,
-    endTime: "2024-08-31 00:00:00",
-    fileCount: 145,
-    fileName: "",
-    hotStart: false,
-    id: "1862085967252881410",
-    name: "闆ㄥ己妯℃嫙鏂规0830",
-    noRainTime: 0,
-    outputPeriod: 600,
-    shpPath: "e:/data/hydro/11011611021801/shp",
-    simulateType: 1,
-    startTime: "2024-08-30 00:00:00",
-    taskId: "1862085967261270017",
-    taskStatus: 2,
-    updateTime: "2024-11-28 18:47:45",
-    userId: "0",
-  },
-  {
-    area: "瀛欒儭娌�",
-    areaId: "0",
-    createTime: "2024-11-28 18:39:49",
-    datPath: "e:/data/hydro/11011611021801/1862083971414294529",
-    dataType: 1,
-    dataValue: "",
-    depthThreshold: 0,
-    endTime: "2024-07-31 00:00:00",
-    fileCount: 145,
-    fileName: "",
-    hotStart: false,
-    id: "1862083971003252737",
-    name: "闆ㄩ噺妯℃嫙鏂规0730",
-    noRainTime: 0,
-    outputPeriod: 600,
-    shpPath: "e:/data/hydro/11011611021801/shp",
-    simulateType: 1,
-    startTime: "2024-07-30 00:00:00",
-    taskId: "1862083971414294529",
-    taskStatus: 2,
-    updateTime: "2024-11-28 18:39:49",
-    userId: "0",
-  },
-  {
-    area: "瀛欒儭娌�",
-    areaId: "0",
-    createTime: "2024-11-28 17:26:45",
-    datPath: "e:/data/hydro/11011611021801/1862065584806100994",
-    dataType: 0,
-    dataValue: "",
-    depthThreshold: 0,
-    endTime: "2024-11-28 09:26:17",
-    fileCount: 57,
-    fileName: "",
-    hotStart: false,
-    id: "1862065584743186434",
-    name: "闆ㄥ己妯℃嫙鏂规1128",
-    noRainTime: 0,
-    outputPeriod: 600,
-    shpPath: "e:/data/hydro/11011611021801/shp",
-    simulateType: 1,
-    startTime: "2024-11-28 00:00:00",
-    taskId: "1862065584806100994",
-    taskStatus: 2,
-    updateTime: "2024-11-28 17:26:45",
-    userId: "0",
-  },
-]);
-const statusText = {
-  0: "鏈紑濮�",
-  1: "杩涜涓�",
-  2: "宸插畬鎴�",
-};
+
 function formatTime(time) {
   return dayjs(time).format("YYYY-MM-DD HH:mm:ss");
 }
+
 const messageShow = ref(false);
+
+const schemeInfoShow = ref(false);
+
 const mesData = ref(null);
+
 function setSchemClick(item) {
   mesData.value = item;
   messageShow.value = true;
 }
+
 function close() {
   messageShow.value = false;
 }
-function startPlay(item) {
-  // if (item.taskStatus !== 2) {
-  //   alert("褰撳墠鏂规灏氭湭瀹屾垚锛屾棤娉曡繘鍏ユā鎷燂紒");
-  //   return;
-  // }
-  initeWaterPrimitiveView();
-  emit("start");
+
+// 瀹炴椂妯℃嫙浜斿垎閽熻姹備竴娆$殑瀹氭椂鍣�
+const realTimeSimInterval = ref(null);
+
+const { startSimulate, endSimulate } = inject("simulateActions");
+
+const BJCode = ref([
+  { label: "瀵嗕簯鍖�", value: "110118000000" },
+  { label: "鎴垮北鍖�", value: "110111000000" },
+  { label: "闂ㄥご娌熷尯", value: "110109000000" },
+  { label: "寤跺簡鍖�", value: "110119000000" },
+  { label: "鎬�鏌斿尯", value: "110116000000" },
+  { label: "鏄屽钩鍖�", value: "110114000000" },
+  { label: "骞宠胺鍖�", value: "110117000000" },
+  { label: "娴锋穩鍖�", value: "110108000000" },
+  { label: "鐭虫櫙灞卞尯", value: "110107000000" },
+  { label: "涓板彴鍖�", value: "110106000000" },
+]);
+
+async function startPlay(item) {
+  simStore.openDia = false;
+  clearAllPoints();
+  const areaName = item.areaName;
+
+  let districtCode;
+
+  // 1. 鍒ゆ柇鏄惁鍖呭惈 鈥滃尯鈥�
+  if (!areaName.includes("鍖�")) {
+    console.log(
+      `鏂规涓ā鎷熴��${areaName}銆戜笉鍖呭惈鈥滃尯鈥濓紝浣跨敤榛樿缂栫爜锛氭��鏌斿尯(110116000000)`
+    );
+    districtCode = "110116000000"; // 鎵嬪姩鎸囧畾涓烘��鏌斿尯缂栫爜
+  } else {
+    // 2. 鍦� BJCode 涓煡鎵惧尮閰嶇殑鍖哄煙 value
+    const matchedArea = BJCode.value.find((area) => area.label === areaName);
+
+    if (!matchedArea) {
+      console.warn(`鏈壘鍒� ${areaName} 瀵瑰簲鐨勫尯鍩熺紪鐮乣);
+      return;
+    }
+
+    districtCode = matchedArea.value;
+  }
+
+  // 1. 鑾峰彇涔¢晣鍖哄煙缂栫爜
+  const areaRes = await getAeraTownCode(districtCode);
+  const districtCodes = areaRes.data.map((item) => item.districtCode);
+
+  // 2. 娉ヤ綅璁$被鍨婭D
+  const ids = "1437295811";
+
+  // 3. 骞惰璇锋眰鎵�鏈夎澶囨暟鎹�
+  const requests = districtCodes.map((code) =>
+    getDeviceNWJ(ids, code)
+      .then((res) => res.data?.pageData || []) // 瀹夊叏鎻愬彇 pageData
+      .catch((err) => {
+        console.error(`璇锋眰澶辫触 (code: ${code})`, err);
+        return []; // 鍑洪敊鏃朵篃杩斿洖绌烘暟缁勶紝閬垮厤 Promise.all 涓柇
+      })
+  );
+
+  // 4. 绛夊緟鎵�鏈夎姹傚畬鎴�
+  const allPageDataArrays = await Promise.all(requests);
+
+  // 5. 鍚堝苟浜岀淮鏁扮粍涓轰竴缁存暟缁�
+  const mergedPageData = allPageDataArrays.flat();
+
+  // 6. 濡傛灉涓嶆槸鈥滃尯鈥濓紝鍒欒繃婊ゅ嚭 deviceName 鍖呭惈 "瀛欒儭娌�" 鐨勮澶�
+  const filteredPageData = areaName.includes("鍖�")
+    ? mergedPageData
+    : mergedPageData.filter((device) => device.deviceName.includes("瀛欒儭娌�"));
+
+  // 瀛欒儭娌熻澶囩粡绾害鏄犲皠
+  const deviceMapping = {
+    鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸ご鏍戝簳涓嬩笢娌熸偿浣嶈5007: {
+      lon: 116.598891,
+      lat: 40.554979,
+    },
+    鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸潙涓婂彴瀛愭渤涓滃崡娌熸偿浣嶈5006: {
+      lon: 116.593215,
+      lat: 40.554399,
+    },
+  };
+
+  let displayedData = filteredPageData;
+
+  if (!areaName.includes("鍖�")) {
+    // 娣诲姞 lon 鍜� lan 瀛楁
+    displayedData = filteredPageData.map((device) => {
+      const mapping = deviceMapping[device.deviceName];
+      return {
+        ...device,
+        ...(mapping && { lon: mapping.lon, lat: mapping.lat }), // 濡傛灉 mapping 瀛樺湪锛屾墠娣诲姞
+      };
+    });
+
+    // 娣诲姞棰濆鐨勪袱涓偣浣�
+    const extraPoint1 = {
+      deviceName: "寮矡1",
+      longitude: 116.597836,
+      latitude: 40.564962,
+      // height: 530.14,
+      type: "娉ヤ綅璁�",
+      lon: 116.597836,
+      lat: 40.564962,
+      dictDeviceType: "1437295811",
+      deviceId: "custom_extraPoint1", // 鎵嬪姩鍔犱竴涓敮涓� ID
+    };
+
+    const extraPoint2 = {
+      deviceName: "寮矡2",
+      longitude: 116.591571,
+      latitude: 40.573093,
+      // height: 483.89,
+      type: "娉ヤ綅璁�",
+      lon: 116.591571,
+      lat: 40.573093,
+      dictDeviceType: "1437295811",
+      deviceId: "custom_extraPoint2", // 鎵嬪姩鍔犱竴涓敮涓� ID
+    };
+
+    displayedData = [...displayedData, extraPoint1, extraPoint2];
+    // displayedData = [...displayedData, extraPoint1];
+  }
+
+  console.log(
+    displayedData,
+    areaName.includes("鍖�")
+      ? "鍏ㄩ儴娉ヤ綅璁¤澶囧垪琛�"
+      : "瀛欒儭娌熸偿浣嶈 + 棰濆鐐逛綅鍒楄〃"
+  );
+
+  // 7. 鍒涘缓鐐�
+  displayedData.forEach((item) => {
+    // 鏍规嵁闇�姹傚彲澧炲垹
+    item.type = getDictName(deviceDictList, item.dictDeviceType);
+    item.name = item.deviceName;
+    item.id = item.deviceId;
+    item.className = "device";
+    item.showLabel = true;
+
+    createPoint(item);
+  });
+
+  if (item.status === 2) {
+    ElMessage.warning("褰撳墠鏂规姝e湪鍒嗘瀽涓�,鏃犳硶杩涘叆妯℃嫙锛�");
+    return;
+  }
+
+  if (item.status === 20) {
+    ElMessage.error("褰撳墠鏂规鍒嗘瀽鍑洪敊,璇烽噸鏂版柊寤烘柟妗堬紒");
+    return;
+  }
+
+  // 濡傛灉鏄凡瀹屾垚鐨勬柟妗堬紙status == 10锛�
+  if (item.status === 10) {
+    const flyHeight = item.areaType === 1 ? 100000 : 50000;
+    simStore.setSelectedScheme(item);
+
+    if (item.areaType === 1) {
+      EventBus.emit("select-geom", {
+        geom: item.geom,
+        flyHeight,
+        shouldShowFill: false,
+      });
+    } else {
+      initeWaterPrimitiveView();
+    }
+
+    currentScheme.value = item;
+    schemeInfoShow.value = true;
+    emit("closeBtn", false);
+    startSimulate();
+    return;
+  }
+
+  // 鏂板缓鏂规锛屾病鏈� status 鍜� serviceName 涓� type != 2
+  if (!item.status && !item.serviceName && item.type !== 2) {
+    try {
+      await getSimStart(item.id);
+      const res = await getSimDataById(item.id);
+
+      item.serviceName = res.data[0]?.serviceName || null;
+      simStore.setSelectedScheme(item);
+      ElMessage.warning("褰撳墠鏂规姝e湪鍒嗘瀽涓�,璇风◢鍚庡啀妯℃嫙");
+      getScheme();
+    } catch (e) {
+      console.error("鑾峰彇妯℃嫙鏁版嵁澶辫触锛�", e);
+    }
+    return;
+  }
+
+  // 榛樿鎯呭喌锛氭湁鏈嶅姟鍚嶇О
+  simStore.setSelectedScheme(item);
 }
-const emit = defineEmits(["start", "end"]);
-function endPlay() {
-  emit("end");
+
+// 瀹炴椂妯℃嫙鍘嗗彶鍥炴斁
+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, "瀹炴椂妯℃嫙鍘嗗彶鍥炴斁鍒楄〃");
+      }
+      // 浣跨敤 nextTick 纭繚 DOM 鏇存柊鍚庡啀鎵ц鍚庣画鎿嶄綔
+      nextTick(() => {
+        initeWaterPrimitiveView();
+        startSimulate();
+      });
+    })
+    .catch((error) => {
+      console.log("璇锋眰澶辫触锛�", error);
+      // 閿欒澶勭悊
+    });
 }
-// 鏆撮湶閫変腑鐨� ID 缁欑埗缁勪欢
-defineExpose({
-  getSelectedId: () => selectedId.value,
+
+function handleBack(value) {
+  if (value === false) {
+    schemeInfoShow.value = false;
+  }
+}
+
+const handleHideSchemeInfo = () => {
+  schemeInfoShow.value = false;
+  emit("closeBtn", true);
+};
+
+// 娉ㄥ唽浜嬩欢鐩戝惉鍣�
+EventBus.on("hide-schemeInfo", handleHideSchemeInfo);
+
+const schemeList = ref([]);
+let intervalId = null; // 鐢ㄤ簬瀛樺偍 setInterval 鐨勮繑鍥炲��
+// 鑾峰彇鏂规鍒楄〃
+async function getScheme() {
+  try {
+    const res = await getSimData();
+    schemeList.value = res.data;
+
+    const shouldStop = schemeList.value.every(
+      (item) =>
+        item.result == "鍒涘缓浠跨湡" ||
+        item.result == "瀹屾垚" ||
+        item.result == "-1" ||
+        item.result == "宸插仠姝�" ||
+        item.result == "杩愯涓�"
+    );
+    simAPIStore.shouldPoll = !shouldStop; // 淇敼 Pinia 鐘舵��
+    // 3. 濡傛灉闇�瑕佸仠姝�
+    if (shouldStop) {
+      if (intervalId) {
+        clearInterval(intervalId);
+        intervalId = null;
+        console.log("鍋滄杞");
+      }
+      return;
+    }
+  } catch (error) {
+    console.error("Error fetching data:", error);
+  }
+}
+
+// 鐩戝惉 shouldPoll 鐘舵�佸彉鍖�
+watch(
+  () => simAPIStore.shouldPoll,
+  (isStarted) => {
+    if (isStarted) {
+      getScheme(); // 棣栨绔嬪嵆鑾峰彇涓�娆�
+      intervalId = setInterval(getScheme, 60 * 1000); // 姣忛殧涓�鍒嗛挓鎵ц
+    }
+    // else if (intervalId !== null) {
+    //   clearInterval(intervalId);
+    //   intervalId = null;
+    // }
+  },
+  { immediate: true }
+);
+
+const props = defineProps({
+  deleteSim: Boolean, // 鎺ユ敹鐖剁粍浠朵紶閫掔殑鍑芥暟
+  showAddIns: Boolean,
+});
+
+// 鏂板缓鏂规瀹屾垚涔嬪悗鏂规鍒楄〃闇�瀹炴椂鍒锋柊
+watch(
+  () => props.showAddIns,
+  (newVal) => {
+    if (newVal == false) {
+      getScheme();
+    }
+  }
+);
+// 鍒犻櫎浠跨湡鍒楄〃
+watch(
+  () => props.deleteSim,
+  (newVal) => {
+    if (newVal) {
+      deleteSim();
+      emit("reset");
+    }
+  }
+);
+const deleteSim = () => {
+  // 纭繚鏈夐�変腑鐨勬柟妗�
+  if (!selectedId.value) {
+    ElMessage({
+      type: "warning",
+      message: "璇峰厛閫夋嫨涓�涓柟妗堣繘琛屽垹闄わ紒",
+    });
+    return;
+  }
+  const selectedScheme = schemeList.value.find(
+    (item) => item.id === selectedId.value
+  );
+  const schemeName = selectedScheme ? selectedScheme.name : "鏈煡鏂规";
+  ElMessageBox.confirm(`纭畾瑕佸垹闄ゆ柟妗� "${schemeName}" 鍚�?`, "鍒犻櫎鏂规", {
+    confirmButtonText: "纭畾",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+    .then(() => {
+      deleteSimData(selectedId.value).then((res) => {
+        getScheme();
+      });
+      ElMessage({
+        type: "success",
+        message: `鏂规 "${schemeName}" 鍒犻櫎鎴愬姛`,
+      });
+    })
+    .catch(() => {});
+};
+
+onMounted(() => {
+  getScheme(); // 椤甸潰鍔犺浇鏃剁珛鍗宠幏鍙栨暟鎹�
+});
+
+onUnmounted(() => {
+  EventBus.off("hide-schemeInfo", handleHideSchemeInfo);
+
+  if (intervalId !== null) {
+    clearInterval(intervalId); // 娓呴櫎瀹氭椂鍣�
+    intervalId = null; // 閲嶇疆 intervalId
+  }
 });
 </script>
 
@@ -361,6 +505,7 @@
 .listCard-btn:hover {
   background: url("@/assets/img/left/cardbtnac.png") no-repeat;
 }
+
 .mess {
   position: absolute;
   top: 10%;
@@ -384,7 +529,9 @@
   scale: (1.02);
   border: 1px solid #acf1dd;
 }
+
 .selected {
-  border: 2px solid #acf1dd !important; /* 閫変腑鏃剁殑杈规鏍峰紡 */
+  border: 2px solid #acf1dd !important;
+  /* 閫変腑鏃剁殑杈规鏍峰紡 */
 }
 </style>

--
Gitblit v1.9.3