From 1f4c981d0076395c70c31f6edd851fb80a83443e Mon Sep 17 00:00:00 2001
From: guonan <guonan201020@163.com>
Date: 星期二, 29 四月 2025 16:33:09 +0800
Subject: [PATCH] 添加降雨数据

---
 src/views/left/CitySim.vue |   62 ++++++++++++++++++++++--------
 1 files changed, 45 insertions(+), 17 deletions(-)

diff --git a/src/views/left/CitySim.vue b/src/views/left/CitySim.vue
index c1b755d..ca8286c 100644
--- a/src/views/left/CitySim.vue
+++ b/src/views/left/CitySim.vue
@@ -172,6 +172,7 @@
   intensity: "",
   fileList: [],
   type: 3,
+  rainFallList: [],
 });
 
 const addSimCheme = async () => {
@@ -186,6 +187,7 @@
   forms.duration = "";
   forms.intensity = "";
   forms.fileList = [];
+  forms.rainFallList = [];
 };
 
 // 璁$畻灞炴�э細鑾峰彇涓婁紶鏂囦欢鐨勫悕绉板垪琛�
@@ -223,14 +225,29 @@
 // 瑙f瀽Excel鏂囦欢
 const parseExcel = (data) => {
   const workbook = XLSX.read(data, { type: "array" });
+  console.log(workbook, "wokr");
   const firstSheetName = workbook.SheetNames[0];
   const worksheet = workbook.Sheets[firstSheetName];
-  const jsonData = XLSX.utils.sheet_to_json(worksheet);
+  const jsonData = XLSX.utils.sheet_to_json(worksheet, {
+    raw: false, // 浣跨敤鏍煎紡鍖栧瓧绗︿覆鑰屼笉鏄師濮嬪��
+    dateNF: "yyyy-mm-dd hh:mm:ss", // 鎸囧畾鏃ユ湡鏍煎紡
+  });
+
   processData(jsonData);
+};
+
+const transformKeys = (data) => {
+  return data.map((item) => ({
+    time: item["鏃堕棿"], // "鏃堕棿" 鈫� "time"
+    intensity: item["灏忔椂闆ㄥ己mm/h"], // "灏忔椂闆ㄥ己mm/h" 鈫� "intensity"
+    total: item["绱闆ㄩ噺"], // "绱闆ㄩ噺" 鈫� "total"
+  }));
 };
 
 // 澶勭悊鏁版嵁
 const processData = (data) => {
+  forms.rainFallList = transformKeys(data);
+  console.log(forms.rainFallList, "data");
   if (data.length === 0) return;
 
   const tableColumns = Object.keys(data[0]);
@@ -255,42 +272,53 @@
   forms.rainfall = lastValue; // 鏇存柊闄嶉洦閲�
 };
 
-// 瑙f瀽鏃ユ湡鏃堕棿
+/**
+ * 瑙f瀽鏃ユ湡鏃堕棿瀛楃涓叉垨Excel鏁板瓧鏃ユ湡锛岃繑鍥炴椂闂存埑锛堟绉掓暟锛�
+ * @param {string|number} dateString - 鏃ユ湡瀛楃涓叉垨Excel鏁板瓧鏃ユ湡
+ * @returns {number} 鏃堕棿鎴筹紙姣鏁帮級锛岃В鏋愬け璐ヨ繑鍥� NaN
+ */
 const parseDateTime = (dateString) => {
+  // 1. 澶勭悊 Excel 鏁板瓧鏃ユ湡锛堝 45136.91666666666锛夛紝浣嗘槸姝ゅ鎴戝湪Excel瑙f瀽鏃堕棿鐨勬椂鍊欏凡缁忚浆鎹簡锛屾墍浠ヨ繖涓殏鏃舵棤鐢�
   if (typeof dateString === "number") {
+    // 浣跨敤 XLSX 宸ュ叿瑙f瀽 Excel 鏃ユ湡缂栫爜
     const parsedDate = XLSX.SSF.parse_date_code(dateString);
     if (parsedDate) {
+      // 杞崲涓� JavaScript Date 瀵硅薄骞惰繑鍥炴椂闂存埑
       return new Date(
-        parsedDate.y,
-        parsedDate.m - 1,
-        parsedDate.d,
-        parsedDate.H || 0,
-        parsedDate.M || 0,
-        parsedDate.S || 0
-      ).getTime();
+        parsedDate.y, // 骞�
+        parsedDate.m - 1, // 鏈堬紙Excel 涓� 1-12锛孞S 涓� 0-11锛�
+        parsedDate.d, // 鏃�
+        parsedDate.H || 0, // 鏃讹紙鍙兘涓嶅瓨鍦紝榛樿涓� 0锛�
+        parsedDate.M || 0, // 鍒嗭紙鍙兘涓嶅瓨鍦紝榛樿涓� 0锛�
+        parsedDate.S || 0 // 绉掞紙鍙兘涓嶅瓨鍦紝榛樿涓� 0锛�
+      ).getTime(); // 杩斿洖鏃堕棿鎴�
     }
   }
 
+  // 2. 灏濊瘯鐩存帴瑙f瀽鏃ユ湡瀛楃涓诧紙濡� "2023-07-30T16:00:00"锛夛紝鐜板湪浣跨敤鐨勬槸杩欎釜
   const parsedDate = new Date(dateString);
   if (!isNaN(parsedDate.getTime())) {
-    return parsedDate.getTime();
+    return parsedDate.getTime(); // 杩斿洖鏈夋晥鏃堕棿鎴�
   }
 
-  const parts = dateString.split(/[/\s:]/);
+  // 3. 澶勭悊鑷畾涔夋牸寮忕殑鏃ユ湡瀛楃涓诧紙濡� "2023/07/30 16:00:00"锛�
+  const parts = dateString.split(/[/\s:]/); // 鎸� `/`銆佺┖鏍笺�乣:` 鍒嗗壊
   if (parts.length >= 6) {
-    const year = parseInt(parts[0], 10);
-    const month = parseInt(parts[1], 10) - 1;
-    const day = parseInt(parts[2], 10);
-    const hour = parseInt(parts[3], 10) || 0;
-    const minute = parseInt(parts[4], 10) || 0;
-    const second = parseInt(parts[5], 10) || 0;
+    const year = parseInt(parts[0], 10); // 骞�
+    const month = parseInt(parts[1], 10) - 1; // 鏈堬紙杞崲涓� JS 鐨� 0-11锛�
+    const day = parseInt(parts[2], 10); // 鏃�
+    const hour = parseInt(parts[3], 10) || 0; // 鏃讹紙榛樿 0锛�
+    const minute = parseInt(parts[4], 10) || 0; // 鍒嗭紙榛樿 0锛�
+    const second = parseInt(parts[5], 10) || 0; // 绉掞紙榛樿 0锛�
 
+    // 鏋勯�� Date 瀵硅薄骞惰繑鍥炴椂闂存埑
     const date = new Date(year, month, day, hour, minute, second);
     if (!isNaN(date.getTime())) {
       return date.getTime();
     }
   }
 
+  // 4. 瑙f瀽澶辫触鏃惰鍛婂苟杩斿洖 NaN
   console.warn(`鏃犳硶瑙f瀽鏃ユ湡: ${dateString}`);
   return NaN;
 };

--
Gitblit v1.9.3