From 55f950b56d94154fab0f807a417df2202aaae499 Mon Sep 17 00:00:00 2001
From: wangjuncheng <1>
Date: 星期一, 14 四月 2025 18:27:25 +0800
Subject: [PATCH] 2

---
 src/views/left/KGSimOption/HistorySimulation.vue |  319 +++++++++++++++++++++++++++--------------------------
 1 files changed, 163 insertions(+), 156 deletions(-)

diff --git a/src/views/left/KGSimOption/HistorySimulation.vue b/src/views/left/KGSimOption/HistorySimulation.vue
index 197a6bd..7a20ee3 100644
--- a/src/views/left/KGSimOption/HistorySimulation.vue
+++ b/src/views/left/KGSimOption/HistorySimulation.vue
@@ -1,209 +1,216 @@
 <template>
     <div class="history-simulation">
-      <div class="left-top">
-        <span>鍘嗗彶妯℃嫙</span>
-        <span class="clickable-text" @click="toggleDetails">{{ isCollapsed ? '灞曞紑' : '鏀惰捣' }}</span>
-      </div>
-      <div class="details" :class="{ hidden: isCollapsed }">
-        <div class="input-group">
-          <div class="input-item">
-            <label>鍘嗗彶闆ㄦ儏:</label>
-            <el-select v-model="rainfallHistory" placeholder="璇烽�夋嫨" popper-class="mySelectStyle">
-              <el-option v-for="item in HistoricalRainData" :key="item.id" :label="item.name" :value="item.id"></el-option>
-            </el-select>
-          </div>
+        <div class="left-top">
+            <span>鍘嗗彶妯℃嫙</span>
+            <span class="clickable-text" @click="toggleDetails">{{ isCollapsed ? '灞曞紑' : '鏀惰捣' }}</span>
         </div>
-        <div class="input-group">
-          <div class="input-item">
-            <label>闄嶉洦鎬婚噺:</label>
-            <el-input v-model="totalRainfall" type="number" placeholder="璇疯緭鍏�"></el-input>
-            <span>mm</span>
-          </div>
-          <div class="input-item">
-            <label>闄嶉洦寮哄害:</label>
-            <el-input v-model="rainfallIntensity" type="number" placeholder="璇疯緭鍏�"></el-input>
-            <span>mm/h</span>
-          </div>
-          <div class="input-item">
-            <label>闄嶉洦鏃堕暱:</label>
-            <el-input v-model="rainfallDuration" type="number" placeholder="璇疯緭鍏�"></el-input>
-            <span>h</span>
-          </div>
+        <div class="details" :class="{ hidden: isCollapsed }">
+            <div class="input-group">
+                <div class="input-item">
+                    <label>鍘嗗彶闆ㄦ儏:</label>
+                    <el-select v-model="rainfallHistory" placeholder="璇烽�夋嫨" popper-class="mySelectStyle">
+                        <el-option v-for="item in HistoricalRainData" :key="item.id" :label="item.name"
+                            :value="item.id"></el-option>
+                    </el-select>
+                </div>
+            </div>
+            <div class="input-group">
+                <div class="input-item">
+                    <label>闄嶉洦鎬婚噺:</label>
+                    <el-input v-model="totalRainfall" type="number" placeholder="璇疯緭鍏�"></el-input>
+                    <span>mm</span>
+                </div>
+                <div class="input-item">
+                    <label>闄嶉洦寮哄害:</label>
+                    <el-input v-model="rainfallIntensity" type="number" placeholder="璇疯緭鍏�"></el-input>
+                    <span>mm/h</span>
+                </div>
+                <div class="input-item">
+                    <label>闄嶉洦鏃堕暱:</label>
+                    <el-input v-model="rainfallDuration" type="number" placeholder="璇疯緭鍏�"></el-input>
+                    <span>h</span>
+                </div>
+            </div>
+            <div>
+                <label>浠跨湡鍙傛暟:</label>
+                <div style="width: 100%; height: 60px; background-color: #fff;"></div>
+            </div>
         </div>
-        <div>
-          <label>浠跨湡鍙傛暟:</label>
-          <div style="width: 100%; height: 60px; background-color: #fff;"></div>
+        <div class="buttons">
+            <el-button type="primary" @click="openSaveDialog">淇濆瓨鏂规</el-button>
+            <el-button type="success" @click="startPlay">寮�濮嬫ā鎷�</el-button>
         </div>
