From 675f53b52844d1d368d71d966620ba698f24bcde Mon Sep 17 00:00:00 2001
From: wangqi <magical1908@outlook.com>
Date: 星期二, 09 三月 2021 09:34:06 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/components/panel/RightSearchPanel.vue            |   24 -
 src/components/panel/MenuTopic.vue                   |    8 
 src/conf/Topic.js                                    |   36 ++
 src/components/LayerController/modules/LcBaseMap.vue |   10 
 src/components/panel/ToolBoxPanel.vue                |  195 ++++++++++++++---
 src/views/MapTemplate.vue                            |   64 ++--
 src/components/panel/LegendPanel.vue                 |    6 
 src/components/panel/topicSearch/DischargeSearch.vue |    2 
 src/Sgis.js                                          |    4 
 src/conf/TDT.js                                      |    4 
 src/main.js                                          |    1 
 src/conf/MapConfig.js                                |    1 
 package.json                                         |    4 
 src/components/plugin/Leaflet.GridLayer.FadeOut.js   |   76 ++++++
 src/components/panel/topicSearch/SewersSearch.vue    |    4 
 src/components/plugin/FullScreen.js                  |  174 +++++++++++++++
 src/components/helpers/BasemapHelper.js              |    3 
 17 files changed, 503 insertions(+), 113 deletions(-)

diff --git a/package.json b/package.json
index e098be7..2bd03a4 100644
--- a/package.json
+++ b/package.json
@@ -18,6 +18,7 @@
     "dayjs": "^1.9.6",
     "echarts": "^4.2.1",
     "element-ui": "^2.14.1",
+    "fullscreen": "^1.1.1",
     "jquery": "^3.5.1",
     "js-cookie": "^2.2.0",
     "leaflet": "^1.6.0",
@@ -26,10 +27,11 @@
     "lodash": "^4.17.10",
     "nprogress": "^0.2.0",
     "rbush": "^3.0.1",
-    "screenfull": "^3.3.2",
+    "screenfull": "^3.3.3",
     "vue": "^2.6.11",
     "vue-count-to": "^1.0.13",
     "vue-focus": "^2.1.0",
+    "vue-fullscreen": "^2.2.0",
     "vue-router": "^3.0.1",
     "vuex": "^3.0.1"
   },
diff --git a/src/Sgis.js b/src/Sgis.js
index 22380e4..af7ecb2 100644
--- a/src/Sgis.js
+++ b/src/Sgis.js
@@ -10,6 +10,8 @@
 import MapConfig from '@/conf/MapConfig'
 import DashFlow from '@components/plugin/PathDashFlow'
 import CanvasMarkers from '@components/plugin/CanvasMarkers'
