From 9185072c775eaf1cd3df53d06bc81dc5bfc8264b Mon Sep 17 00:00:00 2001 From: chenyibo <p-honggang.li@pcitc.com> Date: 星期二, 30 三月 2021 16:31:58 +0800 Subject: [PATCH] Merge branch 'develop' of http://xearth.cn:6600/r/wuyushui/SewerAndRainNetwork into develop --- vue.config.js | 2 src/components/BaseNav/PublicBounced/GasComponents/GasVideo.vue | 74 + src/styles/theme-dark/variable.less | 2 public/static/airQuality.json | 117 ++ 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/solidwaste/voc.png | 0 src/conf/Constants.js | 6 src/assets/images/map-pages/basenav/solidwaste/gf_green.png | 0 src/assets/images/map-pages/basenav/flugas/green_airquality_3.png | 0 src/components/BaseNav/flueGas/flueGas.js | 178 ++++ public/static/WasteWater.json | 117 ++ src/assets/images/map-pages/basenav/Waste-water/fs_gray.png | 0 src/conf/layers/LayerWasteGas.js | 51 + src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue | 164 +++ src/components/BaseNav/PublicBounced/GasComponents/PublicTable.vue | 53 + src/components/LayerController/logic/Sample.js | 9 src/components/BaseNav/PublicBounced/PublicBounced.vue | 97 ++ src/img/fs_yellow.7fe82c5d.png | 0 src/main.js | 1 src/assets/images/map-pages/basenav/Waste-water/fs_green_xc.png | 0 src/components/plugin/pulse/Pulse.css | 34 src/assets/css/map/leaflet.magicMarker.css | 13 public/static/SolidWaste.json | 81 + src/components/BaseNav/WasteWater/WasteWater.js | 177 ++++ src/components/plugin/MagicMarker.js | 82 src/assets/images/map-pages/basenav/Waste-water/fs_blue.png | 0 src/utils/AjaxUtils.js | 2 src/Sgis.js | 27 src/components/plugin/pulse/Pulse.js | 77 + src/conf/layers/LayerSolidWaste.js | 27 src/components/BaseNav/SolidWaste/SolidWaste.js | 182 ++++ src/components/LayerController/service/WmsLayerService.js | 11 src/components/BaseNav/SolidWaste/directive.js | 59 + src/components/LayerController/service/WfsLayerService.js | 119 ++ src/components/LayerController/service/PopupService.js | 0 src/utils/axios.js | 8 src/assets/images/map-pages/basenav/Waste-water/fs_bright_green.png | 0 src/api/request.js | 24 src/conf/layers/LayerWasteWater.js | 37 src/components/BaseNav/WireSurface/index.js | 22 src/views/MapTemplate.vue | 166 +++ src/assets/images/map-pages/basenav/Waste-water/fs_orange.png | 0 src/components/LayerController/service/LayerFactory.js | 88 ++ 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/LayerController/modules/LcServiceLayer.vue | 240 ++-- src/conf/layers/LayerSewers.js | 22 /dev/null | 30 src/conf/MapConfig.js | 32 package.json | 1 src/components/LayerController/service/BusiLayerService.js | 32 src/components/panel/topicSearch/SewersSearch.vue | 2 src/components/BaseNav/PublicBounced/GasComponents/GasTab.vue | 123 ++ 55 files changed, 2,361 insertions(+), 248 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/SolidWaste.json b/public/static/SolidWaste.json new file mode 100644 index 0000000..3a16382 --- /dev/null +++ b/public/static/SolidWaste.json @@ -0,0 +1,81 @@ +{ + "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.22118377685547, + "positionY": 118.78057479858398 + }, + { + "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.23122596740723, + "positionY": 118.7743091583252 + }, + { + "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.222299575805664, + "positionY": 118.74950408935547 + }, + { + "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.23092555999756, + "positionY": 118.75735759735107 + } + ] + } +} 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/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 cbc3d10..6e794e0 100644 --- a/src/Sgis.js +++ b/src/Sgis.js @@ -1,22 +1,24 @@ import BasemapHelper from '@components/helpers/BasemapHelper' import VectorLayerHelper from '@components/helpers/VectorLayerHelper' +// 鍒濆鍖栨樉绀� import ServiceLayerHelper from '@components/helpers/ServiceLayerHelper' + import '@components/plugin/PathDrag' -// import MagicMarker from '@components/plugin/MagicMarker' -// import WmtsSupport from '@components/plugin/wmts_plugins' import MapConfig from '@/conf/MapConfig' import '@components/plugin/PathDashFlow' // 娴佸姩绾垮浘 -// import CanvasMarkers from '@components/plugin/CanvasMarkers' -// import FullScreen from '@components/plugin/FullScreen' import DownLoad from '@components/plugin/DownLoad' // 娴嬮噺 import '@components/plugin/leaflet-measure-path/leaflet-measure-path' import 'leaflet.markercluster' -// import 'leaflet-canvas-markers' import './components/plugin/Leaflet.GridLayer.FadeOut' // 鐡︾墖鍥惧眰鍒囨崲娣″叆娣″嚭 import './components/plugin/leaflet-canvas-markers' // 鐢诲竷marker import './components/plugin/Editable' // 鏍囩粯鎿嶄綔 +import './components/plugin/MagicMarker' // 鍔ㄧ敾Marker +import './assets/css/map/magic.min.css' // 鍔ㄧ敾Marker css +import '@/components/plugin/magicMarker.css' +import '@components/plugin/pulse/Pulse' // marker 澶栧湀娉� +import '@components/plugin/pulse/Pulse.css' // marker 澶栧湀娉� css let map = null const L = window.L @@ -24,19 +26,7 @@ if (map != null) { map.remove() } - - // Leaflet鎵╁睍浠g爜 - // Editable.init(L) // 鍥惧眰缂栬緫 - // PathDrag.init(L) // 璺緞鎷栨嫿 - // MagicMarker.init(L) // 鍔ㄧ敾Marker - // WmtsSupport.init(L) // 鎵╁睍锛屼娇鏀寔WMTS - // CustomPopup.init(L) // 鑷畾涔夊脊鍑烘 - // CanvasMarkers.init(L)// 鐢诲竷鍥惧眰 - // 鍏ㄥ睆 - // FullScreen.init(L) - // 涓嬭浇 DownLoad.init(L) - // LeafletMeasurePath.init(L) map = L.map(div, MapConfig.mapOptions) @@ -46,7 +36,9 @@ window.map = map window.L = L + initTileLayersHelper(map) + return map } @@ -68,7 +60,6 @@ var serviceLayerHelper = new ServiceLayerHelper({ map }) return serviceLayerHelper } - /** * 鐭㈤噺鍦板浘鍒濆鍖� * @param map diff --git a/src/api/request.js b/src/api/request.js new file mode 100644 index 0000000..9f9091d --- /dev/null +++ b/src/api/request.js @@ -0,0 +1,24 @@ +import $http from '@utils/axios' +import Qs from 'qs' + +export const QueryStoragePlaceListByCompanyAndName = (data = {}) => { + return $http.post('/EPInterface/DataService/EPMapService.asmx/QueryStoragePlaceListByCompanyAndName', Qs.stringify(data), { + headers: { + 'Content-Type': 'application/json' + } + }) +} +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' + } + }) +} \ No newline at end of file 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/assets/images/map-pages/basenav/flugas/green_airquality_2.png b/src/assets/images/map-pages/basenav/flugas/green_airquality_2.png new file mode 100644 index 0000000..ca7b11b --- /dev/null +++ b/src/assets/images/map-pages/basenav/flugas/green_airquality_2.png Binary files differ diff --git a/src/assets/images/map-pages/basenav/flugas/green_airquality_3.png b/src/assets/images/map-pages/basenav/flugas/green_airquality_3.png new file mode 100644 index 0000000..d5f6a73 --- /dev/null +++ b/src/assets/images/map-pages/basenav/flugas/green_airquality_3.png Binary files differ diff --git a/src/assets/images/map-pages/basenav/solidwaste/gf_green.png b/src/assets/images/map-pages/basenav/solidwaste/gf_green.png new file mode 100644 index 0000000..144c0ce --- /dev/null +++ b/src/assets/images/map-pages/basenav/solidwaste/gf_green.png Binary files differ diff --git a/src/assets/images/map-pages/basenav/solidwaste/voc.png b/src/assets/images/map-pages/basenav/solidwaste/voc.png new file mode 100644 index 0000000..3ccaad5 --- /dev/null +++ b/src/assets/images/map-pages/basenav/solidwaste/voc.png Binary files differ diff --git a/src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue b/src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue new file mode 100644 index 0000000..9084a18 --- /dev/null +++ b/src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue @@ -0,0 +1,164 @@ +<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 class="main-echarts"> + <div id="echarts" style="width:100%;height:100%" ref="main"></div> + </div> + </div> + </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"> +.win { + width: 100%; + height: 100%; + position: relative; + //display: inline-block; + background-color: rgba(33, 41, 69,0.9); +} +.border_corner{ + z-index: 2500; + position: absolute; + width: 10px; + height: 10px; + background: rgba(0,0,0,0); + border: 1.5px 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_corner_right_bottom{ + bottom: 0; + right: 0; + border-left: none; + border-top: none; +} +.main { + width: 100%; + height: 100%; + .main-echarts{ + border: 1px solid #396d83; + } +} +</style> diff --git a/src/components/BaseNav/PublicBounced/GasComponents/GasTab.vue b/src/components/BaseNav/PublicBounced/GasComponents/GasTab.vue new file mode 100644 index 0000000..e05f59f --- /dev/null +++ b/src/components/BaseNav/PublicBounced/GasComponents/GasTab.vue @@ -0,0 +1,123 @@ +<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 class="main-matter"> + <el-row type="flex" class="row-bg row-item-one" justify="space-around"> + <el-col :span="12">鐩戞祴鐐瑰悕绉�:{{ displayContent.Name }}</el-col> + <el-col :span="12">鐢熶骇鍗曚綅:{{ displayContent.DeptSname }}</el-col> + <el-col :span="12">鎺掓斁绫诲瀷鍔犺浇:{{ displayContent.EmissTypeName }}</el-col> + </el-row> + <el-row type="flex" class="row-bg" justify="space-around"> + <el-col :span="12">鎺掓斁鍘诲悜:{{ displayContent.EmissTypeDirectName }}</el-col> + <el-col :span="12">鎺у埗绾у埆鍚嶇О:{{ displayContent.ContrLevelShowName }}</el-col> + <el-col :span="12">鍐�/澶栨帓鍙�:{{ displayContent.OrOutPortName }}</el-col> + </el-row> + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'GasTable', + props: ['displayContent'], + data () { + return {} + } +} +</script> + +<style scoped lang="less"> + +.win { + position: relative; + //display: inline-block; + margin-bottom: 13px; + background-color: rgba(33, 41, 69,0.9); +} +.main { + width: 100%; + height: 100%; + .main-matter{ + font-size: 13px; + padding: 9px 7px; + font-weight: normal; + border: 1px solid #396d83; + .row-item-one{ + margin-bottom: 7px; + } + .el-row { + width: 100%; + color: #00d0f9; + display: flex; + font-size: 12px!important; + .el-col{ + flex: 1; + width: 100%; + background-color: #243a55;; + text-align: center; + line-height: 28px; + margin-left: 6px; + border-radius: 4px; + &:nth-child(1){ + margin-left:0; + } + } + } + } +} +.border_corner{ + z-index: 2500; + position: absolute; + width: 10px; + height: 10px; + background: rgba(0,0,0,0); + border: 1.5px 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_corner_right_bottom{ + bottom: 0; + right: 0; + border-left: none; + border-top: none; +} +//.el-row { +// width: 100%; +// color: #00d0f9; +// .el-col{ +// width: 180px; +// height: 28px; +// background-color: #243a55;; +// text-align: center; +// line-height: 28px; +// margin-left: 6px; +// border-radius: 4px; +// &:nth-child(1){ +// margin-left:0; +// } +// } +//} +</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..fc152ab --- /dev/null +++ b/src/components/BaseNav/PublicBounced/GasComponents/GasVideo.vue @@ -0,0 +1,74 @@ +<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 class="main-video"> + <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 lang="less"> +.win { + /*width: 100%;*/ + /*height: 100%;*/ + position: relative; + //display: inline-block; + background-color: rgba(33, 41, 69,0.9); +/*//border: 1px solid #396d83;*/ +} +.main { + width: 100%; + height: 100%; + .main-video { + padding: 7px; + border: 1px solid #396d83; + } +} +.border_corner{ + z-index: 2500; + position: absolute; + width: 14px; + height: 14px; + background: rgba(0,0,0,0); + border: 1.5px 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_corner_right_bottom{ + bottom: 0; + right: 0; + border-left: none; + border-top: none; +} +</style> diff --git a/src/components/BaseNav/PublicBounced/GasComponents/PublicTable.vue b/src/components/BaseNav/PublicBounced/GasComponents/PublicTable.vue new file mode 100644 index 0000000..2c878b8 --- /dev/null +++ b/src/components/BaseNav/PublicBounced/GasComponents/PublicTable.vue @@ -0,0 +1,53 @@ +<template> + <div class="public-table"> + <table border="1"> + <tr> + <th>111</th> + <th>111</th> + <th>111</th> + <th>111</th> + <th>111</th> + <th>111</th> + </tr> + <tr> + <td>4444444444</td> + <td>4444444444</td> + <td>4444444444</td> + <td>4444444444</td> + <td>4444444444</td> + <td>4444444444</td> + </tr> + </table> + </div> +</template> + +<script> +export default { + name: 'PublicTable', + data () { + return { + tableData: [{ + date: '2016-05-02', + name: '鐜嬪皬铏�', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1518 寮�' + }, { + date: '2016-05-04', + name: '鐜嬪皬铏�', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1517 寮�' + }, { + date: '2016-05-01', + name: '鐜嬪皬铏�', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�' + }, { + date: '2016-05-03', + name: '鐜嬪皬铏�', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1516 寮�' + }] + } + } +} +</script> + +<style lang="less" scoped> + +</style> diff --git a/src/components/BaseNav/PublicBounced/PublicBounced.vue b/src/components/BaseNav/PublicBounced/PublicBounced.vue new file mode 100644 index 0000000..275b86e --- /dev/null +++ b/src/components/BaseNav/PublicBounced/PublicBounced.vue @@ -0,0 +1,97 @@ +<template> + <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"> + <div class="public-bounced-content-left"> + <GasTab :displayContent="displayContent"></GasTab> + <PublicTable v-if="value === 'gufei'"></PublicTable> + <GasECharts v-else></GasECharts> + </div> + <div class="public-bounced-content-right"> + <GasVideo></GasVideo> + </div> + </div> + </div> +</template> + +<script> + +import '@/components/BaseNav/SolidWaste/directive' +import GasTab from '@components/BaseNav/PublicBounced/GasComponents/GasTab' +import PublicTable from '@components/BaseNav/PublicBounced/GasComponents/PublicTable' +import GasECharts from '@components/BaseNav/PublicBounced/GasComponents/GasECharts' +import GasVideo from '@components/BaseNav/PublicBounced/GasComponents/GasVideo' + +export default { + name: 'PublicBounced', + components: { + GasTab, + PublicTable, + GasECharts, + GasVideo + }, + data () { + return { + displayContent: [], + flag: false + } + }, + methods: { + setData (data, value) { + this.displayContent = data + this.flag = true + this.value = value + }, + closePopup () { + this.flag = false + } + } +} +</script> + +<style lang="less" scoped> +.public-bounced { + z-index: 999; + position: absolute; + top: 50%; + left: 50%; + background-color: #002432; + border: 1px #9fc5c8 solid; + + .public-bounced-title { + 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; + } + } + + .public-bounced-content { + display: flex; + align-items: center; + justify-content: space-around; + + .public-bounced-content-left { + } + + .public-bounced-content-right { + } + } + +} +</style> \ No newline at end of file diff --git a/src/components/BaseNav/SolidWaste/SolidWaste.js b/src/components/BaseNav/SolidWaste/SolidWaste.js new file mode 100644 index 0000000..6df5e3e --- /dev/null +++ b/src/components/BaseNav/SolidWaste/SolidWaste.js @@ -0,0 +1,182 @@ +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' + +// 搴曞浘涓氬姟灞曠ず鐐� +class AddSolidWasteHelper { + constructor (options) { + this.map = options.map + this.L = window.L + this.SolidWasteLayerGroup = this.L.layerGroup().addTo(this.map) + this.SolidWastePopup = null + this.L.sgis = this.L.sgis || this.L + this.solidWasteMarkersLabels = [] + this.pulseHeighLightMarker = null + } + + // 璇锋眰鏁版嵁 data 涓哄弬鏁帮紝 璇锋眰鍚庡彴鏁版嵁鏃� 鎼哄甫data鍙傛暟 + requestData (data) { + QueryStoragePlaceListByCompanyAndName(data).then(res => { + // console.log(res) + this.DrawTheSolidWasteContent(res.Result.DataInfo) + }).catch(err => { + console.log(err) + }) + } + + // 鏍规嵁鑾峰彇鏁版嵁 鐢诲嚭 鍐呭 + DrawTheSolidWasteContent (data) { + // 鍥炬爣鏍峰紡鎵╁睍 + var SolidWasteIcon = this.SolidWasteIcon() + + // //鍔犺浇鏁版嵁鍓嶅鏋滃瓨鍦ㄥ浘灞傜粍 閭d箞娓呴櫎鎺� + if (this.SolidWasteLayerGroup) { + this.SolidWasteLayerGroup.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.SolidWasteIconUrl(determineValueOne, determineValueTwo, positionArea) + var Icon = new SolidWasteIcon({ iconUrl: iconUrl }) + // var url = Icon.options.iconUrl + + const marker = this.L.marker([positionX, positionY], { icon: Icon }) + // 鍒掕繃鍑虹幇 灞曠ず鏁版嵁 + marker.bindTooltip(data[i].Name, { + permanent: true, + offset: [0, -16], + direction: 'top', + className: '' + }) + // 鐐瑰嚮 浜嬩欢 + marker.on('click', (e) => { + try { + // console.log(e) + // console.log(this.map.getCenter()) + // console.log(this.map.setCenter([e.target.getLatLng().lat, e.target.getLatLng().lng])) + // this.map.flyTo([e.target.getLatLng().lat, e.target.getLatLng().lng]) + // this.map.panTo([e.target.getLatLng().lat, e.target.getLatLng().lng], 100) + this.setPanTo(e.target.getLatLng(), 30) + this.EffectOfPulse(e.target.getLatLng()) + this.SolidWastePopup.setData(data[i], 'gufei') + return this.SolidWastePopup.$el + } catch (error) { + console.log(error) + } + }) + // 璁剧疆鍐呭娣诲姞鍒板浘灞� + this.SolidWasteLayerGroup.addLayer(marker) + } + } + } + + // panTo + setPanTo (pos, value) { + var position = pos + position = this.map.latLngToLayerPoint(position) + position.y += value + position = this.map.layerPointToLatLng(position) + this.map.setView(position) + // this.map.flyTo(position) + } + + // 鍥哄簾鐐瑰嚮杩涜鐨� 鍐呭鐨勮缃� + SetSolidWasteContent (config, containerPopup) { + this.SolidWastePopup = containerPopup + } + + // 鍥炬爣鏍峰紡鎵╁睍 => 鍏夊湀 鍥炬爣鑴夊啿 + SolidWasteIcon () { + return this.L.Icon.extend({ + options: { + iconSize: [50, 50], + iconAnchor: [25, 25] + } + }) + } + + // 鏍规嵁绫诲瀷杩斿洖鍥剧墖鍔犺浇url + SolidWasteIconUrl (determineValueOne, determineValueTwo, position) { + var EffectOfChange + if (determineValueOne === 1 || determineValueTwo === 1) { + EffectOfChange = defaultImg + this.EffectOfPulse(position, this.solidWasteMarkersLabels, this.SolidWasteLayerGroup) + } else { + EffectOfChange = Setting + } + return EffectOfChange + } + + // 鑴夊啿鏁堟灉璁剧疆瀹炵幇 + EffectOfPulse (position, markers, layerGroup) { + // 鍖哄垎鐩存帴鎵ц 鍜屽垽鏂墽琛岀殑涓嶅悓鍖哄埆 + var 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.SolidWasteLayerGroup) + this.PulseCountSetting() + } + } + + // 瀵瑰浘鏍囪剦鍐� 杩涜set璁剧疆 // 楂樹寒鍥惧眰 + PulseCountSetting () { + var HeightLightTime = 5 + var PulseNumber = 5 + const pulseinterver = setInterval((e) => { + if (PulseNumber > 0) { + PulseNumber-- + } else { + this.pulseClear(pulseinterver) + PulseNumber = HeightLightTime + } + }, 1000) + } + + // 娓呴櫎 鍥惧眰 + pulseClear (pulseinterver) { + clearInterval(pulseinterver) + pulseinterver = null + + if (this.SolidWasteLayerGroup) { + // this.SolidWasteLayerGroup.clearLayers() + } else { + this.SolidWasteLayerGroup = this.L.layerGroup().addTo(this.map) + } + if ((this.pulseHeighLightMarker)) { + this.pulseHeighLightMarker.remove() + } + } +} + +export default AddSolidWasteHelper diff --git a/src/components/BaseNav/SolidWaste/directive.js b/src/components/BaseNav/SolidWaste/directive.js new file mode 100644 index 0000000..d51b377 --- /dev/null +++ b/src/components/BaseNav/SolidWaste/directive.js @@ -0,0 +1,59 @@ +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 + } +}) 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/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/BaseNav/flueGas/flueGas.js b/src/components/BaseNav/flueGas/flueGas.js new file mode 100644 index 0000000..0ab51b2 --- /dev/null +++ b/src/components/BaseNav/flueGas/flueGas.js @@ -0,0 +1,178 @@ +import { FlueGas } from '@/api/request' +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 { + 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.setData(data[i]) + // this.FlueGasPopup.setData(data[i]) + return this.FlueGasPopup.$el + } 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) { + // // 鍖哄垎鐩存帴鎵ц 鍜屽垽鏂墽琛岀殑涓嶅悓鍖哄埆 + var 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/LayerController/logic/Sample.js b/src/components/LayerController/logic/Sample.js new file mode 100644 index 0000000..687b0e7 --- /dev/null +++ b/src/components/LayerController/logic/Sample.js @@ -0,0 +1,9 @@ +module.exports = function () { + this.init = (layer) => { + console.log('sample init !!!') + } + + this.clickListener = (list) => { + console.log('sample clickListener !!!') + } +} diff --git a/src/components/LayerController/modules/LcServiceLayer.vue b/src/components/LayerController/modules/LcServiceLayer.vue index 4b9aa25..ab589f0 100644 --- a/src/components/LayerController/modules/LcServiceLayer.vue +++ b/src/components/LayerController/modules/LcServiceLayer.vue @@ -1,134 +1,134 @@ <template> <div class="inner-panel"> -<!-- <div class="title">--> -<!-- 鍥惧眰鎺у埗--> -<!-- </div>--> -<!-- <div class="wms-panel">--> -<!-- <div v-for="item in serviceLayers" :key="item.code" class="layerbox">--> -<!-- <div><input type="checkbox" :name="'wmsLayer_'+item.code" :checked="item.checked" :value="item.code"--> -<!-- @change="swAllLayers(item)"/>{{ item.name }} <span @click="swFilter(item)"--> -<!-- class="btn-filter">杩囨护</span>--> -<!-- </div>--> -<!-- <div class="layerbox-item">--> -<!-- <div class="basemap-layer-item" v-for="itm in item.layers" :key="itm.code"><input type="checkbox"--> -<!-- :name="'wmsSublayers_'+item.code+'_'+itm.code"--> -<!-- :checked="itm.checked"--> -<!-- :value="itm.code"--> -<!-- @change="swWmsLayer(item.url,itm)"/>{{--> -<!-- itm.name }}--> -<!-- </div>--> -<!-- </div>--> -<!-- </div>--> -<!-- </div>--> -<!-- <lc-service-layer-filter v-if="layerFilterVisible" ref="serviceLayerFilter"></lc-service-layer-filter>--> + <div class="title"> + 鍥惧眰鎺у埗 + </div> + <div class="wms-panel"> + <div v-for="item in serviceLayers" :key="item.code" class="layerbox"> + <div><input type="checkbox" :name="'wmsLayer_'+item.code" :checked="item.checked" :value="item.code" + @change="swAllLayers(item)"/>{{ item.name }} <span @click="swFilter(item)" + class="btn-filter">杩囨护</span> + </div> + <div class="layerbox-item"> + <div class="basemap-layer-item" v-for="itm in item.layers" :key="itm.code"><input type="checkbox" + :name="'wmsSublayers_'+item.code+'_'+itm.code" + :checked="itm.checked" + :value="itm.code" + @change="swWmsLayer(itm)"/>{{ + itm.name }} + </div> + </div> + </div> + </div> + <lc-service-layer-filter v-if="layerFilterVisible" ref="serviceLayerFilter"></lc-service-layer-filter> </div> </template> -<!--<script>--> -<!--import WfsHelper from '../../helpers/WfsHelper'--> -<!--import LcServiceLayerFilter from '@components/LayerController/modules/LcServiceLayerFilter'--> -<!--import AjaxUtils from '../../../utils/AjaxUtils'--> +<script> +import WfsHelper from '../../helpers/WfsHelper' +import LcServiceLayerFilter from '@components/LayerController/modules/LcServiceLayerFilter' +import AjaxUtils from '../../../utils/AjaxUtils' -<!--export default {--> -<!-- name: 'LcServiceLayer',--> -<!-- components: { LcServiceLayerFilter },--> -<!-- data () {--> -<!-- return {--> -<!-- layerFilterVisible: false--> -<!-- }--> -<!-- },--> -<!-- computed: {--> -<!-- serviceLayers () {--> -<!-- return this.$store.state.map.serviceLayers.LayerSewersLine--> -<!-- }--> -<!-- },--> -<!-- mounted () {--> -<!-- // console.log('03姝ラ锛�', this.helper)--> -<!-- this.updateServiceLayerList()--> -<!-- },--> -<!-- methods: {--> -<!-- swAllLayers (item) {--> -<!-- // eslint-disable-next-line no-debugger--> -<!-- item.checked = !item.checked--> -<!-- for (let i = 0, len = item.layers.length; i < len; ++i) {--> -<!-- item.layers[i].checked = item.checked--> -<!-- }--> -<!-- this.updateWms()--> -<!-- },--> -<!-- loadWfs () {--> -<!-- var wfsHelper = new WfsHelper()--> -<!-- wfsHelper.addTypeName('绠$嚎鐐�')--> -<!-- wfsHelper.addEquals('pipename', '鐮旂┒闄�01璺痀S000001')--> +export default { + name: 'LcServiceLayer', + components: { LcServiceLayerFilter }, + data () { + return { + layerFilterVisible: false + } + }, + computed: { + serviceLayers () { + return this.$store.state.map.serviceLayers.LayerSewersLine + } + }, + mounted () { + // console.log('03姝ラ锛�', this.helper) + this.updateServiceLayerList() + }, + methods: { + swAllLayers (item) { + // eslint-disable-next-line no-debugger + item.checked = !item.checked + for (let i = 0, len = item.layers.length; i < len; ++i) { + item.layers[i].checked = item.checked + } + this.updateWms() + }, + loadWfs () { + var wfsHelper = new WfsHelper() + wfsHelper.addTypeName('绠$嚎鐐�') + wfsHelper.addEquals('pipename', '鐮旂┒闄�01璺痀S000001') -<!-- AjaxUtils.GetDataAsynByUrl(wfsHelper.getUrl(), {}, (res) => {--> -<!-- console.log(res)--> -<!-- })--> -<!-- },--> -<!-- swWmsLayer (url, itm) {--> -<!-- itm.checked = !itm.checked--> -<!-- if (itm.checked) {--> -<!-- window.serviceLayerHelper.loadGeojsonLayer(url, itm)--> -<!-- } else {--> -<!-- window.serviceLayerHelper.removeLayer(itm)--> -<!-- }--> -<!-- // this.updateWms()--> -<!-- },--> -<!-- swFilter (item) {--> -<!-- this.layerFilterVisible = !this.layerFilterVisible--> -<!-- },--> -<!-- updateServiceLayerList () {--> + AjaxUtils.GetDataAsynByUrl(wfsHelper.getUrl(), {}, (res) => { + console.log(res) + }) + }, + swWmsLayer (itm) { + itm.checked = !itm.checked + if (itm.checked) { + window.layerFactory.show(itm.code) + } else { + window.layerFactory.hide(itm.code) + } + // this.updateWms() + }, + swFilter (item) { + this.layerFilterVisible = !this.layerFilterVisible + }, + updateServiceLayerList () { -<!-- },--> -<!-- updateWms () {--> -<!-- var mapConfig = this.mapConfig--> -<!-- var wmsHelper = new WfsHelper()--> -<!-- wmsHelper.initMapConfig(mapConfig)--> -<!-- var wmsLayersMap = wmsHelper.getWmsLayersMap()--> -<!-- for (var k in wmsLayersMap) {--> -<!-- var layers = wmsLayersMap[k]--> -<!-- var tileLayer = window.serviceLayerHelper.getTileLayer(k)--> -<!-- if (tileLayer) {--> -<!-- tileLayer.setParams({ layers: layers.join(',') }, false)--> -<!-- tileLayer.setUrl(tileLayer.config.url, false)--> -<!-- }--> -<!-- }--> -<!-- }--> -<!-- }--> -<!--}--> -<!--</script>--> + }, + updateWms () { + var mapConfig = this.mapConfig + var wmsHelper = new WfsHelper() + wmsHelper.initMapConfig(mapConfig) + var wmsLayersMap = wmsHelper.getWmsLayersMap() + for (var k in wmsLayersMap) { + var layers = wmsLayersMap[k] + var tileLayer = window.serviceLayerHelper.getTileLayer(k) + if (tileLayer) { + tileLayer.setParams({ layers: layers.join(',') }, false) + tileLayer.setUrl(tileLayer.config.url, false) + } + } + } + } +} +</script> -<!--<style scoped lang="less">--> -<!-- .inner-panel {--> -<!-- .title{--> -<!-- color: #ffffff;--> -<!-- font-size: 16px;--> -<!-- font-weight: 600;--> -<!-- margin: 10px;--> -<!-- text-align: center;--> -<!-- }--> -<!-- .btn-filter {--> -<!-- cursor: pointer;--> -<!-- color: #ffffff;--> -<!-- }--> +<style scoped lang="less"> + .inner-panel { + .title{ + color: #ffffff; + font-size: 16px; + font-weight: 600; + margin: 10px; + text-align: center; + } + .btn-filter { + cursor: pointer; + color: #ffffff; + } -<!-- .wms-panel {--> -<!-- width: 250px;--> + .wms-panel { + width: 250px; -<!-- .layerbox {--> -<!-- width: 100%;--> + .layerbox { + width: 100%; -<!-- .layerbox-item {--> -<!-- display: flex;--> -<!-- flex-flow: row wrap;--> -<!-- margin-left: 15px;--> -<!-- margin-top: 5px;--> + .layerbox-item { + display: flex; + flex-flow: row wrap; + margin-left: 15px; + margin-top: 5px; -<!-- .basemap-layer-item {--> -<!-- width: 50%;--> -<!-- }--> -<!-- }--> -<!-- }--> -<!-- }--> -<!-- }--> + .basemap-layer-item { + width: 50%; + } + } + } + } + } -<!--</style>--> +</style> diff --git a/src/components/LayerController/service/BusiLayerService.js b/src/components/LayerController/service/BusiLayerService.js new file mode 100644 index 0000000..254a819 --- /dev/null +++ b/src/components/LayerController/service/BusiLayerService.js @@ -0,0 +1,32 @@ +/** + * 鍔犺浇涓氬姟鏁版嵁鍥惧眰 + */ +import { logicMapper } from '@src/conf/Constants' + +class BusiLayerService { + constructor (config) { + this.L = window.L + this.map = window.map + this.config = config + } + + init (layer) { + // 寮曞叆 鍏宠仈鐨刯s锛屽湪constant.js涓牴鎹甤onfig閰嶇疆鐨刬d寰楀埌澶勭悊js + const id = this.config.code + console.log(logicMapper) + const file = logicMapper[id] + if (!file) { + console.log('鎵句笉鍒伴�昏緫澶勭悊js!!!') + } else { + console.log('-----' + file) + var BusiLayer = require('../logic/' + file) + console.log(BusiLayer) + var busiLayer = new BusiLayer() + // 璋冪敤init + busiLayer.init(layer) + // 璋冪敤click浜嬩欢 + } + } +} + +export default BusiLayerService diff --git a/src/components/LayerController/service/LayerFactory.js b/src/components/LayerController/service/LayerFactory.js new file mode 100644 index 0000000..7626125 --- /dev/null +++ b/src/components/LayerController/service/LayerFactory.js @@ -0,0 +1,88 @@ +import store from '@/store' +import WfsLayerService from './WfsLayerService' +import BusiLayerService from './BusiLayerService' +import WmsLayerService from './WmsLayerService' +class LayerFactory { + constructor (options) { + this.L = options.L + this.map = window.map + this.layers = {} + } + + createLayerGroup () { + return this.L.layerGroup().addTo(this.map) + } + + init () { + // 1. 閬嶅巻layer config + var layerConfig = store.state.map.serviceLayers.LayerSewersLine + for (var i = 0, l = layerConfig.length; i < l; i++) { + var config = layerConfig[i] + var layers = config.layers + for (var j = 0; j < layers.length; j++) { + var childConfig = layers[j] + var code = childConfig.code + var wfs = childConfig.wfs + var wms = childConfig.wms + var url = childConfig.url + // 鍒ゆ柇鏄惁宸茬粡鍔犺浇杩囷紝鍔犺浇杩囧氨 蹇界暐鎺� + const layer = this.layers[code] + if (!layer) { + const newLayer = this.createLayerGroup() + this.layers[code] = newLayer + // 2. 鍒ゆ柇绫诲瀷 + if (wfs) { + // 3. 瀹炰緥鍖栧叿浣搒ervice + // var busiLayerService = new BusiLayerService() + // busiLayerService.init() + var wfsLayerService = new WfsLayerService(childConfig) + wfsLayerService.init(newLayer) + } + if (wms) { + var wmsLayerService = new WmsLayerService(childConfig) + wmsLayerService.init(newLayer) + } + // 璇锋眰涓氬姟鏁版嵁鎺ュ彛 + if (url) { + var busiLayerService = new BusiLayerService(childConfig) + busiLayerService.init(newLayer) + } + } else { + this.show(code) + } + } + } + } + + show (code) { + var _layer = this.layers[code].addTo(this.map) + this.setZIndex(_layer) + } + + hide (code) { + var layer = this.layers[code] + layer && this.map.removeLayer(layer) + } + + toggle (code) { + + } + + /** + * 璁剧疆index,绾垮湪鏈�涓嬮潰锛岀偣鍦ㄤ笂闈� + * @param layerGroup 鍥惧眰缁� + */ + setZIndex (layerGroup) { + var layers = layerGroup.getLayers() + if (layers.length > 0) { + var layer = layers[0] + if (layer.feature && (layer.feature.geometry.type === 'LineString' || layer.feature.geometry.type === 'MultiLineString')) { + layerGroup.bringToBack() + } else { + layerGroup.bringToFront() + } + } + } +} + +export default LayerFactory diff --git a/src/components/LayerController/service/PopupService.js b/src/components/LayerController/service/PopupService.js new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/components/LayerController/service/PopupService.js diff --git a/src/components/LayerController/service/WfsLayerService.js b/src/components/LayerController/service/WfsLayerService.js new file mode 100644 index 0000000..e5a175d --- /dev/null +++ b/src/components/LayerController/service/WfsLayerService.js @@ -0,0 +1,119 @@ +/** + * 鍔犺浇涓氬姟鏁版嵁鍥惧眰 + */ + +import styles from '../../../conf/Styles' +import AjaxUtils from '../../../utils/AjaxUtils' + +class WfsLayerService { + constructor (config) { + this.config = config + this.params = { + version: '1.0.0', + REQUEST: 'getfeature', + OUTPUTFORMAT: 'json', + maxFeatures: 20000 + } + this.popupComp = window.popupComp + this.L = window.L + this.map = window.map + this.regex = /\{(.+?)\}/g // 鍖归厤{} + } + + init (layer) { + const wfsUrl = this.config.wfs + if (wfsUrl) { + AjaxUtils.get4JsonDataByUrl(wfsUrl, this.params, (res) => this.draw(layer, res.data.features)) + } + } + + draw (layer, features) { + const icon = this.config.icon + const geojson = this.L.geoJSON(features, { + style: function (feature) { + return { + fill: styles.defaultLineStyle.fill, + weight: styles.defaultLineStyle.weight, + fillColor: styles.defaultLineStyle.fillColor, + color: styles.defaultLineStyle.color, + fillOpacity: styles.defaultLineStyle.fillOpacity, + opacity: styles.defaultLineStyle.opacity, + dashArray: styles.defaultLineStyle.dashArray, + dashSpeed: styles.defaultLineStyle.dashSpeed + } + }, + pointToLayer: (geoJsonPoint, latlng) => { + return this.L.canvasMarker(latlng, + { + img: { + // url: 'assets/images/map/marker-icon.png', + url: '/assets/images/map/' + icon, + size: styles.defaultLineStyle.size + } + }) + }, + onEachFeature: (feature, layer) => { + layer.bindPopup((layer) => { + this.popupComp.setDatas(layer) + this.popupComp.setShow() + return this.popupComp.$el + }, { + className: 's-map-popup', + minWidth: 300, + closeButton: false, + autoClose: false + }) + .bindTooltip((layer) => this.tooltipListener(layer), { direction: 'bottom', offset: [0, 15], sticky: true }) + .on('mouseover', (e) => this.mouseOverListener(e, layer)).on('mouseout', (e) => this.mouseOutListener(e, layer)) + } + }).addTo(layer) + return geojson + } + + mouseOverListener (e, layer) { + const icon = this.config.icon + const type = e.target.feature.geometry.type + if (type === 'LineString' || type === 'MultiLineString') { + layer.setStyle({ weight: 8, color: '#00ffff' }) + } else if (type === 'Point' || type === 'MultiPoint') { + layer.setStyle({ + img: { + url: '/assets/images/map/' + icon, + size: [25, 25] + } + }) + layer.bringToFront() + } + } + + mouseOutListener (e, layer) { + const icon = this.config.icon + const type = e.target.feature.geometry.type + if (type === 'LineString' || type === 'MultiLineString') { + layer.setStyle({ weight: styles.defaultLineStyle.weight, color: styles.defaultLineStyle.color }) + } + if (type === 'Point' || type === 'MultiPoint') { + layer.setStyle({ + img: { + url: '/assets/images/map/' + icon, + size: styles.defaultLineStyle.size + } + }) + } + } + + tooltipListener (layer) { + const nameId = layer.feature.id + let name = '' + if (nameId.indexOf('涓夐��') !== -1 || nameId.indexOf('鍥涢��') !== -1 || nameId.indexOf('绐ㄤ簳') !== -1) { + name = layer.feature.properties.pointnumber + } else { + name = layer.feature.properties.name + } + if (name === undefined) { + name = '' + } + return name + } +} +export default WfsLayerService diff --git a/src/components/LayerController/service/WmsLayerService.js b/src/components/LayerController/service/WmsLayerService.js new file mode 100644 index 0000000..b818aec --- /dev/null +++ b/src/components/LayerController/service/WmsLayerService.js @@ -0,0 +1,11 @@ +class WfsLayerService { + constructor (config) { + this.config = config + } + + init () { + + } +} + +export default WfsLayerService diff --git a/src/components/panel/topicSearch/SewersSearch.vue b/src/components/panel/topicSearch/SewersSearch.vue index f6ff0f2..c969cde 100644 --- a/src/components/panel/topicSearch/SewersSearch.vue +++ b/src/components/panel/topicSearch/SewersSearch.vue @@ -101,7 +101,7 @@ </template> <script> -import { PipelineTypeOptions } from '@/conf/LayerSewers' +import { PipelineTypeOptions } from '@/conf/layers/LayerSewers' import WfsHelper from '@components/helpers/WfsHelper' import AjaxUtils from '@utils/AjaxUtils' diff --git a/src/components/plugin/MagicMarker.js b/src/components/plugin/MagicMarker.js index f74a2a4..a9d75bd 100644 --- a/src/components/plugin/MagicMarker.js +++ b/src/components/plugin/MagicMarker.js @@ -1,49 +1,45 @@ -const init = (L) => { - (function (window) { - console.log(window) - const setOptions = function (obj, options) { - for (const i in options) { - obj[i] = options[i] +/* eslint-disable */ +(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 (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 } - return obj - } - L.Icon.Magic = function (options) { - let opts - if (options.iconUrl) { - opts = { - html: "<div class='magicDiv'><div class='magictime " + options.magic + "'><img id='migic' src='" + options.iconUrl + "'/></div></div>" - // className: 'magicDiv', - } - } else { - opts = { - html: "<div class='magicDiv'><div class='magictime " + options.magic + "'>" + options.html + '</div></div>' - // className: 'magicDiv', - } + } else { + opts = { + html: '<div class=\'magicDiv\'><div class=\'magictime ' + options.magic + '\'><img id=\'migic\' src=\'' + options.icon.options.iconUrl + '\'/></div></div>' + // className: 'magicDiv', } - delete options.html - const magicIconOpts = setOptions(opts, options) - // console.log(magicIconOpts) - const magicIcon = L.divIcon(magicIconOpts) - return magicIcon } + delete options.html + const magicIconOpts = setOptions(opts, options) + // console.log(magicIconOpts) + const magicIcon = L.divIcon(magicIconOpts) + return magicIcon + } - L.icon.magic = function (options) { - return new L.Icon.Magic(options) + 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 = 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) -} - -export default { - init -} + L.marker.magic = function (latlng, options) { + return new L.Marker.Magic(latlng, options) + } +})(window) diff --git a/src/components/plugin/pulse/Pulse.css b/src/components/plugin/pulse/Pulse.css new file mode 100644 index 0000000..aed198f --- /dev/null +++ b/src/components/plugin/pulse/Pulse.css @@ -0,0 +1,34 @@ +.leaflet-pulsing-icon { + border-radius: 100%; + box-shadow: 1px 1px 8px 0 rgba(0,0,0,0.75); +} + +.leaflet-pulsing-icon:after { + content: ""; + border-radius: 100%; + height: 300%; + width: 300%; + position: absolute; + margin: -100% 0 0 -100%; + +} + +@keyframes pulsate { + 0% { + transform: scale(0.1, 0.1); + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + } + 50% { + opacity: 1; + -ms-filter: none; + filter: none; + } + 100% { + transform: scale(1.2, 1.2); + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + } +} diff --git a/src/components/plugin/pulse/Pulse.js b/src/components/plugin/pulse/Pulse.js new file mode 100644 index 0000000..57ef679 --- /dev/null +++ b/src/components/plugin/pulse/Pulse.js @@ -0,0 +1,77 @@ +/* eslint-disable */ +(function (window) { + + L.Icon.Pulse = L.DivIcon.extend({ + + options: { + className: '', + iconSize: [12, 12], + fillColor: 'red', + color: 'red', + animate: true, + heartbeat: 1, + }, + + initialize: function (options) { + L.setOptions(this, options) + + // css + + var uniqueClassName = 'lpi-' + new Date().getTime() + '-' + Math.round(Math.random() * 100000) + + var before = ['background-color: ' + this.options.fillColor] + var after = [ + + 'box-shadow: 0 0 6px 2px ' + this.options.color, + + 'animation: pulsate ' + this.options.heartbeat + 's ease-out', + 'animation-iteration-count: infinite', + 'animation-delay: ' + (this.options.heartbeat + .1) + 's', + ] + + if (!this.options.animate) { + after.push('animation: none') + after.push('box-shadow:none') + } + + var css = [ + '.' + uniqueClassName + '{' + before.join(';') + ';}', + '.' + uniqueClassName + ':after{' + after.join(';') + ';}', + ].join('') + + var el = document.createElement('style') + if (el.styleSheet) { + el.styleSheet.cssText = css + } else { + el.appendChild(document.createTextNode(css)) + } + + document.getElementsByTagName('head')[0].appendChild(el) + + // apply css class + + this.options.className = this.options.className + ' leaflet-pulsing-icon ' + uniqueClassName + + // initialize icon + + L.DivIcon.prototype.initialize.call(this, options) + + } + }) + + L.icon.pulse = function (options) { + return new L.Icon.Pulse(options) + } + + L.Marker.Pulse = L.Marker.extend({ + initialize: function (latlng, options) { + options.icon = L.icon.pulse(options) + L.Marker.prototype.initialize.call(this, latlng, options) + } + }) + + L.marker.pulse = function (latlng, options) { + return new L.Marker.Pulse(latlng, options) + } + +})(window) diff --git a/src/conf/Constants.js b/src/conf/Constants.js index 72bb8f0..cef757c 100644 --- a/src/conf/Constants.js +++ b/src/conf/Constants.js @@ -4,6 +4,12 @@ POLYGON: 'polygon' } +export const logicMapper = { + fsqy: 'Sample.js', + fspfk: 'Sample.js', + fsjcd: 'Sample.js' +} + export const props = { pipename: '绠$嚎鍚嶇О', pipecode: '绠$嚎缂栫爜', diff --git a/src/conf/LayerWasteWater.js b/src/conf/LayerWasteWater.js deleted file mode 100644 index 950943c..0000000 --- a/src/conf/LayerWasteWater.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * 搴熸按鍥惧眰 - * @type {string} - */ -const APP_GIS_HOST_2 = 'http://xearth.cn:8088' -export const LayerWasteWater = { - code: 'pipeline', - name: '搴熸按', - type: 'geojson', - // url: APP_GIS_HOST_2 + '/server/ogcserver/PipeLineTest/wms?version=1.1.1', - // url: APP_GIS_HOST_2 + '/layer/findLayer?layerName={sname}', - url: APP_GIS_HOST_2 + '/server/ogcserver/PipeLine/wfs?version=1.0.0&TYPENAME={sname}&REQUEST=getfeature&OUTPUTFORMAT=json&maxFeatures=20000', - checked: true, - layers: [ - { - code: 'rainline', - name: '浼佷笟', - sname: '浼佷笟', // 琛ㄥ悕 - checked: true, // 榛樿閫変腑鐘舵�� - filter: {}, - minZoom: 10, // 鍦ㄦ寚瀹氱骇鍒樉绀� - childLayer: 'fsss,hbss' // 鍏宠仈PointLayers - }, - { - code: 'oilline', - name: '鐩戞祴鐐�', - sname: '鐩戞祴鐐�', - checked: true, // 榛樿閫変腑鐘舵�� - filter: {}, - minZoom: 10, - childLayer: 'fsss,hbss' // 鍏宠仈PointLayers - }, - { - code: 'saltline', - name: '鎺掓斁鍙�', - sname: '鎺掓斁鍙�', - checked: true, // 榛樿閫変腑鐘舵�� - filter: {}, - minZoom: 10, - childLayer: 'fsss,hbss' // 鍏宠仈PointLayers - } - ] -} diff --git a/src/conf/Layers.js b/src/conf/Layers.js deleted file mode 100644 index 5c69adf..0000000 --- a/src/conf/Layers.js +++ /dev/null @@ -1,30 +0,0 @@ -// import * as L from 'leaflet' -import { LayerSewers, PointLayers } from './LayerSewers' -// const APP_GIS_HOST = 'http://xearth.cn:6299' - -// 鍑犱綍绫诲瀷甯搁噺 - -export const ServiceLayers = [ - /* { - code: 'pipeline', - name: '绠$綉鏁版嵁', - icon_actived: '', - icon_deactived: '', - type: 'wms', - // url: APP_GIS_HOST_PIPELINE + '/server/ogcserver/PipeLineTest/wms?version=1.1.1', - url: APP_GIS_HOST_PIPELINE + '/server/ogcserver/PipeLine/wms?version=1.1.1', - inLegend: true, - checked: true, - option: { - layers: 'all', - styles: '', // Comma-separated list of WMS styles. - format: 'image/png', // WMS image format (use 'image/png' for layers with transparency). - transparent: true, // If true, the WMS service will return images with transparency. - version: '1.1.1', // Version of the WMS service to use - tileSize: L.point(256, 256), - crs: L.CRS.EPSG4326, // Coordinate Reference System to use for the WMS requests, defaults to map CRS. Don't change this if you're not sure what it means. - uppercase: false, - WMSTILE: 1 - }, */ - LayerSewers, PointLayers -] diff --git a/src/conf/MapConfig.js b/src/conf/MapConfig.js index e01a715..1326a16 100644 --- a/src/conf/MapConfig.js +++ b/src/conf/MapConfig.js @@ -1,7 +1,10 @@ 锘縤mport * as L from 'leaflet' import TDT from './TDT' -import { LayerSewersLine, LayerSewersPoint } from './LayerSewers' -import { LayerWasteWater } from './LayerWasteWater' +import { LayerSewersLine, LayerSewersPoint } from './layers/LayerSewers' +import { LayerWasteWater } from './layers/LayerWasteWater' +import { LayerSolidWaste } from './layers/LayerSolidWaste' +import { LayerWasteGas } from './layers/LayerWasteGas' + const curWwwPath = window.document.location.href const pathname = window.document.location.pathname const pos = curWwwPath.indexOf(pathname) @@ -22,7 +25,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 +41,10 @@ // defaultBasemapCode: 'tianditu_img', // 榛樿鏄剧ず 鍦板浘绫诲瀷 IntranetBaseMaps: TDT.intranet, InternetBaseMaps: TDT.internet, - Layers: { LayerSewersLine: [LayerSewersLine, LayerWasteWater], layerSewersPoint: LayerSewersPoint } // 姹¢洦姘村浘灞傞厤缃� + Layers: { + LayerSewersLine: [LayerSewersLine, LayerWasteWater, LayerWasteGas, LayerSolidWaste], + layerSewersPoint: LayerSewersPoint + } // 姹¢洦姘村浘灞傞厤缃� } /** @@ -55,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/conf/LayerSewers.js b/src/conf/layers/LayerSewers.js similarity index 99% rename from src/conf/LayerSewers.js rename to src/conf/layers/LayerSewers.js index 65c109d..a61b541 100644 --- a/src/conf/LayerSewers.js +++ b/src/conf/layers/LayerSewers.js @@ -1,13 +1,11 @@ const APP_GIS_HOST_2 = 'http://xearth.cn:8088' +const WFS_URL = APP_GIS_HOST_2 + '/server/ogcserver/PipeLine/wfs' // const APP_GIS_HOST_2 = 'http://localhost:3000' // const APP_GIS_HOST_2 = 'http://192.168.31.226:8088' export const LayerSewersLine = { code: 'pipeline', name: '绠$綉鏁版嵁', type: 'geojson', - // url: APP_GIS_HOST_2 + '/server/ogcserver/PipeLineTest/wms?version=1.1.1', - // url: APP_GIS_HOST_2 + '/layer/findLayer?layerName={sname}', - url: APP_GIS_HOST_2 + '/server/ogcserver/PipeLine/wfs?version=1.0.0&TYPENAME={sname}&REQUEST=getfeature&OUTPUTFORMAT=json&maxFeatures=20000', checked: true, layers: [ { @@ -15,7 +13,7 @@ name: '闆ㄦ按绾�', sname: '绠$綉', // 琛ㄥ悕 checked: true, // 榛樿閫変腑鐘舵�� - filter: {}, + wfs: WFS_URL + '?TYPENAME=绠$綉', minZoom: 10, // 鍦ㄦ寚瀹氱骇鍒樉绀� childLayer: 'fsss,hbss' // 鍏宠仈PointLayers }, @@ -24,7 +22,7 @@ name: '鍚补姹℃按绾�', sname: '鍚补姹℃按', checked: true, // 榛樿閫変腑鐘舵�� - filter: {}, + wfs: WFS_URL + '?TYPENAME=鍚补姹℃按', minZoom: 10, childLayer: 'fsss,hbss' // 鍏宠仈PointLayers }, @@ -33,7 +31,7 @@ name: '鍚洂姹℃按绾�', sname: '鍚洂姹℃按', checked: true, // 榛樿閫変腑鐘舵�� - filter: {}, + wfs: WFS_URL + '?TYPENAME=鍚洂姹℃按', minZoom: 10, childLayer: 'fsss,hbss' // 鍏宠仈PointLayers }, @@ -42,7 +40,7 @@ name: '鍚⒈姹℃按绾�', sname: '鍚⒈姹℃按', checked: true, // 榛樿閫変腑鐘舵�� - filter: {}, + wfs: WFS_URL + '?TYPENAME=鍚⒈姹℃按', minZoom: 10, childLayer: 'fsss,hbss' // 鍏宠仈PointLayers }, @@ -51,7 +49,7 @@ name: '鎺掑彛', sname: '鎺掑彛', checked: true, // 榛樿閫変腑鐘舵�� - filter: {}, + wfs: WFS_URL + '?TYPENAME=鎺掑彛', minZoom: 10, childLayer: 'pk' // 鍏宠仈PointLayers }, @@ -60,7 +58,7 @@ name: '浜嬫晠姘寸嚎', sname: '浜嬫晠姘�', checked: true, // 榛樿閫変腑鐘舵�� - filter: {}, + wfs: WFS_URL + '?TYPENAME=浜嬫晠姘�', minZoom: 10, childLayer: 'fsss,hbss' // 鍏宠仈PointLayers }, @@ -69,7 +67,7 @@ name: '寰幆姘寸嚎', sname: '寰幆姘�', checked: true, // 榛樿閫変腑鐘舵�� - filter: {}, + wfs: WFS_URL + '?TYPENAME=寰幆姘�', minZoom: 10, childLayer: 'fsss,hbss' // 鍏宠仈PointLayers }, @@ -78,7 +76,7 @@ name: '鍑�鍖栨按绾�', sname: '鍑�鍖栨按', checked: true, // 榛樿閫変腑鐘舵�� - filter: {}, + wfs: WFS_URL + '?TYPENAME=鍑�鍖栨按', minZoom: 10, childLayer: 'fsss,hbss' // 鍏宠仈PointLayers }, @@ -87,7 +85,7 @@ name: '鐢熸椿姹℃按', sname: '鐢熸椿姹℃按', checked: true, // 榛樿閫変腑鐘舵�� - filter: {}, + wfs: WFS_URL + '?TYPENAME=鐢熸椿姹℃按', minZoom: 10, childLayer: 'fsss,hbss' // 鍏宠仈PointLayers }, diff --git a/src/conf/layers/LayerSolidWaste.js b/src/conf/layers/LayerSolidWaste.js new file mode 100644 index 0000000..c81dc8b --- /dev/null +++ b/src/conf/layers/LayerSolidWaste.js @@ -0,0 +1,27 @@ +/** + * 鍥哄簾鍥惧眰 + * @type {string} + */ +export const LayerSolidWaste = { + code: 'solidWaste', + name: '鍥哄簾', + checked: true, + layers: [ + { + code: 'solidWasteQy', + name: '浼佷笟', + sname: '浼佷笟', // 琛ㄥ悕 + checked: true, // 榛樿閫変腑鐘舵�� + url: 'http://www.baidu.com', // 璇锋眰涓氬姟鏁版嵁鎺ュ彛 + minZoom: 10 // 鍦ㄦ寚瀹氱骇鍒樉绀� + }, + { + code: 'solidWasteJcd', + name: '鐩戞祴鐐�', + sname: '鐩戞祴鐐�', + checked: true, // 榛樿閫変腑鐘舵�� + url: 'http://www.baidu2.com', + minZoom: 10 + } + ] +} diff --git a/src/conf/layers/LayerWasteGas.js b/src/conf/layers/LayerWasteGas.js new file mode 100644 index 0000000..3860e94 --- /dev/null +++ b/src/conf/layers/LayerWasteGas.js @@ -0,0 +1,51 @@ +/** + * 搴熸皵鍥惧眰 + * @type {string} + */ +export const LayerWasteGas = { + code: 'wasteGas', + name: '搴熸皵', + checked: true, + layers: [ + { + code: 'wasteGasQy', + name: '浼佷笟', + sname: '浼佷笟', // 琛ㄥ悕 + checked: true, // 榛樿閫変腑鐘舵�� + url: 'http://www.baidu.com', // 璇锋眰涓氬姟鏁版嵁鎺ュ彛 + minZoom: 10 // 鍦ㄦ寚瀹氱骇鍒樉绀� + }, + { + code: 'wasteGasJcd', + name: '鐩戞祴鐐�', + sname: '鐩戞祴鐐�', + checked: true, // 榛樿閫変腑鐘舵�� + url: 'http://www.baidu2.com', + minZoom: 10 + }, + { + code: 'wasteGasVocs', + name: 'VOCs', + sname: 'VOCs', + checked: true, // 榛樿閫変腑鐘舵�� + url: '', + minZoom: 10 + }, + { + code: 'wasteGasKrq', + name: '鍙噧姘�', + sname: '鍙噧姘�', + checked: true, // 榛樿閫変腑鐘舵�� + url: '', + minZoom: 10 + }, + { + code: 'wasteGasYhq', + name: '鏈夊姘�', + sname: '鏈夊姘�', + checked: true, // 榛樿閫変腑鐘舵�� + url: '', + minZoom: 10 + } + ] +} diff --git a/src/conf/layers/LayerWasteWater.js b/src/conf/layers/LayerWasteWater.js new file mode 100644 index 0000000..3f1ff32 --- /dev/null +++ b/src/conf/layers/LayerWasteWater.js @@ -0,0 +1,37 @@ +/** + * 搴熸按鍥惧眰 + * @type {string} + */ +export const LayerWasteWater = { + code: 'pipeline', + name: '搴熸按', + checked: true, + layers: [ + { + code: 'fsqy', + name: '浼佷笟', + sname: '浼佷笟', // 琛ㄥ悕 + checked: true, // 榛樿閫変腑鐘舵�� + url: 'http://www.baidu.com', // 璇锋眰涓氬姟鏁版嵁鎺ュ彛 + minZoom: 10 // 鍦ㄦ寚瀹氱骇鍒樉绀� + }, + { + code: 'fsjcd', + name: '鐩戞祴鐐�', + sname: '鐩戞祴鐐�', + checked: true, // 榛樿閫変腑鐘舵�� + url: 'http://www.baidu2.com', + minZoom: 10, + childLayer: 'fsss,hbss' // 鍏宠仈PointLayers + }, + { + code: 'fspfk', + name: '鎺掓斁鍙�', + sname: '鎺掓斁鍙�', + checked: true, // 榛樿閫変腑鐘舵�� + url: '', + minZoom: 10, + childLayer: 'fsss,hbss' // 鍏宠仈PointLayers + } + ] +} 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/main.js b/src/main.js index da699b5..653b668 100644 --- a/src/main.js +++ b/src/main.js @@ -22,6 +22,7 @@ Vue.prototype.$cancels = [] Vue.prototype.L = L Vue.prototype.$config = appConfig +Vue.prototype.$echarts = echarts // 鎸傝浇echarts // 娉ㄥ唽鎸囦护7 // registerDirectives(Vue) diff --git a/src/styles/theme-dark/variable.less b/src/styles/theme-dark/variable.less index 430a7b4..dee09f6 100644 --- a/src/styles/theme-dark/variable.less +++ b/src/styles/theme-dark/variable.less @@ -1,4 +1,4 @@ -@import "../common/variable"; +//@import "../common/variable"; /* 涓婚鑹� -------------------------- */ diff --git a/src/utils/AjaxUtils.js b/src/utils/AjaxUtils.js index 0499763..d0e1bfa 100644 --- a/src/utils/AjaxUtils.js +++ b/src/utils/AjaxUtils.js @@ -33,7 +33,7 @@ axios({ method: 'get', url: pUrl, - data: pData + params: pData }).then(function (response) { pBackFun(response) }) diff --git a/src/utils/axios.js b/src/utils/axios.js index b28575e..d42baf4 100644 --- a/src/utils/axios.js +++ b/src/utils/axios.js @@ -117,10 +117,10 @@ // request鎷︽埅鍣� Service.interceptors.request.use( config => { - // 涓存椂杩藉姞 - // if ($store.state.user.account) { - // config.headers.account = $store.state.user.account - // } + // 涓存椂杩藉姞 + // if ($store.state.user.account) { + // config.headers.account = $store.state.user.account + // } const copyConfig = Object.assign({}, config) // copyConfig = filterOauthData(copyConfig) // showDebugInfo(copyConfig) diff --git a/src/views/MapTemplate.vue b/src/views/MapTemplate.vue index 68b58e4..6913577 100644 --- a/src/views/MapTemplate.vue +++ b/src/views/MapTemplate.vue @@ -9,20 +9,23 @@ <lc-service-layer class="barline" v-if="lcServiceLayerVisible"></lc-service-layer> </sgis-layer-controller> <monitor-panel></monitor-panel> -<!-- <top-enterprise-panel></top-enterprise-panel>--> + <!-- <top-enterprise-panel></top-enterprise-panel>--> <tool-box-panel ref="toolBox"></tool-box-panel> -<!-- <menu-special></menu-special>--> + <!-- <menu-special></menu-special>--> <legend-panel></legend-panel> <summary-sheets></summary-sheets> <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 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> </template> <script> import 'leaflet/dist/leaflet.css' import Sgis from '@src/Sgis' -// import Vue from 'vue' // import mapConfig from '@/conf/MapConfig' import SgisLayerController from '@components/LayerController/LayerController' import LcBasemap from '@components/LayerController/modules/LcBaseMap' @@ -35,6 +38,13 @@ // import MenuSpecial from '@components/panel/MenuTopic' import LegendPanel from '@components/panel/LegendPanel' import Enterprise from '../components/table/enterprise' +// 搴曞浘涓氬姟js閫昏緫 +import AddSolidWasteHelper from '@components/BaseNav/SolidWaste/SolidWaste' +import AddWasteWaterHelper from '@components/BaseNav/WasteWater/WasteWater' +import AddGasHelper from '@components/BaseNav/flueGas/flueGas' +// // 鍏叡灞曠ず鏁版嵁 +import PublicBounced from '@components/BaseNav/PublicBounced/PublicBounced' +import LayerFactory from '@components/LayerController/service/LayerFactory' export default { name: 'MapTemplate', @@ -49,10 +59,12 @@ LcBasemap, LcServiceLayer, Popup, - summarySheets + summarySheets, + PublicBounced }, data () { return { + // isShowBtn: false, map: null, lcServiceLayerVisible: false, basemapHelper: {}, @@ -66,14 +78,61 @@ } }, beforeMount () { - // import('@/assets/airQuality.json').then(res => { - // console.log(res.features) - // }) this.$nextTick(() => { this.init() }) }, 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(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) + }, saveMapStatus () { window.serviceLayerHelper = this.serviceLayerHelper this.$store.commit('setMapObj', this.map) @@ -83,32 +142,100 @@ this.lcServiceLayerVisible = true }, - init: function () { + init () { const mapcontainer = this.$refs.rootmap this.map = Sgis.initMap(mapcontainer) this.$refs.toolBox.map = this.map + window.popupComp = this.$refs.popup + var layerFactory = new LayerFactory({ + L: window.L, + map: this.map + }) + layerFactory.init() + window.layerFactory = layerFactory + this.basemapHelper = Sgis.initBasemapsHelper(this.map) // 鍒濆鍖栧熀纭�搴曞浘鍔╂墜 this.basemapHelper.initBasemap(this.config, false) // 绗簩涓弬鏁帮紝琛ㄧず鏄惁鍐呯綉搴曞浘 - this.serviceLayerHelper = Sgis.initTileLayersHelper(this.map) // 鍒濆鍖栦笟鍔″簳鍥惧姪鎵� - console.log('-------' + this.$refs.popup.$el) - this.serviceLayerHelper.initServiceLayers(this.config, this.$refs.popup) + // this.serviceLayerHelper = Sgis.initTileLayersHelper(this.map) // 鍒濆鍖栦笟鍔″簳鍥惧姪鎵� + // console.log('-------' + this.$refs.popup.$el) + // this.serviceLayerHelper.initServiceLayers(this.config, this.$refs.popup) this.vectorLayerHelper = Sgis.initVectorLayersHelper(this.map) // 鍒濆鍖栧姩鎬佽绱犲浘灞傚姪鎵� this.vectorLayerHelper.initVectorLayers(this.config) + + // this.ChangeState() + // this.AddGasHelper() + // this.ChangeWaterState() this.saveMapStatus() // this.setMapObj(this.mapObj) // this.setBasemapHelper(this.basemapHelper) // this.setServiceLayerHelper(this.serviceLayerHelper) // this.setVectorLayerHelper(this.vectorLayerHelper) + this.addMarker() + }, + addMarker () { + const L = this.L + var icon = new L.Icon({ + iconUrl: 'assets/images/map/marker-icon.png', + shadowUrl: 'assets/images/map/marker-shadow.png', + iconSize: [25, 41], + iconAnchor: [12, 41], + popupAnchor: [1, -34], + shadowSize: [41, 41] + }) + var marker = L.marker([32.2221, 118.7843], { + icon: icon + }).addTo(this.map) + .bindPopup(() => this.$refs.popup.$el, { + className: 's-map-popup', + minWidth: 300, + closeButton: false, + autoClose: false + }) + .bindTooltip('瀛椾綋鍏夋檿鏁堟灉t.', { + // permanent : true, + offset: [0, 0], // 鍋忕Щ + direction: 'right', // 鏀剧疆浣嶇疆 + // sticky:true,//鏄惁鏍囪鍦ㄧ偣涓婇潰 + className: 'anim-tooltip'// CSS鎺у埗 + }) + + marker.on('popupopen', this.onLayerClick) + }, + onLayerClick () { + this.$refs.popup.setShow() + }, + callPopup (val) { + console.log(val) } } } </script> <style lang="less"> +.flue-gas { + 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; +} .full-screen { width: 100%; @@ -128,14 +255,27 @@ //background-color: #0661AE; border-top: 1px solid #0661AE; } + #map-btn { position: fixed; top: 20px; left: 100px; z-index: 9999; } - .leaflet-custom-icon{ + + .leaflet-custom-icon { background: white; } + + .leaflet-marker-icon { + background: none; + } + + #migic { + width: 48px; + height: 48px; + margin: -18px -20px; + z-index: 999; + } } </style> 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