From b820052f5bd13f1a88131f39055c49437652bd2c Mon Sep 17 00:00:00 2001
From: zhangshuaibao <15731629597@163.com>
Date: 星期四, 25 三月 2021 17:08:40 +0800
Subject: [PATCH] 更改废水坐标显示代码

---
 src/components/BaseNav/WasteWater.js         |  175 +++++++++++++++++++++
 src/api/request.js                           |    5 
 src/components/BaseNav/WasteWaterTable.vue   |   69 ++++++++
 src/components/BaseNav/SolidWaste.js         |   24 +-
 src/components/BaseNav/WasteWaterContent.vue |   52 ++++++
 src/views/MapTemplate.vue                    |   23 ++
 public/static/WasteWater.json                |  117 ++++++++++++++
 7 files changed, 450 insertions(+), 15 deletions(-)

diff --git a/public/static/WasteWater.json b/public/static/WasteWater.json
new file mode 100644
index 0000000..44ed223
--- /dev/null
+++ b/public/static/WasteWater.json
@@ -0,0 +1,117 @@
+{
+  "Result": {
+    "IsSuccess": 1,
+    "code": 1,
+    "ErrorMsg": "",
+    "DataInfo": [
+      {
+        "StoragePlaceId": 124.0,
+        "StoragePlaceName": "鐐兼补閮ㄥ惈娌规薄姘存帓鏀惧彛",
+        "HazaWasteStorageDate": "0001-01-01T00:00:00",
+        "HazaWasteCatgrName": null,
+        "SurplusQuantityWarning": 0,
+        "LongDayWarning": 0,
+        "DesignFloorArea": 95.0,
+        "HazaWasteName": null,
+        "EstimateFloorArea": 0.0,
+        "HazaWasteDeptName": null,
+        "SurplusFloorArea": 95.0,
+        "HazaWasteStorageDays": 0.0,
+        "StorageQty": 0.0,
+        "HazaWasteStorageQty": 0.0,
+        "positionX": 32.234354069955536,
+        "positionY": 118.76172605141248
+      },
+      {
+        "StoragePlaceId": 123.0,
+        "StoragePlaceName": "姘村姟閮ㄧ儻鐑冨閮ㄦ帓姘村彛",
+        "HazaWasteStorageDate": "0001-01-01T00:00:00",
+        "HazaWasteCatgrName": null,
+        "SurplusQuantityWarning": 0,
+        "LongDayWarning": 0,
+        "DesignFloorArea": 260.0,
+        "HazaWasteName": null,
+        "EstimateFloorArea": 0.0,
+        "HazaWasteDeptName": null,
+        "SurplusFloorArea": 260.0,
+        "HazaWasteStorageDays": 0.0,
+        "StorageQty": 0.0,
+        "HazaWasteStorageQty": 0.0,
+        "positionX": 32.21783286123124,
+        "positionY": 118.74581627024358
+      },
+      {
+        "StoragePlaceId": 127.0,
+        "StoragePlaceName": "鑱氶啔閮ㄥ簾姘存帓鏀惧彛",
+        "HazaWasteStorageDate": "0001-01-01T00:00:00",
+        "HazaWasteCatgrName": null,
+        "SurplusQuantityWarning": 0,
+        "LongDayWarning": 0,
+        "DesignFloorArea": 351.0,
+        "HazaWasteName": null,
+        "EstimateFloorArea": 0.0,
+        "HazaWasteDeptName": null,
+        "SurplusFloorArea": 351.0,
+        "HazaWasteStorageDays": 0.0,
+        "StorageQty": 0.0,
+        "HazaWasteStorageQty": 0.0,
+        "positionX": 32.21761792102056,
+        "positionY": 118.7694434198091
+      },
+      {
+        "StoragePlaceId": 126.0,
+        "StoragePlaceName": "姘村姟閮ㄩ洦姘存帓鏀惧彛",
+        "HazaWasteStorageDate": "0001-01-01T00:00:00",
+        "HazaWasteCatgrName": null,
+        "SurplusQuantityWarning": 0,
+        "LongDayWarning": 1.0,
+        "DesignFloorArea": 54.0,
+        "HazaWasteName": null,
+        "EstimateFloorArea": 0.0,
+        "HazaWasteDeptName": null,
+        "SurplusFloorArea": 54.0,
+        "HazaWasteStorageDays": 0.0,
+        "StorageQty": 1.0,
+        "HazaWasteStorageQty": 0.0,
+        "positionX": 32.22328407752166,
+        "positionY": 118.7645304033338
+      },
+      {
+        "StoragePlaceId": 122.0,
+        "StoragePlaceName": "鐢熶骇搴熸按鎺掓斁鍙�",
+        "HazaWasteStorageDate": "0001-01-01T00:00:00",
+        "HazaWasteCatgrName": null,
+        "SurplusQuantityWarning": 0,
+        "LongDayWarning": 1.0,
+        "DesignFloorArea": 124.0,
+        "HazaWasteName": null,
+        "EstimateFloorArea": 0.0,
+        "HazaWasteDeptName": null,
+        "SurplusFloorArea": 124.0,
+        "HazaWasteStorageDays": 0.0,
+        "StorageQty": 1.0,
+        "HazaWasteStorageQty": 0.0,
+        "positionX": 32.22478169721047,
+        "positionY": 118.75309838487216
+      },
+      {
+        "StoragePlaceId": 129.0,
+        "StoragePlaceName": "鍖栧纭寲鍝佹帓姘村彛",
+        "HazaWasteStorageDate": "0001-01-01T00:00:00",
+        "HazaWasteCatgrName": null,
+        "SurplusQuantityWarning": 0,
+        "LongDayWarning": 0,
+        "DesignFloorArea": 78.0,
+        "HazaWasteName": null,
+        "EstimateFloorArea": 0.0,
+        "HazaWasteDeptName": null,
+        "SurplusFloorArea": 78.0,
+        "HazaWasteStorageDays": 0.0,
+        "StorageQty": 0.0,
+        "HazaWasteStorageQty": 0.0,
+        "positionX": 32.228692681454525,
+        "positionY": 118.77199913186048
+      }
+    ]
+  }
+}
diff --git a/src/api/request.js b/src/api/request.js
index d623ca2..d6db6a3 100644
--- a/src/api/request.js
+++ b/src/api/request.js
@@ -7,3 +7,8 @@
 export const requestSolidWaste = (url) => {
   return $http.get('./static/SolidWaste.json')
 }