-      </div>
-      <div class="buttons">
-        <el-button type="primary" @click="openSaveDialog">淇濆瓨鏂规</el-button>
-        <el-button type="success" @click="startSimulation">寮�濮嬫ā鎷�</el-button>
-      </div>
-  
-      <!-- 淇濆瓨鏂规瀵硅瘽妗� -->
-      <el-dialog
-        v-model="saveDialogVisible"
-        title="淇濆瓨鏂规"
-        width="50%"
-        :before-close="handleClose"
-        custom-class="custom-dialog"
-      >
-        <div class="dialog-content">
-          <p><strong>鎵�閫夐噸鐐规矡锛�</strong>{{ props.selectedArea }}</p>
-          <p><strong>妯℃嫙绫诲瀷锛�</strong>鍘嗗彶妯℃嫙</p>
-          <p><strong>鍘嗗彶闆ㄦ儏锛�</strong>{{ selectedRainfallName }}</p>
-          <p><strong>闄嶉洦鎬婚噺锛�</strong>{{ totalRainfall }} mm</p>
-          <p><strong>闄嶉洦寮哄害锛�</strong>{{ rainfallIntensity }} mm/h</p>
-          <p><strong>闄嶉洦鏃堕暱锛�</strong>{{ rainfallDuration }} h</p>
-        </div>
-        <template #footer>
-          <span class="dialog-footer">
-            <el-button @click="saveDialogVisible = false">鍙栨秷</el-button>
-            <el-button type="primary" @click="confirmSave">纭畾淇濆瓨</el-button>
-          </span>
-        </template>
-      </el-dialog>
+
+        <!-- 淇濆瓨鏂规瀵硅瘽妗� -->
+        <el-dialog v-model="saveDialogVisible" title="淇濆瓨鏂规" width="50%" :before-close="handleClose"
+            custom-class="custom-dialog">
+            <div class="dialog-content">
+                <p><strong>鎵�閫夐噸鐐规矡锛�</strong>{{ props.selectedArea }}</p>
+                <p><strong>妯℃嫙绫诲瀷锛�</strong>鍘嗗彶妯℃嫙</p>
+                <p><strong>鍘嗗彶闆ㄦ儏锛�</strong>{{ selectedRainfallName }}</p>
+                <p><strong>闄嶉洦鎬婚噺锛�</strong>{{ totalRainfall }} mm</p>
+                <p><strong>闄嶉洦寮哄害锛�</strong>{{ rainfallIntensity }} mm/h</p>
+                <p><strong>闄嶉洦鏃堕暱锛�</strong>{{ rainfallDuration }} h</p>
+            </div>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="saveDialogVisible = false">鍙栨秷</el-button>
+                    <el-button type="primary" @click="confirmSave">纭畾淇濆瓨</el-button>
+                </span>
+            </template>
+        </el-dialog>
     </div>
