From 7a2bcf4e66e794a66c2c568dd3503c350a018366 Mon Sep 17 00:00:00 2001
From: 徐旺旺 <11530253@qq.com>
Date: 星期三, 31 三月 2021 14:14:10 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/develop' into develop

---
 public/static/SolidWaste.json                                          |  176 ++++--
 src/components/BaseNav/SolidWaste/directive/directive.js               |   77 +++
 src/api/mapApi.js                                                      |   13 
 src/components/BaseNav/WasteWater/WasteWater.js                        |   21 
 src/components/BaseNav/PublicBounced/GasComponents/GasVideo.vue        |   18 
 src/assets/images/map-pages/basenav/flugas/exhaust/fq_orange.png       |    0 
 .env.test                                                              |    2 
 src/utils/tools.js                                                     |   11 
 src/api/SolidWaste/index.js                                            |    6 
 public/assets/images/map/solidwaste/gf_green.png                       |    0 
 src/assets/images/map-pages/basenav/flugas/exhaust/fq_green_xc.png     |    0 
 src/components/BaseNav/SolidWaste/SolidWaste.js                        |   61 +-
 src/api/index.js                                                       |    5 
 src/assets/images/map-pages/basenav/flugas/exhaust/fq_green.png        |    0 
 src/conf/Constants.js                                                  |    3 
 src/utils/axios.js                                                     |   19 
 src/components/BaseNav/PublicBounced/GasComponents/GasTable.vue        |    0 
 src/components/BaseNav/SolidWaste/directive/dir.js                     |    0 
 src/components/BaseNav/SolidWaste/directive/index.js                   |   14 
 src/router/map.js                                                      |    4 
 src/api/request.js                                                     |   10 
 src/assets/images/map-pages/basenav/flugas/exhaust/fq_blue.png         |    0 
 src/store/modules/user.js                                              |  149 +++++
 src/utils/navigation.js                                                |  167 ++++++
 src/api/host.js                                                        |    6 
 src/assets/images/map-pages/basenav/flugas/exhaust/fq_gray.png         |    0 
 src/store/index.js                                                     |    4 
 src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue      |  194 ++++---
 src/components/BaseNav/PublicBounced/GasComponents/PublicTable.vue     |   65 +-
 src/views/MapTemplate.vue                                              |   17 
 .env                                                                   |    2 
 src/assets/images/login-page/page1.jpg                                 |    0 
 src/api/mapUrl.js                                                      |   10 
 src/components/BaseNav/PublicBounced/PublicBounced.vue                 |   28 
 src/router/index.js                                                    |   29 +
 src/views/Login.vue                                                    |  124 ++++
 /dev/null                                                              |  117 ----
 src/assets/images/map-pages/basenav/flugas/exhaust/fq_bright_green.png |    0 
 src/main.js                                                            |    3 
 src/conf/MapConfig.js                                                  |    3 
 .env.production                                                        |    2 
 src/assets/images/map-pages/basenav/flugas/exhaust/fq_yellow.png       |    0 
 src/components/BaseNav/PublicBounced/GasComponents/GasTab.vue          |   22 
 src/app.config.js                                                      |    2 
 public/assets/images/map/solidwaste/voc.png                            |    0 
 src/assets/images/map-pages/basenav/flugas/exhaust/fq_red.png          |    0 
 src/components/LayerController/logic/SolidWaste.js                     |   70 ++
 47 files changed, 1,027 insertions(+), 427 deletions(-)

diff --git a/.env b/.env
index 7b05847..d4d1f4c 100644
--- a/.env
+++ b/.env
@@ -2,7 +2,7 @@
 NODE_ENV=development
 #vue椤圭洰 灞炴�у悕蹇呴』浠UE_APP_寮�澶达紝姣斿VUE_APP_XXX
 VUE_APP_MOCK=true
-VUE_APP_API_HOST=http://localhost:8080/
+VUE_APP_API_HOST=http://xearth.cn:3000
 VUE_APP_API_TOKEN_URL=https://auth.uat.siam.sinopec.com/
 VUE_APP_API_BASE_URL=/api
 VUE_APP_CLIENT_ID=no_apply
diff --git a/.env.production b/.env.production
index eccd272..75961f6 100644
--- a/.env.production
+++ b/.env.production
@@ -1,7 +1,7 @@
 # .env
 NODE_ENV=production
 VUE_APP_MOCK=false
-VUE_APP_API_HOST=http://localhost:8080/
+VUE_APP_API_HOST=http://localhost:3000/
 VUE_APP_API_BASE_URL=/api
 VUE_APP_API_TOKEN_URL=https://oauth.siam.sinopec.com/
 VUE_APP_CLIENT_ID=no_apply
diff --git a/.env.test b/.env.test
index dc697e7..f5a8555 100644
--- a/.env.test
+++ b/.env.test
@@ -1,7 +1,7 @@
 # .env
 NODE_ENV=test
 VUE_APP_MOCK=false
-VUE_APP_API_HOST=http://localhost:8080/
+VUE_APP_API_HOST=http://localhost:3000/
 VUE_APP_API_TOKEN_URL=https://auth.uat.siam.sinopec.com/
 VUE_APP_API_BASE_URL=/api
 VUE_APP_CLIENT_ID=no_apply
