From 6ab6b11a0ba0bc20c099b9f7b73e9d03fe7d5b8e Mon Sep 17 00:00:00 2001 From: 徐旺旺 <11530253@qq.com> Date: 星期一, 29 三月 2021 18:13:02 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/develop' into develop --- src/assets/css/map/leaflet.magicMarker.css | 13 src/components/BaseNav/WasteWater/WasteWater.js | 177 ++++++++++ src/components/plugin/MagicMarker.js | 62 ++- src/assets/images/map-pages/basenav/Waste-water/fs_blue.png | 0 src/components/BaseNav/PublicBounced/GasComponents/GasVideo.vue | 70 ++++ src/components/BaseNav/SolidWaste/directive.js | 6 src/assets/images/map-pages/basenav/flugas/green_airquality_2.png | 0 src/assets/images/map-pages/basenav/Waste-water/fs_yellow.png | 0 src/assets/images/map-pages/basenav/flugas/green_airquality_3.png | 0 src/assets/images/map-pages/basenav/Waste-water/fs_bright_green.png | 0 src/components/BaseNav/PublicBounced/GasComponents/GasTable.vue | 97 +++++ src/components/BaseNav/flueGas/flueGas.js | 9 public/static/WasteWater.json | 117 ++++++ src/assets/images/map-pages/basenav/Waste-water/fs_gray.png | 0 src/api/request.js | 13 src/components/BaseNav/WasteWater/directive.js | 132 +++++++ src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue | 0 src/views/MapTemplate.vue | 50 ++ src/assets/images/map-pages/basenav/Waste-water/fs_orange.png | 0 src/components/BaseNav/PublicBounced/GasComponents/GasTabs.vue | 20 + src/assets/images/map-pages/basenav/Waste-water/fs_green.png | 0 src/assets/images/map-pages/basenav/Waste-water/fs_red.png | 0 src/components/BaseNav/PublicBounced/PublicBounced.vue | 49 ++ src/img/fs_yellow.7fe82c5d.png | 0 /dev/null | 54 --- src/conf/MapConfig.js | 18 + src/assets/images/map-pages/basenav/Waste-water/fs_green_xc.png | 0 src/components/BaseNav/WasteWater/WasteWaterContent.vue | 52 +++ src/components/BaseNav/WasteWater/WasteWaterTable.vue | 69 ++++ 29 files changed, 908 insertions(+), 100 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 c3ce5bf..38364ca 100644 --- a/src/api/request.js +++ b/src/api/request.js @@ -1,6 +1,5 @@ import $http from '@utils/axios' import Qs from 'qs' -// import axios from 'axios' export const QueryStoragePlaceListByCompanyAndName = (data = {}) => { return $http.post('/EPInterface/DataService/EPMapService.asmx/QueryStoragePlaceListByCompanyAndName', Qs.stringify(data), { @@ -9,10 +8,14 @@ } }) } -// export const FlueGas = (url) => { -// return $http.get('./static/airQuality.json') -// } -export function FlueGas (data = {}) { +export const FlueGas = (data = {}) => { + return $http.post('/EPInterface/DataService/EPMapService.asmx/ObtainningConInfo', Qs.stringify(data), { + headers: { + 'Content-Type': 'application/json' + } + }) +} +export function requestWasteWater (data = {}) { return $http.post('EPInterface/DataService/EPMapService.asmx/ObtainningConInfo', Qs.stringify(data), { headers: { 'Content-Type': 'application/json' diff --git a/src/assets/css/map/leaflet.magicMarker.css b/src/assets/css/map/leaflet.magicMarker.css new file mode 100644 index 0000000..b379bf1 --- /dev/null +++ b/src/assets/css/map/leaflet.magicMarker.css @@ -0,0 +1,13 @@ +.magicDiv{ + height: 0; + width: 0; +} +.magicIcon{ + position:relative; + top:-5px; + left:-16px; +} +.leaflet-div-icon{ + background: transparent; + border:none; +} diff --git a/src/assets/images/map-pages/basenav/Waste-water/fs_blue.png b/src/assets/images/map-pages/basenav/Waste-water/fs_blue.png new file mode 100644 index 0000000..af3c97b --- /dev/null +++ b/src/assets/images/map-pages/basenav/Waste-water/fs_blue.png Binary files differ diff --git a/src/assets/images/map-pages/basenav/Waste-water/fs_bright_green.png b/src/assets/images/map-pages/basenav/Waste-water/fs_bright_green.png new file mode 100644 index 0000000..9d6dae8 --- /dev/null +++ b/src/assets/images/map-pages/basenav/Waste-water/fs_bright_green.png Binary files differ diff --git a/src/assets/images/map-pages/basenav/Waste-water/fs_gray.png b/src/assets/images/map-pages/basenav/Waste-water/fs_gray.png new file mode 100644 index 0000000..9ebebf7 --- /dev/null +++ b/src/assets/images/map-pages/basenav/Waste-water/fs_gray.png Binary files differ diff --git a/src/assets/images/map-pages/basenav/Waste-water/fs_green.png b/src/assets/images/map-pages/basenav/Waste-water/fs_green.png new file mode 100644 index 0000000..e75d458 --- /dev/null +++ b/src/assets/images/map-pages/basenav/Waste-water/fs_green.png Binary files differ diff --git a/src/assets/images/map-pages/basenav/Waste-water/fs_green_xc.png b/src/assets/images/map-pages/basenav/Waste-water/fs_green_xc.png new file mode 100644 index 0000000..dfa3415 --- /dev/null +++ b/src/assets/images/map-pages/basenav/Waste-water/fs_green_xc.png Binary files differ diff --git a/src/assets/images/map-pages/basenav/Waste-water/fs_orange.png b/src/assets/images/map-pages/basenav/Waste-water/fs_orange.png new file mode 100644 index 0000000..95c544c --- /dev/null +++ b/src/assets/images/map-pages/basenav/Waste-water/fs_orange.png Binary files differ diff --git a/src/assets/images/map-pages/basenav/Waste-water/fs_red.png b/src/assets/images/map-pages/basenav/Waste-water/fs_red.png new file mode 100644 index 0000000..ac1b8f2 --- /dev/null +++ b/src/assets/images/map-pages/basenav/Waste-water/fs_red.png Binary files differ diff --git a/src/assets/images/map-pages/basenav/Waste-water/fs_yellow.png b/src/assets/images/map-pages/basenav/Waste-water/fs_yellow.png new file mode 100644 index 0000000..8d84aa8 --- /dev/null +++ b/src/assets/images/map-pages/basenav/Waste-water/fs_yellow.png Binary files differ diff --git a/src/components/flueGas/green_airquality_2.png b/src/assets/images/map-pages/basenav/flugas/green_airquality_2.png similarity index 100% rename from src/components/flueGas/green_airquality_2.png rename to src/assets/images/map-pages/basenav/flugas/green_airquality_2.png Binary files differ diff --git a/src/components/flueGas/green_airquality_3.png b/src/assets/images/map-pages/basenav/flugas/green_airquality_3.png similarity index 100% rename from src/components/flueGas/green_airquality_3.png rename to src/assets/images/map-pages/basenav/flugas/green_airquality_3.png Binary files differ diff --git a/src/components/flueGas/GasComponents/GasECharts.vue b/src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue similarity index 100% rename from src/components/flueGas/GasComponents/GasECharts.vue rename to src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue diff --git a/src/components/BaseNav/PublicBounced/GasComponents/GasTable.vue b/src/components/BaseNav/PublicBounced/GasComponents/GasTable.vue new file mode 100644 index 0000000..76515a1 --- /dev/null +++ b/src/components/BaseNav/PublicBounced/GasComponents/GasTable.vue @@ -0,0 +1,97 @@ +<template> + <!-- 妗� --> + <div class="win"> + <!-- 鍥涗釜瑙掔殑杈规鏁堟灉 --> + <div class="border_corner border_corner_left_top"></div> + <div class="border_corner border_corner_right_top"></div> + <div class="border_corner border_corner_left_bottom"></div> + <div class="border_corner border_corner_right_bottom"></div> + <div class="main"> + <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> + </div> + </div> +</template> + +<script> +export default { + name: 'GasTable', + props: ['displayContent'], + data () { + return { + name: '鑱氶叝鐑獟鐐�03鐑熸皵鎺掓斁鍙�', + DeptSname: '澶ц姵鐑冭缃�', + EmissTypeName: '搴熸皵', + EmissTypeDirectName: '澶ф皵', + ContrLevelShowName: '甯傛帶', + OrOutPortName: '澶栨帓' + } + } +} +</script> + +<style scoped lang="less"> + +.win { + position: relative; + display: inline-block; + //border: 1px solid #396d83; +} +.main { + width: 100%; + height: 100%; +} +.border_corner{ + z-index: 2500; + position: absolute; + width: 14px; + height: 14px; + background: rgba(0,0,0,0); + border: 2px solid #47d5ea; +} +.border_corner_left_top{ + top: 0; + left: 0; + border-right: none; + border-bottom: none; +} +.border_corner_right_top{ + top: 0; + right: 0; + border-left: none; + border-bottom: none; +} +.border_corner_left_bottom{ + bottom: 0; + left: 0; + border-right: none; + border-top: none; + border-bottom-left-radius: 4px; +} +.border_corner_right_bottom{ + bottom: 0; + right: 0; + border-left: none; + border-top: none; +} +.el-row { + color: #00d0f9; + .el-col{ + width: 200px; + height: 28px; + background-color: #243a55;; + text-align: center; + line-height: 28px; + } +} +</style> diff --git a/src/components/BaseNav/PublicBounced/GasComponents/GasTabs.vue b/src/components/BaseNav/PublicBounced/GasComponents/GasTabs.vue new file mode 100644 index 0000000..1df30fe --- /dev/null +++ b/src/components/BaseNav/PublicBounced/GasComponents/GasTabs.vue @@ -0,0 +1,20 @@ +<template> +<div> + <el-tabs v-model="activeName"> + <el-tab-pane label="鐢ㄦ埛绠$悊" name="first">鐢ㄦ埛绠$悊</el-tab-pane> + <el-tab-pane label="閰嶇疆绠$悊" name="second">閰嶇疆绠$悊</el-tab-pane> + <el-tab-pane label="瑙掕壊绠$悊" name="third">瑙掕壊绠$悊</el-tab-pane> + <el-tab-pane label="瀹氭椂浠诲姟琛ュ伩" name="fourth">瀹氭椂浠诲姟琛ュ伩</el-tab-pane> + </el-tabs> +</div> +</template> + +<script> +export default { + name: 'GasTabs' +} +</script> + +<style scoped> + +</style> diff --git a/src/components/BaseNav/PublicBounced/GasComponents/GasVideo.vue b/src/components/BaseNav/PublicBounced/GasComponents/GasVideo.vue new file mode 100644 index 0000000..eb83145 --- /dev/null +++ b/src/components/BaseNav/PublicBounced/GasComponents/GasVideo.vue @@ -0,0 +1,70 @@ +<template> + <div class="win"> + <!-- 鍥涗釜瑙掔殑杈规鏁堟灉 --> + <div class="border_corner border_corner_left_top"></div> + <div class="border_corner border_corner_right_top"></div> + <div class="border_corner border_corner_left_bottom"></div> + <div class="border_corner border_corner_right_bottom"></div> + <div class="main"> + <div> + <video width="100%" height="100%" controls> + <source src="movie.mp4" type="video/mp4"> + <source src="movie.ogg" type="video/ogg"> + </video> + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'GasVideo' +} +</script> + +<style scoped> +.win { + width: 100%; + /*height: 100%;*/ + position: relative; + display: inline-block; +//border: 1px solid #396d83; +} +.main { + width: 100%; + height: 100%; +} +.border_corner{ + z-index: 2500; + position: absolute; + width: 14px; + height: 14px; + background: rgba(0,0,0,0); + border: 2px solid #47d5ea; +} +.border_corner_left_top{ + top: 0; + left: 0; + border-right: none; + border-bottom: none; +} +.border_corner_right_top{ + top: 0; + right: 0; + border-left: none; + border-bottom: none; +} +.border_corner_left_bottom{ + bottom: 0; + left: 0; + border-right: none; + border-top: none; + border-bottom-left-radius: 4px; +} +.border_corner_right_bottom{ + bottom: 0; + right: 0; + border-left: none; + border-top: none; +} +</style> diff --git a/src/components/BaseNav/PublicBounced/PublicBounced.vue b/src/components/BaseNav/PublicBounced/PublicBounced.vue index 8326dfa..93afb60 100644 --- a/src/components/BaseNav/PublicBounced/PublicBounced.vue +++ b/src/components/BaseNav/PublicBounced/PublicBounced.vue @@ -1,28 +1,43 @@ <template> - <div class="public-bounced" v-show="flag"> + <div class="public-bounced" v-draw 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>--> - <popup-gas></popup-gas> + <div class="public-bounced-content-left"> + <GasTable></GasTable> + <GasECharts></GasECharts> +<!-- <GasTabs></GasTabs>--> + </div> + <div class="public-bounced-content-right"> + <GasVideo></GasVideo> + </div> </div> </div> </template> <script> -import PopupGas from '@components/flueGas/popup-gas' + +import '@/components/BaseNav/SolidWaste/directive' +import GasTable from '@components/BaseNav/PublicBounced/GasComponents/GasTable' +import GasECharts from '@components/BaseNav/PublicBounced/GasComponents/GasECharts' +import GasVideo from '@components/BaseNav/PublicBounced/GasComponents/GasVideo' +// import GasTabs from '@components/BaseNav/PublicBounced/GasComponents/GasTabs' + export default { name: 'PublicBounced', + components: { + // GasTabs, + GasTable, + GasECharts, + GasVideo + }, data () { return { displayContent: [], flag: false } - }, - components: { - PopupGas }, methods: { setData (data) { @@ -46,7 +61,7 @@ left: 10%; background-color: #002432; margin: 1% auto; - border: 1px #a5bfd8 solid; + border: 1px #9fc5c8 solid; .public-bounced-title { width: 100%; @@ -69,5 +84,23 @@ } } + .public-bounced-content { + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: space-around; + + .public-bounced-content-left { + width: 48%; + height: 400px; + } + + .public-bounced-content-right { + width: 48%; + height: 400px; + } + } + } </style> diff --git a/src/components/BaseNav/SolidWaste/directive.js b/src/components/BaseNav/SolidWaste/directive.js index adc9450..773a4a8 100644 --- a/src/components/BaseNav/SolidWaste/directive.js +++ b/src/components/BaseNav/SolidWaste/directive.js @@ -2,9 +2,9 @@ // 鑷畾涔夊厓绱犲疄鐜板脊妗嗘嫋鎷絒閲嶇偣] Vue.directive('draw', { - inserted: function (el, binding, vNode) { - el.setAttribute('style', 'position: fixed; z-index: 9999') - }, + // inserted: function (el, binding, vNode) { + // el.setAttribute('style', 'position: fixed; z-index: 9999') + // }, bind: function (el, bindding, vNode) { el.setAttribute('draggable', true) let left, top, width, height diff --git a/src/components/BaseNav/WasteWater/WasteWater.js b/src/components/BaseNav/WasteWater/WasteWater.js new file mode 100644 index 0000000..c2f3d6b --- /dev/null +++ b/src/components/BaseNav/WasteWater/WasteWater.js @@ -0,0 +1,177 @@ +import { requestWasteWater } from '@/api/request' +// 灞曠ず鍥剧墖 +import defaultImg from '@assets/images/map-pages/basenav/Waste-water/fs_green.png' +import Setting from '@assets/images/map-pages/basenav/Waste-water/fs_yellow.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 (data) { + requestWasteWater(data).then(res => { + console.log(res) + this.DrawWasteWaterContent(res.Result.DataInfo) + // console.log(res) + }).catch(err => { + console.log(err) + }) + } + + // 鏍规嵁鑾峰彇鏁版嵁 鐢诲嚭 鍐呭 + DrawWasteWaterContent (data) { + // 鍥炬爣鏍峰紡鎵╁睍 + const WasteWaterIcon = this.WasteWaterIcon() + + // //鍔犺浇鏁版嵁鍓嶅鏋滃瓨鍦ㄥ浘灞傜粍 閭d箞娓呴櫎鎺� + if (this.WasteWaterLayerGroup) { + this.WasteWaterLayerGroup.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 + 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.magic([positionX, positionY], { icon: Icon, magic: 'vanishIn' }) + + marker.bindPopup(() => { + return this.WasteWaterPopup.$el + }, { + className: 's-map-popup', + minWidth: 1000, + closeButton: true, + autoClose: false + }) + // 鍒掕繃鍑虹幇 灞曠ず鏁版嵁 + marker.bindTooltip(data[i].Name, { + 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]) + return this.WasteWaterPopup.$el + } 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/WasteWater/WasteWaterContent.vue b/src/components/BaseNav/WasteWater/WasteWaterContent.vue new file mode 100644 index 0000000..22512f2 --- /dev/null +++ b/src/components/BaseNav/WasteWater/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/WasteWater/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/WasteWater/WasteWaterTable.vue b/src/components/BaseNav/WasteWater/WasteWaterTable.vue new file mode 100644 index 0000000..7468710 --- /dev/null +++ b/src/components/BaseNav/WasteWater/WasteWaterTable.vue @@ -0,0 +1,69 @@ +<template> + <el-tabs> + <el-tab-pane :label="displayContent.StoragePlaceName" name="" class="ShowTable"> + <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/components/BaseNav/WasteWater/directive.js b/src/components/BaseNav/WasteWater/directive.js new file mode 100644 index 0000000..adc9450 --- /dev/null +++ b/src/components/BaseNav/WasteWater/directive.js @@ -0,0 +1,132 @@ +import Vue from 'vue' + +// 鑷畾涔夊厓绱犲疄鐜板脊妗嗘嫋鎷絒閲嶇偣] +Vue.directive('draw', { + inserted: function (el, binding, vNode) { + el.setAttribute('style', 'position: fixed; z-index: 9999') + }, + bind: function (el, bindding, vNode) { + el.setAttribute('draggable', true) + let left, top, width, height + el._dragstart = function (event) { + event.stopPropagation() + left = event.clientX - el.offsetLeft + top = event.clientY - el.offsetTop + width = el.offsetWidth + height = el.offsetHeight + } + el._checkPosition = function () { // 闃叉琚嫋鍑鸿竟鐣� + const width = el.offsetWidth + const height = el.offsetHeight + let left = Math.min(el.offsetLeft, document.body.clientWidth - width) + left = Math.max(0, left) + let top = Math.min(el.offsetTop, document.body.clientHeight - height) + top = Math.max(0, top) + el.style.left = left + 'px' + el.style.top = top + 'px' + el.style.width = width + 'px' + el.style.height = height + 'px' + } + el._dragEnd = function (event) { + event.stopPropagation() + left = event.clientX - left + top = event.clientY - top + el.style.left = left + 'px' + el.style.top = top + 'px' + el.style.width = width + 'px' + el.style.height = height + 'px' + el._checkPosition() + } + el._documentAllowDraop = function (event) { + event.preventDefault() + } + document.body.addEventListener('dragover', el._documentAllowDraop) + el.addEventListener('dragstart', el._dragstart) + el.addEventListener('dragend', el._dragEnd) + window.addEventListener('resize', el._checkPosition) + }, + + unbind: function (el, bindding, vNode) { + document.body.removeEventListener('dragover', el._documentAllowDraop) + el.removeEventListener('dragstart', el._dragstart) + el.removeEventListener('dragend', el._dragEnd) + window.removeEventListener('resize', el._checkPosition) + delete el._documentAllowDraop + delete el._dragstart + delete el._dragEnd + delete el._checkPosition + } +}) + +// v-dialogDrag: 寮圭獥鎷栨嫿 +Vue.directive('dialogDrag', { + bind (el, binding, vnode, oldVnode) { + const dialogHeaderEl = el.querySelector('.el-dialog__header') + const dragDom = el.querySelector('.el-dialog') + dialogHeaderEl.style.cursor = 'move' + + // 鑾峰彇鍘熸湁灞炴�� ie dom鍏冪礌.currentStyle 鐏嫄璋锋瓕 window.getComputedStyle(dom鍏冪礌, null); + const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null) + + dialogHeaderEl.onmousedown = (e) => { + // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅厓绱犺窛绂诲彲瑙嗗尯鐨勮窛绂� + const disX = e.clientX - dialogHeaderEl.offsetLeft + const disY = e.clientY - dialogHeaderEl.offsetTop + + // 鑾峰彇鍒扮殑鍊煎甫px 姝e垯鍖归厤鏇挎崲 + let styL, styT + + // 娉ㄦ剰鍦╥e涓� 绗竴娆¤幏鍙栧埌鐨勫�间负缁勪欢鑷甫50% 绉诲姩涔嬪悗璧嬪�间负px + if (sty.left.includes('%')) { + styL = +document.body.clientWidth * (+sty.left.replace(/%/g, '') / 100) + styT = +document.body.clientHeight * (+sty.top.replace(/%/g, '') / 100) + } else { + styL = +sty.left.replace(/px/g, '') + styT = +sty.top.replace(/px/g, '') + } + + document.onmousemove = function (e) { + // 閫氳繃浜嬩欢濮旀墭锛岃绠楃Щ鍔ㄧ殑璺濈 + const l = e.clientX - disX + const t = e.clientY - disY + + // 绉诲姩褰撳墠鍏冪礌 + dragDom.style.left = `${l + styL}px` + dragDom.style.top = `${t + styT}px` + + // 灏嗘鏃剁殑浣嶇疆浼犲嚭鍘� + // binding.value({x:e.pageX,y:e.pageY}) + } + + document.onmouseup = function (e) { + document.onmousemove = null + document.onmouseup = null + } + } + } +}) + +// v-dialogDragWidth: 寮圭獥瀹藉害鎷栧ぇ 鎷栧皬 +Vue.directive('dialogDragWidth', { + bind (el, binding, vnode, oldVnode) { + const dragDom = binding.value.$el.querySelector('.el-dialog') + + el.onmousedown = (e) => { + // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅厓绱犺窛绂诲彲瑙嗗尯鐨勮窛绂� + const disX = e.clientX - el.offsetLeft + + document.onmousemove = function (e) { + e.preventDefault() // 绉诲姩鏃剁鐢ㄩ粯璁や簨浠� + + // 閫氳繃浜嬩欢濮旀墭锛岃绠楃Щ鍔ㄧ殑璺濈 + const l = e.clientX - disX + dragDom.style.width = `${l}px` + } + + document.onmouseup = function (e) { + document.onmousemove = null + document.onmouseup = null + } + } + } +}) diff --git a/src/components/flueGas/flueGas.js b/src/components/BaseNav/flueGas/flueGas.js similarity index 94% rename from src/components/flueGas/flueGas.js rename to src/components/BaseNav/flueGas/flueGas.js index 6ea7391..0ab51b2 100644 --- a/src/components/flueGas/flueGas.js +++ b/src/components/BaseNav/flueGas/flueGas.js @@ -1,6 +1,6 @@ import { FlueGas } from '@/api/request' -import defaultImg from '@components/flueGas/green_airquality_2.png' -import Setting from '@components/flueGas/green_airquality_3.png' +import defaultImg from '@assets/images/map-pages/basenav/flugas/green_airquality_2.png' +import Setting from '@assets/images/map-pages/basenav/flugas/green_airquality_3.png' // 鍥剧墖 class AddGasHelper { @@ -73,9 +73,10 @@ // 鐐瑰嚮 浜嬩欢 marker.on('click', (e) => { try { - console.log(e) + // console.log(e) this.EffectOfPulse(e.target.getLatLng()) this.FlueGasPopup.setData(data[i]) + // this.FlueGasPopup.setData(data[i]) return this.FlueGasPopup.$el } catch (error) { console.log(error) @@ -117,7 +118,7 @@ // 鑴夊啿鏁堟灉璁剧疆瀹炵幇 EffectOfPulse (position, markers, layerGroup) { // // 鍖哄垎鐩存帴鎵ц 鍜屽垽鏂墽琛岀殑涓嶅悓鍖哄埆 - let differentColor = '' + var differentColor = '' if (markers) { differentColor = '#ff0000' } else { diff --git a/src/components/flueGas/GasComponents/GasTable.vue b/src/components/flueGas/GasComponents/GasTable.vue deleted file mode 100644 index 0b927c9..0000000 --- a/src/components/flueGas/GasComponents/GasTable.vue +++ /dev/null @@ -1,46 +0,0 @@ -<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: 200px; - 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 deleted file mode 100644 index b317b1c..0000000 --- a/src/components/flueGas/GasComponents/GasVideo.vue +++ /dev/null @@ -1,24 +0,0 @@ -<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/popup-gas.vue b/src/components/flueGas/popup-gas.vue deleted file mode 100644 index a9de862..0000000 --- a/src/components/flueGas/popup-gas.vue +++ /dev/null @@ -1,54 +0,0 @@ -<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/components/plugin/MagicMarker.js b/src/components/plugin/MagicMarker.js index afe9916..a9d75bd 100644 --- a/src/components/plugin/MagicMarker.js +++ b/src/components/plugin/MagicMarker.js @@ -1,27 +1,45 @@ /* eslint-disable */ -!(function (i) { - var c = function (i, c) { - for (var n in c) i[n] = c[n] - return i +(function (window) { + console.log(window) + const setOptions = function (obj, options) { + for (const i in options) { + obj[i] = options[i] + } + return obj } - L.Icon.Magic = function (i) { - if (i.iconUrl) { - var n = { html: '<div class=\'magicDiv\'><div class=\'magictime ' + i.magic + '\'>' + i.html + '<img id=\'migic\' src=\'' + i.iconUrl + '\'/></div></div>' } + L.Icon.Magic = function (options) { + let opts + // console.log(options) + if (options.iconUrl) { + opts = { + html: '<div class=\'magicDiv\'><div class=\'magictime ' + options.magic + '\'>' + options.html + '</div></div>' + // className: 'magicDiv',L + } } else { - var n = { html: '<div class=\'magicDiv\'><div class=\'magictime ' + i.magic + '\'>' + i.html + '</div></div>' } + opts = { + html: '<div class=\'magicDiv\'><div class=\'magictime ' + options.magic + '\'><img id=\'migic\' src=\'' + options.icon.options.iconUrl + '\'/></div></div>' + // className: 'magicDiv', + } } - delete i.html - var a = c(n, i) - console.log(a) - var r = L.divIcon(a) - return r - }, L.icon.magic = function (i) { - return new L.Icon.Magic(i) - }, L.Marker.Magic = L.Marker.extend({ - initialize: function (i, c) { - c.icon = L.icon.magic(c), L.Marker.prototype.initialize.call(this, i, c) - } - }), L.marker.magic = function (i, c) { - return new L.Marker.Magic(i, c) + delete options.html + const magicIconOpts = setOptions(opts, options) + // console.log(magicIconOpts) + const magicIcon = L.divIcon(magicIconOpts) + return magicIcon } -}(window)) + + L.icon.magic = function (options) { + return new L.Icon.Magic(options) + } + + L.Marker.Magic = L.Marker.extend({ + initialize: function (latlng, options) { + options.icon = L.icon.magic(options) + L.Marker.prototype.initialize.call(this, latlng, options) + } + }) + + L.marker.magic = function (latlng, options) { + return new L.Marker.Magic(latlng, options) + } +})(window) diff --git a/src/conf/MapConfig.js b/src/conf/MapConfig.js index 31dcaf9..636c051 100644 --- a/src/conf/MapConfig.js +++ b/src/conf/MapConfig.js @@ -61,9 +61,27 @@ } } +/** + * + */ +// const MagicMaker = { +// Current: 'vanishIn', +// ARRAY: [ +// 'twisterInDown', 'twisterInUp', 'swap', +// 'puffIn', 'vanishIn', +// 'openDownLeftReturn', 'openDownRightReturn', 'openUpLeftReturn', 'openUpRightReturn', +// 'perspectiveDownReturn', 'perspectiveUpReturn', 'perspectiveLeftReturn', 'perspectiveRightReturn', +// 'slideDownReturn', 'slideUpReturn', 'slideLeftReturn', 'slideRightReturn', +// 'swashIn', 'foolishIn', +// 'tinRightIn', 'tinLeftIn', 'tinUpIn', 'tinDownIn', +// 'boingInUp', +// 'spaclInUp', 'spaceInRight', 'spaceInDown', 'spaceInLeft'] +// } + export default { mapOptions, mapConfig, TokenConfig, BLUEMAP_HOST + // MagicMaker } diff --git a/src/img/fs_yellow.7fe82c5d.png b/src/img/fs_yellow.7fe82c5d.png new file mode 100644 index 0000000..8d84aa8 --- /dev/null +++ b/src/img/fs_yellow.7fe82c5d.png Binary files differ diff --git a/src/views/MapTemplate.vue b/src/views/MapTemplate.vue index 43c1a35..0870334 100644 --- a/src/views/MapTemplate.vue +++ b/src/views/MapTemplate.vue @@ -17,6 +17,7 @@ <enterprise></enterprise> <!-- <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> + <el-button type="primary" @click="ChangeWaterState" class="Waste-water">搴熸按</el-button> <el-button type="primary" @click="AddGasHelper" class="flue-gas">搴熸皵</el-button> <PublicBounced ref="PublicBounced"></PublicBounced> </div> @@ -39,9 +40,8 @@ import Enterprise from '../components/table/enterprise' // 搴曞浘涓氬姟js閫昏緫 import AddSolidWasteHelper from '@components/BaseNav/SolidWaste/SolidWaste' -// import SolidContent from '@components/SolidWaste/SolidContent' -// 搴熸皵 -import AddGasHelper from '@components/flueGas/flueGas' +import AddWasteWaterHelper from '@components/BaseNav/WasteWater/WasteWater' +import AddGasHelper from '@components/BaseNav/flueGas/flueGas' // import PopupGas from '@/components/flueGas/popup-gas' // // 鍏叡灞曠ず鏁版嵁 import PublicBounced from '@components/BaseNav/PublicBounced/PublicBounced' @@ -116,6 +116,28 @@ AddSolidWaste.requestData(data) AddSolidWaste.SetSolidWasteContent(this.config, this.$refs.PublicBounced) }, + ChangeWaterState () { + const data = { + companyId: 3900100145, + id: '', + monType: 1, + userCode: 'wenchun.deng', + monDuration: '', + epName: '', + secdDeptId: '', + contrLevel: '', + dataStatus: '', + dataFlag: '', + runStatus: '', + emissTypeId: '' + } + const AddWasteWater = new AddWasteWaterHelper({ map: this.map }) + AddWasteWater.requestData(data) + AddWasteWater.SetWasteWaterContent(this.config, this.$refs.PublicBounced) + }, + // isShowHidden () { + // this.isShowBtn = !this.isShowBtn + // }, saveMapStatus () { window.serviceLayerHelper = this.serviceLayerHelper this.$store.commit('setMapObj', this.map) @@ -147,6 +169,7 @@ // this.ChangeState() // this.AddGasHelper() + // this.ChangeWaterState() this.saveMapStatus() // this.setMapObj(this.mapObj) @@ -196,15 +219,23 @@ <style lang="less"> .flue-gas { - position:fixed; + position: fixed; top: 88px; left: 180px; z-index: 500; } + .solid-waste { position: absolute; top: 88px; left: 88px; + z-index: 999; +} + +.Waste-water { + position: absolute; + top: 88px; + left: 280px; z-index: 999; } @@ -237,5 +268,16 @@ .leaflet-custom-icon { background: white; } + + .leaflet-marker-icon { + background: none; + } + + #migic { + width: 48px; + height: 48px; + margin: -18px -20px; + z-index: 999; + } } </style> -- Gitblit v1.8.0