From 2eabb2e5cf290d6bb1f86d5e3b11cc796079cdcc Mon Sep 17 00:00:00 2001
From: wangjuncheng <1>
Date: 星期五, 18 四月 2025 13:30:02 +0800
Subject: [PATCH] change

---
 src/components/tools/Tools.vue |  123 ++++++++++++++++++++++++++++++++--------
 1 files changed, 97 insertions(+), 26 deletions(-)

diff --git a/src/components/tools/Tools.vue b/src/components/tools/Tools.vue
index 79bda9b..6a7a124 100644
--- a/src/components/tools/Tools.vue
+++ b/src/components/tools/Tools.vue
@@ -50,9 +50,21 @@
         class="popup-menu-see"
       />
       <SlopeAnalysis
+        @draw="SlopeAnalysiss"
         v-show="showSlope"
         class="popup-menu-see"
         @update-slope="onUpdateSlope"
+      />
+      <!-- 闆� -->
+      <Rain
+        v-show="showRain"
+        class="popup-menu-see"
+        @update-rain="onUpdateRain"
+      />
+      <Snow
+        v-show="showSnow"
+        class="popup-menu-see"
+        @update-snow="onUpdateSnow"
       />
     </div>
 
@@ -85,12 +97,13 @@
 import Aspect from "@/components/tools/Aspect.vue";
 import SlopeAnalysis from "@/components/tools/SlopeAnalysis.vue";
 import mapUtils from "@/utils/tools.js";
+import Rain from "@/components/tools/Rain.vue";
+import Snow from "@/components/tools/Snow.vue";
 
 // 鍒囨崲灞曞紑/鏀剁缉鐘舵��
 function toggleCollapse() {
   // isCollapsed.value = !isCollapsed.value;
 }
-
 
 const showLayerTree = ref(false);
 
@@ -101,8 +114,8 @@
 const isflfx = ref(false);
 const isFlood = ref(false);
 const isContourLabel = ref(false);
-const isRain = ref(false);
-const isSnow = ref(false);
+const showRain = ref(false);
+const showSnow = ref(false);
 
 // 鍓栭潰鍒嗘瀽寮圭獥
 const topographyShow = ref(false);
@@ -181,6 +194,7 @@
     options: [
       { name: "闆ㄥぉ妯″紡", icon: "闆ㄥぉ妯″紡" },
       { name: "闆ぉ妯″紡", icon: "闆ぉ妯″紡" },
+      { name: "娓呴櫎澶╂皵", icon: "娓呴櫎鍒嗘瀽" },
     ],
   },
 ]);
@@ -188,27 +202,50 @@
 // 澶勭悊宸ュ叿鐐瑰嚮浜嬩欢
 function handleClick(tool, event) {
   console.log(tool.options);
+
+  // 鏇存柊鎵�鏈夊伐鍏风殑 active 鐘舵��
+  toolList.value.forEach((item) => {
+    item.active = item.name === tool.name && currentToolOptions.value !== tool.options;
+  });
+
+  // 濡傛灉褰撳墠宸ュ叿宸茬粡鏄縺娲荤姸鎬侊紝鍒欏叧闂畠
+  if (currentToolOptions.value === tool.options) {
+    currentToolOptions.value = null; // 娓呯┖褰撳墠宸ュ叿閫夐」
+    isPopupVisible.value = false; // 闅愯棌寮圭獥
+    seeAnalyzeShow.value = false; // 鍙鍩�
+    topographyShow.value = false; // 鍓栭潰
+    echartsShow.value = false; // 鍓栭潰echarts
+    showAspect.value = false; // 鍧″悜绠ご
+    showSlope.value = false; // 鍧″害绠ご
+    showRain.value = false; // 闆ㄥぉ
+    showSnow.value = false; // 闆ぉ
+    return;
+  }
+
   // 濡傛灉宸ュ叿鍚嶇О鏄� "鍥惧眰绠$悊"
   if (tool.name === "鍥惧眰绠$悊") {
     showLayerTree.value = !showLayerTree.value; // 鍒囨崲鍥惧眰鏍戠殑鏄剧ず鐘舵��
     isPopupVisible.value = false; // 闅愯棌寮圭獥
-    seeAnalyzeShow.value = false; //鍙鍩�
-    topographyShow.value = false; //鍓栭潰
-    echartsShow.value = false; //鍓栭潰echarts
-    showAspect.value = false; //鍧″悜绠ご
-    showSlope.value = false; //鍧″悜绠ご
+    seeAnalyzeShow.value = false; // 鍙鍩�
+    topographyShow.value = false; // 鍓栭潰
+    echartsShow.value = false; // 鍓栭潰echarts
+    showAspect.value = false; // 鍧″悜绠ご
+    showSlope.value = false; // 鍧″害绠ご
+    showRain.value = false; // 闆ㄥぉ
+    showSnow.value = false; // 闆ぉ
     return;
   }
 
   // 瀵逛簬鍏朵粬宸ュ叿
-  showLayerTree.value = false; // 纭繚鍥惧眰鏍戦殣钘�
   isPopupVisible.value = true; // 鏄剧ず寮圭獥
   currentToolOptions.value = tool.options; // 璁剧疆褰撳墠宸ュ叿鐨勫姛鑳介�夐」
-  seeAnalyzeShow.value = false; //鍙鍩�
-  topographyShow.value = false; //鍓栭潰
-  echartsShow.value = false; //鍓栭潰echarts
-  showAspect.value = false; //鍧″悜绠ご
-  showSlope.value = false; //鍧″悜绠ご
+  seeAnalyzeShow.value = false; // 鍙鍩�
+  topographyShow.value = false; // 鍓栭潰
+  echartsShow.value = false; // 鍓栭潰echarts
+  showAspect.value = false; // 鍧″悜绠ご
+  showSlope.value = false; // 鍧″害绠ご
+  showRain.value = false; // 闆ㄥぉ
+  showSnow.value = false; // 闆ぉ
 }
 
 // 澶勭悊寮圭獥閫夐」鐐瑰嚮浜嬩欢