diff --git a/src/assets/images/map-pages/basenav/solidwaste/gf_green.png b/public/assets/images/map/solidwaste/gf_green.png
similarity index 100%
rename from src/assets/images/map-pages/basenav/solidwaste/gf_green.png
rename to public/assets/images/map/solidwaste/gf_green.png
Binary files differ
diff --git a/src/assets/images/map-pages/basenav/solidwaste/voc.png b/public/assets/images/map/solidwaste/voc.png
similarity index 100%
rename from src/assets/images/map-pages/basenav/solidwaste/voc.png
rename to public/assets/images/map/solidwaste/voc.png
Binary files differ
diff --git a/public/static/SolidWaste.json b/public/static/SolidWaste.json
index 3a16382..132f6bf 100644
--- a/public/static/SolidWaste.json
+++ b/public/static/SolidWaste.json
@@ -1,81 +1,125 @@
 {
   "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": 0,
+        "Name": "宸撮櫟鐭冲寲 鍙栨按鍗曞厓骞叉偿鏆傚瓨搴�",
+        "StorageQtyMax": 0,
+        "Longitude": 113.38361,
+        "Latitude": 29.9008,
+        "SortNum": 0,
+        "DesignFloorArea": 0,
+        "VideoCoding": null,
+        "VideoURL": null,
+        "DaysAlarm": 0,
+        "MarginAlarm": 0
       },
       {
-        "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": 1,
+        "Name": "宸撮櫟鐭冲寲 鍚夊婀栫伆濉�",
+        "StorageQtyMax": 0,
+        "Longitude": 113.14089,
+        "Latitude": 29.4181,
+        "SortNum": 0,
+        "DesignFloorArea": 0,
+        "VideoCoding": null,
+        "VideoURL": null,
+        "DaysAlarm": 0,
+        "MarginAlarm": 0
       },
       {
-        "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": 2,
+        "Name": "闀垮箔鐐煎寲 鍏瓧闂ㄥ瀮鍦惧~鍩嬪満",
+        "StorageQtyMax": 0,
+        "Longitude": 113.3916666667,
+        "Latitude": 29.6394444444,
+        "SortNum": 0,
+        "DesignFloorArea": 0,
+        "VideoCoding": null,
+        "VideoURL": null,
+        "DaysAlarm": 0,
+        "MarginAlarm": 0
       },
       {
-        "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
+        "StoragePlaceId": 3,
+        "Name": "涓煩鐭冲寲 鐏版福鍦�",
+        "StorageQtyMax": 0,
+        "Longitude": 114.5192083333,
+        "Latitude": 30.6201666667,
+        "SortNum": 0,
+        "DesignFloorArea": 0,
+        "VideoCoding": null,
+        "VideoURL": null,
+        "DaysAlarm": 0,
+        "MarginAlarm": 0
+      },
+      {
+        "StoragePlaceId": 4,
+        "Name": "瀹夊簡鐭冲寲 灞卞彛搴熸福濉煁鍦�",
+        "StorageQtyMax": 0,
+        "Longitude": 116.960599,
+        "Latitude": 30.541509,
+        "SortNum": 0,
+        "DesignFloorArea": 0,
+        "VideoCoding": null,
+        "VideoURL": null,
+        "DaysAlarm": 0,
+        "MarginAlarm": 0
+      },
+      {
+        "StoragePlaceId": 5,
+        "Name": "瀹夊簡鐭冲寲 鐑數闄堝鍐茬伆鍦�",
+        "StorageQtyMax": 0,
+        "Longitude": 116.986949,
+        "Latitude": 30.534486,
+        "SortNum": 0,
+        "DesignFloorArea": 0,
+        "VideoCoding": null,
+        "VideoURL": null,
+        "DaysAlarm": 0,
+        "MarginAlarm": 0
+      },
+      {
+        "StoragePlaceId": 6,
+        "Name": "楂樻ˉ鐭冲寲 娴锋花鐮佸ご闄勮繎婊╂秱",
+        "StorageQtyMax": 0,
+        "Longitude": 121.55,
+        "Latitude": 31.63,
+        "SortNum": 0,
+        "DesignFloorArea": 0,
+        "VideoCoding": null,
+        "VideoURL": null,
+        "DaysAlarm": 0,
+        "MarginAlarm": 0
+      },
+      {
+        "StoragePlaceId": 7,
+        "Name": "宸濈淮鍖栧伐 鐢熷寲姹℃偿鏂欎粨",
+        "StorageQtyMax": 0,
+        "Longitude": 107.02342004,
+        "Latitude": 29.79235333,
+        "SortNum": 0,
+        "DesignFloorArea": 0,
+        "VideoCoding": null,
+        "VideoURL": null,
+        "DaysAlarm": 0,
+        "MarginAlarm": 0
+      },
+      {
+        "StoragePlaceId": 8,
+        "Name": "宸濈淮鍖栧伐 鎺掓偿姘存偿楗兼枡浠�",
+        "StorageQtyMax": 0,
+        "Longitude": 107.02315181,
+        "Latitude": 29.78832166,
+        "SortNum": 0,
+        "DesignFloorArea": 0,
+        "VideoCoding": null,
+        "VideoURL": null,
+        "DaysAlarm": 0,
+        "MarginAlarm": 0
       }
     ]
   }
-}
+}
\ No newline at end of file
diff --git a/public/static/WasteWater.json b/public/static/WasteWater.json
deleted file mode 100644
index 44ed223..0000000
--- a/public/static/WasteWater.json
+++ /dev/null
@@ -1,117 +0,0 @@
-{
-  "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/SolidWaste/index.js b/src/api/SolidWaste/index.js
new file mode 100644
index 0000000..b034763
--- /dev/null
+++ b/src/api/SolidWaste/index.js
@@ -0,0 +1,6 @@
+import $http from '@utils/axios'
+// import Qs from 'qs'
+
+export const getSolidWaste = (data = {}) => {
+  return $http.get('/wasteSolid/getSolidWaste', data)
+}
diff --git a/src/api/host.js b/src/api/host.js
new file mode 100644
index 0000000..d2b8228
--- /dev/null
+++ b/src/api/host.js
@@ -0,0 +1,6 @@
+/**
+ * 鏈嶅姟HOST瀹氫箟
+ */
+import { getSchemeHost } from '../utils/tools'
+
+export const $HOST = getSchemeHost()
diff --git a/src/api/index.js b/src/api/index.js
index 1df9919..62f9063 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -1,7 +1,4 @@
 import * as mapApi from './mapApi'
 import * as mapUrl from './mapUrl'
 
-export default {
-  mapApi,
-  mapUrl
-}
+export default Object.assign({}, mapApi, mapUrl)
diff --git a/src/api/mapApi.js b/src/api/mapApi.js
index 3cde8cb..ce6c47f 100644
--- a/src/api/mapApi.js
+++ b/src/api/mapApi.js
@@ -3,13 +3,16 @@
 // const $HOST = 'http://10.238.221.113'
 // 娴嬭瘯鐜IP锛歨ttp://10.238.221.113
 import axios from '@utils/axios'
+import * as mapUrl from './mapUrl'
+
 /**
  * 璇ユ柟娉曢厤缃�
  */
-class MapAPI {
-  getToken (param) {
-    axios.get(param.url, param.option)
+export default {
+  getUser (data) {
+    return axios.get(mapUrl.GetUser, data)
+  },
+  getSolidWaste (data) {
+    return axios.get(mapUrl.getSolidWaste, data)
   }
 }
-
-export default new MapAPI()
diff --git a/src/api/mapUrl.js b/src/api/mapUrl.js
index bc905e4..afdb4e3 100644
--- a/src/api/mapUrl.js
+++ b/src/api/mapUrl.js
@@ -1,10 +1,8 @@
 /**
  * 璇ユ枃浠堕厤缃帴鍙g殑URL鍦板潃
  */
-class ApiURLs {
-  constructor () {
-    this.APIURL_HELLOWORLD = 'http://www.baidu.com'
-  }
-}
+import { $HOST } from './host'
 
-export default new ApiURLs()
+export const GetUser = $HOST + '/user/getUser'
+
+export const getSolidWaste = $HOST + '/wasteSolid/getSolidWaste'
diff --git a/src/api/request.js b/src/api/request.js
index 9f9091d..bceceb3 100644
--- a/src/api/request.js
+++ b/src/api/request.js
@@ -8,6 +8,13 @@
     }
   })
 }
+// export const QueryStoragePlaceListByCompanyAndName = (data = {}) => {
+//   return $http.get('http://xearth.cn:3000/wasteSolid/getSolidWaste', Qs.stringify(data), {
+//     headers: {
+//       'Content-Type': 'application/json'
+//     }
+//   })
+// }
 export const FlueGas = (data = {}) => {
   return $http.post('/EPInterface/DataService/EPMapService.asmx/ObtainningConInfo', Qs.stringify(data), {
     headers: {
@@ -15,10 +22,11 @@
     }
   })
 }
+
 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/app.config.js b/src/app.config.js
index cf2a95f..295d938 100644
--- a/src/app.config.js
+++ b/src/app.config.js
@@ -11,7 +11,7 @@
       developmentOff: true // 璁句负true鍚庡湪寮�鍙戠幆澧冧笉浼氭敹闆嗛敊璇俊鎭�
     }
   },
-  homeRouterName: 'Home',
+  homeRouterName: 'mapTemplate',
   loginRouteName: 'Login',
   routeMode: 'history',
   tagNavCache: false,
