From 7b4d8a5ee0cae50a5f473e3765ba84f28fe8ba4b Mon Sep 17 00:00:00 2001
From: zhangshuaibao <15731629597@163.com>
Date: 星期一, 29 三月 2021 11:27:54 +0800
Subject: [PATCH] Merge branch 'develop' of http://xearth.cn:6600/r/wuyushui/SewerAndRainNetwork into develop

---
 src/api/request.js                                     |   24 +
 src/components/BaseNav/WireSurface/index.js            |   22 +
 src/components/flueGas/green_airquality_3.png          |    0 
 vue.config.js                                          |    2 
 src/components/BaseNav/SolidWaste/Popup.vue            |  111 ++++++
 src/views/MapTemplate.vue                              |   53 +++
 src/components/BaseNav/PublicBounced/PublicBounced.vue |   69 ++++
 src/Sgis.js                                            |    2 
 src/components/flueGas/GasComponents/GasTable.vue      |   46 ++
 src/components/BaseNav/SolidWaste/SolidWaste.js        |  102 ++---
 public/static/airQuality.json                          |  117 ++++++
 src/components/flueGas/green_airquality_2.png          |    0 
 src/components/flueGas/GasComponents/GasECharts.vue    |  107 ++++++
 src/components/flueGas/flueGas.js                      |  176 ++++++++++
 src/main.js                                            |    3 
 src/components/flueGas/GasComponents/GasVideo.vue      |   24 +
 src/components/flueGas/popup-gas.vue                   |   54 +++
 src/conf/MapConfig.js                                  |    8 
 src/utils/axios.js                                     |    3 
 package.json                                           |    1 
 src/components/BaseNav/SolidWaste/SolidContent.vue     |   79 +++-
 21 files changed, 909 insertions(+), 94 deletions(-)

diff --git a/package.json b/package.json
index 1004223..abf1a54 100644
--- a/package.json
+++ b/package.json
@@ -28,6 +28,7 @@
     "leaflet.markercluster": "^1.4.1",
     "lodash": "^4.17.10",
     "nprogress": "^0.2.0",
+    "qs": "^6.10.1",
     "rbush": "^3.0.1",
     "screenfull": "^3.3.3",
     "style-resources-loader": "^1.4.1",
diff --git a/public/static/airQuality.json b/public/static/airQuality.json
new file mode 100644
index 0000000..2040078
--- /dev/null
+++ b/public/static/airQuality.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.214483532361875,
+        "positionY":118.80441341164345
+      },
+      {
+        "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.22122596740723,
+        "positionY": 118.7843091583252
+      },
+      {
+        "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.232299575805664,
+        "positionY": 118.78950408935547
+      },
+      {
+        "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.24092555999756,
+        "positionY": 118.75035759735107
+      },
+      {
+        "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.21459850282962,
+        "positionY": 118.75664928244586
+      },
+      {
+        "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.22176451502621,
+        "positionY": 118.75520774508638
+      }
+    ]
+  }
+}
diff --git a/src/Sgis.js b/src/Sgis.js
index dcebdb5..6e794e0 100644
--- a/src/Sgis.js
+++ b/src/Sgis.js
@@ -16,7 +16,7 @@
 import './components/plugin/Editable' // 鏍囩粯鎿嶄綔
 import './components/plugin/MagicMarker' // 鍔ㄧ敾Marker
 import './assets/css/map/magic.min.css' // 鍔ㄧ敾Marker css
-// import './assets/css/map/leaflet.magicMarker.css' // 鍔ㄧ敾marker
+import '@/components/plugin/magicMarker.css'
 import '@components/plugin/pulse/Pulse' // marker 澶栧湀娉�
 import '@components/plugin/pulse/Pulse.css' // marker 澶栧湀娉� css
 
diff --git a/src/api/request.js b/src/api/request.js
index cb1f881..c3ce5bf 100644
--- a/src/api/request.js
+++ b/src/api/request.js
@@ -1,11 +1,21 @@
 import $http from '@utils/axios'
+import Qs from 'qs'
+// import axios from 'axios'
 