+import FullScreen from '@components/plugin/FullScreen'
+
 let map = null
 const L = window.L
 const initMap = (div) => {
@@ -26,6 +28,8 @@
   DashFlow.DashFlow(L) // 娴佸姩绾垮浘
   CanvasMarkers.init(L)// 鐢诲竷鍥惧眰
   // Leaflet鎵╁睍浠g爜
+  // 鍏ㄥ睆
+  FullScreen.init(L)
 
   map = L.map(div, MapConfig.mapOptions)
 
diff --git a/src/components/LayerController/modules/LcBaseMap.vue b/src/components/LayerController/modules/LcBaseMap.vue
index e5af6f2..3afc8d8 100644
--- a/src/components/LayerController/modules/LcBaseMap.vue
+++ b/src/components/LayerController/modules/LcBaseMap.vue
@@ -16,6 +16,7 @@
   data () {
     return {
       isShow: true,
+      currentBaseMapCode: 'tianditu_img',
       basemapList: []
     }
   },
@@ -34,7 +35,14 @@
       const code = itm.code
       this.basemapList.forEach((item) => {
         if (item.code === code) {
-          this.basemapHelper.showBasemap(item.code, item.conf.annotationCheck, true)
+          console.log(this.currentBaseMapCode)
+          if (this.currentBaseMapCode == null || this.currentBaseMapCode !== code) {
+            this.currentBaseMapCode = code
+            this.basemapHelper.showBasemap(item.code, item.conf.annotationCheck, true)
+          } else {
+            this.basemapHelper.showBasemap(item.code, item.conf.annotationCheck, false)
+          }
+
           this.basemapHelper.getBasemapList().forEach((item) => {
             item.layer.bringToBack()
           })
diff --git a/src/components/helpers/BasemapHelper.js b/src/components/helpers/BasemapHelper.js
index 9b29e4e..cfb5703 100644
--- a/src/components/helpers/BasemapHelper.js
+++ b/src/components/helpers/BasemapHelper.js
@@ -11,6 +11,7 @@
     this.basemapList = []
     this.basemapMap = new Map()
     this.basemapLayerGroup = this.L.layerGroup().addTo(options.map)
+    this.currentBaseMapCode = null
   }
 
     /**
@@ -58,6 +59,8 @@
       this.basemapLayerGroup.addLayer(basemap.layer)
       if (showAnnotation) {
         this.basemapLayerGroup.addLayer(basemap.annotation)
+      } else {
+        this.basemapLayerGroup.removeLayer(basemap.annotation)
       }
     }
 
diff --git a/src/components/panel/LegendPanel.vue b/src/components/panel/LegendPanel.vue
index 59cce89..70529c2 100644
--- a/src/components/panel/LegendPanel.vue
+++ b/src/components/panel/LegendPanel.vue
@@ -4,7 +4,7 @@
       <i class="el-icon-more-outline"></i>
       <span>鍥句緥</span>
     </div>
-    <transition name="fade">
+    <`transition` name="fade">
       <div class="legend-content" v-show="legendControl">
         <div class="legend-content-box" v-for="(item,index) in legendContents" :key="index">
           <p>{{ item.title }}</p>
@@ -258,8 +258,8 @@
   }
 
   .fade-leave-active {
-    transform-origin: right;
-    animation: bounce-in 1s reverse;
+    //transform-origin: right;
+    //animation: bounce-in 1s reverse;
     transform-origin: right bottom;
     animation: bounce-in .5s reverse;
   }
diff --git a/src/components/panel/MenuTopic.vue b/src/components/panel/MenuTopic.vue
index 6f949fe..2b5383a 100644
--- a/src/components/panel/MenuTopic.vue
+++ b/src/components/panel/MenuTopic.vue
@@ -7,12 +7,12 @@
            @click="toggle()">
       <div id="menu-special-context" class="menu-special-context">
           <el-checkbox-button v-show="isShow" class="menu-special-item" v-model="topicSelectAll.check" :checked="topicSelectAll.checked" @change="checkedSpecialChangeAll(topicSelectAll)">
-            <div style="height: 1rem;width: 1rem;display: inline-flex;">     <img :src="topicSelectAll.icon" ></div>
+            <div style="height: 1rem;width: 1rem;display: inline-flex;"><img :src="topicSelectAll.icon" ></div>
             {{ topicSelectAll.name }}</el-checkbox-button>
 
         <el-checkbox-group :indeterminate="isIndeterminate" v-show="isShow" v-model="topicCheckedList" size="medium" @change="checkedGroupSpecialChange">
-          <el-checkbox-button class="menu-special-item" v-for="item in topicList" :label="item.name" :key="item.id" :checked="item.checked" @change="checkedSpecialChange(item)">
-            <div style="height: 1rem;width: 1rem;display: inline-flex;">     <img :src="item.icon" ></div>
+          <el-checkbox-button class="menu-special-item" v-for="item in topicList" :label="item" :key="item.id" :checked="item.checked" @change="checkedSpecialChange(item)">
+            <div style="height: 1rem;width: 1rem;display: inline-flex;"><img :src="item.icon" ></div>
             {{item.name}}</el-checkbox-button>
         </el-checkbox-group>
 <!--        <ul class="menu-special-item" v-for="item in SpecialList" :key="item.id">-->
@@ -53,7 +53,7 @@
       this.$store.commit('setTopic', this.topicCheckedList)
     },
     checkedSpecialChangeAll (val) {
-      this.topicCheckedList = val.check ? this.topicList.map(item => item.name) : []
+      this.topicCheckedList = val.check ? this.topicList.map(item => item) : []
       this.isIndeterminate = false
       this.$store.commit('setTopic', this.topicCheckedList)
     },
diff --git a/src/components/panel/RightSearchPanel.vue b/src/components/panel/RightSearchPanel.vue
index f8c5efd..587073a 100644
--- a/src/components/panel/RightSearchPanel.vue
+++ b/src/components/panel/RightSearchPanel.vue
@@ -1,5 +1,5 @@
 <template>
-  <div id="right-panel" >
+  <div id="right-panel">
     <div class="panel-tab">
       <div v-for="item in topicMenu" :key="item.id" :title="item.name" class="tab-item" @click="handleGd" :class="{'B-TMT-tab-waybill-isActive': isWaybillHover}">
         <img :src="item.icon" style="width: 24px;height: 24px;"></div>
@@ -44,7 +44,7 @@
       topicList: TopicList,
       topicCheckedList: [],
       isPanelVisible: false,
-      gcComp: SewersSearch,
+      gcComp: 'sewersSearch',
 
       gdVisible: true,
       hbVisible: false,
@@ -56,21 +56,10 @@
       isCollapse: false
     }
   },
-  computed: {},
-  watch: {
-    '$store.state.map.topic.topicCheckedList': function (newVal, oldVal) {
-      console.log(oldVal)
-      console.log(newVal)
-      this.topicCheckedList = newVal
-      this.topicMenu = []
-      this.topicList.forEach((item) => {
-        this.topicCheckedList.forEach((itm) => {
-          if (item.name === itm) {
-            // item.checked = tr
-            this.topicMenu.push(item)
-          }
-        })
-      })
+  computed: {
+    topicMenu () {
+      console.log(this.$store.state.map.topic.topicCheckedList)
+      return this.$store.state.map.topic.topicCheckedList
     }
   },
   methods: {
@@ -85,7 +74,6 @@
     },
     toggleMonitorPanel () {
       this.isCollapse = !this.isCollapse
-      console.log(11)
       // const el = $('.btn-stretch')
       // const el2 = $('.panel-fold-btn')
       // const el = document.getElementsByClassName('.btn-stretch')
diff --git a/src/components/panel/ToolBoxPanel.vue b/src/components/panel/ToolBoxPanel.vue
index 8f90ff8..5747cc7 100644
--- a/src/components/panel/ToolBoxPanel.vue
+++ b/src/components/panel/ToolBoxPanel.vue
@@ -1,11 +1,25 @@
 <template>
   <div class="lefttop-toolbox-panel">
-    <ul>
-      <li v-for="(item,i) in imgList" :key="i" @click="toggleActive(i)" :value="total"
-          :class="{'active':activeTools[i]}">
-        <img :src="item"/>
-      </li>
-    </ul>
+    <div class="init-choose" @click="changeSelect()">
+      <img src="@/assets/images/map-pages/icon/toolbox/circle.png" alt="">
+    </div>
+    <!--    <transition name="fade">-->
+    <!--      <ul v-show='selectGroup'>-->
+    <!--        <li v-for="(item,i) in imgList" :key="i" @click="toggleActive(i)" :value="total"><img :src="item"/></li>-->
+    <!--      </ul>-->
+    <!--    </transition>-->
+    <div class="el-select-dropdown" v-show='selectGroup'>
+      <el-dropdown @command="handleCommand" trigger="click" v-for="(item,i) in imgLists" :key="i" :value="total">
+        <transition name="fade">
+          <img :src="item.title" :title="item.alt"/>
+        </transition>
+        <el-dropdown-menu>
+          <el-dropdown-item v-for="(ite,index) in item.items" :key="index" :command='ite.headings'>
+            <span @click='toggleActive(ite)'>{{ ite.headings }}</span>
+          </el-dropdown-item>
+        </el-dropdown-menu>
+      </el-dropdown>
+    </div>
   </div>
 </template>
 
@@ -20,35 +34,98 @@
 export default {
   name: 'ToolBoxPanel',
   components: {},
+  props: ['map'],
   data () {
     return {
       isPanelVisible: false,
       total: 0,
       activeTools: {},
-      imgList: {
-        circle: circle,
-        square: square,
-        polygon: polygon,
-        legend: legend,
-        location: location,
-        fullscreen: fullscreen
-      },
+      imgLists: [
+        {
+          title: circle,
+          alt: '鏍囩粯',
+          items: [
+            { headings: '绾挎爣缁�' },
+            { headings: '闈㈡爣缁�' },
+            { headings: '绠ご鏍囩粯' }
+          ]
+        },
+        {
+          title: square,
+          alt: '鏍囨敞',
+          items: [
+            { headings: '鐐规爣娉�' },
+            { headings: '绾挎爣娉�' },
+            { headings: '闈㈡爣娉�' },
+            { headings: '鏂囧瓧鏍囨敞' },
+            { headings: '鍥炬爣鏍囨敞' }
+          ]
+        },
+        {
+          title: legend,
+          alt: '娴嬮噺',
+          items: [
+            { headings: '璺濈娴嬮噺' },
+            { headings: '闈㈢Н娴嬮噺' }
+          ]
+        },
+        {
+          title: location,
+          alt: '鍒囨崲搴曞浘',
+          items: [
+            { headings: '褰卞儚鍥�' },
+            { headings: '鐭㈤噺鍥�' },
+            { headings: '鍦板舰鍥�' }
+          ]
+        },
+        {
+          title: polygon,
+          alt: '绠$綉',
+          items: [
+            { headings: '杩為�氭�у垎鏋�' },
+            { headings: '鐖嗙鍒嗘瀽' },
+            { headings: '娴佸悜鍒嗘瀽' },
+            { headings: '妯柇闈㈠垎鏋�' }
+          ]
+        },
+        {
+          title: fullscreen,
+          alt: '涓嬭浇',
+          items: [
+            { headings: '鍏ㄥ睆' },
+            { headings: 'A4妯悜' },
+            { headings: 'A4绾靛悜' }
+          ]
+        }
+      ],
       form: {
         regionType: '',
         enterprise: ''
-      }
+      },
+      selectGroup: false,
+      selectGroupOne: false
     }
   },
   methods: {
+    changeSelect () {
+      this.selectGroup = !this.selectGroup
+    },
     handleClose (done) {
       console.log(done)
     },
     handleClick (tab, event) {
       console.log(tab, event)
     },
+    handleCommand (command) {
+      console.log(command)
+      if (command === '鍏ㄥ睆') {
+        this.map.toggleFullscreen()
+      }
+    },
     toggleActive (k) {
-      this.total++
-      this.activeTools[k] = !this.activeTools[k]
+      if (k === 'fullscreen') {
+        this.map.toggleFullscreen()
+      }
     },
     loadData () {
 
@@ -58,6 +135,7 @@
     this.loadData()
   },
   created () {
+
   }
 }
 </script>
@@ -67,31 +145,74 @@
   position: absolute;
   left: 5px;
   top: 5px;
-  z-index: 1000;
-  width: 175px;
-  height: 35px;
-  line-height: 30px;
-  background: #07325b;
-  border: 1px solid #5EF2FF;
-  border-radius: 3px;
-  text-align: center;
+  z-index: 999;
+  display: flex;
 
-  ul {
-    list-style: none;
-    margin: 0;
-    padding: 5px;
+  .init-choose {
+    //margin: 15px 5px;
+    background: #305B62;
+    //margin-top: 15px;
+    width: 35px;
+    height: 35px;
+    border-radius: 50%;
+    border: 2px skyblue solid;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    z-index: 999;
+  }
 
-    li {
-      float: left;
-      width: 23px;
-      height: 23px;
-      margin: 0 1px;
-      border: 1px solid #073C4F;
+  .el-select-dropdown {
+    position: absolute;
+    z-index: 1;
+    width: 250px;
+    height: 35px;
+    display: flex;
+    align-items: center;
+    justify-content: space-evenly;
+    background: #305B62;
+    border-radius: 15px;
+    padding-inline: 10px;
+    padding-inline-start: 30px;
+
+    .el-dropdow {
+      width: 20%;
+    }
+
+    @keyframes bounce-in {
+      0% {
+        transform: scale(0);
+        opacity: 0.3;
+      }
+      100% {
+        transform: scale(1);
+        opacity: 1;
+      }
+    }
+
+    .fade-enter-active {
+      transform-origin: left center;
+      animation: bounce-in .2s;
+    }
+
+    .fade-leave-active {
+      transform-origin: left;
+      animation: bounce-in .2s reverse;
     }
   }
 
-  .active {
-    border: 1px solid #5EF2FF;
+  .el-select-dropdown:last-child {
+    margin-left: 10px;
   }
+
+  .el-dropdown-link {
+    cursor: pointer;
+    color: #409EFF;
+  }
+
+  .el-icon-arrow-down {
+    font-size: 12px;
+  }
+
 }
 </style>
diff --git a/src/components/panel/topicSearch/DischargeSearch.vue b/src/components/panel/topicSearch/DischargeSearch.vue
index 0b14697..ed987f9 100644
--- a/src/components/panel/topicSearch/DischargeSearch.vue
+++ b/src/components/panel/topicSearch/DischargeSearch.vue
@@ -91,7 +91,7 @@
   components: {},
   data () {
     return {
-      isPanelVisible: false,
+      isPanelVisible: true,
       total: 0,
       list: [],
       form: {
diff --git a/src/components/panel/topicSearch/SewersSearch.vue b/src/components/panel/topicSearch/SewersSearch.vue
index a3987bf..6fe9340 100644
--- a/src/components/panel/topicSearch/SewersSearch.vue
+++ b/src/components/panel/topicSearch/SewersSearch.vue
@@ -1,9 +1,5 @@
 <template>
   <div class="sewers-search">
-    <div class="el-message-box__header panel_header">
-      <div class="el-message-box__title panel_title"><!----><span>{{ title }}</span>
-      </div>
-    </div>
     <div class="el-message-box__content" style="padding:6px;font-size: 13px;">
       <div class="box__content" v-if="gdVisible">
         <div>
diff --git a/src/components/plugin/FullScreen.js b/src/components/plugin/FullScreen.js
new file mode 100644
index 0000000..888371d
--- /dev/null
+++ b/src/components/plugin/FullScreen.js
@@ -0,0 +1,174 @@
+/* eslint-disable */
+const init = (L) => {
+  (function (factory) {
+    if (typeof define === 'function' && define.amd) {
+      // AMD
+      define(['leaflet'], factory)
+    } else if (typeof module !== 'undefined') {
+      // Node/CommonJS
+      // module.exports = factory(require('leaflet'))
+      factory(L)
+    } else {
+      // Browser globals
+      if (typeof window.L === 'undefined') {
+        throw new Error('Leaflet must be loaded first')
+      }
+      factory(window.L)
+    }
+  }(function (L) {
+    L.Control.Fullscreen = L.Control.extend({
+      options: {
+        position: 'topleft',
+        title: {
+          false: 'View Fullscreen',
+          true: 'Exit Fullscreen'
+        }
+      },
+
+      onAdd: function (map) {
+        var container = L.DomUtil.create('div', 'leaflet-control-fullscreen leaflet-bar leaflet-control')
+
+        this.link = L.DomUtil.create('a', 'leaflet-control-fullscreen-button leaflet-bar-part', container)
+        this.link.href = '#'
+
+        this._map = map
+        this._map.on('fullscreenchange', this._toggleTitle, this)
+        this._toggleTitle()
+
+        L.DomEvent.on(this.link, 'click', this._click, this)
+
+        return container
+      },
+
+      _click: function (e) {
+        L.DomEvent.stopPropagation(e)
+        L.DomEvent.preventDefault(e)
+        this._map.toggleFullscreen(this.options)
+      },
+
+      _toggleTitle: function () {
+        this.link.title = this.options.title[this._map.isFullscreen()]
+      }
+    })
+
+    L.Map.include({
+      isFullscreen: function () {
+        return this._isFullscreen || false
+      },
+
+      toggleFullscreen: function (options) {
+        var container = this.getContainer()
+        if (this.isFullscreen()) {
+          if (options && options.pseudoFullscreen) {
+            this._disablePseudoFullscreen(container)
+          } else if (document.exitFullscreen) {
+            document.exitFullscreen()
+          } else if (document.mozCancelFullScreen) {
+            document.mozCancelFullScreen()
+          } else if (document.webkitCancelFullScreen) {
+            document.webkitCancelFullScreen()
+          } else if (document.msExitFullscreen) {
+            document.msExitFullscreen()
+          } else {
+            this._disablePseudoFullscreen(container)
+          }
+        } else {
+          if (options && options.pseudoFullscreen) {
+            this._enablePseudoFullscreen(container)
+          } else if (container.requestFullscreen) {
+            container.requestFullscreen()
+          } else if (container.mozRequestFullScreen) {
+            container.mozRequestFullScreen()
+          } else if (container.webkitRequestFullscreen) {
+            container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)
+          } else if (container.msRequestFullscreen) {
+            container.msRequestFullscreen()
+          } else {
+            this._enablePseudoFullscreen(container)
+          }
+        }
+      },
+
+      _enablePseudoFullscreen: function (container) {
+        L.DomUtil.addClass(container, 'leaflet-pseudo-fullscreen')
+        this._setFullscreen(true)
+        this.fire('fullscreenchange')
+      },
+
+      _disablePseudoFullscreen: function (container) {
+        L.DomUtil.removeClass(container, 'leaflet-pseudo-fullscreen')
+        this._setFullscreen(false)
+        this.fire('fullscreenchange')
+      },
+
+      _setFullscreen: function (fullscreen) {
+        this._isFullscreen = fullscreen
+        var container = this.getContainer()
+        if (fullscreen) {
+          L.DomUtil.addClass(container, 'leaflet-fullscreen-on')
+        } else {
+          L.DomUtil.removeClass(container, 'leaflet-fullscreen-on')
+        }
+        this.invalidateSize()
+      },
+
+      _onFullscreenChange: function (e) {
+        var fullscreenElement =
+          document.fullscreenElement ||
+          document.mozFullScreenElement ||
+          document.webkitFullscreenElement ||
+          document.msFullscreenElement
+
+        if (fullscreenElement === this.getContainer() && !this._isFullscreen) {
+          this._setFullscreen(true)
+          this.fire('fullscreenchange')
+        } else if (fullscreenElement !== this.getContainer() && this._isFullscreen) {
+          this._setFullscreen(false)
+          this.fire('fullscreenchange')
+        }
+      }
+    })
+
+    L.Map.mergeOptions({
+      fullscreenControl: false
+    })
+
+    L.Map.addInitHook(function () {
+      if (this.options.fullscreenControl) {
+        this.fullscreenControl = new L.Control.Fullscreen(this.options.fullscreenControl)
+        this.addControl(this.fullscreenControl)
+      }
+
+      var fullscreenchange
+
+      if ('onfullscreenchange' in document) {
+        fullscreenchange = 'fullscreenchange'
+      } else if ('onmozfullscreenchange' in document) {
+        fullscreenchange = 'mozfullscreenchange'
+      } else if ('onwebkitfullscreenchange' in document) {
+        fullscreenchange = 'webkitfullscreenchange'
+      } else if ('onmsfullscreenchange' in document) {
+        fullscreenchange = 'MSFullscreenChange'
+      }
+
+      if (fullscreenchange) {
+        var onFullscreenChange = L.bind(this._onFullscreenChange, this)
+
+        this.whenReady(function () {
+          L.DomEvent.on(document, fullscreenchange, onFullscreenChange)
+        })
+
+        this.on('unload', function () {
+          L.DomEvent.off(document, fullscreenchange, onFullscreenChange)
+        })
+      }
+    })
+
+    L.control.fullscreen = function (options) {
+      return new L.Control.Fullscreen(options)
+    }
+  }))
+}
+export default {
+  init
+}
diff --git a/src/components/plugin/Leaflet.GridLayer.FadeOut.js b/src/components/plugin/Leaflet.GridLayer.FadeOut.js
new file mode 100644
index 0000000..be038a2
--- /dev/null
+++ b/src/components/plugin/Leaflet.GridLayer.FadeOut.js
@@ -0,0 +1,76 @@
+/* eslint-disable */
+// Adds a fade-out animation to grid layers when they're removed from the map
+
+(function () {
+  var gridProto = L.GridLayer.prototype
+  var onRemoveProto = gridProto.onRemove
+  var onAddProto = gridProto.onAdd
+  var fadeDuration = 200
+
+  L.GridLayer.include({
+
+    onAdd: function (map) {
+      if (this._fadeOutTime) {
+        var now = performance.now() || (+new Date())
+        L.Util.cancelAnimFrame(this._fadeOutFrame)
+        this._fadeOutTime = now + fadeDuration - this._fadeOutTime + now
+        L.Util.requestAnimFrame(this._fadeIn, this)
+      } else {
+        onAddProto.call(this, map)
+      }
+    },
+
+    onRemove: function (map) {
+      if (this._fadeOutTime) {
+        // We're removing this *again* quickly after removing and re-adding
+        var now = performance.now() || (+new Date())
+
+        this._fadeOutTime = now + fadeDuration - this._fadeOutTime + now
+      }
+      this._fadeOutTime = (performance.now() || (+new Date())) + fadeDuration * 2
+      this._fadeOutMap = this._map
+
+      L.Util.requestAnimFrame(this._fadeOut, this)
+    },
+
+    _fadeOut: function () {
+      if (!this._fadeOutTime || !this._container) { return }
+
+      var now = performance.now() || (+new Date())
+
+      var opacity = Math.min((this._fadeOutTime - now) / fadeDuration, 1)
+      // console.log('fadeout:', opacity);
+      if (opacity < 0) {
+        this._fadeOutTime = false
+
+        onRemoveProto.call(this, this._fadeOutMap)
+
+        return
+      }
+
+      L.DomUtil.setOpacity(this._container, opacity * this.options.opacity)
+
+      this._fadeOutFrame = L.Util.requestAnimFrame(this._fadeOut, this)
+    },
+
+    // Only runs when the gridlayer is quickly re-added while it's being faded out
+    _fadeIn: function _fadeIn () {
+      if (!this._fadeOutTime || !this._container) { return }
+
+      var now = performance.now() || (+new Date())
+
+      var opacity = (now - this._fadeOutTime) / fadeDuration
+      // console.log('fadein:', opacity);
+
+      if (opacity > 1) {
+        this._fadeOutTime = false
+        return
+      }
+
+      L.DomUtil.setOpacity(this._container, opacity * this.options.opacity)
+
+      L.Util.requestAnimFrame(this._fadeIn, this)
+    }
+
+  })
+})()
diff --git a/src/conf/MapConfig.js b/src/conf/MapConfig.js
index 4512d66..8e502d3 100644
--- a/src/conf/MapConfig.js
+++ b/src/conf/MapConfig.js
@@ -34,6 +34,7 @@
 const mapConfig = {
   IsLoadMapByToken: true, // 鏄惁閫氳繃token鍔犺浇鍦板浘
   showBaseMapType: 1, // 1鏄剧ず澶╁湴鍥撅紝2鏄剧ずarcgis鍦板浘
+  // defaultBasemapCode: 'tianditu_img', // 榛樿鏄剧ず 鍦板浘绫诲瀷
   IntranetBaseMaps: TDT.intranet,
   InternetBaseMaps: TDT.internet,
   Layers: { LayerSewersLine: [LayerSewersLine], layerSewersPoint: LayerSewersPoint } // 姹¢洦姘村浘灞傞厤缃�
diff --git a/src/conf/TDT.js b/src/conf/TDT.js
index 1c5ad9e..0c5b418 100644
--- a/src/conf/TDT.js
+++ b/src/conf/TDT.js
@@ -4,7 +4,7 @@
 const TIANDITU_GIS_TOKEN = '5d76218063082952d18b76da5005f490' // 澶囩敤tk: f1b72b5e7cb1175acddfa485f1bc9770
 const intranet = [
   {
-    code: 'sinopec_img',
+    code: 'tianditu_img',
     name: '涓煶鍖栧ぉ鍦板浘褰卞儚',
     icon_actived: '/assets/images/map-pages/icon/img.png',
     icon_deactived: '/assets/images/map-pages/icon/img.png',
@@ -40,7 +40,7 @@
     }
   },
   {
-    code: 'sinopec_vec',
+    code: 'tianditu_vec',
     name: '涓煶鍖栧ぉ鍦板浘鐭㈤噺',
     icon_actived: '/assets/images/map-pages/icon/road.png',
     icon_deactived: '/assets/images/map-pages/icon/road.png',
diff --git a/src/conf/Topic.js b/src/conf/Topic.js
index fb1faa3..a8e25e4 100644
--- a/src/conf/Topic.js
+++ b/src/conf/Topic.js
@@ -4,54 +4,70 @@
   icon: '/assets/images/menu/special.png'
 }
 
+export const TopicComp = {
+  dischargeSearch: () => import('@components/panel/topicSearch/DischargeSearch'),
+  envProtectSearch: () => import('@components/panel/topicSearch/EnvProtectSearch'),
+  sewersSearch: () => import('@components/panel/topicSearch/SewersSearch.vue')
+}
+
 export const TopicList = [{
   name: '姹℃煋婧�',
   id: 1,
   check: false,
-  icon: '/assets/images/menu/special.png'
+  icon: '/assets/images/menu/special.png',
+  comp: 'dischargeSearch'
 }, {
   name: '搴熸按鐩戞祴',
   id: 2,
   checked: false,
-  icon: '/assets/images/menu/special.png'
+  icon: '/assets/images/menu/special.png',
+  comp: 'envProtectSearch'
 }, {
   name: '搴熸皵鐩戞祴',
   id: 3,
   checked: false,
-  icon: '/assets/images/menu/special.png'
+  icon: '/assets/images/menu/special.png',
+  comp: 'dischargeSearch'
 }, {
   name: '鍥哄簾绠$悊',
   id: 4,
   checked: false,
-  icon: '/assets/images/menu/special.png'
+  icon: '/assets/images/menu/special.png',
+  comp: 'envProtectSearch'
 }, {
   name: '鐜椋庨櫓',
   id: 5,
   checked: false,
-  icon: '/assets/images/menu/special.png'
+  icon: '/assets/images/menu/special.png',
+  comp: 'dischargeSearch'
 }, {
   name: '鍦熷¥鍙婂湴涓嬫按',
   id: 6,
   checked: false,
-  icon: '/assets/images/menu/special.png'
+  icon: '/assets/images/menu/special.png',
+  comp: 'dischargeSearch'
 }, {
   name: '姹¢洦姘寸缃�',
   id: 7,
   checked: false,
-  icon: '/assets/images/menu/special.png'
+  icon: '/assets/images/menu/special.png',
+  comp: 'envProtectSearch'
 }, {
   name: '棰勮鎶ヨ',
   id: 8,
   checked: false,
-  icon: '/assets/images/menu/special.png'
+  icon: '/assets/images/menu/special.png',
+  comp: 'sewersSearch'
 }, {
   name: '鎸囨爣缁熻',
   id: 9,
   checked: false,
-  icon: '/assets/images/menu/special.png'
+  icon: '/assets/images/menu/special.png',
+  comp: 'envProtectSearch'
 }, {
   name: '搴旀�ュ湴鍥�',
   id: 10,
   checked: false,
-  icon: '/assets/images/menu/special.png'
+  icon: '/assets/images/menu/special.png',
+  comp: 'sewersSearch'
 }]
diff --git a/src/main.js b/src/main.js
index 95591a3..28cfbd5 100644
--- a/src/main.js
+++ b/src/main.js
@@ -12,6 +12,7 @@
 import L from 'leaflet'
 import 'leaflet.markercluster'
 import 'leaflet-canvas-markers'
+import './components/plugin/Leaflet.GridLayer.FadeOut'
 Vue.config.productionTip = false
 
 Vue.use(ElementUI)
diff --git a/src/views/MapTemplate.vue b/src/views/MapTemplate.vue
index a1c32db..a98e84c 100644
--- a/src/views/MapTemplate.vue
+++ b/src/views/MapTemplate.vue
@@ -1,19 +1,19 @@
 <template>
-    <div class="full-screen">
-        <popup ref="popup" @callPopup="callPopup"></popup>
-        <div id="map" ref="rootmap">
-        </div>
-        <sgis-layer-controller :preset="'warningPreset'">
-            <lc-basemap></lc-basemap>
-            <!--            <div class="barline"></div>-->
-            <lc-service-layer class="barline" v-if="lcServiceLayerVisible"></lc-service-layer>
-        </sgis-layer-controller>
-        <monitor-panel></monitor-panel>
-<!--        <top-enterprise-panel></top-enterprise-panel>-->
-        <tool-box-panel></tool-box-panel>
-      <menu-special></menu-special>
-      <legend-panel></legend-panel>
+  <div class="full-screen">
+    <popup ref="popup" @callPopup="callPopup"></popup>
+    <div id="map" ref="rootmap">
     </div>
+    <sgis-layer-controller :preset="'warningPreset'">
+      <lc-basemap></lc-basemap>
+      <!--            <div class="barline"></div>-->
+      <lc-service-layer class="barline" v-if="lcServiceLayerVisible"></lc-service-layer>
+    </sgis-layer-controller>
+    <monitor-panel></monitor-panel>
+    <!--        <top-enterprise-panel></top-enterprise-panel>-->
+    <tool-box-panel :map="this.map"></tool-box-panel>
+    <menu-special></menu-special>
+    <legend-panel></legend-panel>
+  </div>
 </template>
 
 <script>
@@ -134,23 +134,23 @@
 
 <style lang="less">
 
-    .full-screen {
-        width: 100%;
-        height: 100%;
-        margin: 0;
-        padding: 0;
-        position: absolute;
+.full-screen {
+  width: 100%;
+  height: 100%;
+  margin: 0;
+  padding: 0;
+  position: absolute;
 
-        #map {
-            height: 100%;
-            width: 100%;
-        }
+  #map {
+    height: 100%;
+    width: 100%;
+  }
 
-        .barline {
-            //width: 100%;
-            //height: 1px;
-            //background-color: #0661AE;
-            border-top: 1px solid #0661AE;
-        }
-    }
-</style>>
+  .barline {
+    //width: 100%;
+    //height: 1px;
+    //background-color: #0661AE;
+    border-top: 1px solid #0661AE;
+  }
+}
+</style>

--
Gitblit v1.8.0