diff --git a/src/assets/images/login-page/page1.jpg b/src/assets/images/login-page/page1.jpg
new file mode 100644
index 0000000..96be519
--- /dev/null
+++ b/src/assets/images/login-page/page1.jpg
Binary files differ
diff --git a/src/assets/images/map-pages/basenav/flugas/exhaust/fq_blue.png b/src/assets/images/map-pages/basenav/flugas/exhaust/fq_blue.png
new file mode 100644
index 0000000..93edcb3
--- /dev/null
+++ b/src/assets/images/map-pages/basenav/flugas/exhaust/fq_blue.png
Binary files differ
diff --git a/src/assets/images/map-pages/basenav/flugas/exhaust/fq_bright_green.png b/src/assets/images/map-pages/basenav/flugas/exhaust/fq_bright_green.png
new file mode 100644
index 0000000..19b0397
--- /dev/null
+++ b/src/assets/images/map-pages/basenav/flugas/exhaust/fq_bright_green.png
Binary files differ
diff --git a/src/assets/images/map-pages/basenav/flugas/exhaust/fq_gray.png b/src/assets/images/map-pages/basenav/flugas/exhaust/fq_gray.png
new file mode 100644
index 0000000..590b183
--- /dev/null
+++ b/src/assets/images/map-pages/basenav/flugas/exhaust/fq_gray.png
Binary files differ
diff --git a/src/assets/images/map-pages/basenav/flugas/exhaust/fq_green.png b/src/assets/images/map-pages/basenav/flugas/exhaust/fq_green.png
new file mode 100644
index 0000000..08e8a59
--- /dev/null
+++ b/src/assets/images/map-pages/basenav/flugas/exhaust/fq_green.png
Binary files differ
diff --git a/src/assets/images/map-pages/basenav/flugas/exhaust/fq_green_xc.png b/src/assets/images/map-pages/basenav/flugas/exhaust/fq_green_xc.png
new file mode 100644
index 0000000..acc7c10
--- /dev/null
+++ b/src/assets/images/map-pages/basenav/flugas/exhaust/fq_green_xc.png
Binary files differ
diff --git a/src/assets/images/map-pages/basenav/flugas/exhaust/fq_orange.png b/src/assets/images/map-pages/basenav/flugas/exhaust/fq_orange.png
new file mode 100644
index 0000000..718f237
--- /dev/null
+++ b/src/assets/images/map-pages/basenav/flugas/exhaust/fq_orange.png
Binary files differ
diff --git a/src/assets/images/map-pages/basenav/flugas/exhaust/fq_red.png b/src/assets/images/map-pages/basenav/flugas/exhaust/fq_red.png
new file mode 100644
index 0000000..5f93934
--- /dev/null
+++ b/src/assets/images/map-pages/basenav/flugas/exhaust/fq_red.png
Binary files differ
diff --git a/src/assets/images/map-pages/basenav/flugas/exhaust/fq_yellow.png b/src/assets/images/map-pages/basenav/flugas/exhaust/fq_yellow.png
new file mode 100644
index 0000000..169ce4d
--- /dev/null
+++ b/src/assets/images/map-pages/basenav/flugas/exhaust/fq_yellow.png
Binary files differ
diff --git a/src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue b/src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue
index 9084a18..675b787 100644
--- a/src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue
+++ b/src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue
@@ -7,10 +7,12 @@
     <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 id="echarts" ref="main"></div>
+        <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>
-    </div>
   </div>
 </template>
 
@@ -22,18 +24,27 @@
       const myChart = this.$echarts.init(this.$refs.main)
       const option = {
         title: {
-          text: '鎶樼嚎鍥惧爢鍙�'
+          // text: '鎶樼嚎鍥惧爢鍙�'
         },
-        // color: '#fff',
+        color: ['#5470c6', '#91CC75', '#EE6666', '#FF0087'],
         tooltip: {
-          trigger: 'axis'
+          trigger: 'axis',
+          axisPointer: {
+            type: 'cross',
+            label: {
+              color: '#1a4245'
+            }
+          }
         },
-        // legend: {
-        //   data: ['閭欢钀ラ攢', '鑱旂洘骞垮憡', '瑙嗛骞垮憡', '鐩存帴璁块棶', '鎼滅储寮曟搸']
-        // },
+        legend: {
+          data: ['姘哀鍖栫墿', '浜屾哀鍖栫~', '鐑熷皹', '搴熸皵娴侀噺']
+          // pageTextStyle: {
+          //   color: '#fff'
+          // }
+        },
         grid: {
           left: '3%',
-          right: '4%',
+          right: '3%',
           bottom: '3%',
           containLabel: true
         },
@@ -42,63 +53,98 @@
             saveAsImage: {}
           }
         },