@@ -219,21 +256,25 @@
     鏄剧ず鍥惧眰: () => (showLayerTree.value = true),
     闅愯棌鍥惧眰: () => (showLayerTree.value = false),
     闆ㄥぉ妯″紡: () => {
-      isRain.value = !isRain.value;
-      if (isRain.value === false) {
-        mapUtils.toggleRain("rain", false);
-      } else {
-        mapUtils.toggleRain("rain", true);
-      }
+      showRain.value = true;
+      onUpdateRain();
     },
     闆ぉ妯″紡: () => {
-      isSnow.value = !isSnow.value;
-      if (isSnow.value === false) {
-        mapUtils.toggleSnow("snow", false);
+      showSnow.value = true;
+      onUpdateSnow();
+    },
+    娓呴櫎澶╂皵: () => {
+      if (1) {
+        showRain.value = false;
+        showSnow.value = false;
+        mapUtils.delRain(); // 鍏抽棴闆ㄦ晥鏋�
+        mapUtils.delSnow(); // 鍏抽棴闆晥鏋�
+        console.log("澶╂皵鏁堟灉宸叉竻闄�");
       } else {
-        mapUtils.toggleSnow("snow", true);
+        console.log("娌℃湁鎵撳紑鐨勫ぉ姘旀晥鏋�");
       }
     },
+
     鏂囧瓧鏍囩粯: () => mapUtils.CreateLabel("label", true),
     澶氭绾挎爣缁�: () => mapUtils.CreateLabel("polyline", true),
     澶氳竟褰㈡爣缁�: () => mapUtils.CreateLabel("polygon", true),
@@ -385,22 +426,51 @@
 };
 // 鍏抽棴鍧″悜绠ご
 const SlopeArrowClose = () => {
-  mapUtils.gbpxjt();
+  mapUtils.cleanupAnalysisTools();
 };
 
 // 鍧″害鍒嗘瀽
 const formData = reactive({
   terrainRender: 0,
   contourLines: false,
-  color: "",
+  color: "red",
   spacing: 50,
   lineWidth: 5,
 });
+
+const SlopeAnalysiss = () => {
+  mapUtils.pdfx(formData);
+};
+
 
 // 鍧″害
 const onUpdateSlope = (newOption) => {
   Object.assign(formData, newOption);
   mapUtils.pdfx(formData);
+};
+
+// 闆�
+const rainForm = reactive({
+  rainSize: 0.5,
+  rainSpeed: 50,
+  rainColor: "#99B3CC",
+});
+const onUpdateRain = (newOption) => {
+  console.log(newOption, "new");
+  Object.assign(rainForm, newOption);
+  mapUtils.toggleRain(rainForm, true);
+};
+// 闆�
+const snowForm = reactive({
+  snowSize: 0.02, // 榛樿闆殑澶у皬
+  snowSpeed: 100, // 榛樿闆殑閫熷害
+  snowColor: "#FFFFFF", // 榛樿闆殑棰滆壊
+});
+
+const onUpdateSnow = (newOption) => {
+  console.log(newOption, "new");
+  Object.assign(snowForm, newOption);
+  mapUtils.toggleSnow(snowForm, true);
 };
 </script>
 
@@ -494,6 +564,7 @@
   right: 60px;
   top: -20px;
 }
+
 .sectionChars {
   position: absolute;
   top: auto;

--
Gitblit v1.9.3