+
+// 搴熸按鎺ュ彛
+export const requestWasteWater = (url) => {
+  return $http.get('./static/WasteWater.json')
+}
diff --git a/src/components/BaseNav/SolidWaste.js b/src/components/BaseNav/SolidWaste.js
index a32b0bb..1724257 100644
--- a/src/components/BaseNav/SolidWaste.js
+++ b/src/components/BaseNav/SolidWaste.js
@@ -28,7 +28,7 @@
   // 鏍规嵁鑾峰彇鏁版嵁 鐢诲嚭 鍐呭
   DrawTheSolidWasteContent (data) {
     // 鍥炬爣鏍峰紡鎵╁睍
-    var SolidWasteIcon = this.SolidWasteIcon()
+    const SolidWasteIcon = this.SolidWasteIcon()
 
     // //鍔犺浇鏁版嵁鍓嶅鏋滃瓨鍦ㄥ浘灞傜粍 閭d箞娓呴櫎鎺�
     if (this.SolidWasteLayerGroup) {
@@ -43,13 +43,13 @@
       // if (positionX != null && positionY != null) {
       // 鐢ㄤ簬 鍒ゆ柇 => 鍒ゆ柇鏄惁灞曠ず鑴夊啿鏁堟灉 => temp(涓存椂)
       const determineValueOne = data[i].LongDayWarning
-      var determineValueTwo = data[i].StorageQty
+      const determineValueTwo = data[i].StorageQty
       const positionArea = [positionX, positionY]
 
       // 鍥炬爣灞曠ず
-      var iconUrl = this.SolidWasteIconUrl(determineValueOne, determineValueTwo, positionArea)
-      var Icon = new SolidWasteIcon({ iconUrl: iconUrl })
-      // var url = Icon.options.iconUrl
+      const iconUrl = this.SolidWasteIconUrl(determineValueOne, determineValueTwo, positionArea)
+      const Icon = new SolidWasteIcon({ iconUrl: iconUrl })
+      // let url = Icon.options.iconUrl
 
       const marker = this.L.marker([positionX, positionY], { icon: Icon })
 
@@ -101,7 +101,7 @@
 
   // 鏍规嵁绫诲瀷杩斿洖鍥剧墖鍔犺浇url
   SolidWasteIconUrl (determineValueOne, determineValueTwo, position) {
-    var EffectOfChange
+    let EffectOfChange
     if (determineValueOne === 1 || determineValueTwo === 1) {
       EffectOfChange = defaultImg
       this.EffectOfPulse(position, this.solidWasteMarkersLabels, this.SolidWasteLayerGroup)
@@ -114,19 +114,19 @@
   // 鑴夊啿鏁堟灉璁剧疆瀹炵幇
   EffectOfPulse (position, markers, layerGroup) {
     // // 鍖哄垎鐩存帴鎵ц 鍜屽垽鏂墽琛岀殑涓嶅悓鍖哄埆
-    var differentColor = ''
+    let differentColor = ''
     if (markers) {
       differentColor = '#ff0000'
     } else {
       differentColor = '#98FB98'
     }
     // 鍧愭爣鏁版嵁锛氭姤璀︿紶杩涙潵鐨勬槸鏁扮粍 / 鐐瑰嚮浼犺繘鏉ョ殑鏄痮bject
-    var FinalPosition = position instanceof Array ? {
+    const FinalPosition = position instanceof Array ? {
       lat: position[0],
       lng: position[1]
     } : position
     // 鎻掍欢 鏁堟灉瀹炵幇
-    var pulsingIcon = this.L.icon.pulse({
+    const pulsingIcon = this.L.icon.pulse({
       iconSize: [20, 20],
       color: differentColor,
       fillColor: ''
@@ -135,7 +135,7 @@
       // markers.push(this.L.marker(FinalPosition, { icon: pulsingIcon }))
       // this.L.layerGroup(markers).addLayer(layerGroup)
     } else {
-      var picGroupMarker = new this.L.FeatureGroup()
+      const picGroupMarker = new this.L.FeatureGroup()
       this.L.marker(FinalPosition, { icon: pulsingIcon }).addTo(picGroupMarker)
       this.pulseHeighLightMarker = picGroupMarker.addTo(this.SolidWasteLayerGroup)
       this.PulseCountSetting()
@@ -144,8 +144,8 @@
 
   // 瀵瑰浘鏍囪剦鍐� 杩涜set璁剧疆  // 楂樹寒鍥惧眰
   PulseCountSetting () {
-    var HeightLightTime = 5
-    var PulseNumber = 5
+    const HeightLightTime = 5
+    let PulseNumber = 5
     const pulseinterver = setInterval(() => {
       if (PulseNumber > 0) {
         PulseNumber--
diff --git a/src/components/BaseNav/WasteWater.js b/src/components/BaseNav/WasteWater.js
new file mode 100644
index 0000000..4a3e2f4
--- /dev/null
+++ b/src/components/BaseNav/WasteWater.js
@@ -0,0 +1,175 @@
+import { requestWasteWater } from '@/api/request'
+// 灞曠ず鍥剧墖
+import defaultImg from '@components/BaseNav/magicMarker.png'
+import Setting from '@components/BaseNav/voc.png'
+
+// 搴曞浘涓氬姟灞曠ず鐐�
+class AddWasteWaterHelper {
+  constructor (options) {
+    this.map = options.map
+    this.L = window.L
+    this.WasteWaterLayerGroup = this.L.layerGroup().addTo(this.map)
+    this.WasteWaterPopup = null
+    this.L.sgis = this.L.sgis || this.L
+    this.WasteWaterMarkersLabels = []
+    this.pulseHeighLightMarker = null
+  }
+
+  // 璇锋眰鏁版嵁 data 涓哄弬鏁帮紝 璇锋眰鍚庡彴鏁版嵁鏃� 鎼哄甫data鍙傛暟
+  requestData () {
+    requestWasteWater().then(res => {
+      this.DrawTheWasteWaterContent(res.Result.DataInfo)
+      console.log(res)
+    }).catch(err => {
+      console.log(err)
+    })
+  }
+
+  // 鏍规嵁鑾峰彇鏁版嵁 鐢诲嚭 鍐呭
+  DrawTheWasteWaterContent (data) {
+    // 鍥炬爣鏍峰紡鎵╁睍
+    const WasteWaterIcon = this.WasteWaterIcon()
+
+    // //鍔犺浇鏁版嵁鍓嶅鏋滃瓨鍦ㄥ浘灞傜粍 閭d箞娓呴櫎鎺�
+    if (this.WasteWaterLayerGroup) {
+      this.WasteWaterLayerGroup.clearLayers()
+    }
+    for (let i = 0; i < data.length; i++) {
+      // 缁忕含搴� 浣嶇疆
+      const positionX = data[i].positionX
+      const positionY = data[i].positionY
+
+      // 鍒ゆ柇 缁忕含搴︿綅缃俊鎭槸鍚﹀瓨鍦�
+      // if (positionX != null && positionY != null) {
+      // 鐢ㄤ簬 鍒ゆ柇 => 鍒ゆ柇鏄惁灞曠ず鑴夊啿鏁堟灉 => temp(涓存椂)
+      const determineValueOne = data[i].LongDayWarning
+      const determineValueTwo = data[i].StorageQty
+      const positionArea = [positionX, positionY]
+
+      // 鍥炬爣灞曠ず
+      const iconUrl = this.WasteWaterIconUrl(determineValueOne, determineValueTwo, positionArea)
+      const Icon = new WasteWaterIcon({ iconUrl: iconUrl })
+      // let url = Icon.options.iconUrl
+
+      const marker = this.L.marker([positionX, positionY], { icon: Icon })
+
+      marker.bindPopup(() => {
+        return this.WasteWaterPopup.$el
+      }, {
+        className: 's-map-popup',
+        minWidth: 600,
+        closeButton: true,
+        autoClose: false
+      })
+      // 鍒掕繃鍑虹幇 灞曠ず鏁版嵁
+      marker.bindTooltip(data[i].StoragePlaceName, {
+        permanent: true,
+        offset: [0, -16],
+        direction: 'top',
+        className: ''
+      })
+      // 鐐瑰嚮 浜嬩欢
+      marker.on('click', (e) => {
+        try {
+          // console.log(e)
+          this.EffectOfPulse(e.target.getLatLng())
+          this.WasteWaterPopup.setDate(data[i])
+        } catch (error) {
+          console.log(error)
+        }
+      })
+      // 璁剧疆鍐呭娣诲姞鍒板浘灞�
+      this.WasteWaterLayerGroup.addLayer(marker)
+      // }
+    }
+  }
+
+  // 鍥哄簾鐐瑰嚮杩涜鐨� 鍐呭鐨勮缃�
+  SetWasteWaterContent (config, containerPopup) {
+    this.WasteWaterPopup = containerPopup
+  }
+
+  // 鍥炬爣鏍峰紡鎵╁睍 => 鍏夊湀 鍥炬爣鑴夊啿
+  WasteWaterIcon () {
+    return this.L.Icon.extend({
+      options: {
+        iconSize: [50, 50],
+        iconAnchor: [25, 25]
+      }
+    })
+  }
+
+  // 鏍规嵁绫诲瀷杩斿洖鍥剧墖鍔犺浇url
+  WasteWaterIconUrl (determineValueOne, determineValueTwo, position) {
+    let EffectOfChange
+    if (determineValueOne === 1 || determineValueTwo === 1) {
+      EffectOfChange = defaultImg
+      this.EffectOfPulse(position, this.WasteWaterMarkersLabels, this.WasteWaterLayerGroup)
+    } else {
+      EffectOfChange = Setting
+    }
+    return EffectOfChange
+  }
+
+  // 鑴夊啿鏁堟灉璁剧疆瀹炵幇
+  EffectOfPulse (position, markers, layerGroup) {
+    // // 鍖哄垎鐩存帴鎵ц 鍜屽垽鏂墽琛岀殑涓嶅悓鍖哄埆
+    let differentColor = ''
+    if (markers) {
+      differentColor = '#ff0000'
+    } else {
+      differentColor = '#98FB98'
+    }
+    // 鍧愭爣鏁版嵁锛氭姤璀︿紶杩涙潵鐨勬槸鏁扮粍 / 鐐瑰嚮浼犺繘鏉ョ殑鏄痮bject
+    const FinalPosition = position instanceof Array ? {
+      lat: position[0],
+      lng: position[1]
+    } : position
+    // 鎻掍欢 鏁堟灉瀹炵幇
+    const pulsingIcon = this.L.icon.pulse({
+      iconSize: [20, 20],
+      color: differentColor,
+      fillColor: ''
+    })
+    if (markers) {
+      // markers.push(this.L.marker(FinalPosition, { icon: pulsingIcon }))
+      // this.L.layerGroup(markers).addLayer(layerGroup)
+    } else {
+      const picGroupMarker = new this.L.FeatureGroup()
+      this.L.marker(FinalPosition, { icon: pulsingIcon }).addTo(picGroupMarker)
+      this.pulseHeighLightMarker = picGroupMarker.addTo(this.WasteWaterLayerGroup)
+      this.PulseCountSetting()
+    }
+  }
+
+  // 瀵瑰浘鏍囪剦鍐� 杩涜set璁剧疆  // 楂樹寒鍥惧眰
+  PulseCountSetting () {
+    const HeightLightTime = 5
+    let PulseNumber = 5
+    const pulseinterver = setInterval(() => {
+      if (PulseNumber > 0) {
+        PulseNumber--
+      } else {
+        this.pulseClear(pulseinterver)
+        PulseNumber = HeightLightTime
+      }
+    }, 1000)
+  }
+
+  // 娓呴櫎 鍥惧眰
+  pulseClear (pulseinterver) {
+    clearInterval(pulseinterver)
+    pulseinterver = null
+
+    if (this.WasteWaterLayerGroup) {
+      // this.WasteWaterLayerGroup.clearLayers()
+    } else {
+      this.WasteWaterLayerGroup = this.L.layerGroup().addTo(this.map)
+    }
+    if ((this.pulseHeighLightMarker)) {
+      this.pulseHeighLightMarker.remove()
+    }
+  }
+}
+
+export default AddWasteWaterHelper
diff --git a/src/components/BaseNav/WasteWaterContent.vue b/src/components/BaseNav/WasteWaterContent.vue
new file mode 100644
index 0000000..0ff5603
--- /dev/null
+++ b/src/components/BaseNav/WasteWaterContent.vue
@@ -0,0 +1,52 @@
+<template>
+  <div class="wastewater-content">
+    <div class="content-left">
+      <span>{{ displayContent.StoragePlaceName }}</span>
+    </div>
+    <div class="content-right">
+      <WasteWaterTable :displayContent="displayContent"></WasteWaterTable>
+    </div>
+  </div>
+</template>
+
+<script>
+
+import WasteWaterTable from '@components/BaseNav/WasteWaterTable'
+
+export default {
+  name: 'WasteWaterContent',
+  components: { WasteWaterTable },
+  data () {
+    return {
+      displayContent: []
+    }
+  },
+  methods: {
+    setDate (data) {
+      this.displayContent = data
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+span {
+  font-size: 22px;
+  color: red;
+}
+
+.wastewater-content {
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: space-around;
+
+  .content-left {
+    width: 35%;
+  }
+
+  .content-right {
+    width: 60%;
+  }
+}
+</style>
diff --git a/src/components/BaseNav/WasteWaterTable.vue b/src/components/BaseNav/WasteWaterTable.vue
new file mode 100644
index 0000000..1768d8f
--- /dev/null
+++ b/src/components/BaseNav/WasteWaterTable.vue
@@ -0,0 +1,69 @@
+<template>
+  <el-tabs>
+    <el-tab-pane :label="displayContent.StoragePlaceName" name="">
+      <el-table
+          :data="tableData" :fit="true">
+        <el-table-column
+            type="index"
+            label="搴忓彿">
+        </el-table-column>
+        <el-table-column
+            type="index"
+            label="搴忓彿">
+        </el-table-column>
+        <el-table-column
+            type="index"
+            label="搴忓彿">
+        </el-table-column>
+        <el-table-column label="搴熸按(t)">
+          <el-table-column
+              prop="province"
+              label="绱浜х敓閲�">
+          </el-table-column>
+          <el-table-column
+              prop="city"
+              label="褰撴湀浜х敓閲�">
+          </el-table-column>
+        </el-table-column>
+      </el-table>
+    </el-tab-pane>
+  </el-tabs>
+
+</template>
+
+<script>
+export default {
+  name: 'WasteWaterTable',
+  props: ['displayContent'],
+  data () {
+    return {
+      tableData: [{
+        date: '闆嗗洟鍏徃',
+        name: '35',
+        province: '23',
+        city: '11',
+        address: 235,
+        zip: 23
+      }, {
+        date: '澶╂触鐭冲寲',
+        name: 32,
+        province: 33,
+        city: 44,
+        address: 53,
+        zip: 200333
+      }, {
+        date: '娴庡崡鐐煎寲',
+        name: 35,
+        province: 13,
+        city: 33,
+        address: 44,
+        zip: 200333
+      }]
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+
+</style>
diff --git a/src/views/MapTemplate.vue b/src/views/MapTemplate.vue
index 698833c..bd0b4f1 100644
--- a/src/views/MapTemplate.vue
+++ b/src/views/MapTemplate.vue
@@ -18,6 +18,8 @@
     <!--    <el-button id="map-btn" el-icon-c-scale-to-original icon="el-icon-c-scale-to-original" circle @click="isShowHidden"></el-button>-->
     <el-button type="primary" @click="ChangeState" class="solid-waste">鍥哄簾</el-button>
     <SolidContent ref="SolidWastePopup"></SolidContent>
+    <el-button type="primary" @click="ChangeWaterState" class="Waste-water">搴熸按</el-button>
+    <WasteWaterContent ref="WasteWaterPopup"></WasteWaterContent>
   </div>
 </template>
 
@@ -37,8 +39,10 @@
 import LegendPanel from '@components/panel/LegendPanel'
 import Enterprise from '../components/table/enterprise'
 import SolidContent from '@components/BaseNav/SolidContent'
+import WasteWaterContent from '@components/BaseNav/WasteWaterContent'
 // 搴曞浘涓氬姟js閫昏緫
 import AddSolidWasteHelper from '@components/BaseNav/SolidWaste'
+import AddWasteWaterHelper from '@components/BaseNav/WasteWater'
 
 export default {
   name: 'MapTemplate',
@@ -54,7 +58,8 @@
     LcServiceLayer,
     Popup,
     summarySheets,
-    SolidContent
+    SolidContent,
+    WasteWaterContent
   },
   data () {
     return {
@@ -82,9 +87,14 @@
       AddSolidWaste.requestData()
       AddSolidWaste.SetSolidWasteContent(this.config, this.$refs.SolidWastePopup)
     },
-    isShowHidden () {
-      this.isShowBtn = !this.isShowBtn
+    ChangeWaterState () {
+      const AddWasteWater = new AddWasteWaterHelper({ map: this.map })
+      AddWasteWater.requestData()
+      AddWasteWater.SetWasteWaterContent(this.config, this.$refs.WasteWaterPopup)
     },
+    // isShowHidden () {
+    //   this.isShowBtn = !this.isShowBtn
+    // },
     saveMapStatus () {
       window.serviceLayerHelper = this.serviceLayerHelper
       this.$store.commit('setMapObj', this.map)
@@ -166,6 +176,13 @@
   z-index: 999;
 }
 
+.Waste-water {
+  position: absolute;
+  top: 88px;
+  left: 180px;
+  z-index: 999;
+}
+
 .full-screen {
   width: 100%;
   height: 100%;

--
Gitblit v1.8.0