+        // 鍥炬爣缂╂斁璁剧疆
+        dataZoom: [{
+          type: 'inside',
+          start: 0,
+          end: 100
+        }, {
+          start: 0,
+          end: 100,
+          show: false,
+          // handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
+          handleSize: '80%',
+          handleStyle: {
+            color: '#fff',
+            shadowBlur: 3,
+            shadowColor: 'rgba(0, 0, 0, 0.6)',
+            shadowOffsetX: 2,
+            shadowOffsetY: 2
+          }
+        }],
+        // x杞寸殑璁剧疆
         xAxis: {
           type: 'category',
           boundaryGap: false,
-          data: ['鍛ㄤ竴', '鍛ㄤ簩', '鍛ㄤ笁', '鍛ㄥ洓', '鍛ㄤ簲', '鍛ㄥ叚', '鍛ㄦ棩'],
-          axisLabel: {
+          data: ['12:00:01', '12:00:02', '12:00:03', '12:00:04', '12:00:05', '12:00:06', '12:00:07'],
+          axisLabel: { // x杞村叏閮ㄦ樉绀�
+            rotate: 20,
+            interval: 0,
             textStyle: {
-              color: '#7edae8' // 鍧愭爣鐨勫瓧浣撻鑹�
+              color: '#fff'
             }
           },
-          axisLine: {
-            show: false, // 闅愯棌鍧愭爣杞�
+          splitLine: { // 缃戞牸鍨傜洿绾夸负铏氱嚎
+            show: true,
             lineStyle: {
-              color: '#00eeff' // 鍧愭爣杞寸殑棰滆壊
+              type: 'dashed'
+            }
+          },
+          axisTick: { // x 杞村埢搴︽樉绀�
+            show: false
+          },
+          axisLine: {
+            lineStyle: {
+              color: '#FFFFFF',
+              width: 1 // 杩欓噷鏄负浜嗙獊鍑烘樉绀哄姞涓婄殑
             }
           }
         },
+        // Y 杞寸殑璁剧疆
         yAxis: [{
           type: 'value',
+          // name: yname, // 鍚庢湡鍥炬爣Y杞存樉绀哄崟浣�
+          name: '娴撳害(mg/m鲁)',
           axisLabel: {
+            formatter: '{value}',
             textStyle: {
-              color: '#7edae8' // 鍧愭爣鐨勫瓧浣撻鑹�
+              color: '#fff' // 鍧愭爣鐨勫瓧浣撻鑹�
             }
           },
+          axisPointer: {
+            snap: true // 鑷姩鍚搁檮鏈�杩戠殑鐐�
+          },
+          splitLine: {
+            show: false // y杞� 缃戞牸绾夸笉鏄剧ず
+          },
           axisLine: {
-            show: false, // 闅愯棌鍧愭爣杞�
             lineStyle: {
-              color: '#00eeff' // 鍧愭爣杞寸殑棰滆壊
+              color: '#ffffff', // 鍧愭爣杞寸殑棰滆壊
+              width: 1
             }
           }
         }],
         series: [
           {
-            name: '閭欢钀ラ攢',
+            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: '瑙嗛骞垮憡',
+            name: '浜屾哀鍖栫~',
             type: 'line',
             stack: '鎬婚噺',
             data: [150, 232, 201, 154, 190, 330, 410]
           },
           {
-            name: '鐩存帴璁块棶',
+            name: '鐑熷皹',
             type: 'line',
             stack: '鎬婚噺',
             data: [320, 332, 301, 334, 390, 330, 320]
           },
           {
-            name: '鎼滅储寮曟搸',
+            name: '搴熸皵娴侀噺',
             type: 'line',
             stack: '鎬婚噺',
             data: [820, 932, 901, 934, 1290, 1330, 1320]
@@ -115,50 +161,48 @@
 </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;
-  }
-}
+    .win {
+        /*width: 100%;*/
+        /*height: 100%;*/
+        position: relative;
+        //display: inline-block;
+        background-color: rgba(33, 41, 69,0.9);
+    }
+    #echarts{
+        width: 600px;
+        height: 260px;
+    }
+    .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/GasComponents/GasTab.vue b/src/components/BaseNav/PublicBounced/GasComponents/GasTab.vue
index e05f59f..ebf7ddd 100644
--- a/src/components/BaseNav/PublicBounced/GasComponents/GasTab.vue
+++ b/src/components/BaseNav/PublicBounced/GasComponents/GasTab.vue
@@ -37,7 +37,6 @@
 
 .win {
   position: relative;
-  //display: inline-block;
   margin-bottom: 13px;
   background-color: rgba(33, 41, 69,0.9);
 }
@@ -46,7 +45,6 @@
   height: 100%;
   .main-matter{
     font-size: 13px;
-    padding: 9px 7px;
     font-weight: normal;
     border: 1px solid #396d83;
     .row-item-one{
@@ -56,7 +54,7 @@
       width: 100%;
       color: #00d0f9;
       display: flex;
-      font-size: 12px!important;
+      font-size: 12px !important;
       .el-col{
         flex: 1;
         width: 100%;
@@ -73,7 +71,7 @@
   }
 }
 .border_corner{
-  z-index: 2500;
+  z-index: 999;
   position: absolute;
   width: 10px;
   height: 10px;
@@ -104,20 +102,4 @@
   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/GasTable.vue b/src/components/BaseNav/PublicBounced/GasComponents/GasTable.vue
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/components/BaseNav/PublicBounced/GasComponents/GasTable.vue
diff --git a/src/components/BaseNav/PublicBounced/GasComponents/GasVideo.vue b/src/components/BaseNav/PublicBounced/GasComponents/GasVideo.vue
index fc152ab..93776b0 100644
--- a/src/components/BaseNav/PublicBounced/GasComponents/GasVideo.vue
+++ b/src/components/BaseNav/PublicBounced/GasComponents/GasVideo.vue
@@ -7,7 +7,7 @@
     <div class="border_corner border_corner_right_bottom"></div>
     <div class="main">
       <div class="main-video">
-        <video width="100%" height="100%" controls>
+        <video controls>
           <source src="movie.mp4" type="video/mp4">
           <source src="movie.ogg" type="video/ogg">
         </video>
@@ -24,23 +24,25 @@
 
 <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: 1px solid #396d83;
+    width: 100%;
+    height: 100%;
+    video {
+      width: 100%;
+      height: 100%;
+      outline: none;
+    }
   }
 }
 .border_corner{
-  z-index: 2500;
+  z-index: 999;
   position: absolute;
   width: 14px;
   height: 14px;
diff --git a/src/components/BaseNav/PublicBounced/GasComponents/PublicTable.vue b/src/components/BaseNav/PublicBounced/GasComponents/PublicTable.vue
index 2c878b8..b9fae10 100644
--- a/src/components/BaseNav/PublicBounced/GasComponents/PublicTable.vue
+++ b/src/components/BaseNav/PublicBounced/GasComponents/PublicTable.vue
@@ -1,53 +1,48 @@
 <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>
+    <el-col class="el-col">
+      <el-table
+          border
+          tooltip-effect="dark"
+          :data="data"
+      >
+        <el-table-column prop="name" label="搴忓彿"></el-table-column>
+        <el-table-column prop="name" label="绫诲埆"></el-table-column>
+        <el-table-column prop="date" label="鍥哄簾鍚嶇О"></el-table-column>
+        <el-table-column prop="address" label="浠g爜"></el-table-column>
+        <el-table-column prop="address" label="浜х敓閲�"></el-table-column>
+        <el-table-column prop="name" label="鍌ㄥ瓨閲�"></el-table-column>
+        <el-table-column prop="date" label="浜х敓瑁呯疆"></el-table-column>
+      </el-table>
+    </el-col>
   </div>
 </template>
 
 <script>
 export default {
   name: 'PublicTable',
+  props: ['requestSolidWasteData'],
   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 寮�'
-      }]
+      data: []
+    }
+  },
+  mounted () {
+    this.$nextTick(() => {
+      this.getSolidWasteData()
+    })
+  },
+  methods: {
+    getSolidWasteData () {
+      // const data = requestSolidWasteData
+      // console.log(data)
     }
   }
 }
 </script>
 
 <style lang="less" scoped>
+.public-table {
 
+}
 </style>
diff --git a/src/components/BaseNav/PublicBounced/PublicBounced.vue b/src/components/BaseNav/PublicBounced/PublicBounced.vue
index 275b86e..d854b06 100644
--- a/src/components/BaseNav/PublicBounced/PublicBounced.vue
+++ b/src/components/BaseNav/PublicBounced/PublicBounced.vue
@@ -7,8 +7,9 @@
     <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>
+        <!--                <PublicTable v-if="value === 'gufei'" :requestSolidWasteData="displayContent.StoragePlaceId"></PublicTable>-->
+        <PublicTable></PublicTable>
+        <!--        <GasECharts v-else></GasECharts>-->
       </div>
       <div class="public-bounced-content-right">
         <GasVideo></GasVideo>
@@ -19,10 +20,10 @@
 
 <script>
 