-// // 鍥哄簾鎺ュ彛
-export const requestSolidWaste = (url) => {
-  return $http.get('./static/SolidWaste.json')
+export const QueryStoragePlaceListByCompanyAndName = (data = {}) => {
+  return $http.post('/EPInterface/DataService/EPMapService.asmx/QueryStoragePlaceListByCompanyAndName', Qs.stringify(data), {
+    headers: {
+      'Content-Type': 'application/json'
+    }
+  })
 }
-
-// 搴熸按鎺ュ彛
-export const requestWasteWater = (url) => {
-  return $http.get('./static/WasteWater.json')
+// export const FlueGas = (url) => {
+//   return $http.get('./static/airQuality.json')
+// }
+export function FlueGas (data = {}) {
+  return $http.post('EPInterface/DataService/EPMapService.asmx/ObtainningConInfo', Qs.stringify(data), {
+    headers: {
+      'Content-Type': 'application/json'
+    }
+  })
 }
diff --git a/src/components/BaseNav/PublicBounced/PublicBounced.vue b/src/components/BaseNav/PublicBounced/PublicBounced.vue
new file mode 100644
index 0000000..003f1dc
--- /dev/null
+++ b/src/components/BaseNav/PublicBounced/PublicBounced.vue
@@ -0,0 +1,69 @@
+<template>
+  <div class="public-bounced" v-show="flag">
+    <div class="public-bounced-title">
+      <span>{{ displayContent.Name }}</span>
+      <i class="el-icon-circle-close" @click="closePopup"></i>
+    </div>
+    <div class="public-bounced-content">
+      <span>鍐呭</span>
+    </div>
+  </div>
+</template>
+
+<script>
+
+export default {
+  name: 'PublicBounced',
+  data () {
+    return {
+      displayContent: [],
+      flag: false
+    }
+  },
+  methods: {
+    setData (data) {
+      this.displayContent = data
+      this.flag = true
+    },
+    closePopup () {
+      this.flag = false
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.public-bounced {
+  width: 80%;
+  height: 450px;
+  z-index: 999;
+  position: absolute;
+  top: 25%;
+  left: 10%;
+  background-color: #002432;
+  margin: 1% auto;
+  border: 1px #a5bfd8 solid;
+
+  .public-bounced-title {
+    width: 100%;
+    border: 1px #a4c0d8 solid;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding: 5px 0;
+
+    span {
+      color: #f4f7ff;
+      margin: 0 15px;
+      font-size: 14px;
+    }
+
+    i {
+      color: white;
+      margin: 0 15px;
+      font-size: 22px;
+    }
+  }
+
+}
+</style>
diff --git a/src/components/BaseNav/SolidWaste/Popup.vue b/src/components/BaseNav/SolidWaste/Popup.vue
new file mode 100644
index 0000000..79a1a6d
--- /dev/null
+++ b/src/components/BaseNav/SolidWaste/Popup.vue
@@ -0,0 +1,111 @@
+<template>
+  <div class="box" @click.stop="clo_box">
+    <div class="popup_content">
+      <div class="popup_title">{{ this.title }}</div>
+      <div class="popup_center">
+        <div v-if="this.content_text">{{ this.content_text }}</div>
+        <slot></slot>
+      </div>
+      <div class="popup_bottom">
+        <button @click="popup_sub">纭畾{{ displayContent.Name }}</button>
+        <button @click="popup_clo">鍙栨秷</button>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'SolidContent',
+  data () {
+    return {
+      displayContent: []
+    }
+  },
+  props: {
+    title: {
+      type: String,
+      default: '榛樿鏍囬'
+    },
+    content_text: {
+      type: String,
+      default: ''
+    },
+    hidden: {
+      type: Boolean,
+      default: false
+    }
+  },
+  methods: {
+    // 鐐瑰嚮纭畾浜嬩欢
+    popup_sub () {
+      this.$emit('popup_sub')
+    },
+    // 鐐瑰嚮浜嗗彇娑堜簨浠�
+    popup_clo () {
+      this.$emit('popup_clo')
+    },
+    // 鐐瑰嚮浜嗗脊鍑烘浠ュ鍖哄煙
+    clo_box (e) {
+      if (e.target._prevClass === 'box') {
+        this.$emit('clo_box')
+      }
+    }
+  }
+}
+</script>
+
+<style scoped>
+.box {
+  width: 80%;
+  z-index: 999;
+  position: absolute;
+  top: 50%;
+  left: 25%;
+  background-color: rgba(128, 128, 128, 0.507);
+}
+
+.popup_content {
+  background-color: white;
+  padding: 1%;
+  border-radius: 20px;
+  width: 40%;
+  margin: 10% auto;
+}
+
+.popup_title {
+  text-align: center;
+  font-weight: 600;
+  font-size: 30px;
+}
+
+.popup_center {
+  padding: 10%;
+  font-size: 20px;
+}
+
+.popup_bottom {
+  display: flex;
+  justify-content: space-around;
+}
+
+button {
+  width: 25%;
+  height: 20%;
+  padding: 2%;
+  border: 1px solid gray;
+  border-radius: 10px;
+}
+
+button:nth-child(1) {
+  background-color: orangered;
+  color: white;
+  font-size: 20px;
+}
+
+button:nth-child(2) {
+  background-color: gray;
+  color: black;
+  font-size: 20px;
+}
+</style>
diff --git a/src/components/BaseNav/SolidWaste/SolidContent.vue b/src/components/BaseNav/SolidWaste/SolidContent.vue
index 3b6fb0b..9b55840 100644
--- a/src/components/BaseNav/SolidWaste/SolidContent.vue
+++ b/src/components/BaseNav/SolidWaste/SolidContent.vue
@@ -1,53 +1,82 @@
 <template>
-  <div class="solid-content">
-    <div class="content-left">
-      <span>{{ displayContent.StoragePlaceName }}</span>
-    </div>
-    <div class="content-right">
-      <SolidWasteTable :displayContent="displayContent"></SolidWasteTable>
+  <div class="public-bounced" v-show="flag">
+    <div class="popup_title">{{ displayContent.Name }}</div>
+    <div class="popup_bottom">
+      <button @click="closePopup">纭畾</button>
+      <button @click="closePopup">鍙栨秷</button>
     </div>
   </div>
 </template>
 
 <script>
-
-import SolidWasteTable from '@components/BaseNav/SolidWaste/SolidWasteTable'
+import '@/components/BaseNav/SolidWaste/directive'
 
 export default {
   name: 'SolidContent',
-  components: { SolidWasteTable },
   data () {
     return {
-      displayContent: []
+      displayContent: [],
+      flag: false
     }
   },
   methods: {
-    setDate (data) {
-      // console.log(data)
+    setData (data) {
       this.displayContent = data
+      this.flag = true
+    },
+    closePopup () {
+      this.flag = false
     }
   }
 }
 </script>
 
-<style lang="less" scoped>
-span {
-  font-size: 22px;
-  color: red;
+<style scoped>
+.public-bounced {
+  width: 80%;
+  z-index: 499;
+  position: absolute;
+  top: 15%;
+  left: 10%;
+  background-color: rgba(128, 128, 128, 0.507);
+  padding: 1%;
+  border-radius: 20px;
+  margin: 10% auto;
 }
 
-.solid-content {
-  width: 100%;
+.popup_title {
+  text-align: center;
+  font-weight: 600;
+  font-size: 30px;
+}
+
+.popup_center {
+  padding: 10%;
+  font-size: 20px;
+}
+
+.popup_bottom {
   display: flex;
-  align-items: center;
   justify-content: space-around;
+}
 
-  .content-left {
-    width: 35%;
-  }
+button {
+  width: 25%;
+  height: 20%;
+  padding: 2%;
+  border: 1px solid gray;
+  border-radius: 10px;
+}
 
-  .content-right {
-    width: 60%;
-  }
+button:nth-child(1) {
+  background-color: orangered;
+  color: white;
+  font-size: 20px;
+}
+
+button:nth-child(2) {
+  background-color: gray;
+  color: black;
+  font-size: 20px;
 }
 </style>
diff --git a/src/components/BaseNav/SolidWaste/SolidWaste.js b/src/components/BaseNav/SolidWaste/SolidWaste.js
index 616bf11..b9be819 100644
--- a/src/components/BaseNav/SolidWaste/SolidWaste.js
+++ b/src/components/BaseNav/SolidWaste/SolidWaste.js
@@ -1,4 +1,4 @@
-import { requestSolidWaste } from '@/api/request'
+import { QueryStoragePlaceListByCompanyAndName } from '@/api/request'
 // 灞曠ず鍥剧墖
 import defaultImg from '@assets/images/map-pages/basenav/solidwaste/voc.png'
 import Setting from '@assets/images/map-pages/basenav/solidwaste/gf_green.png'
@@ -16,8 +16,8 @@
   }
 
   // 璇锋眰鏁版嵁 data 涓哄弬鏁帮紝 璇锋眰鍚庡彴鏁版嵁鏃� 鎼哄甫data鍙傛暟
-  requestData () {
-    requestSolidWaste().then(res => {
+  requestData (data) {
+    QueryStoragePlaceListByCompanyAndName(data).then(res => {
       // console.log(res)
       this.DrawTheSolidWasteContent(res.Result.DataInfo)
     }).catch(err => {
@@ -28,7 +28,7 @@
   // 鏍规嵁鑾峰彇鏁版嵁 鐢诲嚭 鍐呭
   DrawTheSolidWasteContent (data) {
     // 鍥炬爣鏍峰紡鎵╁睍
-    const SolidWasteIcon = this.SolidWasteIcon()
+    var SolidWasteIcon = this.SolidWasteIcon()
 
     // //鍔犺浇鏁版嵁鍓嶅鏋滃瓨鍦ㄥ浘灞傜粍 閭d箞娓呴櫎鎺�
     if (this.SolidWasteLayerGroup) {
@@ -36,51 +36,44 @@
     }
     for (let i = 0; i < data.length; i++) {
       // 缁忕含搴� 浣嶇疆
-      const positionX = data[i].positionX
-      const positionY = data[i].positionY
+      const positionX = data[i].Latitude
+      const positionY = data[i].Longitude
 
       // 鍒ゆ柇 缁忕含搴︿綅缃俊鎭槸鍚﹀瓨鍦�
-      // if (positionX != null && positionY != null) {
-      // 鐢ㄤ簬 鍒ゆ柇 => 鍒ゆ柇鏄惁灞曠ず鑴夊啿鏁堟灉 => temp(涓存椂)
-      const determineValueOne = data[i].LongDayWarning
-      const determineValueTwo = data[i].StorageQty
-      const positionArea = [positionX, positionY]
+      if (positionX != null && positionY != null) {
+        // 鐢ㄤ簬 鍒ゆ柇 => 鍒ゆ柇鏄惁灞曠ず鑴夊啿鏁堟灉 => temp(涓存椂)
+        const determineValueOne = data[i].LongDayWarning
+        var determineValueTwo = data[i].StorageQty
+        const positionArea = [positionX, positionY]
 
-      // 鍥炬爣灞曠ず
-      const iconUrl = this.SolidWasteIconUrl(determineValueOne, determineValueTwo, positionArea)
-      const Icon = new SolidWasteIcon({ iconUrl: iconUrl })
-      // let url = Icon.options.iconUrl
+        // 鍥炬爣灞曠ず
+        var iconUrl = this.SolidWasteIconUrl(determineValueOne, determineValueTwo, positionArea)
+        var Icon = new SolidWasteIcon({ iconUrl: iconUrl })
+        // var url = Icon.options.iconUrl
 
-      const marker = this.L.marker([positionX, positionY], { icon: Icon })
+        const marker = this.L.marker([positionX, positionY], { icon: Icon })
 
-      marker.bindPopup(() => {
-        return this.SolidWastePopup.$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.SolidWastePopup.setDate(data[i])
-        } catch (error) {
-          console.log(error)
-        }
-      })
-      // 璁剧疆鍐呭娣诲姞鍒板浘灞�
-      this.SolidWasteLayerGroup.addLayer(marker)
-      // }
+        // 鍒掕繃鍑虹幇 灞曠ず鏁版嵁
+        marker.bindTooltip(data[i].Name, {
+          permanent: true,
+          offset: [0, 16],
+          direction: 'bottom',
+          className: ''
+        })
+        // 鐐瑰嚮 浜嬩欢
+        marker.on('click', (e) => {
+          try {
+            // console.log(e)
+            this.EffectOfPulse(e.target.getLatLng())
+            this.SolidWastePopup.setData(data[i])
+            return this.SolidWastePopup.$el
+          } catch (error) {
+            console.log(error)
+          }
+        })
+        // 璁剧疆鍐呭娣诲姞鍒板浘灞�
+        this.SolidWasteLayerGroup.addLayer(marker)
+      }
     }
   }
 
@@ -101,7 +94,7 @@
 
   // 鏍规嵁绫诲瀷杩斿洖鍥剧墖鍔犺浇url
   SolidWasteIconUrl (determineValueOne, determineValueTwo, position) {
-    let EffectOfChange
+    var EffectOfChange
     if (determineValueOne === 1 || determineValueTwo === 1) {
       EffectOfChange = defaultImg
       this.EffectOfPulse(position, this.solidWasteMarkersLabels, this.SolidWasteLayerGroup)
@@ -114,28 +107,28 @@
   // 鑴夊啿鏁堟灉璁剧疆瀹炵幇
   EffectOfPulse (position, markers, layerGroup) {
     // // 鍖哄垎鐩存帴鎵ц 鍜屽垽鏂墽琛岀殑涓嶅悓鍖哄埆
-    let differentColor = ''
+    var differentColor = ''
     if (markers) {
       differentColor = '#ff0000'
     } else {
       differentColor = '#98FB98'
     }
     // 鍧愭爣鏁版嵁锛氭姤璀︿紶杩涙潵鐨勬槸鏁扮粍 / 鐐瑰嚮浼犺繘鏉ョ殑鏄痮bject
-    const FinalPosition = position instanceof Array ? {
+    var FinalPosition = position instanceof Array ? {
       lat: position[0],
       lng: position[1]
     } : position
     // 鎻掍欢 鏁堟灉瀹炵幇
-    const pulsingIcon = this.L.icon.pulse({
+    var 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)
+      // markers.push(this.L.marker(FinalPosition, { icon: pulsingIcon }))
+      // this.L.layerGroup(markers).addLayer(layerGroup)
     } else {
-      const picGroupMarker = new this.L.FeatureGroup()
+      var picGroupMarker = new this.L.FeatureGroup()
       this.L.marker(FinalPosition, { icon: pulsingIcon }).addTo(picGroupMarker)
       this.pulseHeighLightMarker = picGroupMarker.addTo(this.SolidWasteLayerGroup)
       this.PulseCountSetting()
@@ -144,9 +137,10 @@
 
   // 瀵瑰浘鏍囪剦鍐� 杩涜set璁剧疆  // 楂樹寒鍥惧眰
   PulseCountSetting () {
-    const HeightLightTime = 5
-    let PulseNumber = 5
-    const pulseinterver = setInterval(() => {
+    var HeightLightTime = 5
+    var PulseNumber = 5
+    const pulseinterver = setInterval((e) => {
+      console.log(e)
       if (PulseNumber > 0) {
         PulseNumber--
       } else {
diff --git a/src/components/BaseNav/WireSurface/index.js b/src/components/BaseNav/WireSurface/index.js
new file mode 100644
index 0000000..3021c37
--- /dev/null
+++ b/src/components/BaseNav/WireSurface/index.js
@@ -0,0 +1,22 @@
+// // 寮曞叆鐢ㄤ簬澶勭悊鎺ュ彛鏁版嵁鑾峰彇鐨勬柟娉�
+// import {} from '@src/api/request'
+//
+// class initWireSurface {
+//   constructor (options) {
+//     this.map = options.map
+//     this.L = window.L
+//     this.initWireSurfaceMap = new Map()
+//     this.initWireSurfacePopup = this.L.layerGroup().addTo(this.map)
+//   }
+//
+//   // 鑾峰彇椤甸潰绾�/闈㈡暟鎹�
+//   getDataInitWireSurface () {
+//     ().then(res => {
+//       console.log(res)
+//     }).catch(error => {
+//       console.log(error)
+//     })
+//   }
+// }
+//
+// export default initWireSurface
diff --git a/src/components/flueGas/GasComponents/GasECharts.vue b/src/components/flueGas/GasComponents/GasECharts.vue
new file mode 100644
index 0000000..d6e3909
--- /dev/null
+++ b/src/components/flueGas/GasComponents/GasECharts.vue
@@ -0,0 +1,107 @@
+<template>
+  <div id="echarts" style="width:300px;height:222px" ref="main"></div>
+</template>
+
+<script>
+export default {
+  name: 'GasECharts',
+  methods: {
+    drawChart: function () {
+      const myChart = this.$echarts.init(this.$refs.main)
+      const option = {
+        title: {
+          text: '鎶樼嚎鍥惧爢鍙�'
+        },
+        // color: '#fff',
+        tooltip: {
+          trigger: 'axis'
+        },
+        legend: {
+          data: ['閭欢钀ラ攢', '鑱旂洘骞垮憡', '瑙嗛骞垮憡', '鐩存帴璁块棶', '鎼滅储寮曟搸']
+        },
+        grid: {
+          left: '3%',
+          right: '4%',
+          bottom: '3%',
+          containLabel: true
+        },
+        toolbox: {
+          feature: {
+            saveAsImage: {}
+          }
+        },
+        xAxis: {
+          type: 'category',
+          boundaryGap: false,
+          data: ['鍛ㄤ竴', '鍛ㄤ簩', '鍛ㄤ笁', '鍛ㄥ洓', '鍛ㄤ簲', '鍛ㄥ叚', '鍛ㄦ棩'],
+          axisLabel: {
+            textStyle: {
+              color: '#7edae8' // 鍧愭爣鐨勫瓧浣撻鑹�
+            }
+          },
+          axisLine: {
+            show: false, // 闅愯棌鍧愭爣杞�
+            lineStyle: {
+              color: '#00eeff' // 鍧愭爣杞寸殑棰滆壊
+            }
+          }
+        },
+        yAxis: [{
+          type: 'value',
+          axisLabel: {
+            textStyle: {
+              color: '#7edae8' // 鍧愭爣鐨勫瓧浣撻鑹�
+            }
+          },
+          axisLine: {
+            show: false, // 闅愯棌鍧愭爣杞�
+            lineStyle: {
+              color: '#00eeff' // 鍧愭爣杞寸殑棰滆壊
+            }
+          }
+        }],
+        series: [
+          {
+            name: '閭欢钀ラ攢',
+            type: 'line',
+            stack: '鎬婚噺',
+            data: [120, 132, 101, 134, 90, 230, 210]
+          },
+          {
+            name: '鑱旂洘骞垮憡',
+            type: 'line',
+            stack: '鎬婚噺',
+            data: [220, 182, 191, 234, 290, 330, 310]
+          },
+          {
+            name: '瑙嗛骞垮憡',
+            type: 'line',
+            stack: '鎬婚噺',
+            data: [150, 232, 201, 154, 190, 330, 410]
+          },
+          {
+            name: '鐩存帴璁块棶',
+            type: 'line',
+            stack: '鎬婚噺',
+            data: [320, 332, 301, 334, 390, 330, 320]
+          },
+          {
+            name: '鎼滅储寮曟搸',
+            type: 'line',
+            stack: '鎬婚噺',
+            data: [820, 932, 901, 934, 1290, 1330, 1320]
+          }
+        ]
+      }
+      myChart.setOption(option)
+    }
+  },
+  mounted () {
+    this.drawChart()
+  }
+}
+</script>
+
+<style scoped lang="less">
+
+</style>
diff --git a/src/components/flueGas/GasComponents/GasTable.vue b/src/components/flueGas/GasComponents/GasTable.vue
new file mode 100644
index 0000000..d4f11da
--- /dev/null
+++ b/src/components/flueGas/GasComponents/GasTable.vue
@@ -0,0 +1,46 @@
+<template>
+  <el-row>
+    <el-row>
+      <el-col :span="8">鐩戞祴鐐瑰悕绉�:{{name}}</el-col>
+      <el-col :span="8">鐢熶骇鍗曚綅:{{ DeptSname }}</el-col>
+      <el-col :span="8">鎺掓斁绫诲瀷鍔犺浇:{{EmissTypeName}}</el-col>
+    </el-row>
+    <el-row>
+      <el-col :span="8">鎺掓斁鍘诲悜:{{EmissTypeDirectName}}</el-col>
+      <el-col :span="8">鎺у埗绾у埆鍚嶇О:{{ContrLevelShowName}}</el-col>
+      <el-col :span="8">鍐�/澶栨帓鍙�:{{OrOutPortName}}</el-col>
+    </el-row>
+  </el-row>
+</template>
+
+<script>
+export default {
+  name: 'GasTable',
+  props: ['displayContent'],
+  data () {
+    return {
+      name: '鑱氶叝鐑獟鐐�03鐑熸皵鎺掓斁鍙�',
+      DeptSname: '澶ц姵鐑冭缃�',
+      EmissTypeName: '搴熸皵',
+      EmissTypeDirectName: '澶ф皵',
+      ContrLevelShowName: '甯傛帶',
+      OrOutPortName: '澶栨帓'
+    }
+  }
+}
+</script>
+
+<style scoped lang="less">
+.el-row {
+  color: #00d0f9;
+  .el-col{
+    width: 240px;
+    height: 28px;
+    background-color: #243a55;
+    border-radius: 0.05rem;
+    margin: 5px;
+    text-align: center;
+    line-height: 28px;
+  }
+}
+</style>
diff --git a/src/components/flueGas/GasComponents/GasVideo.vue b/src/components/flueGas/GasComponents/GasVideo.vue
new file mode 100644
index 0000000..b317b1c
--- /dev/null
+++ b/src/components/flueGas/GasComponents/GasVideo.vue
@@ -0,0 +1,24 @@
+<template>
+<div>
+<!--  <video>-->
+    <video width="100%" height="100%" controls>
+      <source src="movie.mp4" type="video/mp4">
+      <source src="movie.ogg" type="video/ogg">
+<!--      鎮ㄧ殑娴忚鍣ㄤ笉鏀寔 HTML5 video 鏍囩銆�-->
+    </video>
+<!--    <span class="ico ico-sound" :class="{ active: isMute }" v-on:click="closeSoundClick()"></span>-->
+<!--    <span class="ico ico-skip"></span>-->
+<!--    <span class="ico ico-video" :class="{ hide: isPlay }" v-on:click="playClick()"></span>-->
+<!--  </video>-->
+</div>
+</template>
+
+<script>
+export default {
+  name: 'GasVideo'
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/src/components/flueGas/flueGas.js b/src/components/flueGas/flueGas.js
new file mode 100644
index 0000000..62f103f
--- /dev/null
+++ b/src/components/flueGas/flueGas.js
@@ -0,0 +1,176 @@
+import { FlueGas } from '@/api/request'
+import defaultImg from '@components/flueGas/green_airquality_2.png'
+import Setting from '@components/flueGas/green_airquality_3.png'
+// 鍥剧墖
+
+class AddGasHelper {
+  constructor (options) {
+    this.map = options.map
+    this.L = window.L
+    this.FlueGasLayerGroup = this.L.layerGroup().addTo(this.map)
+    this.FlueGasPopup = null
+    this.L.sgis = this.L.sgis || this.L
+    this.FlueGasMarkersLabels = []
+    this.pulseHeighLightMarker = null
+  }
+
+  // 鑾峰彇鏁版嵁
+  requestData (data) {
+    FlueGas(data).then(res => {
+      console.log(res)
+      this.DrawFlueGasContent(res.Result.DataInfo)
+    }).catch(err => {
+      console.log(err)
+    })
+  }
+
+  // 鏍规嵁鑾峰彇鏁版嵁 鐢诲嚭 鍐呭
+  DrawFlueGasContent (data) {
+    // 鍥炬爣鏍峰紡鎵╁睍
+    var FlueGasIcon = this.PlueGasIcon()
+
+    // //鍔犺浇鏁版嵁鍓嶅鏋滃瓨鍦ㄥ浘灞傜粍 閭d箞娓呴櫎鎺�
+    if (this.FlueGasLayerGroup) {
+      this.FlueGasLayerGroup.clearLayers()
+    }
+    for (let i = 0; i < data.length; i++) {
+      // 缁忕含搴� 浣嶇疆
+      const positionX = data[i].Latitude
+      const positionY = data[i].Longitude
+
+      // 鍒ゆ柇 缁忕含搴︿綅缃俊鎭槸鍚﹀瓨鍦�
+      // if (positionX != null && positionY != null) {
+      // 鐢ㄤ簬 鍒ゆ柇 => 鍒ゆ柇鏄惁灞曠ず鑴夊啿鏁堟灉 => temp(涓存椂)
+      const determineValueOne = data[i].LongDayWarning
+      var determineValueTwo = data[i].StorageQty
+      const positionArea = [positionX, positionY]
+
+      // 鍥炬爣灞曠ず
+      var iconUrl = this.PlueGasIconUrl(determineValueOne, determineValueTwo, positionArea)
+      var Icon = new FlueGasIcon({ iconUrl: iconUrl })
+      // var url = Icon.options.iconUrl
+
+      const marker = this.L.marker([positionX, positionY], { icon: Icon })
+      // const latlngs = positionArea[2]
+      // // 绾�
+      // var polyline = this.L.polyline(latlngs, { color: 'red' }).addTo(this.map)
+      // console.log(polyline)
+      marker.bindPopup(() => {
+        return this.FlueGasPopup.$el
+      }, {
+        className: 's-map-popup',
+        minWidth: 1548,
+        closeButton: true,
+        autoClose: false
+      })
+      // 鍒掕繃鍑虹幇 灞曠ず鏁版嵁
+      marker.bindTooltip(data[i].porltName, {
+        permanent: true,
+        offset: [0, -16],
+        direction: 'top',
+        className: ''
+      })
+      // 鐐瑰嚮 浜嬩欢
+      marker.on('click', (e) => {
+        try {
+          // console.log(e)
+          this.EffectOfPulse(e.target.getLatLng())
+          this.FlueGasPopup.setDate(data[i])
+        } catch (error) {
+          console.log(error)
+        }
+      })
+      // 璁剧疆鍐呭娣诲姞鍒板浘灞�
+      this.FlueGasLayerGroup.addLayer(marker)
+      // }
+    }
+  }
+
+  // 鐐瑰嚮杩涜鐨� 鍐呭鐨勮缃�
+  SetPlueGasContent (config, containerPopup) {
+    this.FlueGasPopup = containerPopup
+  }
+
+  // 鍥炬爣鏍峰紡鎵╁睍 => 鍏夊湀 鍥炬爣鑴夊啿
+  PlueGasIcon () {
+    return this.L.Icon.extend({
+      options: {
+        iconSize: [50, 50],
+        iconAnchor: [25, 25]
+      }
+    })
+  }
+
+  // 鏍规嵁绫诲瀷杩斿洖鍥剧墖鍔犺浇url
+  PlueGasIconUrl (determineValueOne, determineValueTwo, position) {
+    var EffectOfChange
+    if (determineValueOne === 1 || determineValueTwo === 1) {
+      EffectOfChange = defaultImg
+      this.EffectOfPulse(position, this.FlueGasMarkersLabels, this.pulseHeighLightMarker)
+    } else {
+      EffectOfChange = Setting
+    }
+    return EffectOfChange
+  }
+
+  // 鑴夊啿鏁堟灉璁剧疆瀹炵幇
+  EffectOfPulse (position, markers, layerGroup) {
+    // // 鍖哄垎鐩存帴鎵ц 鍜屽垽鏂墽琛岀殑涓嶅悓鍖哄埆
+    let differentColor = ''
+    if (markers) {
+      differentColor = '#ff0000'
+    } else {
+      differentColor = '#98FB98'
+    }
+    // 鍧愭爣鏁版嵁锛氭姤璀︿紶杩涙潵鐨勬槸鏁扮粍 / 鐐瑰嚮浼犺繘鏉ョ殑鏄痮bject
+    var FinalPosition = position instanceof Array ? {
+      lat: position[0],
+      lng: position[1]
+    } : position
+    // 鎻掍欢 鏁堟灉瀹炵幇
+    var 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 {
+      var picGroupMarker = new this.L.FeatureGroup()
+      this.L.marker(FinalPosition, { icon: pulsingIcon }).addTo(picGroupMarker)
+      this.pulseHeighLightMarker = picGroupMarker.addTo(this.FlueGasLayerGroup)
+      this.PulseCountSetting()
+    }
+  }
+
+  PulseCountSetting () {
+    var HeightLightTime = 5
+    var PulseNumber = 5
+    const pulseinterver = setInterval(() => {
+      if (PulseNumber > 0) {
+        PulseNumber--
+      } else {
+        this.pulseClear(pulseinterver)
+        PulseNumber = HeightLightTime
+      }
+    }, 1000)
+  }
+
+  // 娓呴櫎 鍥惧眰
+  pulseClear (pulseinterver) {
+    clearInterval(pulseinterver)
+    pulseinterver = null
+
+    if (this.PlueGasLayerGroup) {
+      // this.PlueGasLayerGroup.clearLayers()
+    } else {
+      this.PlueGasLayerGroup = this.L.layerGroup().addTo(this.map)
+    }
+    if ((this.pulseHeighLightMarker)) {
+      this.pulseHeighLightMarker.remove()
+    }
+  }
+}
+
+export default AddGasHelper
diff --git a/src/components/flueGas/green_airquality_2.png b/src/components/flueGas/green_airquality_2.png
new file mode 100644
index 0000000..ca7b11b
--- /dev/null
+++ b/src/components/flueGas/green_airquality_2.png
Binary files differ
diff --git a/src/components/flueGas/green_airquality_3.png b/src/components/flueGas/green_airquality_3.png
new file mode 100644
index 0000000..d5f6a73
--- /dev/null
+++ b/src/components/flueGas/green_airquality_3.png
Binary files differ
diff --git a/src/components/flueGas/popup-gas.vue b/src/components/flueGas/popup-gas.vue
new file mode 100644
index 0000000..a883d48
--- /dev/null
+++ b/src/components/flueGas/popup-gas.vue
@@ -0,0 +1,54 @@
+<template>
+  <div v-if="!isShow" class="popupGas">
+    <el-row>
+      <el-col :span="12">
+        <el-row>
+          <gas-table :displayContent="displayContent"></gas-table>
+        </el-row>
+        <el-row>
+          <gas-e-charts></gas-e-charts>
+        </el-row>
+      </el-col>
+      <el-col :span="12">
+        <gas-video></gas-video>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import GasTable from '@components/flueGas/GasComponents/GasTable'
+import GasECharts from '@components/flueGas/GasComponents/GasECharts'
+import GasVideo from '@components/flueGas/GasComponents/GasVideo'
+
+export default {
+  name: 'popup-gas',
+  components: {
+    GasTable,
+    GasECharts,
+    GasVideo
+  },
+  data: function () {
+    return {
+      isShow: false,
+      displayContent: []
+    }
+  },
+  methods: {
+    setDate (data) {
+      console.log(data)
+      this.displayContent = data
+    }
+  }
+}
+</script>
+
+<style scoped lang="less">
+/deep/ .popupGas {
+  color: #fff;
+
+  .leaflet-popup-content-wrapper {
+    width: 100% !important;
+  }
+}
+</style>
diff --git a/src/conf/MapConfig.js b/src/conf/MapConfig.js
index 0b6c329..a039e8f 100644
--- a/src/conf/MapConfig.js
+++ b/src/conf/MapConfig.js
@@ -2,6 +2,7 @@
 import TDT from './TDT'
 import { LayerSewersLine, LayerSewersPoint } from './LayerSewers'
 import { LayerWasteWater } from './LayerWasteWater'
+
 const curWwwPath = window.document.location.href
 const pathname = window.document.location.pathname
 const pos = curWwwPath.indexOf(pathname)
@@ -22,7 +23,7 @@
   minZoom: 3,
   maxZoom: 18,
   // center: [26, 104],
-  center: [32.224016189575195, 118.77070426940918],
+  center: [38.828558921813965, 117.41676807403564],
   zoom: 14,
   worldCopyJump: true,
   inertia: true,
@@ -38,7 +39,10 @@
   // defaultBasemapCode: 'tianditu_img', // 榛樿鏄剧ず 鍦板浘绫诲瀷
   IntranetBaseMaps: TDT.intranet,
   InternetBaseMaps: TDT.internet,
-  Layers: { LayerSewersLine: [LayerSewersLine, LayerWasteWater], layerSewersPoint: LayerSewersPoint } // 姹¢洦姘村浘灞傞厤缃�
+  Layers: {
+    LayerSewersLine: [LayerSewersLine, LayerWasteWater],
+    layerSewersPoint: LayerSewersPoint
+  } // 姹¢洦姘村浘灞傞厤缃�
 }
 
 /**
diff --git a/src/main.js b/src/main.js
index 0ce6953..e4615a1 100644
--- a/src/main.js
+++ b/src/main.js
@@ -21,7 +21,8 @@
 Vue.use(ElementUI)
 Vue.prototype.$cancels = []
 Vue.prototype.L = L
-// 娉ㄥ唽鎸囦护
+Vue.prototype.$echarts = echarts // 鎸傝浇echarts
+// 娉ㄥ唽鎸囦护7
 // registerDirectives(Vue)
 
 // 娉ㄥ唽echarts鐨偆
diff --git a/src/utils/axios.js b/src/utils/axios.js
index 20047e2..7f944e8 100644
--- a/src/utils/axios.js
+++ b/src/utils/axios.js
@@ -83,7 +83,8 @@
 
 // 鍒涘缓axios瀹炰緥
 const Service = axios.create({
-  timeout: 1000
+  timeout: 5000,
+  baseURL: 'http://10.246.162.140:8080/'
 })
 
 const CancelToken = axios.CancelToken
diff --git a/src/views/MapTemplate.vue b/src/views/MapTemplate.vue
index be50061..540e1b9 100644
--- a/src/views/MapTemplate.vue
+++ b/src/views/MapTemplate.vue
@@ -20,6 +20,10 @@
     <SolidContent ref="SolidWastePopup"></SolidContent>
     <el-button type="primary" @click="ChangeWaterState" class="Waste-water">搴熸按</el-button>
     <WasteWaterContent ref="WasteWaterPopup"></WasteWaterContent>
+<!--    <SolidContent ref="SolidWastePopup"></SolidContent>-->
+    <el-button type="primary" @click="AddGasHelper" class="flue-gas">搴熸皵</el-button>
+    <popup-gas ref="FlueGas"></popup-gas>
+    <PublicBounced ref="PublicBounced"></PublicBounced>
   </div>
 </template>
 
@@ -44,6 +48,12 @@
 import AddSolidWasteHelper from '@components/BaseNav/SolidWaste/SolidWaste'
 import AddWasteWaterHelper from '@components/BaseNav/WasteWater/WasteWater'
 
+// import SolidContent from '@components/SolidWaste/SolidContent'
+// 搴熸皵
+import AddGasHelper from '@components/flueGas/flueGas'
+import PopupGas from '@/components/flueGas/popup-gas'
+// // 鍏叡灞曠ず鏁版嵁
+import PublicBounced from '@components/BaseNav/PublicBounced/PublicBounced'
 export default {
   name: 'MapTemplate',
   components: {
@@ -60,10 +70,14 @@
     summarySheets,
     SolidContent,
     WasteWaterContent
+    // SolidContent,
+    PopupGas,
+    PublicBounced
   },
   data () {
     return {
       show: true,
+      // isShowBtn: false,
       map: null,
       lcServiceLayerVisible: false,
       basemapHelper: {},
@@ -82,7 +96,33 @@
     })
   },
   methods: {
+    AddGasHelper () {
+      const data = {
+        companyId: 3900100145,
+        id: '',
+        monType: 2,
+        userCode: 'wenchun.deng',
+        monDuration: '',
+        epName: '',
+        secdDeptId: '',
+        contrLevel: '',
+        dataStatus: '',
+        dataFlag: '',
+        runStatus: '',
+        emissTypeId: ''
+      }
+      const AddGas = new AddGasHelper({ map: this.map })
+      AddGas.requestData(data)
+      AddGas.SetPlueGasContent(this.config, this.$refs.PublicBounced)
+    },
     ChangeState () {
+      const data = {
+        companyId: 3900100145,
+        userCode: 'wenchun.deng',
+        name: '',
+        marginWarr: '',
+        longDayWarr: ''
+      }
       const AddSolidWaste = new AddSolidWasteHelper({ map: this.map })
       AddSolidWaste.requestData()
       AddSolidWaste.SetSolidWasteContent(this.config, this.$refs.SolidWastePopup)
@@ -93,6 +133,8 @@
         AddWasteWater.requestData()
         AddWasteWater.SetWasteWaterContent(this.config, this.$refs.WasteWaterPopup)
       }
+      AddSolidWaste.requestData(data)
+      AddSolidWaste.SetSolidWasteContent(this.config, this.$refs.PublicBounced)
     },
     // isShowHidden () {
     //   this.isShowBtn = !this.isShowBtn
@@ -121,6 +163,8 @@
       this.vectorLayerHelper = Sgis.initVectorLayersHelper(this.map) // 鍒濆鍖栧姩鎬佽绱犲浘灞傚姪鎵�
       this.vectorLayerHelper.initVectorLayers(this.config)
 
+      // this.ChangeState()
+      // this.AddGasHelper()
       // this.ChangeState()
       // this.ChangeWaterState()
 
@@ -171,7 +215,12 @@
 </script>
 
 <style lang="less">
-
+.flue-gas {
+  position:fixed;
+  top: 88px;
+  left: 180px;
+  z-index: 500;
+}
 .solid-waste {
   position: absolute;
   top: 88px;
@@ -182,7 +231,7 @@
 .Waste-water {
   position: absolute;
   top: 88px;
-  left: 180px;
+  left: 380px;
   z-index: 999;
 }
 
diff --git a/vue.config.js b/vue.config.js
index 07df932..64bf2b6 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -27,7 +27,7 @@
   devServer: {
     // host: 'localhost',
     // open: true,
-    port: 8888,
+    port: 8080,
     // overlay: false,
     overlay: {
       warnings: true,

--
Gitblit v1.8.0