From 1f4c981d0076395c70c31f6edd851fb80a83443e Mon Sep 17 00:00:00 2001 From: guonan <guonan201020@163.com> Date: 星期二, 29 四月 2025 16:33:09 +0800 Subject: [PATCH] 添加降雨数据 --- src/store/simAPI.js | 3 + src/views/left/CitySim.vue | 62 ++++++++++++++++++++++-------- 2 files changed, 47 insertions(+), 18 deletions(-) diff --git a/src/store/simAPI.js b/src/store/simAPI.js index ac9de3c..05a135e 100644 --- a/src/store/simAPI.js +++ b/src/store/simAPI.js @@ -71,7 +71,8 @@ prediction: forms.prediction, history: forms.history, mode: forms.mode, - gauges: forms.gauges + gauges: forms.gauges, + rainfalls: forms.rainFallList }) } const res = await createSimData(params) 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