-import '@/components/BaseNav/SolidWaste/directive'
+import '@/components/BaseNav/SolidWaste/directive/dir'
 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 GasECharts from '@components/BaseNav/PublicBounced/GasComponents/GasECharts'
 import GasVideo from '@components/BaseNav/PublicBounced/GasComponents/GasVideo'
 
 export default {
@@ -30,7 +31,7 @@
   components: {
     GasTab,
     PublicTable,
-    GasECharts,
+    // GasECharts,
     GasVideo
   },
   data () {
@@ -40,10 +41,10 @@
     }
   },
   methods: {
-    setData (data, value) {
+    setData (data) {
       this.displayContent = data
       this.flag = true
-      this.value = value
+      // this.value = value
     },
     closePopup () {
       this.flag = false
@@ -54,10 +55,11 @@
 
 <style lang="less" scoped>
 .public-bounced {
+  width: 75%;
   z-index: 999;
   position: absolute;
-  top: 50%;
-  left: 50%;
+  bottom: 5%;
+  left: 15%;
   background-color: #002432;
   border: 1px #9fc5c8 solid;
 
@@ -82,16 +84,20 @@
   }
 
   .public-bounced-content {
+    margin: 15px auto;
     display: flex;
     align-items: center;
     justify-content: space-around;
 
     .public-bounced-content-left {
+      width: 48%;
+      height: 100%;
     }
 
     .public-bounced-content-right {
+      width: 48%;
+      height: 100%;
     }
   }
-
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/src/components/BaseNav/SolidWaste/SolidWaste.js b/src/components/BaseNav/SolidWaste/SolidWaste.js
index 6df5e3e..7cedfa6 100644
--- a/src/components/BaseNav/SolidWaste/SolidWaste.js
+++ b/src/components/BaseNav/SolidWaste/SolidWaste.js
@@ -67,9 +67,9 @@
             // 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.setPanTo(e.target.getLatLng(), 250)
             this.EffectOfPulse(e.target.getLatLng())
-            this.SolidWastePopup.setData(data[i], 'gufei')
+            // this.SolidWastePopup.setData(data[i], 'gufei')
             return this.SolidWastePopup.$el
           } catch (error) {
             console.log(error)
@@ -87,8 +87,9 @@
     position = this.map.latLngToLayerPoint(position)
     position.y += value
     position = this.map.layerPointToLatLng(position)
-    this.map.setView(position)
-    // this.map.flyTo(position)
+    // this.map.setView(position)
+    this.map.flyTo(position)
+    // this.map.panTo(position)
   }
 
   // 鍥哄簾鐐瑰嚮杩涜鐨� 鍐呭鐨勮缃�
@@ -121,32 +122,32 @@
   // 鑴夊啿鏁堟灉璁剧疆瀹炵幇
   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()
-    }
+    // 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璁剧疆  // 楂樹寒鍥惧眰
diff --git a/src/components/BaseNav/SolidWaste/directive.js b/src/components/BaseNav/SolidWaste/directive/dir.js
similarity index 100%
rename from src/components/BaseNav/SolidWaste/directive.js
rename to src/components/BaseNav/SolidWaste/directive/dir.js
diff --git a/src/components/BaseNav/SolidWaste/directive/directive.js b/src/components/BaseNav/SolidWaste/directive/directive.js
new file mode 100644
index 0000000..a656af4
--- /dev/null
+++ b/src/components/BaseNav/SolidWaste/directive/directive.js
@@ -0,0 +1,77 @@
+export default {
+  bind (el, binding, vnode) {
+    const dialogHeaderEl = el.querySelector('.el-dialog__header')
+    const dragDom = el.querySelector('.el-dialog')
+    dialogHeaderEl.style.cssText += ';cursor:move;'
+    dragDom.style.cssText += ';top:0px;'
+
+    // 鑾峰彇鍘熸湁灞炴�� ie dom鍏冪礌.currentStyle 鐏嫄璋锋瓕 window.getComputedStyle(dom鍏冪礌, null);
+    const getStyle = (function () {
+      if (window.document.currentStyle) {
+        return (dom, attr) => dom.currentStyle[attr]
+      } else {
+        return (dom, attr) => getComputedStyle(dom, false)[attr]
+      }
+    })()
+
+    dialogHeaderEl.onmousedown = (e) => {
+      // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅厓绱犺窛绂诲彲瑙嗗尯鐨勮窛绂�
+      const disX = e.clientX - dialogHeaderEl.offsetLeft
+      const disY = e.clientY - dialogHeaderEl.offsetTop
+
+      const dragDomWidth = dragDom.offsetWidth
+      const dragDomHeight = dragDom.offsetHeight
+
+      const screenWidth = document.body.clientWidth
+      const screenHeight = document.body.clientHeight
+
+      const minDragDomLeft = dragDom.offsetLeft
+      const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth
+
+      const minDragDomTop = dragDom.offsetTop
+      const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomHeight
+
+      // 鑾峰彇鍒扮殑鍊煎甫px 姝e垯鍖归厤鏇挎崲
+      let styL = getStyle(dragDom, 'left')
+      let styT = getStyle(dragDom, 'top')
+
+      if (styL.includes('%')) {
+        styL = +document.body.clientWidth * (+styL.replace(/\%/g, '') / 100)
+        styT = +document.body.clientHeight * (+styT.replace(/\%/g, '') / 100)
+      } else {
+        styL = +styL.replace(/\px/g, '')
+        styT = +styT.replace(/\px/g, '')
+      }
+
+      document.onmousemove = function (e) {
+        // 閫氳繃浜嬩欢濮旀墭锛岃绠楃Щ鍔ㄧ殑璺濈
+        let left = e.clientX - disX
+        let top = e.clientY - disY
+
+        // 杈圭晫澶勭悊
+        if (-(left) > minDragDomLeft) {
+          left = -minDragDomLeft
+        } else if (left > maxDragDomLeft) {
+          left = maxDragDomLeft
+        }
+
+        if (-(top) > minDragDomTop) {
+          top = -minDragDomTop
+        } else if (top > maxDragDomTop) {
+          top = maxDragDomTop
+        }
+
+        // 绉诲姩褰撳墠鍏冪礌
+        dragDom.style.cssText += `;left:${left + styL}px;top:${top + styT}px;`
+
+        // emit onDrag event
+        vnode.child.$emit('dragDialog')
+      }
+
+      document.onmouseup = function (e) {
+        document.onmousemove = null
+        document.onmouseup = null
+      }
+    }
+  }
+}
diff --git a/src/components/BaseNav/SolidWaste/directive/index.js b/src/components/BaseNav/SolidWaste/directive/index.js
new file mode 100644
index 0000000..d8a3108
--- /dev/null
+++ b/src/components/BaseNav/SolidWaste/directive/index.js
@@ -0,0 +1,14 @@
+// import drag from './drag'
+import drag from './directive'
+
+const install = function (Vue) {
+  Vue.directive('el-drag-dialog', drag)
+}
+
+if (window.Vue) {
+  window['el-drag-dialog'] = drag
+  Vue.use(install) // eslint-disable-line
+}
+
+drag.install = install
+export default drag
diff --git a/src/components/BaseNav/WasteWater/WasteWater.js b/src/components/BaseNav/WasteWater/WasteWater.js
index c2f3d6b..05f7b50 100644
--- a/src/components/BaseNav/WasteWater/WasteWater.js
+++ b/src/components/BaseNav/WasteWater/WasteWater.js
@@ -52,16 +52,17 @@
       const Icon = new WasteWaterIcon({ iconUrl: iconUrl })
       // let url = Icon.options.iconUrl
 
-      const marker = this.L.marker.magic([positionX, positionY], { icon: Icon, magic: 'vanishIn' })
+      // const marker = this.L.marker.magic([positionX, positionY], { icon: Icon, magic: 'vanishIn' }) // 甯︽樉绀哄姩鐢�
+      const marker = this.L.marker([positionX, positionY], { icon: Icon })
 
-      marker.bindPopup(() => {
-        return this.WasteWaterPopup.$el
-      }, {
-        className: 's-map-popup',
-        minWidth: 1000,
-        closeButton: true,
-        autoClose: false
-      })
+      // marker.bindPopup(() => {
+      //   return this.WasteWaterPopup.$el
+      // }, {
+      //   className: 's-map-popup',
+      //   minWidth: 1000,
+      //   closeButton: true,
+      //   autoClose: false
+      // })
       // 鍒掕繃鍑虹幇 灞曠ず鏁版嵁
       marker.bindTooltip(data[i].Name, {
         permanent: true,
@@ -74,7 +75,7 @@
         try {
           // console.log(e)
           this.EffectOfPulse(e.target.getLatLng())
-          this.WasteWaterPopup.setDate(data[i])
+          this.WasteWaterPopup.setData(data[i])
           return this.WasteWaterPopup.$el
         } catch (error) {
           console.log(error)
diff --git a/src/components/LayerController/logic/SolidWaste.js b/src/components/LayerController/logic/SolidWaste.js
new file mode 100644
index 0000000..dfc5841
--- /dev/null
+++ b/src/components/LayerController/logic/SolidWaste.js
@@ -0,0 +1,70 @@
+/**
+ * 鍥哄簾
+ */
+// 鍖哄垎涓嶅悓绫诲瀷 浣跨敤涓嶅悓img
+const defaultImg = '/assets/images/map/solidwaste/voc.png'
+const setting = '/assets/images/map/solidwaste/gf_green.png'
+
+const mapApi = require('../../../api/mapApi').default
+const AnimalService = require('../service/AnimalService').default
+
+module.exports = function () {
+  /**
+   * 杩斿洖marker瀵硅薄鏁扮粍
+   * @param L leaflet瀵硅薄
+   */
+  this.init = async (layer, L) => {
+    // const SolidWasteIcon = this.SolidWasteIcon()
+    this.animalService = new AnimalService({
+      L: L,
+      layer: layer
+    })
+    const res = await mapApi.getSolidWaste()
+    // console.log(res)
+    const data = res.Result.DataInfo || {}
+    for (let i = 0; i < data.length; i++) {
+      // 缁忕含搴� 浣嶇疆
+      const positionX = data[i].Latitude
+      const positionY = data[i].Longitude
+
+      // 瀹氫箟绫诲瀷 鐢ㄦ潵鍖哄垎鏁版嵁鐨勪笉鍚�
+      const judgeValue = data[i].StorageQty
+      var iconUrl = this.differentTypes(judgeValue)
+
+      const marker = L.marker.magic([positionX, positionY], {
+        icon: L.icon({
+          iconUrl: iconUrl,
+          iconSize: [50, 50],
+          iconAnchor: [25, 25]
+        })
+      })
+
+      layer.addLayer(marker)
+    }
+  }
+
+  this.bindTooltip = (layer) => {
+    return '娴嬭瘯鍥哄簾'
+  }
+
+  this.clickListener = (e) => {
+    this.animalService.pulseEffect(e.latlng)
+    console.log(e)
+    return this.PublicBounced.$el
+  }
+
+  // 涓嶅悓绫诲瀷鍥剧墖灏佽
+  this.differentTypes = (judgeValue) => {
+    var effectOfChange
+    if (judgeValue === 1) {
+      effectOfChange = defaultImg
+    } else {
+      effectOfChange = setting
+    }
+    return effectOfChange
+  }
+  // 鍥哄簾鐐瑰嚮杩涜鐨� 鍐呭鐨勮缃�
+  // SetSolidWasteContent (config, containerPopup) {
+  //   this.SolidWastePopup = containerPopup
+  // }
+}
diff --git a/src/conf/Constants.js b/src/conf/Constants.js
index 97a3af7..e2ac498 100644
--- a/src/conf/Constants.js
+++ b/src/conf/Constants.js
@@ -8,7 +8,8 @@
   fsqy: 'Sample.js',
   fspfk: 'Sample.js',
   fsjcd: 'Sample.js',
-  wasteGasJcd: 'WasteGas.js'
+  wasteGasJcd: 'WasteGas.js',
+  solidWasteJcd: 'SolidWaste.js'
 }
 
 export const props = {
diff --git a/src/conf/MapConfig.js b/src/conf/MapConfig.js
index 1326a16..d1ece05 100644
--- a/src/conf/MapConfig.js
+++ b/src/conf/MapConfig.js
@@ -25,7 +25,8 @@
   minZoom: 3,
   maxZoom: 18,
   // center: [26, 104],
-  center: [38.828558921813965, 117.41676807403564],
+  // center: [38.828558921813965, 117.41676807403564],
+  center: [29.769515991210938, 107.03567504882812],
   zoom: 14,
   worldCopyJump: true,
   inertia: true,
diff --git a/src/main.js b/src/main.js
index e4615a1..653b668 100644
--- a/src/main.js
+++ b/src/main.js
@@ -15,12 +15,13 @@
 import '@/utils/dialogDrag.js'
 import '@components/plugin/leaflet-measure-path/leaflet-measure-path.css'
 import '@components/plugin/leaflet-measure-path/leaflet-measure-path'
-
+const appConfig = require('@/app.config')
 Vue.config.productionTip = false
 
 Vue.use(ElementUI)
 Vue.prototype.$cancels = []
 Vue.prototype.L = L
+Vue.prototype.$config = appConfig
 Vue.prototype.$echarts = echarts // 鎸傝浇echarts
 // 娉ㄥ唽鎸囦护7
 // registerDirectives(Vue)
diff --git a/src/router/index.js b/src/router/index.js
index 32dae04..6bc1550 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -1,10 +1,11 @@
 import Vue from 'vue'
 import Router from 'vue-router'
 import { routes } from './routes'
+import { getToken } from '@/utils/navigation'
 import 'nprogress/nprogress.css'
 const appConfig = require('@/app.config')
-const { routeMode } = appConfig
-
+const { homeRouterName, loginRouteName, routeMode } = appConfig
+const LOGIN_PAGE_ROUTE_NAME = loginRouteName
 Vue.use(Router)
 const baseName = process.env.NODE_ENV === 'production' ? `/${appConfig.projectName}/` : '/'
 const router = new Router({
@@ -17,12 +18,32 @@
     cancel()
   })
   Vue.prototype.$cancels = []
+  const token = getToken()
+  if (!token && to.name !== LOGIN_PAGE_ROUTE_NAME) {
+    // 鏈櫥褰曚笖瑕佽烦杞殑椤甸潰涓嶆槸鐧诲綍椤�
+    next({
+      name: LOGIN_PAGE_ROUTE_NAME // 璺宠浆鍒扮櫥褰曢〉
+    })
+  } else if (!token && to.name === LOGIN_PAGE_ROUTE_NAME) {
+    // 鏈櫥闄嗕笖瑕佽烦杞殑椤甸潰鏄櫥褰曢〉
+    next() // 璺宠浆
+  } else if (token && to.name === LOGIN_PAGE_ROUTE_NAME) {
+    // 宸茬櫥褰曚笖瑕佽烦杞殑椤甸潰鏄櫥褰曢〉
+    next({
+      name: homeRouterName // 璺宠浆鍒癶omeName椤�
+    })
+  } else if (!token) {
+    next({
+      name: LOGIN_PAGE_ROUTE_NAME // 璺宠浆鍒扮櫥褰曢〉
+    })
+  } else {
+    next()
+  }
   // 涓嶉渶瑕佺櫥褰曡璇佺殑璺敱
   if (Object.hasOwnProperty.call(to.meta, 'noLoginIdentify') && to.meta.noLoginIdentify) {
     next()
-    return
   }
-  next()
+  // next()
 })
 router.beforeResolve((to, from, next) => {
   next()
diff --git a/src/router/map.js b/src/router/map.js
index 9372783..328884b 100644
--- a/src/router/map.js
+++ b/src/router/map.js
@@ -9,8 +9,10 @@
  * }
  */
 const MapTemplate = (r) => require.ensure([], () => r(require('../views/MapTemplate')), 'frame')
+const Login = (r) => require.ensure([], () => r(require('../views/Login')), 'frame')
 const routes = [
-  { path: '/mapTemplate', name: 'MapTemplate', meta: { statusBgc: 0 }, component: MapTemplate }
+  { path: '/mapTemplate', name: 'MapTemplate', meta: { statusBgc: 0 }, component: MapTemplate },
+  { path: '/Login', name: 'Login', meta: { statusBgc: 0 }, component: Login }
 ]
 
 // 鎵�鏈変笂闈㈠畾涔夌殑璺敱閮借鍐欏湪涓嬮潰鐨剅outes閲�
diff --git a/src/store/index.js b/src/store/index.js
index 1b3e167..2d18c38 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -1,6 +1,7 @@
 import Vue from 'vue'
 import Vuex from 'vuex'
 import map from './modules/map'
+import user from './modules/user'
 // import app from './modules/app'
 Vue.use(Vuex)
 
@@ -13,6 +14,7 @@
   },
   modules: {
     // app,
-    map
+    map,
+    user
   }
 })
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
new file mode 100644
index 0000000..57ed576
--- /dev/null
+++ b/src/store/modules/user.js
@@ -0,0 +1,149 @@
+import $API from '../../api'
+import $http from '@/utils/axios'
+import { setToken, getToken, setAccount, getAccount } from '@/utils/navigation'
+// import { replaceUrlParams } from '@/utils/tools'
+
+const state = {
+  account: '',
+  userName: '',
+  userId: '',
+  avator: '',
+  orgUnitName: '',
+  orgUnitCode: '',
+  orgUnitLevel: '',
+  orgSectorName: '',
+  orgSectorCode: '',
+  isAdmin: null,
+  token: getToken(),
+  access: 0,
+  hasGetInfo: false
+}
+
+const mutations = {
+  setAvator (state, avator) {
+    state.avator = avator
+  },
+  setUserId (state, id) {
+    state.userId = id
+  },
+  setAccount (state, account) {
+    state.account = account
+    setAccount(account)
+  },
+  setUserName (state, name) {
+    state.userName = name
+  },
+  setOrgUnitName (state, orgUnitName) {
+    state.orgUnitName = orgUnitName
+  },
+  setOrgUnitCode (state, orgUnitCode) {
+    state.orgUnitCode = orgUnitCode
+  },
+  setOrgSectorName (state, orgSectorName) {
+    state.orgSectorName = orgSectorName
+  },
+  setOrgSectorCode (state, orgSectorCode) {
+    state.orgSectorCode = orgSectorCode
+  },
+  setOrgUnitLevel (state, orgUnitLevel) {
+    state.orgUnitLevel = orgUnitLevel
+  },
+  setAdmin (state, isAdmin) {
+    state.isAdmin = isAdmin
+  },
+  setAccess (state, access) {
+    state.access = access
+  },
+  setToken (state, token) {
+    state.token = token
+    setToken(token)
+  },
+  setHasGetInfo (state, status) {
+    state.hasGetInfo = status
+  }
+}
+
+const actions = {
+  // 鐧诲綍
+  handleLogin ({ commit }, { account, password }) {
+    return new Promise((resolve, reject) => {
+      $http.post($API.GetUser, {
+        userName: account,
+        passWord: password
+      }).then(data => {
+        console.log(data)
+        commit('setToken', '12345668')
+        commit('setAccount', account)
+        resolve()
+      }).catch(err => {
+        reject(err)
+      })
+    })
+  },
+  // 閫�鍑虹櫥褰�
+  handleLogOut ({ state, commit }) {
+    return new Promise((resolve, reject) => {
+      commit('setToken', '')
+      commit('setAccount', '')
+      commit('setAccess', 0)
+      resolve()
+    })
+  },
+  // 鑾峰彇鐢ㄦ埛淇℃伅
+  getUserInfo ({ state, commit, dispatch }) {
+    const account = getAccount() || 'admin'
+    return new Promise((resolve, reject) => {
+      try {
+        $http.get($API.AAA_GET_USER_INFO, {
+          token: state.token
+        }).then(response => {
+          const data = response.data
+          commit('setAvator', data.avator)
+          // commit('setOrgUnitName', data.orgUnitName)
+          // commit('setOrgUnitCode', data.orgUnitCode)
+          commit('setUserId', data.userId)
+          commit('setAccess', data.access)
+          commit('setHasGetInfo', true)
+          if (account === 'tianjun') {
+            // admin鐨勫満鏅蛋mock
+            commit('setAccount', data.account)
+            commit('setUserName', data.userName)
+            resolve(data)
+          } else {
+            $http.get($API.MDM_GET_USER_ACCOUNT_DETAIL, {
+              account: account
+            }).then(response => {
+              const d = response.data
+              if (d) {
+                commit('setAccount', d.unifiedIdentityAcc)
+                commit('setUserName', d.userName)
+                // 鑾峰彇鐢ㄦ埛鍚庯紝鑾峰彇缁勭粐鏈烘瀯
+                dispatch('getUserOrgInfo').then(() => {
+                  resolve(d)
+                }).catch(err => {
+                  alert('涓嶈兘鑾峰彇鐢ㄦ埛缁勭粐鏈烘瀯')
+                  reject(err)
+                })
+              } else {
+                commit('setToken', '')
+                commit('setAccount', '')
+                commit('setAccess', 0)
+                resolve(false)
+              }
+            })
+          }
+        }).catch(err => {
+          reject(err)
+        })
+      } catch (error) {
+        reject(error)
+      }
+    })
+  }
+}
+
+export default {
+  state,
+  mutations,
+  actions
+}
diff --git a/src/utils/axios.js b/src/utils/axios.js
index 7f944e8..d42baf4 100644
--- a/src/utils/axios.js
+++ b/src/utils/axios.js
@@ -83,8 +83,7 @@
 
 // 鍒涘缓axios瀹炰緥
 const Service = axios.create({
-  timeout: 5000,
-  baseURL: 'http://10.246.162.140:8080/'
+  timeout: 1000
 })
 
 const CancelToken = axios.CancelToken