-  </template>
-  
-  <script setup>
-  import { ref, computed } from 'vue';
-  import { ElMessage } from 'element-plus';
-  
-  // 瀹氫箟 Props
-  const props = defineProps({
+</template>
+
+<script setup>
+import { ref, computed } from 'vue';
+import { ElMessage } from 'element-plus';
+import { initeWaterPrimitiveView } from "@/utils/water";
+
+const emit = defineEmits(["start", "end"]);
+function endPlay() {
+  emit("end");
+}
+
+function startPlay() {
+    initeWaterPrimitiveView();
+    emit("start");
+}
+// 瀹氫箟 Props
+const props = defineProps({
     selectedArea: {
-      type: String,
-      required: true
+        type: String,
+        required: true
     }
-  });
-  
-  // 鏁版嵁缁戝畾
-  const rainfallHistory = ref('2'); // 榛樿閫変腑绗簩椤�
-  const totalRainfall = ref(50); // 闄嶉洦鎬婚噺
-  const rainfallIntensity = ref(70); // 闄嶉洦寮哄害
-  const rainfallDuration = ref(5); // 闄嶉洦鏃堕暱
-  const isCollapsed = ref(false); // 鎺у埗璇︽儏鐨勫睍寮�/鏀惰捣鐘舵��
-  const saveDialogVisible = ref(false); // 鎺у埗淇濆瓨鏂规瀵硅瘽妗嗙殑鏄剧ず鐘舵��
-  
-  // 鍘嗗彶闆ㄦ儏鏁版嵁
-  const HistoricalRainData = [
+});
+
+// 鏁版嵁缁戝畾
+const rainfallHistory = ref('2'); // 榛樿閫変腑绗簩椤�
+const totalRainfall = ref(50); // 闄嶉洦鎬婚噺
+const rainfallIntensity = ref(70); // 闄嶉洦寮哄害
+const rainfallDuration = ref(5); // 闄嶉洦鏃堕暱
+const isCollapsed = ref(false); // 鎺у埗璇︽儏鐨勫睍寮�/鏀惰捣鐘舵��
+const saveDialogVisible = ref(false); // 鎺у埗淇濆瓨鏂规瀵硅瘽妗嗙殑鏄剧ず鐘舵��
+
+// 鍘嗗彶闆ㄦ儏鏁版嵁
+const HistoricalRainData = [
     { id: '1', name: 'XX骞�75mm闄嶉洦' },
     { id: '2', name: 'XX骞�50mm闄嶉洦' },
     { id: '3', name: 'XX骞�75mm闄嶉洦' },
     { id: '4', name: 'XX骞�100mm闄嶉洦' },
     { id: '5', name: '鏂板闄嶉洦鍘嗗彶鏁版嵁' }
-  ];
-  
-  // 鑾峰彇褰撳墠閫変腑鐨勫巻鍙查洦鎯呭悕绉�
-  const selectedRainfallName = computed(() => {
+];
+
+// 鑾峰彇褰撳墠閫変腑鐨勫巻鍙查洦鎯呭悕绉�
+const selectedRainfallName = computed(() => {
     const selected = HistoricalRainData.find(item => item.id === rainfallHistory.value);
     return selected ? selected.name : '';
-  });
-  
-  // 鍒囨崲璇︽儏鏄剧ず
-  const toggleDetails = () => {
+});
+
+// 鍒囨崲璇︽儏鏄剧ず
+const toggleDetails = () => {
     isCollapsed.value = !isCollapsed.value;
-  };
-  
-  // 鎵撳紑淇濆瓨鏂规瀵硅瘽妗�
-  const openSaveDialog = () => {
+};
+
+// 鎵撳紑淇濆瓨鏂规瀵硅瘽妗�
+const openSaveDialog = () => {
     if (!props.selectedArea || !rainfallHistory.value || !totalRainfall.value || !rainfallIntensity.value || !rainfallDuration.value) {
-      ElMessage.warning('璇峰厛濉啓鎵�鏈夊繀濉」');
-      return;
+        ElMessage.warning('璇峰厛濉啓鎵�鏈夊繀濉」');
+        return;
     }
     saveDialogVisible.value = true;
-  };
-  
-  // 鍏抽棴淇濆瓨鏂规瀵硅瘽妗�
-  const handleClose = () => {
+};
+
+// 鍏抽棴淇濆瓨鏂规瀵硅瘽妗�
+const handleClose = () => {
     saveDialogVisible.value = false;
-  };
-  
-  // 纭淇濆瓨
-  const confirmSave = () => {
+};
+
+// 纭淇濆瓨
+const confirmSave = () => {
     console.log('淇濆瓨鏂规鎴愬姛', {
-      鍖哄煙: props.selectedArea,
-      妯℃嫙绫诲瀷: '鍘嗗彶妯℃嫙',
-      鍘嗗彶闆ㄦ儏: selectedRainfallName.value,
-      闄嶉洦鎬婚噺: `${totalRainfall.value} mm`,
-      闄嶉洦寮哄害: `${rainfallIntensity.value} mm/h`,
-      闄嶉洦鏃堕暱: `${rainfallDuration.value} h`
+        鍖哄煙: props.selectedArea,
+        妯℃嫙绫诲瀷: '鍘嗗彶妯℃嫙',
+        鍘嗗彶闆ㄦ儏: selectedRainfallName.value,
+        闄嶉洦鎬婚噺: `${totalRainfall.value} mm`,
+        闄嶉洦寮哄害: `${rainfallIntensity.value} mm/h`,
+        闄嶉洦鏃堕暱: `${rainfallDuration.value} h`
     });
     ElMessage.success('鏂规宸蹭繚瀛�');
     saveDialogVisible.value = false;
-  };
-  
-  // 寮�濮嬫ā鎷�
-  const startSimulation = () => {
+};
+
+// 寮�濮嬫ā鎷�
+const startSimulation = () => {
     console.log('寮�濮嬫ā鎷熸寜閽鐐瑰嚮');
     console.log('褰撳墠閫変腑鐨勫尯鍩燂細', props.selectedArea);
-  };
-  </script>
-  
-  <style scoped>
-  .history-simulation {
+};
+</script>
+
+<style scoped>
+.history-simulation {
     margin-bottom: 20px;
-  }
-  
-  .details {
+}
+
+.details {
     margin-top: 10px;
     transition: height 0.3s ease, opacity 0.3s ease;
     overflow: hidden;
-  }
-  
-  .hidden {
+}
+
+.hidden {
     height: 0;
     opacity: 0;
-  }
-  
-  .buttons {
+}
+
+.buttons {
     margin-top: 20px;
     display: flex;
     gap: 10px;
-  }
-  
-  .input-group {
+}
+
+.input-group {
     display: flex;
     flex-direction: column;
     gap: 10px;
-  }
-  
-  .input-item {
+}
+
+.input-item {
     display: flex;
     align-items: center;
-  }
-  
-  label {
+}
+
+label {
     text-align: left;
     white-space: nowrap;
     margin-right: 10px;
-  }
-  
-  .el-input {
+}
+
+.el-input {
     flex: 4;
-  }
-  
-  span {
+}
+
+span {
     flex: 1;
     text-align: left;
-  }
-  
-  .el-select {
+}
+
+.el-select {
     flex: 4;
     text-align: left;
     margin-bottom: 10px;
-  }
-  
-  .clickable-text {
+}
+
+.clickable-text {
     margin-left: 160px;
     cursor: pointer;
     font-size: 14px;
     color: #61f7d4;
-  }
-  
-  /* 鑷畾涔� Dialog 鐨� z-index */
-  .custom-dialog {
-    z-index: 3000 !important; /* 纭繚瀵硅瘽妗嗚鐩栧叾浠栧厓绱� */
-  }
-  </style>
\ No newline at end of file
+}
+
+/* 鑷畾涔� Dialog 鐨� z-index */
+.custom-dialog {
+    z-index: 3000 !important;
+    /* 纭繚瀵硅瘽妗嗚鐩栧叾浠栧厓绱� */
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3