From e2794b610f6066b20002a202f15038b4e7f5a638 Mon Sep 17 00:00:00 2001 From: guonan <guonan201020@163.com> Date: 星期三, 07 五月 2025 09:54:03 +0800 Subject: [PATCH] 存储上传文件单位以及上传文件内容中时间按顺序排列 --- src/views/GisView.vue | 4 - src/store/simAPI.js | 13 ++- src/views/mnfz.vue | 86 +++++++++++++++++++++ src/views/left/CitySim.vue | 112 ++++++++++++++++++++++++--- 4 files changed, 191 insertions(+), 24 deletions(-) diff --git a/src/store/simAPI.js b/src/store/simAPI.js index 35f8c4d..e945bf1 100644 --- a/src/store/simAPI.js +++ b/src/store/simAPI.js @@ -47,7 +47,6 @@ // 淇濆瓨鏂规閫昏緫 const saveScheme = async (forms) => { - // forms.hours = dayjs(val[0]).format("YYYY-MM-DD HH:mm:ss"); if (isLoading.value) { ElMessage.warning('姝e湪淇濆瓨锛岃绋嶅��...') return @@ -76,13 +75,14 @@ history: forms.history, mode: forms.mode, gauges: forms.gauges, - rainfalls: forms.rainFallList + rainfalls: forms.rainFallList, + intensityUnit: forms.intensityUnit }) } console.log(params) - // const res = await createSimData(params) + const res = await createSimData(params) ElMessage.success('鏂规淇濆瓨鎴愬姛') - // return res + return res } catch (error) { console.error('淇濆瓨澶辫触:', error) ElMessage.error('淇濆瓨澶辫触: ' + (error.message || '璇风◢鍚庨噸璇�')) @@ -94,7 +94,9 @@ // 淇濆瓨鏂规寮圭獥 const addSimCheme = async (forms) => { - if (!validateForm(forms)) return + if (!validateForm(forms)) { + throw new Error('琛ㄥ崟楠岃瘉鏈�氳繃'); // 鎶涘嚭閿欒锛岄樆姝㈢户缁墽琛� + } try { await ElMessageBox.confirm('纭畾瑕佷繚瀛樺綋鍓嶆柟妗堝悧?', '鏂板缓鏂规', { @@ -110,6 +112,7 @@ } else { ElMessage.info('宸插彇娑堜繚瀛�') } + throw error // 淇濊瘉澶栭儴鑳芥崟鑾峰埌閿欒 } } diff --git a/src/views/GisView.vue b/src/views/GisView.vue index 0e069fc..74544da 100644 --- a/src/views/GisView.vue +++ b/src/views/GisView.vue @@ -162,10 +162,6 @@ }, }); - console.log( - flyToHeight.value, - "flyToHeight.value flyToHeight.value flyToHeight.value " - ); } EventBus.on("close-selectArea", () => { diff --git a/src/views/left/CitySim.vue b/src/views/left/CitySim.vue index f4d08b5..e40b495 100644 --- a/src/views/left/CitySim.vue +++ b/src/views/left/CitySim.vue @@ -36,6 +36,20 @@ <template #append>mm/h</template> </el-upload> </el-form-item> + <el-form-item label="闆ㄥ己鍗曚綅" v-if="forms.fileList.length !== 0"> + <el-select + v-model="forms.intensityUnit" + placeholder="Select" + style="max-width: 600px" + > + <el-option + v-for="item in intensityOptions" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> <el-form-item label="琛屾斂鍖哄煙:" v-if="simStore.selectTab == '琛屾斂鍖哄垝浠跨湡'" @@ -149,6 +163,11 @@ const options = reactive([]); +const intensityOptions = ref([ + { value: "mm/h", label: "mm/h" }, + { value: "mm/5min", label: "mm/5min" }, +]); + // 瀹氫箟涓�涓柟娉曪紝鐢ㄤ簬鏍规嵁 type 鑾峰彇鍖哄煙鏁版嵁 const fetchRegionData = (type) => { getRegionData({ type: type }).then((res) => { @@ -197,6 +216,7 @@ type: 3, rainFallList: [], hours: null, + intensityUnit: "", }); const flyHeight = ref(100000); @@ -218,13 +238,16 @@ }; const addSimCheme = async () => { - await simStore.addSimCheme(forms); - resetForm(); - EventBus.emit("close-selectArea"); + try { + await simStore.addSimCheme(forms); + resetForm(); // 鍙湁鍦ㄤ繚瀛樻垚鍔熷悗鎵嶉噸缃〃鍗� + EventBus.emit("close-selectArea"); + } catch (error) {} }; // 閲嶇疆琛ㄥ崟 const resetForm = () => { + forms.name = ""; forms.geom = ""; forms.rainfall = null; forms.duration = null; @@ -232,6 +255,7 @@ forms.fileList = []; forms.rainFallList = []; forms.hours = null; + forms.intensityUnit = ""; }; // 璁$畻灞炴�э細鑾峰彇涓婁紶鏂囦欢鐨勫悕绉板垪琛� @@ -288,32 +312,92 @@ })); }; +/** + * 妫�鏌ユ椂闂村垪鏄惁鎸夊崌搴忔帓鍒� + * @param {Array} data - 琛ㄦ牸鏁版嵁 + * @param {string} timeColumn - 鏃堕棿鍒楃殑瀛楁鍚� + * @returns {boolean} - 鏄惁鎸夊崌搴忔帓鍒� + */ +const isTimeColumnSorted = (data, timeColumn) => { + for (let i = 1; i < data.length; i++) { + const prevTime = parseDateTime(data[i - 1][timeColumn]); + const currentTime = parseDateTime(data[i][timeColumn]); + + // 濡傛灉鍓嶄竴涓椂闂� > 褰撳墠鏃堕棿锛岃鏄庝笉鏄崌搴� + if (prevTime > currentTime) { + console.error(`鏃堕棿涔卞簭锛氱 ${i} 琛宍, { + prevTime: new Date(prevTime), + currentTime: new Date(currentTime), + }); + return false; + } + } + return true; // 鎵�鏈夋椂闂撮兘鎸夊崌搴忔帓鍒� +}; + +/** + * 浠庤〃澶存彁鍙栧崟浣嶏紙濡� "灏忔椂闆ㄥ己mm/h" 鈫� "mm/h"锛� + * @param {string} header - 琛ㄥご瀛楃涓� + * @returns {string} - 鎻愬彇鐨勫崟浣嶏紙濡� "mm/h"锛夛紝榛樿杩斿洖绌哄瓧绗︿覆 + */ +const extractUnitFromHeader = (header) => { + if (!header) return ""; + + // 鐩存帴鍖归厤 "mm/h"銆�"m/s" 绛夊父瑙佸崟浣� + const unitRegex = /(mm\/h|m\/s|mm|鈩億%|hPa|km\/h)/; // 鏍规嵁闇�瑕佹墿灞� + const match = header.match(unitRegex); + return match ? match[0] : ""; +}; + // 澶勭悊鏁版嵁 const processData = (data) => { + // 1. 妫�鏌ユ暟鎹槸鍚︿负绌� + if (data.length === 0) { + ElMessage.warning("鏂囦欢鍐呭涓虹┖锛�"); + return; + } + + // 2. 鑾峰彇琛ㄥご锛堢涓�鍒楁槸鏃堕棿鍒楋級 + const tableColumns = Object.keys(data[0]); + const timeColumn = tableColumns[0]; // 鍋囪绗竴鍒楁槸鏃堕棿 + + // 3. 鏍¢獙鏃堕棿鍒楁槸鍚︽寜鍗囧簭鎺掑垪 + if (!isTimeColumnSorted(data, timeColumn)) { + ElMessage.error("鏃堕棿鍒楀繀椤绘寜鍗囧簭鎺掑垪锛�"); + forms.fileList = []; + return; // 缁堟澶勭悊 + } + + const intensityColumn = tableColumns[1]; // 闆ㄥ己鍒楋紙濡� "灏忔椂闆ㄥ己(mm/h)"锛� + console.log(intensityColumn, "intensityColumnintensityColumnintensityColumn"); + // 3. 鎻愬彇绗簩鍒楃殑鍗曚綅锛堝 "(mm/h)" 鈫� "mm/h"锛� + const intensityUnit = extractUnitFromHeader(intensityColumn); + console.log( + intensityUnit, + "intensityUnitintensityUnitintensityUnitintensityUnit" + ); + forms.intensityUnit = intensityUnit; // 瀛樺偍鍗曚綅锛堝彲閫夛級 + + // 4. 濡傛灉鏍¢獙閫氳繃锛岀户缁鐞嗘暟鎹� forms.rainFallList = transformKeys(data); console.log(forms.rainFallList, "data"); - if (data.length === 0) return; - const tableColumns = Object.keys(data[0]); - - // 绗竴鍒楋細鏃堕棿 - const firstTime = parseDateTime(data[0][tableColumns[0]]); - const lastTime = parseDateTime(data[data.length - 1][tableColumns[0]]); + // 5. 璁$畻闄嶉洦鏃堕暱銆佹渶澶ч洦寮恒�佺疮璁¢洦閲忥紙鍘熼�昏緫锛� + const firstTime = parseDateTime(data[0][timeColumn]); + const lastTime = parseDateTime(data[data.length - 1][timeColumn]); const timeDuration = Math.floor((lastTime - firstTime) / 1000); - forms.duration = (timeDuration / 3600).toFixed(2); // 鏇存柊闄嶉洦鏃堕暱 + forms.duration = (timeDuration / 3600).toFixed(2); - // 绗簩鍒楋細闄嶉洦寮哄害 const maxValue = Math.max( ...data.map((row) => { const value = parseFloat(row[tableColumns[1]]); return isNaN(value) ? -Infinity : value; }) ).toFixed(2); - forms.intensity = maxValue; // 鏇存柊闄嶉洦寮哄害 + forms.intensity = maxValue; - // 绗笁鍒楋細绱闄嶉洦閲� const lastValue = data[data.length - 1][tableColumns[2]]; - forms.rainfall = lastValue; // 鏇存柊闄嶉洦閲� + forms.rainfall = lastValue; }; /** diff --git a/src/views/mnfz.vue b/src/views/mnfz.vue index 103a195..0e88c57 100644 --- a/src/views/mnfz.vue +++ b/src/views/mnfz.vue @@ -203,6 +203,91 @@ } } +// 铏氱嚎閬块櫓璺嚎 +// const position1 = [ +// { +// x: -2172867.1941179745, +// y: 4339567.67446477, +// z: 4125575.4386990573, +// }, +// { +// x: -2172867.1941179745, +// y: 4339567.67446477, +// z: 4125575.4386990573, +// }, +// { +// x: -2172700.396781143, +// y: 4339454.037139385, +// z: 4125736.906847591, +// }, +// { +// x: -2172744.4001612393, +// y: 4339361.421455601, +// z: 4125804.324253885, +// }, +// { +// x: -2172824.3311673277, +// y: 4339274.56533081, +// z: 4125844.432999503, +// }, +// { +// x: -2172822.298957661, +// y: 4339226.700024104, +// z: 4125896.451233209, +// }, +// { +// x: -2172776.0573917977, +// y: 4339194.843872361, +// z: 4125947.9581145854, +// }, +// { +// x: -2172755.2828807314, +// y: 4339149.410126468, +// z: 4125995.9286539108, +// }, +// { +// x: -2172660.9533022284, +// y: 4339085.401362197, +// z: 4126101.3750262205, +// }, +// { +// x: -2172613.460204307, +// y: 4339073.342332504, +// z: 4126134.479399525, +// }, +// { +// x: -2172583.664140033, +// y: 4339085.533980615, +// z: 4126140.3272964833, +// }, +// { +// x: -2172348.977405535, +// y: 4338967.122025027, +// z: 4126358.7532469626, +// }, +// { +// x: -2172276.019363938, +// y: 4338943.999121099, +// z: 4126416.339696519, +// }, +// { +// x: -2172178.064812976, +// y: 4338928.9482959965, +// z: 4126475.798078439, +// }, +// { +// x: -2172171.5451145098, +// y: 4338941.186930828, +// z: 4126466.425301899, +// }, +// { +// x: -2172177.9565195283, +// y: 4338940.424956708, +// z: 4126463.8688932694, +// }, +// ]; + + ///////////////////////////// 娴佸厜绾块伩闄╄矾绾�///////////////////////////// let pathLayer = null; // 瀛樺偍鍒涘缓鐨勫浘灞� function showLine() { @@ -423,7 +508,6 @@ ///////////////////////////// 绠ご鐗堥伩闄╄矾绾�///////////////////////////// function timeUpdate(percentage) { - console.log(percentage, "ppppppppppp"); if (percentage > 99.9) { if (showDebuffDetail.value) { return; -- Gitblit v1.9.3