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