@@ -140,14 +139,14 @@
 // respone鎷︽埅鍣�
 Service.interceptors.response.use(
   response => {
-    // const res = response.data
-    // if (Number(res.code) !== 200 && Number(res.code) !== 0) {
-    //   $T.warning(res.message)
-    //   return Promise.reject(res.message)
-    // } else {
-    //   return res
-    // }
-    return response.data
+    const res = response.data
+    /* if (Number(res.code) !== 200 && Number(res.code) !== 0) {
+      $T.warning(res.message)
+      return Promise.reject(res.message)
+    } else {
+      return res
+    } */
+    return res
   },
   error => {
     if (error.message && error.message.includes('timeout')) {
diff --git a/src/utils/navigation.js b/src/utils/navigation.js
new file mode 100644
index 0000000..1c09633
--- /dev/null
+++ b/src/utils/navigation.js
@@ -0,0 +1,167 @@
+import Cookies from 'js-cookie'
+const appConfig = require('@/app.config')
+const { cookieExpires } = appConfig
+
+export const TOKEN_KEY = 'token'
+export const ACCOUNT_KEY = 'account'
+export const setToken = (token) => {
+  Cookies.set(TOKEN_KEY, token, { expires: cookieExpires || 1 })
+}
+
+export const getToken = () => {
+  const token = Cookies.get(TOKEN_KEY)
+  if (token !== 'undefined') return token
+  else return false
+}
+
+export const setAccount = (account) => {
+  Cookies.set(ACCOUNT_KEY, account, { expires: cookieExpires || 1 })
+}
+
+export const getAccount = () => {
+  const account = Cookies.get(ACCOUNT_KEY)
+  if (account) return account
+  else return false
+}
+
+export const hasChild = (item) => {
+  return item.children && item.children.length !== 0
+}
+
+/**
+ * @description 鏈湴瀛樺偍鍜岃幏鍙栨爣绛惧鑸垪琛�
+ */
+export const setTagNavListToLocalstorage = list => {
+  localStorage.tagNaveList = JSON.stringify(list)
+}
+
+/**
+ * @returns {Array} 鍏朵腑鐨勬瘡涓厓绱犲彧鍖呭惈璺敱鍘熶俊鎭腑鐨刵ame, path, meta涓夐」
+ */
+export const getTagNavListFromLocalstorage = () => {
+  const list = localStorage.tagNaveList
+  return list ? JSON.parse(list) : []
+}
+
+/**
+ * @param {Array} routers 璺敱鍒楄〃鏁扮粍
+ * @description 鐢ㄤ簬鎵惧埌璺敱鍒楄〃涓璶ame涓篽ome鐨勫璞�
+ */
+export const getHomeRouter = (routers, homeName = 'Home') => {
+  let i = -1
+  const len = routers.length
+  let homeRoute = {}
+  while (++i < len) {
+    const item = routers[i]
+    if (item.children && item.children.length) {
+      const res = getHomeRouter(item.children, homeName)
+      if (res.name) return res
+    } else {
+      if (item.name === homeName) homeRoute = item
+    }
+  }
+  return homeRoute
+}
+
+/**
+ * @param {*} list 鐜版湁鏍囩瀵艰埅鍒楄〃
+ * @param {*} newRoute 鏂版坊鍔犵殑璺敱鍘熶俊鎭璞�
+ * @description 濡傛灉璇ewRoute宸茬粡瀛樺湪鍒欎笉鍐嶆坊鍔�
+ */
+export const getNewTagList = (list, newRoute) => {
+  const { name, path, meta } = newRoute
+  const newList = [...list]
+  if (newList.findIndex(item => item.name === name) >= 0) return newList
+  else newList.push({ name, path, meta })
+  return newList
+}
+
+/**
+ * @param {Number} times 鍥炶皟鍑芥暟闇�瑕佹墽琛岀殑娆℃暟
+ * @param {Function} callback 鍥炶皟鍑芥暟
+ */
+export const doCustomTimes = (times, callback) => {
+  let i = -1
+  while (++i < times) {
+    callback(i)
+  }
+}
+
+export const findNodeUpper = (ele, tag) => {
+  if (ele.parentNode) {
+    if (ele.parentNode.tagName === tag.toUpperCase()) {
+      return ele.parentNode
+    } else {
+      return findNodeUpper(ele.parentNode, tag)
+    }
+  }
+}
+
+export const findNodeUpperByClasses = (ele, classes) => {
+  const parentNode = ele.parentNode
+  if (parentNode) {
+    const classList = parentNode.classList
+    if (classList && classes.every(className => classList.contains(className))) {
+      return parentNode
+    } else {
+      return findNodeUpperByClasses(parentNode, classes)
+    }
+  }
+}
+
+export const findNodeDownward = (ele, tag) => {
+  const tagName = tag.toUpperCase()
+  if (ele.childNodes.length) {
+    let i = -1
+    const len = ele.childNodes.length
+    while (++i < len) {
+      const child = ele.childNodes[i]
+      if (child.tagName === tagName) return child
+      else return findNodeDownward(child, tag)
+    }
+  }
+}
+
+export const localSave = (key, value) => {
+  localStorage.setItem(key, value)
+}
+
+export const localRead = (key) => {
+  return localStorage.getItem(key) || ''
+}
+
+// scrollTop animation
+export const scrollTop = (el, from = 0, to, duration = 500, endCallback) => {
+  if (!window.requestAnimationFrame) {
+    window.requestAnimationFrame = (
+      window.webkitRequestAnimationFrame ||
+      window.mozRequestAnimationFrame ||
+      window.msRequestAnimationFrame ||
+      function (callback) {
+        return window.setTimeout(callback, 1000 / 60)
+      }
+    )
+  }
+  const difference = Math.abs(from - to)
+  const step = Math.ceil(difference / duration * 50)
+
+  const scroll = (start, end, step) => {
+    if (start === end) {
+      endCallback && endCallback()
+      return
+    }
+
+    let d = (start + step > end) ? end : start + step
+    if (start > end) {
+      d = (start - step < end) ? end : start - step
+    }
+
+    if (el === window) {
+      window.scrollTo(d, d)
+    } else {
+      el.scrollTop = d
+    }
+    window.requestAnimationFrame(() => scroll(d, end, step))
+  }
+  scroll(from, to, step)
+}
diff --git a/src/utils/tools.js b/src/utils/tools.js
index 0838a7f..f47703e 100644
--- a/src/utils/tools.js
+++ b/src/utils/tools.js
@@ -25,7 +25,16 @@
   })
   return arr
 }
