From 9eb0c9993a0be2fbb00813b7c7b0c0f2a096999c Mon Sep 17 00:00:00 2001
From: zhangshuaibao <15731629597@163.com>
Date: 星期三, 17 三月 2021 18:04:46 +0800
Subject: [PATCH] 完善左上角工具栏的点击问题

---
 src/components/panel/ToolBoxPanel.vue |   84 ++++++++++++++++++++++++++----------------
 1 files changed, 52 insertions(+), 32 deletions(-)

diff --git a/src/components/panel/ToolBoxPanel.vue b/src/components/panel/ToolBoxPanel.vue
index 9f89a0c..8db22bb 100644
--- a/src/components/panel/ToolBoxPanel.vue
+++ b/src/components/panel/ToolBoxPanel.vue
@@ -1,11 +1,11 @@
 <template>
   <div class="left-top-toolbox-panel">
     <div class="specific-tools">
-      <el-button @click="changeSelect" v-show="selectGroup">
+      <el-button class="el-button-choice" @click="changeSelect" v-show="selectGroup">
         <img src="@assets/images/map-pages/icon/toolbox/tool.png" alt="">
         <span>宸ュ叿</span>
       </el-button>
-      <el-button @click="changeSelect" v-show="!selectGroup">
+      <el-button class="el-button-choice" @click="changeSelect" v-show="!selectGroup">
         <img src="@assets/images/map-pages/icon/toolbox/Selecd/tool.png" alt="">
         <a>宸ュ叿</a>
       </el-button>
@@ -20,13 +20,13 @@
           >
             <el-button slot="reference" class="el-button" :class="active === index ? 'tools-panel-choose':''"
                        @click="changeChoose(index)">
-              <img :src="item.iconSelecd" alt="" v-if="active === index"/>
+              <img :src="item.iconSelecd" alt="" v-if="active === index && checked === true"/>
               <img :src="item.icon" alt="" v-else/>
               <span>{{ item.label }}</span>
             </el-button>
             <el-button v-for="(itemT,indexT) in item.items" :key="indexT" @click="choiceItem(itemT,indexT)"
                        v-show="item.index!=='2'">
-              <img :src="itemT.iconChoose" :title="itemT.title" v-if="Selecd === indexT"/>
+              <img :src="itemT.iconChoose" :title="itemT.title" v-if="Selecd === indexT && checked === true"/>
               <img :src="itemT.icon" :title="itemT.title" v-else/>
             </el-button>
             <div class="base-map-inner-panel" v-show="!isShow&&item.index==='2'">
@@ -40,7 +40,7 @@
             </div>
           </el-popover>
           <el-button @click="changeSelect" class="special-button">
-            <i :class="selectGroup === false ? 'el-icon-d-arrow-right':'el-icon-d-arrow-left'"></i>
+            <i class="el-icon-d-arrow-left"></i>
           </el-button>
         </el-row>
       </transition>
@@ -92,6 +92,8 @@
   name: 'ToolBoxPanel',
   data () {
     return {
+      checked: false,
+      checkbuuton: -1,
       isShow: true,
       currentBaseMapCode: 'tianditu_img',
       basemapList: [],
@@ -242,8 +244,9 @@
       ],
       selectGroup: false,
       drawLayer: null,
+      drawLayerArray: [],
       map: null,
-      L: window.L,
+      // L: window.L,
       active: -1,
       Selecd: -1
     }
@@ -287,9 +290,18 @@
       if (this.drawLayer == null) {
         this.drawLayer = this.L.layerGroup().addTo(this.map)
       }
+      if (this.checkbuuton === index) {
+        this.checked = !this.checked
+      } else {
+        if (this.checkbuuton === -1) {
+          this.checked = !this.checked
+        } else {
+          this.checked = true
+        }
+      }
+      this.checkbuuton = index
     },
     choiceItem (itemT, indexT) {
-      // console.log(itemT.label)
       this.Selecd = indexT
       switch (itemT.label) {
         case '鐐规爣缁�':
@@ -299,33 +311,34 @@
             iconAnchor: [13, 16],
             popupAnchor: [26, -32]
           })
-          var drawLayer = this.map.editTools.startMarker()
-          drawLayer.setIcon(myIcon)
-          this.drawLayer.addLayer(drawLayer)
-          this.setLogic(drawLayer)
+          this.drawLayer = this.map.editTools.startMarker()
+          this.drawLayer.setIcon(myIcon)
+          this.drawLayerArray.push(this.drawLayer)
           break
         case '绾挎爣缁�':
-          var drawLayerLine = this.map.editTools.startPolyline()
-          this.drawLayer.addLayer(drawLayerLine)
-          this.setLogic(drawLayerLine)
+          this.drawLayer = this.map.editTools.startPolyline()
+          this.drawLayerArray.push(this.drawLayer)
+          this.setLogic()
           break
         case '澶氳竟褰�':
-          var drawLayerPolygonD = this.map.editTools.startPolygon()
-          this.drawLayer.addLayer(drawLayerPolygonD)
-          this.setLogic(drawLayerPolygonD)
+          this.drawLayer = this.map.editTools.startPolygon()
+          this.drawLayerArray.push(this.drawLayer)
+          this.setLogic()
           break
         case '鐭╁舰':
-          var drawLayerPolygonJ = this.map.editTools.startRectangle()
-          this.drawLayer.addLayer(drawLayerPolygonJ)
-          this.setLogic(drawLayerPolygonJ)
+          this.drawLayer = this.map.editTools.startRectangle()
+          this.drawLayerArray.push(this.drawLayer)
+          this.setLogic()
           break
         case '鍦嗗舰':
-          var drawLayerPolygonY = this.map.editTools.startCircle()
-          this.drawLayer.addLayer(drawLayerPolygonY)
-          this.setLogic(drawLayerPolygonY)
+          this.drawLayer = this.map.editTools.startCircle()
+          this.drawLayerArray.push(this.drawLayer)
+          this.setLogic()
           break
         case '鍒犻櫎':
-          this.drawLayer.clearLayers()
+          for (let i = 0; i < this.drawLayerArray.length; i++) {
+            this.map.removeLayer(this.drawLayerArray[i])
+          }
           break
         case '娓呴櫎':
           Measure.clearMeasure(this.map, this.L)
@@ -366,18 +379,16 @@
           break
       }
     },
-    setLogic (layer) {
-      layer.on('dblclick', this.L.DomEvent.stop).on('dblclick', layer.toggleEdit)
-      layer.setStyle({
-        color: 'red',
-        fillColor: '#ffffff',
-        fillOpacity: 0.1,
-        fill: true
+    setLogic () {
+      this.drawLayer.on('dblclick', this.L.DomEvent.stop).on('dblclick', this.drawLayer.toggleEdit)
+      this.drawLayer.setStyle({
+        color: 'red'
       })
     },
     changeSelect () {
       this.selectGroup = !this.selectGroup
       this.isShow = !this.isShow
+      this.checked = false
     }
   }
 }
@@ -426,7 +437,6 @@
 
       span {
         display: block;
-        font-size: 0.012rem;
         color: @color-tool;
       }
 
@@ -436,6 +446,16 @@
       }
     }
 
+    .el-button-choice {
+      z-index: 999;
+      padding: 0;
+      margin: 0 0.015rem;
+      width: 45px;
+      height: 45px;
+      background: @background-color-tools;
+      border: 1px solid @color-shadow;
+    }
+
     .specific-tools-group {
       z-index: 1;
       //.tools-panel-content {

--
Gitblit v1.8.0