-
+/**
+ * 鏍规嵁涓嶅悓鐨勫崗璁紝鏇挎崲env閰嶇疆鏂囦欢涓殑URL鍗忚
+ *
+ * @return {String}
+ */
+export function getSchemeHost () {
+  const protocol = window.location.protocol
+  const host = process.env.VUE_APP_API_HOST
+  return host.replace(/scheme/g, protocol)
+}
 /**
  * collection鏁版嵁杞崲涓烘爣鍑咼SON
  * @param obj collection鏁版嵁
diff --git a/src/views/Login.vue b/src/views/Login.vue
new file mode 100644
index 0000000..6d8a076
--- /dev/null
+++ b/src/views/Login.vue
@@ -0,0 +1,124 @@
+<template>
+    <div class="login-wrap" @keydown.enter="handleSubmit">
+        <div class="content">
+            <el-card class="box-card">
+                <div slot="header" class="login-title clearfix">
+                    <el-icon name="star-on"></el-icon>
+                    <span>娆㈣繋鐧诲綍</span>
+                </div>
+
+                <div class="form-content">
+                    <el-form :model="form" :rules="formRules" ref="loginForm" class="demo-ruleForm">
+                        <el-form-item prop="account">
+                            <el-input size="small" v-model="form.account" placeholder="璇疯緭鍏ョ敤鎴峰悕">
+                                <el-button slot="prepend" icon="el-icon-search" style="padding: 12px 10px;"></el-button>
+                            </el-input>
+                        </el-form-item>
+                        <el-form-item prop="password">
+                            <el-input size="small" type="password" v-model="form.password" auto-complete="off"
+                                      placeholder="璇疯緭鍏ュ瘑鐮�">
+                                <el-button slot="prepend" icon="el-icon-search" style="padding: 12px 10px;"></el-button>
+                            </el-input>
+                        </el-form-item>
+                        <el-form-item>
+                            <el-button size="small" type="primary" @click="handleSubmit" style="width: 100%">鐧诲綍
+                            </el-button>
+                        </el-form-item>
+                    </el-form>
+                </div>
+                <p class="login-tip">杈撳叆浠绘剰鐢ㄦ埛鍚嶅拰瀵嗙爜鍗冲彲</p>
+            </el-card>
+        </div>
+    </div>
+</template>
+
+<script>
+import { mapActions } from 'vuex'
+
+export default {
+  name: 'Login',
+  components: {},
+  data () {
+    return {
+      form: {
+        account: 'admin',
+        password: 'admin'
+      },
+      formRules: {
+        account: [
+          { required: true, message: '璐﹀彿涓嶈兘涓虹┖', trigger: 'blur' }
+        ],
+        password: [
+          { required: true, message: '瀵嗙爜涓嶈兘涓虹┖', trigger: 'blur' }
+        ]
+      }
+    }
+  },
+  methods: {
+    ...mapActions([
+      'handleLogin',
+      'getUserInfo'
+    ]),
+    handleSubmit () {
+      this.$refs.loginForm.validate((valid) => {
+        if (valid) {
+          this.handleLogin({
+            account: this.form.account,
+            password: this.form.password
+          }).then(response => {
+            this.$router.push({
+              name: this.$config.homeRouterName
+            })
+          })
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style lang="less">
+    .login-wrap {
+        position: relative;
+        background-image: url('../assets/images/login-page/page1.jpg');
+        background-size: cover;
+        background-position: center;
+        width: 100%;
+        height: 100%;
+        overflow: hidden;
+
+        .content {
+            position: absolute;
+            right: 160px;
+            top: 25%;
+        }
+        .box-card {
+            width: 300px;
+        }
+        .clearfix:before,
+        .clearfix:after {
+            display: table;
+            content: "";
+        }
+        .clearfix:after {
+            clear: both
+        }
+        .form-content {
+            padding: 10px 0 0;
+        }
+        .login-title {
+            width: 100%;
+            font-size: 14px;
+            color: #1c2438;
+            font-weight: 700;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+        .login-tip {
+            font-size: 10px;
+            text-align: center;
+            color: #c3c3c3;
+        }
+    }
+</style>
diff --git a/src/views/MapTemplate.vue b/src/views/MapTemplate.vue
index 6913577..dd708d9 100644
--- a/src/views/MapTemplate.vue
+++ b/src/views/MapTemplate.vue
@@ -16,7 +16,7 @@
     <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 type="primary" @click="ChangeState" class="solid-waste">鍥哄簾</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>
@@ -39,7 +39,6 @@
 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'
 // // 鍏叡灞曠ず鏁版嵁
@@ -102,18 +101,6 @@
       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,
@@ -148,6 +135,7 @@
       this.$refs.toolBox.map = this.map
 
       window.popupComp = this.$refs.popup
+
       var layerFactory = new LayerFactory({
         L: window.L,
         map: this.map
@@ -165,7 +153,6 @@
       this.vectorLayerHelper = Sgis.initVectorLayersHelper(this.map) // 鍒濆鍖栧姩鎬佽绱犲浘灞傚姪鎵�
       this.vectorLayerHelper.initVectorLayers(this.config)
 
-      // this.ChangeState()
       // this.AddGasHelper()
       // this.ChangeWaterState()
 

--
Gitblit v1.8.0