limeng il y a 2 ans
Parent
commit
5bac5eed05
45 fichiers modifiés avec 10982 ajouts et 8360 suppressions
  1. 3 8
      package.json
  2. 11 0
      public/index.html
  3. 2 2
      src/api/afforestation.js
  4. 2 2
      src/api/animal.js
  5. 22 1
      src/api/components/supermap.js
  6. 7 0
      src/api/dahua/dahua.js
  7. 30 4
      src/api/datacenter.js
  8. 4 4
      src/api/disaster.js
  9. 7 7
      src/api/event.js
  10. 153 41
      src/api/forest.js
  11. 11 3
      src/api/leader.js
  12. 2 2
      src/api/monitor.js
  13. 10 1
      src/api/system/dept.js
  14. 162 109
      src/assets/iconfont/iconfont.css
  15. 1 1
      src/assets/iconfont/iconfont.js
  16. 302 190
      src/assets/iconfont/iconfont.json
  17. 67 37
      src/assets/iconfont/iconfont.svg
  18. BIN
      src/assets/iconfont/iconfont.ttf
  19. BIN
      src/assets/iconfont/iconfont.woff
  20. BIN
      src/assets/iconfont/iconfont.woff2
  21. BIN
      src/assets/images/integrated/bigdata-header-nav-left.png
  22. BIN
      src/assets/images/integrated/bigdata-header-nav-re.png
  23. BIN
      src/assets/images/integrated/bigdata-header-nav-right.png
  24. BIN
      src/assets/images/mascot.png
  25. 2936 1417
      src/assets/styles/base.scss
  26. 655 356
      src/components/TVWall.vue
  27. 2 2
      src/components/clock.vue
  28. 927 1106
      src/components/eventLocation.vue
  29. 280 80
      src/components/supermap.vue
  30. 140 39
      src/components/v-fastmenu.vue
  31. 13 12
      src/components/v-header.vue
  32. 1130 132
      src/components/vBottomMenu.vue
  33. 4 0
      src/main.js
  34. 1 1
      src/permission.js
  35. 96 87
      src/router/index.js
  36. 247 201
      src/views/afforestation.vue
  37. 410 356
      src/views/animal.vue
  38. 437 927
      src/views/datacenter.vue
  39. 632 533
      src/views/disaster.vue
  40. 0 1822
      src/views/forest.vue
  41. 305 259
      src/views/leader.vue
  42. 771 614
      src/views/monitor.vue
  43. 0 1
      src/views/system/menuVisu/index.vue
  44. 1181 0
      src/views/traffic.vue
  45. 19 3
      vue.config.js

+ 3 - 8
package.json

@@ -36,33 +36,28 @@
     "url": "https://gitee.com/y_project/RuoYi-Cloud.git"
   },
   "dependencies": {
+    "@jiaminghi/data-view": "^2.10.0",
     "@riophae/vue-treeselect": "0.4.0",
-    "@supermap/iclient-leaflet": "^10.2.1",
-    "@supermap/iclient-ol": "^10.1.3",
     "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
     "axios": "0.24.0",
     "clipboard": "2.0.8",
     "core-js": "3.19.1",
-    "dept-selector": "http://121.37.83.100:8081/repository/sooka-npm/dept-selector/-/dept-selector-0.1.10.tgz",
     "echarts": "^4.9.0",
     "element-ui": "2.15.6",
     "file-saver": "2.0.5",
     "fuse.js": "6.4.3",
     "highlight.js": "9.18.5",
+    "html2canvas": "^1.4.1",
     "js-beautify": "1.13.0",
     "js-cookie": "3.0.1",
     "jsencrypt": "3.2.1",
-    "leaflet": "^1.8.0",
-    "leaflet-draw": "^1.0.4",
-    "leaflet-side-by-side": "^2.1.0",
-    "leaflet.markercluster": "^1.5.3",
-    "leaflet.pm": "^2.2.0",
     "lib-flexible": "^0.3.2",
     "nprogress": "0.2.0",
     "quill": "1.3.7",
     "screenfull": "5.0.2",
     "sortablejs": "1.10.2",
     "vue": "2.6.12",
+    "vue-cookies": "^1.8.2",
     "vue-count-to": "1.0.13",
     "vue-cropper": "0.5.5",
     "vue-meta": "2.4.0",

+ 11 - 0
public/index.html

@@ -196,6 +196,17 @@
   </style>
   </head>
   <body>
+<!--  <link rel="stylesheet" href="./supermap/libs/plotting/leaflet/10.2.1/iclient-plot-leaflet.css">-->
+<script type="text/javascript" include="leaflet,leaflet.sidebyside,iclient-leaflet,iclient-plot-leaflet,leaflet.draw,leaflet.markercluster,leaflet.heat" src="./supermap/dist/leaflet/include-leaflet.js"></script>
+<!--  <script type="text/javascript" include="iclient-classic" src="./supermap/dist/classic/include-classic.js"></script>-->
+<!--  <script type="text/javascript" src="./supermap/libs/plotting/leaflet/10.2.1/iclient-plot-leaflet-es6.min.js"></script>-->
+  <script type="text/javascript" include="PlotPanel,StylePanel,SMLInfosPanel,iPortalStylePanel" src="./supermap/examples/js/plottingPanel/PlottingPanel.Include.js"></script>
+
+<!--三个必要的js文件引入-->
+<script src="./hk/jquery-1.12.4.min.js"></script>
+<script src="./hk/jsencrypt.min.js"></script>            <!-- 用于RSA加密 -->
+<script src="./hk/jsWebControl-1.0.0.min.js"></script>   <!-- 用于前端与插件交互 -->
+
     <div id="app">
 	    <div id="loader-wrapper">
 		    <div id="loader"></div>

+ 2 - 2
src/api/afforestation.js

@@ -3,14 +3,14 @@ import request from '@/utils/request'
 // 获取
 export function getAfforestation(year) {
   return request({
-    url: '/center-fire/VisuAfforestationController/getAfforestation?year='+year,
+    url: '/center-agriculture/VisuAfforestationController/getAfforestation?year='+year,
     method: 'get',
   })
 }
 // 点击左侧人员列表获取轨迹
 export function getAfforestationArea(afforestationId) {
   return request({
-    url: '/center-fire/VisuAfforestationController/getAfforestationArea?afforestationId='+afforestationId,
+    url: '/center-agriculture/VisuAfforestationController/getAfforestationArea?afforestationId='+afforestationId,
     method: 'get',
   })
 }

+ 2 - 2
src/api/animal.js

@@ -3,14 +3,14 @@ import request from '@/utils/request'
 // 获取初始化数据
 export function getInit() {
   return request({
-    url: '/center-fire/VisuForestAnimalController/init',
+    url: '/center-agriculture/VisuForestAnimalController/init',
     method: 'get',
   })
 }
 // 点击左侧动物列表
 export function selectForestAnimalListByType(type) {
   return request({
-    url: '/center-fire/VisuForestAnimalController/selectForestAnimalListByType/'+type,
+    url: '/center-agriculture/VisuForestAnimalController/selectForestAnimalListByType/'+type,
     method: 'get',
   })
 }

+ 22 - 1
src/api/components/supermap.js

@@ -29,5 +29,26 @@ export const iconList = {
   'sj-icon-map-ywc': require('@/assets/icons/sj-icon-map/sj-icon-map-ywc.png'),
   'sj-icon-map-rg': require('@/assets/icons/sj-icon-map/sj-icon-map-rg.png'),
   'sj-icon-map-hx': require('@/assets/icons/sj-icon-map/sj-icon-map-hx.png'),
-  'sj-icon-map-kk': require('@/assets/icons/sj-icon-map/sj-icon-map-kk.png')
+  'sj-icon-map-kk': require('@/assets/icons/sj-icon-map/sj-icon-map-kk.png'),
+
+
+
+  //首页事件弹窗资源
+  'sj-icon-waterintake': require('@/assets/icons/sj-icon-map/sj-icon-map-qsk.png'),//取水口
+  'sj-icon-watercrane': require('@/assets/icons/sj-icon-map/sj-icon-map-sh.png'),//水鹤
+  'sj-icon-firehydrant': require('@/assets/icons/sj-icon-map/sj-icon-map-xhs.png'),//消防栓
+  'sj-icon-landing': require('@/assets/icons/sj-icon-map/sj-icon-map-qjd.png'),//起降点
+  'sj-icon-checkpoint': require('@/assets/icons/sj-icon-map/sj-icon-map-fhjcz.png'),//检查站
+  'sj-icon-fireteam': require('@/assets/icons/sj-icon-map/sj-icon-map-slfh.png'),//防火队
+  'sj-icon-tcqh': require('@/assets/icons/sj-icon-map/sj-icon-map-syqd.png'),//重点区域
+
+
+  //首页事件上报状态
+  'sj-icon-map-xinshangbao': require('@/assets/icons/sj-icon-map/sj-icon-map-xinshangbao.png'),//新上报
+  'sj-icon-map-cuiban': require('@/assets/icons/sj-icon-map/sj-icon-map-cuiban.png'),//催办
+  'sj-icon-map-qianshou': require('@/assets/icons/sj-icon-map/sj-icon-map-qianshou.png'),//签收
+  'sj-icon-map-guidang': require('@/assets/icons/sj-icon-map/sj-icon-map-guidang.png'),//归档
+  'sj-icon-map-banjie': require('@/assets/icons/sj-icon-map/sj-icon-map-banjie.png'),//办结
+
+
 }

+ 7 - 0
src/api/dahua/dahua.js

@@ -7,3 +7,10 @@ export function getDahuaVideoServer() {
     method: 'get',
   })
 }
+// 查询电视墙
+export function getTVWallList() {
+  return request({
+    url: '/center-monitor/TVWallController/init',
+    method: 'get',
+  })
+}

+ 30 - 4
src/api/datacenter.js

@@ -3,15 +3,16 @@ import request from '@/utils/request'
 // 获取左侧菜单列表
 export function getResource() {
   return request({
-    url: '/center-fire/VisuForestDataCenterController/getResource',
-    method: 'post',
+    // url: '/center-agriculture/VisuForestDataCenterController/getResource',
+    url: '/center-agriculture/data/SumLandInfo',
+    method: 'get',
   })
 }
 
 //点击左侧菜单列表查询落点
 export function getResourcePoint(resourceTable) {
   return request({
-    url: '/center-fire/VisuForestDataCenterController/getResourcePoint',
+    url: '/center-agriculture/VisuForestDataCenterController/getResourcePoint',
     method: 'post',
     data:{"resourceTable":resourceTable}
   })
@@ -19,8 +20,33 @@ export function getResourcePoint(resourceTable) {
 //点击右侧菜单列表查询落点
 export function getResourcePointByDeptId(resourceTable,deptId) {
   return request({
-    url: '/center-fire/VisuForestDataCenterController/getResourcePoint',
+    url: '/center-agriculture/VisuForestDataCenterController/getResourcePoint',
     method: 'post',
     data:{"resourceTable":resourceTable,"deptId":deptId}
   })
 }
+
+
+//点击左侧获取获取右侧部门列表(新)
+export function getFindAllType(type) {
+  return request({
+    url: '/center-agriculture/data/FindAllType?type='+type,
+    method: 'get',
+  })
+}
+
+//点击左侧获取获取右侧部门列表(新)
+export function getFindAllZhanList(type,deptId) {
+  return request({
+    url: '/center-agriculture/data/FindAllZhanList?type='+type+'&deptId='+deptId,
+    method: 'get',
+  })
+}
+
+//点击地图点位详情信息数据
+export function getPointDetails(id,type) {
+  return request({
+    url: '/center-agriculture/data/getPointDetails?id='+id+'&type='+type,
+    method: 'get',
+  })
+}

+ 4 - 4
src/api/disaster.js

@@ -3,16 +3,16 @@ import request from '@/utils/request'
 // 获取初始化数据
 export function getInit(year) {
   return request({
-    url: '/center-fire/VisuForestFireLossController/init',
+    url: '/center-agriculture/VisuForestFireLossController/init',
     method: 'post',
     data:{"year":year}
   })
 }
 // 点击列表获取数据
-export function selectFireLoseByid(id) {
+export function selectFireLoseByid(param) {
   return request({
-    url: '/center-fire/VisuForestFireLossController/selectFireLoseByid',
+    url: '/center-agriculture/VisuForestFireLossController/selectFireLoseByid',
     method: 'post',
-    data:{"id":id}
+    data:param
   })
 }

+ 7 - 7
src/api/event.js

@@ -3,35 +3,35 @@ import request from '@/utils/request'
 // 获取左侧菜单列表
 export function getTodayEvent() {
   return request({
-    url: '/center-fire/VisuForestEventCenterController/getTodayEvent',
+    url: '/center-agriculture/VisuForestEventCenterController/getTodayEvent',
     method: 'post',
   })
 }
 // 点击今日事件前三个按钮列表
 export function getEventStatusList(eventStatus) {
   return request({
-    url: '/center-fire/VisuForestEventCenterController/getEventList?eventStatus='+eventStatus,
+    url: '/center-agriculture/VisuForestEventCenterController/getEventList?eventStatus='+eventStatus,
     method: 'post',
   })
 }
 // 点击今日事件后三个按钮列表
 export function getEventSourceList(eventSource) {
   return request({
-    url: '/center-fire/VisuForestEventCenterController/getEventList?eventSource='+eventSource,
+    url: '/center-agriculture/VisuForestEventCenterController/getEventList?eventSource='+eventSource,
     method: 'post',
   })
 }
 // 点击部门
 export function getEventListByDeptIdList(deptId) {
   return request({
-    url: '/center-fire/VisuForestEventCenterController/getEventList?deptId='+deptId,
+    url: '/center-agriculture/VisuForestEventCenterController/getEventList?deptId='+deptId,
     method: 'post',
   })
 }
 // 点击类型
 export function getEventListByTypeList(eventType) {
   return request({
-    url: '/center-fire/VisuForestEventCenterController/getEventList?eventType='+eventType,
+    url: '/center-agriculture/VisuForestEventCenterController/getEventList?eventType='+eventType,
     method: 'post',
   })
 }
@@ -64,14 +64,14 @@ export function getImgUrl(data) {
 //获取附近事件
 export function getNearEvent(longitude,latitude) {
   return request({
-    url: '/center-fire/VisuForestEventCenterController/getNearEvent?longitude='+latitude+"&latitude="+latitude,
+    url: '/center-agriculture/VisuForestEventCenterController/getNearEvent?longitude='+latitude+"&latitude="+latitude,
     method: 'get',
   })
 }
 //获取附近摄像头
 export function getNearCamera(longitude,latitude) {
   return request({
-    url: '/center-fire/VisuForestEventCenterController/getNearCamera?longitude='+latitude+"&latitude="+latitude,
+    url: '/center-agriculture/VisuForestEventCenterController/getNearCamera?longitude='+latitude+"&latitude="+latitude,
     method: 'get',
   })
 }

+ 153 - 41
src/api/forest.js

@@ -1,80 +1,192 @@
 import request from '@/utils/request'
 
-// 获取左侧菜单列表
+// 左侧获取部门信息
 export function getBaseInfo() {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/getBaseInfo',
+    url: '/center-traffic/traffic/getBaseInfo',
     method: 'post',
   })
 }
-
-// 查询事件预警详细
-export function getWarm(id) {
+//左侧获取事件信息统计
+export function getTodayEvents(param) {
   return request({
-    url: '/sooka-sponest-center-event/warm/' + id,
-    method: 'get'
+    url: '/center-traffic/traffic/getTodayEvents',
+    method: 'post',
+    data: param
   })
 }
-
-// 查询事件部门列表
-export function selectByeventCode(eventCode) {
+// 左侧获取事件部门数量
+export function getDeptEventCount(param) {
   return request({
-    url: '/center-event/event/system/deptevent/selectByeventCode/'+eventCode,
-    method: 'get'
+    url: '/center-traffic/traffic/getDeptEventCount',
+    method: 'post',
+    data: param
   })
 }
-//修改部门事件状态
-export function updateDeptEventStatus(param) {
+// 右侧获取天气
+export function getWeather(param) {
   return request({
-    url: '/sooka-sponest-center-event/warm/updateDeptEventStatus' ,
+    url: '/center-traffic/traffic/getWeather',
     method: 'post',
     data: param
   })
 }
-
-// 删除事件操作日志
-export function listByEventCode(eventCode) {
+// 右侧获取事件列表
+export function getEventList(param) {
   return request({
-    url: '/center-event/event/system/log/listByEventCode/' + eventCode,
-    method: 'get'
+    url: '/center-traffic/traffic/getEventList',
+    method: 'post',
+    data: param
+  })
+}
+// 获取事件详情
+export function getEventDetail(param) {
+  return request({
+    url: '/center-traffic/traffic/getEventDetail',
+    method: 'post',
+    data: param
+  })
+}
+// 获取日历颜色状态
+export function getEventByCalendar(param) {
+  return request({
+    url: '/center-traffic/traffic/getEventByCalendar',
+    method: 'post',
+    data: param
   })
 }
 
-// 删除事件操作日志
-export function selectCentereventTLogListPC(eventCode) {
+// 获取事件分类
+export function getEventByEventType(param) {
   return request({
-    url: '/center-event/event/system/log/selectCentereventTLogListPC/' + eventCode,
-    method: 'get'
+    url: '/center-traffic/traffic/getEventByEventType',
+    method: 'post',
+    data: param
   })
 }
 
-// 查询摄像头绑定事件
-export function selectCameraEventByCameraId(cameraId) {
+// 获取上报排名
+export function getEventByReportorOrder(param) {
   return request({
-    url: '/center-monitor/cameraevent/selectCameraEventByCameraId/' + cameraId,
-    method: 'get'
+    url: '/center-traffic/traffic/getEventByReportorOrder',
+    method: 'post',
+    data: param
   })
 }
 
-// 森林防火图片
-export function listCenterdataTAttachByBusId(busId) {
+
+
+
+
+
+
+
+// 日志文件上传
+export function eventLogUpload(param) {
   return request({
-    url: '/center-data/attach/listCenterdataTAttachByBusId/' + busId,
-    method: 'get'
+    url: '/center-event/eventcatalogue/upload',
+    method: 'post',
+    data: param
   })
 }
-// 查询事件预警详细
-export function selectchannelCodeByCameraId(cameraId) {
+// 日志发送
+export function sendEventLog(param) {
   return request({
-    url: '/center-monitor/camerachannel/selectchannelCodeByCameraId/' + cameraId,
-    method: 'get'
+    url: '/center-event/eventcatalogue/uploadConext',
+    method: 'post',
+    data: param
   })
 }
-
-// 火点附近摄像头5公里显示
-export function selectFjsxt(longitude,latitude) {
+// 事件处理流程
+export function updateCentereventTEventcatalogueStatus(param) {
+  return request({
+    url: '/center-agriculture/fire/updateCentereventTEventcatalogueStatus',
+    method: 'post',
+    data: param
+  })
+}
+// 事件处理流程-事件类型
+export function listSJfl(param) {
   return request({
-    url: 'center-monitor/camera/selectFjsxt/'+longitude+'/' + latitude,
-    method: 'get'
+    url: '/center-agriculture/fire/listSJfl',
+    method: 'post',
+    data: param
+  })
+}
+// 事件处理流程-关联预案
+export function listYuAn() {
+  return request({
+    url: '/center-agriculture/fire/listYuAn',
+    method: 'post'
+  })
+}
+// 事件处理流程-签收部门
+export function selectByeventCode(eventCode) {
+  return request({
+    url: '/center-agriculture/fire/selectByeventCode/'+eventCode,
+    method: 'post'
+  })
+}
+// 事件处理流程-联动
+export function sendTask(param) {
+  return request({
+    url: '/center-agriculture/fire/sendTask',
+    method: 'post',
+    data:param
+  })
+}
+// 任务接口
+export function selectTaskBO() {
+  return request({
+    url: '/center-agriculture/fire/selectTaskBO',
+    method: 'post',
+  })
+}
+// 搜索物资
+export function listResourceByWz(param) {
+  return request({
+    url: '/center-agriculture/fire/listResourceByWz',
+    method: 'post',
+    data:param
+  })
+}
+// 任务领取部门列表
+export function selectTaskDtpts(param) {
+  return request({
+    url: '/center-agriculture/fire/selectTaskDtpts',
+    method: 'post',
+    data:param
+  })
+}
+// 任务领取
+export function receiveTask(param) {
+  return request({
+    url: '/center-agriculture/fire/receiveTask',
+    method: 'post',
+    data:param
+  })
+}
+// 任务拒绝
+export function refusedTask(param) {
+  return request({
+    url: '/center-agriculture/fire/refusedTask',
+    method: 'post',
+    data:param
+  })
+}
+// 事件调整关联预案
+export function updateYjYuAn(param) {
+  return request({
+    url: '/center-agriculture/fire/updateYjYuAn',
+    method: 'post',
+    data:param
+  })
+}
+// 事件详情截图直接上传日志
+export function uploadBase64(param) {
+  return request({
+    url: '/center-agriculture/fire/uploadBase64',
+    method: 'post',
+    data:param
   })
 }

+ 11 - 3
src/api/leader.js

@@ -1,23 +1,31 @@
 import request from '@/utils/request'
 
+// 获取左侧
+export function getRy() {
+  return request({
+    url: '/center-agriculture/fire/getRy',
+    method: 'post',
+  })
+}
+
 // 获取左侧人员列表
 export function getForestLeader(linJob,linType) {
   return request({
-    url: '/center-fire/VisuForestLeaderController/getForestLeader?linJob='+linJob+"&linType="+linType,
+    url: '/center-agriculture/VisuForestLeaderController/getForestLeader?linJob='+linJob+"&linType="+linType,
     method: 'get',
   })
 }
 // 点击左侧人员列表获取轨迹
 export function getLeaderTrack(trackById) {
   return request({
-    url: '/center-fire/VisuForestLeaderController/getLeaderTrack?trackById='+trackById,
+    url: '/center-agriculture/VisuForestLeaderController/getLeaderTrack?trackById='+trackById,
     method: 'get',
   })
 }
 // 巡林计划
 export function getPlanList(trackById) {
   return request({
-    url: '/center-fire/VisuForestLeaderController/getPlanList',
+    url: '/center-agriculture/VisuForestLeaderController/getPlanList',
     method: 'get',
   })
 }

+ 2 - 2
src/api/monitor.js

@@ -3,14 +3,14 @@ import request from '@/utils/request'
 // 获取左侧动态感知设备
 export function selectDeviceType() {
   return request({
-    url: '/center-fire/VisuForestMonitorCenterController/selectDeviceType',
+    url: '/center-agriculture/monitor/selectDeviceType',
     method: 'post',
   })
 }
 // 根据设备类型查看列表
 export function selectCameraByDeptId(deptId) {
   return request({
-    url: '/center-fire/VisuForestMonitorCenterController/selectCameraByDeptId',
+    url: '/center-agriculture/monitor/selectCameraByDeptId',
     method: 'post',
     data:{"deptId":deptId}
   })

+ 10 - 1
src/api/system/dept.js

@@ -33,6 +33,15 @@ export function treeselect() {
   })
 }
 
+
+// 查询部门下拉树结构(全部)
+export function treeselectAll() {
+  return request({
+    url: '/system/dept/treeselectAll',
+    method: 'get'
+  })
+}
+
 // 根据角色ID查询部门树结构
 export function roleDeptTreeselect(roleId) {
   return request({
@@ -65,4 +74,4 @@ export function delDept(deptId) {
     url: '/system/dept/' + deptId,
     method: 'delete'
   })
-}
+}

Fichier diff supprimé car celui-ci est trop grand
+ 162 - 109
src/assets/iconfont/iconfont.css


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
src/assets/iconfont/iconfont.js


+ 302 - 190
src/assets/iconfont/iconfont.json

@@ -1,261 +1,373 @@
 {
-  "id": "3263226",
-  "name": "integrated",
+  "id": "3540563",
+  "name": "ksh",
   "font_family": "iconfont",
   "css_prefix_text": "sj-icon-",
   "description": "",
   "glyphs": [
-		{
-		  "icon_id": "201559",
-		  "name": "火险",
-		  "font_class": "hx",
-		  "unicode": "e601",
-		  "unicode_decimal": 58881
-		},
-		{
-		  "icon_id": "5925322",
-		  "name": "已完成",
-		  "font_class": "ywc",
-		  "unicode": "e606",
-		  "unicode_decimal": 58886
-		},
-		{
-		  "icon_id": "5838816",
-		  "name": "人工",
-		  "font_class": "rg",
-		  "unicode": "e876",
-		  "unicode_decimal": 59510
-		},
-		{
-		  "icon_id": "18170107",
-		  "name": "卡口",
-		  "font_class": "kk",
-		  "unicode": "e962",
-		  "unicode_decimal": 59746
-		},
-	  {
-	    "icon_id": "5732759",
-	    "name": "事件定位",
-	    "font_class": "sjdw",
-	    "unicode": "ec32",
-	    "unicode_decimal": 60466
-	  },
-	  {
-	    "icon_id": "6677524",
-	    "name": "测量工具",
-	    "font_class": "clgj",
-	    "unicode": "e605",
-	    "unicode_decimal": 58884
-	  },
-	  {
-	    "icon_id": "12791526",
-	    "name": "林场资源",
-	    "font_class": "lczy",
-	    "unicode": "e60b",
-	    "unicode_decimal": 58891
-	  },
-	  {
-	    "icon_id": "19992082",
-	    "name": "图层切换",
-	    "font_class": "tcqh",
-	    "unicode": "e80d",
-	    "unicode_decimal": 59405
-	  },
-	  {
-	    "icon_id": "25495323",
-	    "name": "林斑资源",
-	    "font_class": "lbzy",
-	    "unicode": "e74d",
-	    "unicode_decimal": 59213
-	  },
-    {
-      "icon_id": "2116701",
-      "name": "取水口",
-      "font_class": "waterintake",
-      "unicode": "e633",
-      "unicode_decimal": 58931
+    {
+      "icon_id": "552767",
+      "name": "农药化肥",
+      "font_class": "huafei",
+      "unicode": "e62b",
+      "unicode_decimal": 58923
     },
     {
-      "icon_id": "5618779",
-      "name": "防火检查站",
-      "font_class": "checkpoint",
-      "unicode": "e672",
-      "unicode_decimal": 58994
+      "icon_id": "765262",
+      "name": "首页",
+      "font_class": "xubao",
+      "unicode": "e629",
+      "unicode_decimal": 58921
     },
     {
-      "icon_id": "7956057",
-      "name": "消火栓",
-      "font_class": "firehydrant",
-      "unicode": "e61b",
-      "unicode_decimal": 58907
+      "icon_id": "798261",
+      "name": "emi种子",
+      "font_class": "zhongzi",
+      "unicode": "e64a",
+      "unicode_decimal": 58954
     },
     {
-      "icon_id": "10362843",
-      "name": "起降点",
-      "font_class": "landing",
-      "unicode": "e930",
-      "unicode_decimal": 59696
+      "icon_id": "8353896",
+      "name": "三农补助",
+      "font_class": "buzhu",
+      "unicode": "e62a",
+      "unicode_decimal": 58922
     },
     {
-      "icon_id": "17923749",
-      "name": "气象站",
-      "font_class": "weatherstation",
-      "unicode": "e602",
-      "unicode_decimal": 58882
+      "icon_id": "12875287",
+      "name": "农机农具",
+      "font_class": "nongji",
+      "unicode": "e62c",
+      "unicode_decimal": 58924
     },
     {
-      "icon_id": "21110466",
-      "name": "林场",
-      "font_class": "farm",
-      "unicode": "e61d",
-      "unicode_decimal": 58909
+      "icon_id": "15667077",
+      "name": "生产量统计",
+      "font_class": "zhongzhi",
+      "unicode": "e643",
+      "unicode_decimal": 58947
     },
     {
-      "icon_id": "22611473",
-      "name": "森林防火队",
-      "font_class": "fireteam",
-      "unicode": "e622",
-      "unicode_decimal": 58914
+      "icon_id": "16301883",
+      "name": "保护:耕地保护责任目标考核",
+      "font_class": "gengdi",
+      "unicode": "e67c",
+      "unicode_decimal": 59004
     },
     {
-      "icon_id": "23402870",
-      "name": "水鹤",
-      "font_class": "watercrane",
-      "unicode": "e63d",
-      "unicode_decimal": 58941
+      "icon_id": "18262823",
+      "name": "畜禽养殖粪污处理情况30",
+      "font_class": "yangzhi",
+      "unicode": "e82e",
+      "unicode_decimal": 59438
     },
     {
-      "icon_id": "29358875",
-      "name": "水源",
-      "font_class": "channel",
-      "unicode": "e61f",
-      "unicode_decimal": 58911
+      "icon_id": "20858574",
+      "name": "农具",
+      "font_class": "nongju",
+      "unicode": "e62d",
+      "unicode_decimal": 58925
     },
     {
-      "icon_id": "12896496",
-      "name": "隐患治理@3x",
-      "font_class": "yinhuanzhilix",
-      "unicode": "e629",
-      "unicode_decimal": 58921
+      "icon_id": "21432644",
+      "name": "农民合作社",
+      "font_class": "hezuoshe",
+      "unicode": "e62e",
+      "unicode_decimal": 58926
     },
     {
-      "icon_id": "3351060",
-      "name": "虫子",
-      "font_class": "bch",
-      "unicode": "e73f",
-      "unicode_decimal": 59199
+      "icon_id": "26393477",
+      "name": "icon_盾、保护",
+      "font_class": "zhibao",
+      "unicode": "e64c",
+      "unicode_decimal": 58956
     },
     {
-      "icon_id": "5334216",
-      "name": "预警",
-      "font_class": "wcl",
-      "unicode": "e634",
-      "unicode_decimal": 58932
+      "icon_id": "30801480",
+      "name": "指挥调度",
+      "font_class": "zhdd",
+      "unicode": "e626",
+      "unicode_decimal": 58918
     },
     {
-      "icon_id": "6303467",
-      "name": "老虎",
-      "font_class": "dwbh",
-      "unicode": "e694",
-      "unicode_decimal": 59028
+      "icon_id": "30801481",
+      "name": "风险评估",
+      "font_class": "fxpg",
+      "unicode": "e627",
+      "unicode_decimal": 58919
     },
     {
-      "icon_id": "10454670",
-      "name": "待处理合同",
-      "font_class": "clz",
+      "icon_id": "30801482",
+      "name": "隐患排查",
+      "font_class": "yhpc",
       "unicode": "e628",
       "unicode_decimal": 58920
     },
     {
-      "icon_id": "28365653",
-      "name": "评测中心",
-      "font_class": "pczx",
+      "icon_id": "30801144",
+      "name": "预警",
+      "font_class": "yj",
+      "unicode": "e619",
+      "unicode_decimal": 58905
+    },
+    {
+      "icon_id": "30801145",
+      "name": "总数",
+      "font_class": "zs",
+      "unicode": "e624",
+      "unicode_decimal": 58916
+    },
+    {
+      "icon_id": "30801146",
+      "name": "逾期",
+      "font_class": "yq",
+      "unicode": "e625",
+      "unicode_decimal": 58917
+    },
+    {
+      "icon_id": "27690029",
+      "name": "电子巡更",
+      "font_class": "dzxg",
       "unicode": "e600",
       "unicode_decimal": 58880
     },
     {
-      "icon_id": "1132485",
-      "name": "消防工程",
-      "font_class": "szxf",
-      "unicode": "e641",
-      "unicode_decimal": 58945
+      "icon_id": "30792802",
+      "name": "林场",
+      "font_class": "lczy",
+      "unicode": "e61f",
+      "unicode_decimal": 58911
+    },
+    {
+      "icon_id": "30792803",
+      "name": "测量工具",
+      "font_class": "clgj",
+      "unicode": "e620",
+      "unicode_decimal": 58912
+    },
+    {
+      "icon_id": "30792804",
+      "name": "林班",
+      "font_class": "lbzy",
+      "unicode": "e621",
+      "unicode_decimal": 58913
+    },
+    {
+      "icon_id": "30792805",
+      "name": "图层切换",
+      "font_class": "tcqh",
+      "unicode": "e622",
+      "unicode_decimal": 58914
+    },
+    {
+      "icon_id": "30792806",
+      "name": "事件定位",
+      "font_class": "sjdw",
+      "unicode": "e623",
+      "unicode_decimal": 58915
+    },
+    {
+      "icon_id": "30790332",
+      "name": "已完成",
+      "font_class": "ywc",
+      "unicode": "e611",
+      "unicode_decimal": 58897
+    },
+    {
+      "icon_id": "30787117",
+      "name": "防火检查站",
+      "font_class": "checkpoint",
+      "unicode": "e601",
+      "unicode_decimal": 58881
+    },
+    {
+      "icon_id": "30787118",
+      "name": "病虫害",
+      "font_class": "bch",
+      "unicode": "e602",
+      "unicode_decimal": 58882
+    },
+    {
+      "icon_id": "30787119",
+      "name": "动物保护",
+      "font_class": "dwbh",
+      "unicode": "e603",
+      "unicode_decimal": 58883
+    },
+    {
+      "icon_id": "30787120",
+      "name": "处理中",
+      "font_class": "clz",
+      "unicode": "e604",
+      "unicode_decimal": 58884
+    },
+    {
+      "icon_id": "30787121",
+      "name": "数字环保",
+      "font_class": "szhb",
+      "unicode": "e605",
+      "unicode_decimal": 58885
+    },
+    {
+      "icon_id": "30787122",
+      "name": "火险",
+      "font_class": "hx",
+      "unicode": "e606",
+      "unicode_decimal": 58886
     },
     {
-      "icon_id": "1305472",
-      "name": "任务",
+      "icon_id": "30787123",
+      "name": "森林防火队",
+      "font_class": "fireteam",
+      "unicode": "e607",
+      "unicode_decimal": 58887
+    },
+    {
+      "icon_id": "30787125",
+      "name": "气象站",
+      "font_class": "weatherstation",
+      "unicode": "e608",
+      "unicode_decimal": 58888
+    },
+    {
+      "icon_id": "30787126",
+      "name": "任务中心",
       "font_class": "rwzx",
-      "unicode": "e63f",
-      "unicode_decimal": 58943
+      "unicode": "e609",
+      "unicode_decimal": 58889
     },
     {
-      "icon_id": "1727379",
-      "name": "33资源-线性",
-      "font_class": "szzx",
-      "unicode": "e8a4",
-      "unicode_decimal": 59556
+      "icon_id": "30787127",
+      "name": "林场",
+      "font_class": "farm",
+      "unicode": "e60a",
+      "unicode_decimal": 58890
     },
     {
-      "icon_id": "1727585",
-      "name": "404监控、摄像头-线性",
-      "font_class": "jkzx",
-      "unicode": "e900",
-      "unicode_decimal": 59648
+      "icon_id": "30787128",
+      "name": "取水口",
+      "font_class": "waterintake",
+      "unicode": "e60b",
+      "unicode_decimal": 58891
     },
     {
-      "icon_id": "2223423",
-      "name": "树",
-      "font_class": "szly",
-      "unicode": "e660",
-      "unicode_decimal": 58976
+      "icon_id": "30787129",
+      "name": "人工",
+      "font_class": "rg",
+      "unicode": "e60c",
+      "unicode_decimal": 58892
     },
     {
-      "icon_id": "3789247",
-      "name": "三农",
-      "font_class": "szny",
-      "unicode": "e62c",
-      "unicode_decimal": 58924
+      "icon_id": "30787130",
+      "name": "卡口",
+      "font_class": "kk",
+      "unicode": "e60d",
+      "unicode_decimal": 58893
     },
     {
-      "icon_id": "3868281",
+      "icon_id": "30787131",
       "name": "数据看板",
       "font_class": "shujzx",
-      "unicode": "eb66",
-      "unicode_decimal": 60262
+      "unicode": "e60e",
+      "unicode_decimal": 58894
+    },
+    {
+      "icon_id": "30787132",
+      "name": "起降点",
+      "font_class": "landing",
+      "unicode": "e60f",
+      "unicode_decimal": 58895
+    },
+    {
+      "icon_id": "30787133",
+      "name": "水源渠道",
+      "font_class": "channel",
+      "unicode": "e610",
+      "unicode_decimal": 58896
+    },
+    {
+      "icon_id": "30787135",
+      "name": "数字水利",
+      "font_class": "szsl",
+      "unicode": "e612",
+      "unicode_decimal": 58898
+    },
+    {
+      "icon_id": "30787136",
+      "name": "数字消防",
+      "font_class": "szxf",
+      "unicode": "e613",
+      "unicode_decimal": 58899
+    },
+    {
+      "icon_id": "30787137",
+      "name": "消火栓",
+      "font_class": "firehydrant",
+      "unicode": "e614",
+      "unicode_decimal": 58900
     },
     {
-      "icon_id": "9833324",
+      "icon_id": "30787138",
       "name": "智慧交通",
       "font_class": "szjt",
-      "unicode": "e918",
-      "unicode_decimal": 59672
+      "unicode": "e615",
+      "unicode_decimal": 58901
     },
     {
-      "icon_id": "11834349",
-      "name": "环保",
-      "font_class": "szhb",
-      "unicode": "e666",
-      "unicode_decimal": 58982
+      "icon_id": "30787139",
+      "name": "水鹤",
+      "font_class": "watercrane",
+      "unicode": "e616",
+      "unicode_decimal": 58902
     },
     {
-      "icon_id": "12306464",
-      "name": "水滴",
-      "font_class": "szsl",
-      "unicode": "e682",
-      "unicode_decimal": 59010
+      "icon_id": "30787140",
+      "name": "数字资源",
+      "font_class": "szzy",
+      "unicode": "e617",
+      "unicode_decimal": 58903
     },
     {
-      "icon_id": "12771512",
-      "name": "代办事件",
+      "icon_id": "30787141",
+      "name": "事件中心",
       "font_class": "sjzx",
-      "unicode": "e61e",
-      "unicode_decimal": 58910
+      "unicode": "e618",
+      "unicode_decimal": 58904
     },
     {
-      "icon_id": "12820190",
-      "name": "应急管理",
+      "icon_id": "30787143",
+      "name": "数字林业",
+      "font_class": "szly",
+      "unicode": "e61a",
+      "unicode_decimal": 58906
+    },
+    {
+      "icon_id": "30787144",
+      "name": "数字应急",
       "font_class": "szyj",
-      "unicode": "e632",
-      "unicode_decimal": 58930
+      "unicode": "e61b",
+      "unicode_decimal": 58907
+    },
+    {
+      "icon_id": "30787145",
+      "name": "监控中心-摄像头",
+      "font_class": "jkzx",
+      "unicode": "e61c",
+      "unicode_decimal": 58908
+    },
+    {
+      "icon_id": "30787146",
+      "name": "未处理",
+      "font_class": "wcl",
+      "unicode": "e61d",
+      "unicode_decimal": 58909
+    },
+    {
+      "icon_id": "30787147",
+      "name": "数字农业",
+      "font_class": "szny",
+      "unicode": "e61e",
+      "unicode_decimal": 58910
     }
   ]
 }

Fichier diff supprimé car celui-ci est trop grand
+ 67 - 37
src/assets/iconfont/iconfont.svg


BIN
src/assets/iconfont/iconfont.ttf


BIN
src/assets/iconfont/iconfont.woff


BIN
src/assets/iconfont/iconfont.woff2


BIN
src/assets/images/integrated/bigdata-header-nav-left.png


BIN
src/assets/images/integrated/bigdata-header-nav-re.png


BIN
src/assets/images/integrated/bigdata-header-nav-right.png


BIN
src/assets/images/mascot.png


Fichier diff supprimé car celui-ci est trop grand
+ 2936 - 1417
src/assets/styles/base.scss


Fichier diff supprimé car celui-ci est trop grand
+ 655 - 356
src/components/TVWall.vue


+ 2 - 2
src/components/clock.vue

@@ -7,11 +7,11 @@
 				<span>{{time}}</span>
 			</div>
 			<div class="week m-r-10">{{weekC}}</div>
-			<div class="line m-r-10"></div>
+			<!-- <div class="line m-r-10"></div>
 			<div class="day m-r-10">
 				<span>{{weatherInfo.weather}} {{weatherInfo.wind}}</span>
 				<span>{{weatherInfo.fireTit}} {{weatherInfo.fireLevel}}</span>
-			</div>
+			</div> -->
 		</div>
 	</div>
 </template>

Fichier diff supprimé car celui-ci est trop grand
+ 927 - 1106
src/components/eventLocation.vue


+ 280 - 80
src/components/supermap.vue

@@ -1,20 +1,39 @@
 <template>
-  <div v-bind:id="mapDivId" ref="map" style="width: 100%; height: 100%;background: none;"></div>
+  <div v-bind:id="mapDivId" ref="map" style="width: 100%; height: 100%;background: none;">
+    <div id="toolbar" v-if="isdynamicPlotting" class="panel panel-primary"
+         style="position:absolute;z-index: 9999;top:4rem;left: 1rem; border-radius: 4px; width: fit-content;height:635px;overflow-y:scroll;background:#040b1f">
+      <div class="panel-heading" id="panelheading">
+        <h5 style=" color: #2bacf7;font-size: 1rem;padding:.5rem;">鼠标标绘</h5>
+      </div>
+      <div class="panel-body content" id="panelbodycontent" style="margin-bottom: .5rem;padding-right: .5rem;">
+        <div align="right" class="button-group">
+          <el-button type="success" @click="PlottingDrawCancel">取消标绘</el-button>
+          &nbsp;&nbsp;
+          <el-button type="success" @click="clearLayers">清空标绘</el-button>
+        </div>
+      </div>
+      <div id="plottingPanel">
+        <div id="plotPanel" style="width: 15rem;height:50%;overflow-y:scroll;">
+        </div>
+      </div>
+    </div>
+  </div>
 </template>
-
 <script>
-  import 'leaflet-side-by-side'
-  import '@supermap/iclient-leaflet'
-  import 'leaflet/dist/leaflet.css'
-  import 'leaflet.markercluster/dist/leaflet.markercluster-src.js'
-  import 'leaflet.markercluster/dist/MarkerCluster.css'
-  import 'leaflet.markercluster/dist/MarkerCluster.Default.css'
-  import 'leaflet-draw'
-  import 'leaflet-draw/dist/leaflet.draw.css'
-
-  import L from 'leaflet'
+  // import 'leaflet-side-by-side'
+  // import '@supermap/iclient-leaflet'
+  // import 'leaflet/dist/leaflet.css'
+  // import 'leaflet.markercluster/dist/leaflet.markercluster-src.js'
+  // import 'leaflet.markercluster/dist/MarkerCluster.css'
+  // import 'leaflet.markercluster/dist/MarkerCluster.Default.css'
+  // import 'leaflet-draw'
+  // import 'leaflet-draw/dist/leaflet.draw.css'
+  // import L from 'leaflet'
 
-  import { getSuperMap, iconList } from '@/api/components/supermap.js'
+  import {
+    getSuperMap,
+    iconList
+  } from '@/api/components/supermap.js'
   // import {setToken} from '../plugins/auth'
   import modal from '@/plugins/modal'
 
@@ -22,12 +41,16 @@
     name: 'sookaSuperMap',
     data() {
       return {
+        plottingdrawControl: null,
+        plottingLayer: null,
         mapDivId: '',
         map: null,
         layers: [],
+        layersBytype: [],
         isAggregationLayers: [],
         radiusLayers: [],
         myGroup: [],
+        myGroupBytype: [],
         isAggregationMyGroup: [],
         polygon: null,
         connectLayer: [],
@@ -35,9 +58,10 @@
         graphicsLayer: [],
         latLngLayers: [],
         latLngGroup: [],
-        isEditableLayers: false,//绘图控件
-        drawControl: null,//绘图控件
-        deckglLayer: null//图层Layer
+        isEditableLayers: false, //绘图控件
+        drawControl: null, //绘图控件
+        deckglLayer: null, //图层Layer
+        deckglLayerList: [] //图层Layer(数组)
       }
     },
     watch: {
@@ -80,7 +104,9 @@
                   for (let i = 0; i < latlng.length - 1; i++) {
                     let start = latlng[i]
                     let end = latlng[i + 1]
-                    dis += window.L.latLng([start.lat, start.lng]).distanceTo([end.lat, end.lng])//计算两个点之间的距离,并累加
+                    dis += window.L.latLng([start.lat, start.lng]).distanceTo([end.lat,
+                      end.lng
+                    ]) //计算两个点之间的距离,并累加
                   }
                   //结果得到的也是number类型,单位是KM
                   modal.msg((dis / 10e2).toFixed(2) + 'km')
@@ -214,58 +240,91 @@
       mapDiv: null,
       codes: null,
       mapSite: {},
-      isSideBySide: null,
+      isdynamicPlotting: false,//动态标绘表格
+      isSideBySide: false,
       showLatLng: null,
       showAreaLatLng: null,
       showLineLatLng: null
     },
     methods: {
-      clearM: async function(isAggregation) {//清理地图标点
+      loadHeatMap: async function() {
+        var heatNumbers = 150, heatRadius = 30;
+        var num = parseInt(heatNumbers);
+        num = (num > 0) ? num : 0;
+        var radius = parseInt(heatRadius);
+        radius = (radius > 0) ? radius : 0;
+        var heatPoints = [];
+        for (var i = 0; i < num; i++) {
+          heatPoints[i] = [Math.random() * 0.28 + 42, Math.random() * 0.5 + 125, Math.random() * 80];
+        }
+        var resultLayer = window.L.heatLayer(heatPoints, {
+          radius: radius,
+          minOpacity: 0.5
+        }).addTo(this.map);
+      },
+      clearM: async function(isAggregation) { //清理地图标点
         if (isAggregation) {
           if (this.isAggregationMyGroup != undefined && this.isAggregationMyGroup != false) {
             this.isAggregationMyGroup.clearLayers()
           }
-          this.map.removeLayer(this.isAggregationLayers)
-          this.isAggregationLayers = []
-          this.radiusLayers = []
-          this.isAggregationLayers = window.L.markerClusterGroup({
-            //设置为true时显示聚类所占据的范围
-            showCoverageOnHover: true,
-            //设置为true时会向低一级聚类缩放
-            zoomToBoundsOnClick: true,
-            //增加点位时增加聚合动画(否则会出问题)
-            animateAddingMarkers: true,
-            //最大缩放级别点击聚合图标展开图标
-            spiderfyOnMaxZoom: true
-          })
-
+          if (this.isAggregationLayers != null && this.isAggregationLayers.length > 0) {
+            this.map.removeLayer(this.isAggregationLayers)
+            this.isAggregationLayers = []
+            this.radiusLayers = []
+            this.isAggregationLayers = window.L.markerClusterGroup({
+              //设置为true时显示聚类所占据的范围
+              showCoverageOnHover: true,
+              //设置为true时会向低一级聚类缩放
+              zoomToBoundsOnClick: true,
+              //增加点位时增加聚合动画(否则会出问题)
+              animateAddingMarkers: true,
+              //最大缩放级别点击聚合图标展开图标
+              spiderfyOnMaxZoom: true
+            })
+          }
         } else {
           if (this.myGroup != undefined && this.myGroup != false) {
             this.myGroup.clearLayers()
           }
           this.layers = []
         }
-
       },
-      clearC: async function() {//清理地图画线
+      clearMByType: async function(type) { //清理地图标点(根据类型,可取消落点)
+        if (this.myGroupBytype != undefined && this.myGroupBytype != false) {
+          for (var i = this.myGroupBytype.length - 1; i >= 0; i--) {
+            if (this.myGroupBytype[i].type == type) {
+              this.myGroupBytype[i].myGroup.clearLayers()
+              this.myGroupBytype.splice(i, 1)
+            }
+          }
+        }
+        if (this.layersBytype != null && this.layersBytype.length > 0) {
+          for (var i = this.layersBytype.length - 1; i >= 0; i--) {
+            if (this.layersBytype[i].type == type) {
+              this.layersBytype.splice(i, 1)
+            }
+          }
+        }
+      },
+      clearC: async function() { //清理地图画线
         if (this.connectLayer != undefined && this.connectLayer != false) {
           this.connectLayer.clearLayers()
         }
         this.connectLayer = []
       },
-      clearCTwo: async function() {//清理地图画线two
+      clearCTwo: async function() { //清理地图画线two
         if (this.connectLayerTwo != undefined && this.connectLayerTwo != false) {
           this.connectLayerTwo.clearLayers()
         }
         this.connectLayerTwo = []
       },
-      clearG: async function() {//清理地图图形
+      clearG: async function() { //清理地图图形
         if (this.graphicsLayer != undefined && this.graphicsLayer != false) {
           this.graphicsLayer.clearLayers()
         }
         this.graphicsLayer = []
       },
-      clearP: async function() {//清理点击事件落点
+      clearP: async function() { //清理点击事件落点
         if (this.latLngGroup != undefined && this.latLngGroup != false) {
           this.latLngGroup.clearLayers()
         }
@@ -276,6 +335,7 @@
         this.mapDivId = this.mapDiv
         let mapSite = this.mapSite
         let isSideBySide = this.isSideBySide
+        let isdynamicPlotting = this.isdynamicPlotting
         // setToken("eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VyX2tleSI6ImY5Zjg3ZjVmLWQ4NTctNDQxZC04NmQ5LTg4OWExZWRlODE4ZSIsInVzZXJuYW1lIjoiYWRtaW4ifQ.26mAzmaM9pUza9585aLnRMyRd4GxvrWbCxN0erYsuiBDYQiYnyc-TwXVNDI7Xrpt3Bqmbnul-XMszOxYQi12LA");
         _that.isAggregationLayers = window.L.markerClusterGroup({
           //设置为true时显示聚类所占据的范围
@@ -287,7 +347,7 @@
           //最大缩放级别点击聚合图标展开图标
           spiderfyOnMaxZoom: true
         })
-        if (!isSideBySide) {  //只有一个地图
+        if (!isSideBySide) { //只有一个地图
           if (this.codes.length != 1) {
             modal.msgError('请输入一个地图code!')
             return
@@ -298,13 +358,17 @@
               let url = mapList[0].url
               let centerLat = mapList[0].centerLat
               let centerLng = mapList[0].centerLng
-              let zoom = mapList[0].zoom  //默认比例
-              let maxZoom = mapList[0].maxZoom  //最大比例
+              let zoom = mapList[0].zoom //默认比例
+              let maxZoom = mapList[0].maxZoom //最大比例
               let minZoom = mapList[0].minZoom //最小比例
-              let zoomControl = mapList[0].zoomControl == null ? true : mapList[0].zoomControl  //地图缩放+-号是否显示
-              let attributionControl = mapList[0].attributionControl == null ? true : mapList[0].attributionControl //logo是否显示
-              let logoControl = mapList[0].logoControl == null ? false : mapList[0].logoControl //logo是否显示
-              let dragging = mapList[0].dragging == null ? true : mapList[0].dragging //地图是否允许鼠标拖拽
+              let zoomControl = mapList[0].zoomControl == null ? true : mapList[0]
+                .zoomControl //地图缩放+-号是否显示
+              let attributionControl = mapList[0].attributionControl == null ? true : mapList[0]
+                .attributionControl //logo是否显示
+              let logoControl = mapList[0].logoControl == null ? false : mapList[0]
+                .logoControl //logo是否显示
+              let dragging = mapList[0].dragging == null ? true : mapList[0]
+                .dragging //地图是否允许鼠标拖拽
 
               let defaultConfigure = {
                 crs: window.L.CRS.EPSG4326,
@@ -320,6 +384,7 @@
               }
               let loadConfiguration = Object.assign(defaultConfigure, mapSite)
               this.map = window.L.map(this.mapDiv, loadConfiguration)
+
               //鼠标双击落点
               if (this.showLatLng != undefined) {
                 let icon = new window.L.Icon({
@@ -367,7 +432,8 @@
                   let editableLayer = e.layer
                   let layerType = e.layerType
                   editableLayer.on('dblclick', function(e) {
-                    if (layerType === 'polygon' || layerType === 'rectangle') {
+                    if (layerType === 'polygon' || layerType ===
+                      'rectangle') {
                       let latlng = editableLayer.getLatLngs()[0]
                       _that.showAreaLatLng(latlng)
                     }
@@ -409,10 +475,12 @@
                   editableLayers.addLayer(editableLayer)
                 })
               }
+              // url = 'https://iserver.supermap.io/iserver/services/map-china400/rest/maps/China_4326'
+
               window.L.supermap.tiledMapLayer(url).addTo(this.map)
             }
           })
-        } else {  //卷帘地图
+        } else { //卷帘地图
           if (this.codes.length != 2) {
             modal.msgError('请输入两个地图code!')
             return
@@ -424,13 +492,17 @@
               let osmurl = mapList[1].url
               let centerLat = mapList[0].centerLat
               let centerLng = mapList[0].centerLng
-              let zoom = mapList[0].zoom  //默认比例
-              let maxZoom = mapList[0].maxZoom  //最大比例
+              let zoom = mapList[0].zoom //默认比例
+              let maxZoom = mapList[0].maxZoom //最大比例
               let minZoom = mapList[0].minZoom //最小比例
-              let zoomControl = mapList[0].zoomControl == null ? true : mapList[0].zoomControl  //地图缩放+-号是否显示
-              let attributionControl = mapList[0].attributionControl == null ? true : mapList[0].attributionControl //logo是否显示
-              let logoControl = mapList[0].logoControl == null ? false : mapList[0].logoControl //logo是否显示
-              let dragging = mapList[0].dragging == null ? true : mapList[0].dragging //地图是否允许鼠标拖拽
+              let zoomControl = mapList[0].zoomControl == null ? true : mapList[0]
+                .zoomControl //地图缩放+-号是否显示
+              let attributionControl = mapList[0].attributionControl == null ? true : mapList[0]
+                .attributionControl //logo是否显示
+              let logoControl = mapList[0].logoControl == null ? false : mapList[0]
+                .logoControl //logo是否显示
+              let dragging = mapList[0].dragging == null ? true : mapList[0]
+                .dragging //地图是否允许鼠标拖拽
 
               let defaultConfigure = {
                 crs: window.L.CRS.EPSG4326,
@@ -494,7 +566,8 @@
                   let editableLayer = e.layer
                   let layerType = e.layerType
                   editableLayer.on('dblclick', function(e) {
-                    if (layerType === 'polygon' || layerType === 'rectangle') {
+                    if (layerType === 'polygon' || layerType ===
+                      'rectangle') {
                       let latlng = editableLayer.getLatLngs()[0]
                       _that.showAreaLatLng(latlng)
                     }
@@ -563,16 +636,17 @@
         for (let i = 0; i < line.length - 1; i++) {
           let start = line[i]
           let end = line[i + 1]
-          dis += window.L.latLng([start.lat, start.lng]).distanceTo([end.lat, end.lng])//计算两个点之间的距离,并累加
+          dis += window.L.latLng([start.lat, start.lng]).distanceTo([end.lat, end.lng]) //计算两个点之间的距离,并累加
         }
         //结果得到的也是number类型,单位是 米
         return (dis / 10e2).toFixed(2) + 'km'
       },
-      setMarkers: function(markersList) {//地图标点
+      setMarkers: function(markersList) { //地图标点
         const _that = this
         for (let i = 0; i < markersList.length; i++) {
-          let isAggregation = markersList[i].isAggregation == null ? false : markersList[i].isAggregation  //是否聚合点位
-          let keepBindPopup = isAggregation == true ? false : markersList[i].keepBindPopup  //提示气泡是否一直显示
+          let isAggregation = markersList[i].isAggregation == null ? false : markersList[i]
+            .isAggregation //是否聚合点位
+          let keepBindPopup = isAggregation == true ? false : markersList[i].keepBindPopup //提示气泡是否一直显示
 
           let icon = new window.L.Icon({
             iconUrl: iconList[markersList[i].icon],
@@ -626,14 +700,71 @@
 
         }
       },
-      setMarkersRadius: function(markersList) {//地图标点带范围
+      setMarkersByType: function(markersList, type) { //地图标点(根据类型,可取消落点 clearMByType方法)
+        const _that = this
+        let lay = []
+        let myGroup = []
+        for (let i = 0; i < markersList.length; i++) {
+          let keepBindPopup = markersList[i].keepBindPopup //提示气泡是否一直显示
+
+          let icon = new window.L.Icon({
+            iconUrl: iconList[markersList[i].icon],
+            iconSize: [48, 48],
+            iconAnchor: [24, 40],
+            popupAnchor: [-3, -40],
+            shadowSize: [41, 41]
+          })
+          let markerClick = window.L.marker([markersList[i].lat, markersList[i].lng], {
+            icon: icon
+          }).addTo(this.map)
+          if (markersList[i].bindPopupHtml != null && markersList[i].bindPopupHtml !== '') {
+            let html = markersList[i].bindPopupHtml
+            if (keepBindPopup) {
+              markerClick.bindPopup(html, {
+                autoClose: false,
+                closeOnClick: null,
+                closeButton: false
+              }).openPopup(markerClick.getLatLng())
+            } else {
+              markerClick.on('mouseover', function() {
+                let html = markersList[i].bindPopupHtml
+                this.bindPopup(html).openPopup(this.getLatLng())
+              }).on('mouseout', function() {
+                this.closePopup()
+              })
+            }
+          }
+          if (markersList[i].click != null && markersList[i].click !== '') {
+            if (markersList[i].parameter != null && markersList[i].parameter !== '') {
+              markerClick.on('click', function() {
+                let clickName = markersList[i].click
+                _that.$emit(clickName, markersList[i].parameter)
+              })
+            } else {
+              markerClick.on('click', function() {
+                let clickName = markersList[i].click
+                _that.$emit(clickName)
+              })
+            }
+          }
+          lay.push(markerClick)
+          _that.layersBytype.push({ type: type, marker: markerClick })
+          myGroup = window.L.layerGroup(lay)
+          _that.myGroupBytype.push({ type: type, myGroup: myGroup })
+          this.map.addLayer(myGroup)
+        }
+      },
+      setMarkersRadius: function(markersList) { //地图标点带范围
         const _that = this
         for (let i = 0; i < markersList.length; i++) {
-          let isAggregation = markersList[i].isAggregation == null ? false : markersList[i].isAggregation  //是否聚合点位
-          let keepBindPopup = isAggregation == true ? false : markersList[i].keepBindPopup  //提示气泡是否一直显示
+          let isAggregation = markersList[i].isAggregation == null ? false : markersList[i]
+            .isAggregation //是否聚合点位
+          let keepBindPopup = isAggregation == true ? false : markersList[i].keepBindPopup //提示气泡是否一直显示
 
-          _that.polygon = window.L.circle([markersList[i].lat, markersList[i].lng], { radius: markersList[i].radius * 1000 })
-          let icon = new window.L.Icon({//传感器
+          _that.polygon = window.L.circle([markersList[i].lat, markersList[i].lng], {
+            radius: markersList[i].radius
+          })
+          let icon = new window.L.Icon({ //传感器
             iconUrl: iconList[markersList[i].icon],
             iconSize: [48, 48],
             iconAnchor: [24, 40],
@@ -689,13 +820,15 @@
           }
         }
       },
-      setConnectList: function(connectList, color) {//地图画线
+      setConnectList: function(connectList, color) { //地图画线
         const _that = this
         let points = []
         for (let i = 0; i < connectList.length; i++) {
-          points.push([connectList[i].lat, connectList[i].lng])//创建点
+          points.push([connectList[i].lat, connectList[i].lng]) //创建点
         }
-        let polyline = window.L.polyline(points, { color: color })
+        let polyline = window.L.polyline(points, {
+          color: color
+        })
         if (this.connectLayer != undefined && this.connectLayer != false) {
           _that.connectLayer.addLayer(polyline)
         } else {
@@ -703,13 +836,15 @@
           _that.connectLayer.addLayer(polyline)
         }
       },
-      setConnectTwoList: function(connectList, color) {//地图画线图层2
+      setConnectTwoList: function(connectList, color) { //地图画线图层2
         const _that = this
         let points = []
         for (let i = 0; i < connectList.length; i++) {
-          points.push([connectList[i].lat, connectList[i].lng])//创建点
+          points.push([connectList[i].lat, connectList[i].lng]) //创建点
         }
-        let polyline = window.L.polyline(points, { color: color })
+        let polyline = window.L.polyline(points, {
+          color: color
+        })
         if (this.connectLayerTwo != undefined && this.connectLayerTwo != false) {
           _that.connectLayerTwo.addLayer(polyline)
         } else {
@@ -717,13 +852,15 @@
           _that.connectLayerTwo.addLayer(polyline)
         }
       },
-      setGraphicsList: function(graphicsList, color) {//地图图形
+      setGraphicsList: function(graphicsList, color) { //地图图形
         const _that = this
         let points = []
         for (let i = 0; i < graphicsList.length; i++) {
-          points.push([graphicsList[i].lat, graphicsList[i].lng])//创建点
+          points.push([graphicsList[i].lat, graphicsList[i].lng]) //创建点
         }
-        let polygon = window.L.polygon(points, { color: color })
+        let polygon = window.L.polygon(points, {
+          color: color
+        })
         polygon.addTo(this.map)
         if (this.graphicsLayer != undefined && this.graphicsLayer != false) {
           _that.graphicsLayer.addLayer(polygon)
@@ -732,16 +869,19 @@
           _that.graphicsLayer.addLayer(polygon)
         }
       },
-      dropLocation: function(lat, lng) {//落点定位
-        this.controlLevel(10)
-        setTimeout(() => {
-          this.map.panTo([lat, lng])
-        }, 500)
+      dropLocation: function(lat, lng) { //落点定位
+
+        this.map.flyTo([lat, lng], 14, { duration: 2 })
+
+        // this.controlLevel(12)
+        // setTimeout(() => {
+        //   this.map.panTo([lat, lng])
+        // }, 1000)
       },
-      controlLevel: function(level) {//控制地图缩放级别
+      controlLevel: function(level) { //控制地图缩放级别
         this.map.setZoom(level)
       },
-      layerSwitching: function(url, isClear) {//图层切换  url 图层地址   isClear  是否清除图层
+      layerSwitching: function(url, isClear) { //图层切换  url 图层地址   isClear  是否清除图层
         if (isClear) {
           if (this.deckglLayer != null) {
             this.deckglLayer.remove()
@@ -749,11 +889,71 @@
         }
         this.deckglLayer = window.L.supermap.tiledMapLayer(url, {})
         this.map.addLayer(this.deckglLayer)
+      },
+      layerSwitchingList: function(urlList) { //图层切换数组  urlList 图层地址(数组)
+        if (this.deckglLayerList != null && this.deckglLayerList.length > 0) {
+          for (let i = 0; i < this.deckglLayerList.length; i++) {
+            this.deckglLayerList[i].remove()
+          }
+        }
+        if (urlList != null && urlList.length > 0) {
+          for (let i = 0; i < urlList.length; i++) {
+            this.deckglLayer = window.L.supermap.tiledMapLayer(urlList[i], {})
+            this.deckglLayerList.push(this.deckglLayer)
+            this.map.addLayer(this.deckglLayer)
+          }
+        }
+      },
+      /** ----------------------------------动态绘制开始------------------------------------- */
+      clearLayers: function() {
+        this.plottingLayer.removeAllFeatures()
+      },
+      PlottingDrawCancel: function() {
+        this.plottingdrawControl.handler.disable()
+      },
+      dynamicPlotting: function() {
+        setTimeout(() => {
+          var host = 'https://iserver.supermap.io'
+          var serverUrl = host + '/iserver/services/plot-jingyong/rest/plot/'
+
+          var me = this
+          this.plottingLayer = window.L.supermap.plotting.plottingLayer('plot',
+            serverUrl)
+          this.plottingLayer.spatialAnalystUrl =
+            host + '/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst'
+          this.plottingLayer.addTo(this.map)
+          this.plottingdrawControl = window.L.supermap.plotting.drawControl(this
+            .plottingLayer)
+          this.plottingdrawControl.addTo(this.map)
+          var editControl = window.L.supermap.plotting.editControl()
+          editControl.addTo(this.map)
+          window.L.supermap.plotting.initPlotPanel('plotPanel', serverUrl, this
+            .plottingdrawControl)
+        }, 2000)
       }
+      /** ----------------------------------动态绘制结束------------------------------------- */
     }
   }
 </script>
 
-<style scoped>
+<style lang="scss" scoped>
+  @import '@/assets/styles/base.scss';
+
+  .button-group {
+    button {
+      padding: 0 0.3rem;
+      height: 1.5rem;
+      background-color: #112543;
+      color: #2bacf7;
+      border: 1px solid #33467f;
+    }
+
+    button:hover {
+      border: 1px solid #33467f;
+      background-color: #112543;
+      text-shadow: 0 0 15px rgba($color: $inBlueHover, $alpha: 1.0);
+    }
+  }
+
 
 </style>

+ 140 - 39
src/components/v-fastmenu.vue

@@ -1,26 +1,54 @@
 <template>
 	<div class="fast-menu">
 		<div class="menu-list">
-			<!-- <a v-for="(fastMenu,index) in fastMenu" @click="backToMainPage" :href="fastMenu.path" :key="index" class="header-right">
-				<!-- <span><i class="iconfont" :class="fastMenu.icon"></i><el-badge :value="fastMenu.msValue" :max="99" class="item">{{fastMenu.name}}</el-badge></span> -->
-			<!-- 	<span><i :class="fastMenu.icon"></i>{{fastMenu.name}}</span> -->
-			<!-- </a> -->
-			<a  @click="backToMainPage" class="header-right">
-				<!-- <span><i class="iconfont" :class="fastMenu.icon"></i><el-badge :value="fastMenu.msValue" :max="99" class="item">{{fastMenu.name}}</el-badge></span> -->
+			<!-- 	<a  @click="backToMainPage" class="header-right">
 				<span><i class="el-icon-s-home"></i>返回首页</span>
 			</a>
 			<a  @click="backToMainPage" class="header-right">
-				<!-- <span><i class="iconfont" :class="fastMenu.icon"></i><el-badge :value="fastMenu.msValue" :max="99" class="item">{{fastMenu.name}}</el-badge></span> -->
 				<span><i class="el-icon-monitor"></i>管理端</span>
-			</a>
+			</a> -->
+			<el-popover placement="top-start" trigger="hover" width="300px">
+				<div class="user-tip">
+					<div class="u-tip-1">
+						<img src="@/assets/images/user-photo.png" />
+						<div class="user-info">
+							<div class="user-name">
+								<h2>{{ nickName }}</h2><span>{{ deptNames }}</span>
+							</div>
+							<div class="phone-number">{{ phonenumber }}</div>
+						</div>
+					</div>
+					<div style="margin-bottom: 1rem;">
+						<el-button type="primary" size="small" @click="resetPwd">修改密码</el-button>
+						<el-button type="warning" size="small" @click="logout">退出登录</el-button>
+					</div>
+					<a href="https://117.78.49.164:15001/index58" style="border-top: 1px solid #334780;"><i class="el-icon-s-home"></i>返回首页</a>
+<!--					<a href="#"><i class="el-icon-monitor"></i>管理系统</a>-->
+				</div>
+				<div slot="reference" style="text-align: center; width:4rem;height:3rem;">
+					<img src="@/assets/images/mascot-small.png" />
+				</div>
+			</el-popover>
 		</div>
+    <el-dialog title="修改密码" :visible.sync="isResetPwd" v-if="isResetPwd" width="30%" append-to-body>
+      <resetPwd :user="user" />
+    </el-dialog>
 	</div>
 </template>
 
 <script>
+import resetPwd from "../views/system/user/profile/resetPwd";
+import { getUserProfile } from "@/api/system/user";
 	export default {
+    components: {resetPwd },
 		data() {
 			return {
+        user: {},
+				visible: false,
+        isResetPwd: false,
+        nickName:null,
+        deptNames:null,
+        phonenumber:null,
 				// fastMenu: [{
 				// 		name: '返回首页',
 				// 		path: '/',
@@ -37,19 +65,48 @@
 
 			}
 		},
-		methods:{
-			backToMainPage(){
-			  let href = window.location.href
-			  let protacal = href.substr(0,href.indexOf("://")+3)
-			  let mo = href.lastIndexOf(":") > 6  ? href.lastIndexOf(":") : href.lastIndexOf("/")
-			  let ip = href.substr(href.indexOf("://")+3,mo);
-			  let url =href.substr(0,mo)
-			  let toUrl = url +":15001/index58"
-			  window.location.href = toUrl
+    created() {
+      this.getUser()
+    },
+		methods: {
+      getUser(){
+        getUserProfile().then(response => {
+          this.nickName=response.data.nickName
+          this.deptNames=response.data.deptNames
+          this.phonenumber=response.data.phonenumber
+        });
+      },
+      resetPwd(){
+        getUserProfile().then(response => {
+          this.user = response.data;
+          this.roleGroup = response.roleGroup;
+          this.postGroup = response.postGroup;
+          this.isResetPwd=true
+        });
+      },
+			backToMainPage() {
+				let href = window.location.href
+				let protacal = href.substr(0, href.indexOf("://") + 3)
+				let mo = href.lastIndexOf(":") > 6 ? href.lastIndexOf(":") : href.lastIndexOf("/")
+				let ip = href.substr(href.indexOf("://") + 3, mo);
+				let url = href.substr(0, mo)
+				let toUrl = url + ":15001/index58"
+				window.location.href = toUrl
 			},
+      async logout() {
+        this.$confirm('确定注销并退出系统吗?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          this.$store.dispatch('LogOut').then(() => {
+            location.href = '/index';
+          })
+        }).catch(() => {});
+      }
 		},
 		computed: {},
-		
+
 
 	}
 </script>
@@ -57,6 +114,64 @@
 <style rel="stylesheet/scss" lang="scss">
 	@import '@/assets/styles/base.scss';
 
+	.user-tip {
+		width: 100%;
+		display: flex;
+		font-size: .8rem;
+		flex-direction: column;
+
+		.u-tip-1 {
+			display: flex;
+			margin-bottom: 1rem;
+
+			img {
+				margin-right: 1rem;
+				border-radius: .3rem;
+			}
+
+			.user-info {
+				display: flex;
+				flex-direction: column;
+				justify-content: space-between;
+
+				.user-name {
+					display: flex;
+					align-items: flex-end;
+
+					h2 {
+						color: $inBlue;
+						margin-right: .5rem;
+						font-weight: bolder;
+					}
+
+					span {
+						color: $grayBlue;
+					}
+				}
+
+				.phone-number {
+					color: $inBlue;
+				}
+			}
+		}
+
+		a {
+			color: $inBlue;
+			display: flex;
+			border-bottom: 1px solid #334780;
+			justify-content: center;
+			align-items: center;
+			height: 2rem;
+			i{
+				margin-right:.3rem ;
+			}
+		}
+		a:hover{
+			color: $inBlueHover;
+			box-shadow:$shadowTip
+		}
+	}
+
 
 	.fast-menu {
 		right: 0.5rem;
@@ -68,27 +183,6 @@
 			display: flex;
 			align-items: center;
 
-			span {
-				// min-width: 4.625rem;
-				font-size: 12px;
-				display: flex;
-				align-items: center;
-				justify-content: center;
-				padding: 10px 15px;
-				color: $fBlue;
-				height: 100%;
-				cursor: pointer;
-				text-align: center;
-
-				i {
-					padding-right: 3px;
-				}
-			}
-
-			span:hover {
-				color: $fBlueHover;
-				background-color: #032530;
-			}
 		}
 
 		.el-badge__content.is-fixed {
@@ -99,5 +193,12 @@
 			border: 0;
 		}
 
+
+	}
+	.el-popover{
+		background:#0c1327;
+		border:1px solid #334780;
+		box-shadow:$shadowListHover;
+		border-radius: 1rem;
 	}
 </style>

+ 13 - 12
src/components/v-header.vue

@@ -3,20 +3,21 @@
 	<div class="header">
 		<Clock></Clock>
 		<!--中间LOGO -->
-		<a class="title" href="/integrated/index" ><img
-				src="@/assets/images/integrated/bigdata-header-nav-left2.png" />
-			<h3><img class="logo" src="@/assets/images/integrated/logo-small.png" />态势感知监管平台 {{titlename}}
-			</h3><img src="@/assets/images/integrated/bigdata-header-nav-right2.png" />
+		<a class="title" href="/integrated/index" >
+			<!-- <img src="@/assets/images/integrated/bigdata-header-nav-left2.png" /> -->
+			<h3><img class="logo" src="@/assets/images/integrated/logo-small.png" />四平市态势感知平台 {{titlename}}
+			</h3>
+			<!-- <img src="@/assets/images/integrated/bigdata-header-nav-right2.png" /> -->
 		</a>
 		
 		<!--中间导航-->
 		<div class="bignav">
-			<img src="@/assets/images/integrated/bigdata-header-nav-left2.png" />
+			<img src="@/assets/images/integrated/bigdata-header-nav-left.png" />
 			<router-link v-for="(navbar,index) in navbar" :key="index+'1'" :to="navbar.path"  class="bignav-list"
 				exact>
 				<a>{{navbar.meta.title}}</a>
 			</router-link>
-			<img src="@/assets/images/integrated/bigdata-header-nav-right2.png" />
+			<img src="@/assets/images/integrated/bigdata-header-nav-right.png" />
 		</div>
 		<!-- 右侧5个中心 -->
 		<VfastMenu></VfastMenu>
@@ -61,8 +62,9 @@
 	.header {
 		width: 100%;
 		background: #a7ec12;
-		background: url(../assets/images/visual/v-header.png) repeat-x;
-		height: 2.5rem;
+		background: url(../assets/images/visual/header.png) no-repeat center center;
+		background-size: cover;
+		height: 4rem;
 		display: flex;
 		align-items: center;
 		z-index: 1000;
@@ -82,7 +84,6 @@
 				color: $white;
 				font-size: 1.8rem;
 				font-family: $fontFk;
-				background: url(../assets/images/integrated/bigdata-header-nav-re2.png) repeat-x center;
 	
 				img {
 					margin-right: .5rem;
@@ -95,7 +96,7 @@
 			position: fixed;
 			left: 50%;
 			transform: translateX(-50%);
-			top: 2.4rem;
+			top: 3.9rem;
 			z-index: 1000;
 			border-radius: 5px;
 			display: flex;
@@ -103,12 +104,12 @@
 			align-items: center;
 	
 			.bignav-list {
-				background: url(../assets/images/integrated/bigdata-header-nav-re2.png) repeat-x center;
+				background: url(../assets/images/integrated/bigdata-header-nav-re.png) repeat-x center;
 				float: left;
 				display: flex;
 				justify-content: cetner;
 				align-items: center;
-				color: $white;
+				color: $fListTitle;	
 				height: 40px;
 				font-size: 12px;
 				padding: 0 23px;

Fichier diff supprimé car celui-ci est trop grand
+ 1130 - 132
src/components/vBottomMenu.vue


+ 4 - 0
src/main.js

@@ -25,6 +25,9 @@ import DictData from '@/components/DictData'
 import './assets/icons' // icon
 import './permission' // permission control
 
+//DataV动效组件
+import dataV from '@jiaminghi/data-view'
+
 // //WebSocket封装方法
 // import * as socketApi from '@/api/socket'
 // Vue.prototype.socketApi = socketApi
@@ -38,6 +41,7 @@ Vue.use(ElementUI)
 Vue.use(VueCookies)
 Vue.use(directive)
 Vue.use(plugins)
+Vue.use(dataV)
 Vue.prototype.$echarts = echarts //挂载echarts
 DictData.install()
 

+ 1 - 1
src/permission.js

@@ -8,7 +8,7 @@ import { isRelogin } from '@/utils/request'
 
 NProgress.configure({ showSpinner: false })
 
-const whiteList = ['/login', '/auth-redirect', '/bind', '/register','/integrated/index','/integrated/bigdata','/integrated/forest', '/integrated/fire-forest', '/integrated/monitor']
+const whiteList = ['/login', '/auth-redirect', '/bind', '/register','/integrated/index','/integrated/bigdata','/integrated/forest', '/integrated/fire-forest', '/integrated/monitor','/integrated/date','/integrated/dialog']
 
 router.beforeEach((to, from, next) => {
   NProgress.start()

+ 96 - 87
src/router/index.js

@@ -31,15 +31,15 @@ import Layout from '@/layout'
 // 公共路由(可视化首页头部链接)
 export const constantRoutes = [{
 		path: '/',
-		redirect: 'forest',
+		redirect: 'traffic',
 	},
 	{
 		//林业中心
-		path: '/forest',
-		name: 'forest',
-		component: () => import('@/views/forest'),
+		path: '/traffic',
+		name: 'traffic',
+		component: () => import('@/views/traffic'),
 		meta: {
-			title: '林业云图'
+			title: '交通云图'
 		}
 	},
 	{
@@ -52,15 +52,6 @@ export const constantRoutes = [{
 		}
 	},
 	{
-		//事件中心
-		path: '/event',
-		name: 'event',
-		component: () => import('@/views/event'),
-		meta: {
-			title: '事件中心'
-		}
-	},
-	{
 		//监控中心
 		path: '/monitor',
 		name: 'monitor',
@@ -68,35 +59,46 @@ export const constantRoutes = [{
 		meta: {
 			title: '监控中心'
 		}
-	}, {
-		path: '/disaster',
-		name: 'disaster',
-		component: () => import('@/views/disaster'),
-		meta: {
-			title: '灾后评估'
-		}
-	}, {
-		path: '/animal',
-		name: 'animal',
-		component: () => import('@/views/animal'),
-		meta: {
-			title: '动物保护'
-		}
-	}, {
-		path: '/leader',
-		name: 'leader',
-		component: () => import('@/views/leader'),
-		meta: {
-			title: '林长制'
-		}
-	}, {
-		path: '/afforestation',
-		name: 'afforestation',
-		component: () => import('@/views/afforestation'),
+	},
+  {
+		path: '/bigdata',
+		name: 'bigdata',
+		component: () => import('@/views/bigdata/bigdata'),
 		meta: {
-			title: '植树造林'
+			title: '统计分析'
 		}
 	},
+  // {
+	// 	path: '/leader',
+	// 	name: 'leader',
+	// 	component: () => import('@/views/leader'),
+	// 	meta: {
+	// 		title: '林长制'
+	// 	}
+	// }, {
+	// 	path: '/afforestation',
+	// 	name: 'afforestation',
+	// 	component: () => import('@/views/afforestation'),
+	// 	meta: {
+	// 		title: '植树造林'
+	// 	}
+	// },
+  // {
+  //   path: '/',
+  //   name: '',
+  //   component: () => import('@/views/animal'),
+  //   meta: {
+  //     title: '动物保护'
+  //   }
+  // },
+  // {
+  //   path: '/',
+  //   name: '',
+  //   component: () => import('@/views/animal'),
+  //   meta: {
+  //     title: '珍惜古树'
+  //   }
+  // },
 ]
 
 
@@ -104,15 +106,15 @@ export const constantRoutes = [{
 // 公共路由
 export const constantRoutesNew = [{
 		path: '/',
-		redirect: 'forest',
+		redirect: 'traffic',
 	},
 	{
 		//林业中心
-		path: '/forest',
-		name: 'forest',
-		component: () => import('@/views/forest'),
+		path: '/traffic',
+		name: 'traffic',
+		component: () => import('@/views/traffic'),
 		meta: {
-			title: '数字林业'
+			title: '交通云图'
 		}
 	},
 	{
@@ -125,15 +127,6 @@ export const constantRoutesNew = [{
 		}
 	},
 	{
-		//事件中心
-		path: '/event',
-		name: 'event',
-		component: () => import('@/views/event'),
-		meta: {
-			title: '事件中心'
-		}
-	},
-	{
 		//监控中心
 		path: '/monitor',
 		name: 'monitor',
@@ -142,38 +135,54 @@ export const constantRoutesNew = [{
 			title: '监控中心'
 		}
 	},
-	{
-		path: '/disaster',
-		name: 'disaster',
-		component: () => import('@/views/disaster'),
-		meta: {
-			title: '灾后评估'
-		}
-	},
-	{
-		path: '/animal',
-		name: 'animal',
-		component: () => import('@/views/animal'),
-		meta: {
-			title: '动物保护'
-		}
-	},
-	{
-		path: '/leader',
-		name: 'leader',
-		component: () => import('@/views/leader'),
-		meta: {
-			title: '林长制'
-		}
-	},
-	{
-		path: '/afforestation',
-		name: 'afforestation',
-		component: () => import('@/views/afforestation'),
-		meta: {
-			title: '植树造林'
-		}
-	},
+  {
+    path: '/bigdata',
+    name: 'bigdata',
+    component: () => import('@/views/bigdata/bigdata'),
+    meta: {
+      title: '统计分析'
+    }
+  },
+	// {
+	// 	path: '/disaster',
+	// 	name: 'disaster',
+	// 	component: () => import('@/views/disaster'),
+	// 	meta: {
+	// 		title: '灾后评估'
+	// 	}
+	// },
+	// {
+	// 	path: '/leader',
+	// 	name: 'leader',
+	// 	component: () => import('@/views/leader'),
+	// 	meta: {
+	// 		title: '林长制'
+	// 	}
+	// },
+	// {
+	// 	path: '/afforestation',
+	// 	name: 'afforestation',
+	// 	component: () => import('@/views/afforestation'),
+	// 	meta: {
+	// 		title: '植树造林'
+	// 	}
+	// },
+  // {
+  //   path: '/',
+  //   name: '',
+  //   component: () => import('@/views/animal'),
+  //   meta: {
+  //     title: '动物保护'
+  //   }
+  // },
+  // {
+  //   path: '/',
+  //   name: '',
+  //   component: () => import('@/views/animal'),
+  //   meta: {
+  //     title: '珍惜古树'
+  //   }
+  // },
 	{
 		path: '/login',
 		component: () => import('@/views/system/login'),
@@ -200,7 +209,7 @@ export const constantRoutesNew = [{
 		redirect: 'index',
 		children: [{
 			path: 'forest',
-			component: () => import('@/views/forest'),
+			component: () => import('@/views/traffic'),
 			name: 'forest',
 			meta: {
 				title: '首页',

+ 247 - 201
src/views/afforestation.vue

@@ -8,242 +8,288 @@
       <!-- 左侧 -->
       <div class="leftbar" :class="indentleft" ref="left">
         <div class="forthis">
-          <div class="this-title">
-            <el-date-picker v-model="pickYear" @change="getInit()" type="year" placeholder="选择年">
-            </el-date-picker>
-          </div>
-          <div class="i-list-con h-19">
-            <div class="d-l-con" :class="{on:listCurrentIndex1 == item.id}" v-for="(item,index) in afforestationList"
-                 @click="getAfforestationArea(item.id)">
-              <div class="d-l-l-text">
-                <i class="i-small"></i>
-                <h4>{{item.plantingQuantity}}</h4>
+          <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
+            <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;"/>
+            <div class="this-title" style="margin: 1rem 0; padding-right:1rem">
+              <el-date-picker v-model="pickYear" @change="getInit()" type="year" placeholder="选择年">
+              </el-date-picker>
+            </div>
+            <div class="i-list-con h-19">
+              <div class="d-l-con" :class="{on:listCurrentIndex1 == item.id}" v-for="(item,index) in afforestationList"
+                   @click="getAfforestationArea(item.id)">
+                <div class="d-l-l-text">
+                  <i class="i-small"></i>
+                  <h4>{{ item.plantingQuantity }}</h4>
+                </div>
               </div>
             </div>
-          </div>
+          </dv-border-box-13>
         </div>
         <div class="forthis">
-          <div class="i-list-con h-51">
-            <div class="d-l-con" :class="{on:listCurrentIndex2 == item.points}"
-                 v-for="(item,index) in AfforestationAreaList" @click="setGraphicsList(item.points)">
-              <div class="d-l-l-text">
-                <i class="i-small"></i>
-                <h4>区域{{index+1}}</h4>
+          <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
+            <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;"/>
+            <div class="i-list-con h-51">
+              <div class="d-l-con" :class="{on:listCurrentIndex2 == item.points}"
+                   v-for="(item,index) in AfforestationAreaList" @click="setGraphicsList(item.points)">
+                <div class="d-l-l-text">
+                  <i class="i-small"></i>
+                  <h4>区域{{ index + 1 }}</h4>
+                </div>
               </div>
             </div>
-          </div>
+          </dv-border-box-13>
         </div>
       </div>
       <!-- 地图 -->
-      <supermap ref="supermap" style="width: 100%;height: 100vh;" :mapDiv="'disasterMap'"
+      <supermap ref="supermap" style="width: 100%;height: 100vh;" :mapDiv="'disasterMap'" class="indexSupermapClass"
                 :mapSite="{doubleClickZoom:false}" :codes="['9fa5']" :isSideBySide="false"></supermap>
       <!--底部 -->
       <vBottomMenu ref="bottomMenu"></vBottomMenu>
 
     </div>
     <eventLocation ref="eventLocation"></eventLocation>
+    <TVWall ref="TVWall"></TVWall>
   </div>
 </template>
 
 <script>
-  import {
-    getAfforestation, getAfforestationArea
-  } from '@/api/afforestation'
-  /** ----------------------------------摄像头预览开始------------------------------------- */
-  import {
-    getDahuaVideoServer
-  } from '@/api/dahua/dahua'
-  import DHWs from '@/dahua/lib/DHWs'
+import {
+  getAfforestation, getAfforestationArea
+} from '@/api/afforestation'
+/** ----------------------------------摄像头预览开始------------------------------------- */
+import {
+  getDahuaVideoServer
+} from '@/api/dahua/dahua'
+import DHWs from '@/dahua/lib/DHWs'
 
-  /** ----------------------------------摄像头预览结束------------------------------------- */
-  import supermap from '@/components/supermap' //超图
-  import vheader from '@/components/v-header.vue' //一体化共用头部
-  import vBottomMenu from '@/components/vBottomMenu.vue' //一体化公共底部菜单
-  import eventLocation from '@/components/eventLocation.vue' //事件定位弹窗
-  let echarts = require('echarts')
-  export default {
-    dicts: ['event_source'],
-    components: {
-      supermap,
-      vheader,
-      vBottomMenu,
-      eventLocation
-    },
-    created() {
-      /** ----------------------------------底部按钮公用组件开始------------------------------------- */
-      window.showDialog = this.showDialog
-      window.choseLayerSwitching = this.choseLayerSwitching
-      /** ----------------------------------底部按钮公用组件结束------------------------------------- */
-    },
-    mounted() {
-      this.getInit()
-    },
-    data() {
-      return {
-        listCurrentIndex1: '',
-        listCurrentIndex2: '',
-        pickYear: new Date(), //选择年份
-        afforestationList: [],
-        AfforestationAreaList: [],
-        graphicsList: [],//地图区域
-        //左右缩进
-        indentStyle: '',
-        indentleft: '',
-        indentright: '',
-        indentText: '收起左右栏',
-        indentdisabled: false
+/** ----------------------------------摄像头预览结束------------------------------------- */
+import supermap from '@/components/supermap' //超图
+import vheader from '@/components/v-header.vue' //一体化共用头部
+import vBottomMenu from '@/components/vBottomMenu.vue' //一体化公共底部菜单
+import eventLocation from '@/components/eventLocation.vue' //事件定位弹窗
+import TVWall from '@/components/TVWall.vue' //电视墙弹窗
 
-      }
-    },
+let echarts = require('echarts')
+export default {
+  dicts: ['event_source'],
+  components: {
+    supermap,
+    vheader,
+    vBottomMenu,
+    eventLocation,
+    TVWall
+  },
+  created() {
+    /** ----------------------------------底部按钮公用组件开始------------------------------------- */
+    window.showDialog = this.showDialog
+    window.choseLayerSwitching = this.choseLayerSwitching
+    window.choseLayerSwitchingList = this.choseLayerSwitchingList
+    /** ----------------------------------底部按钮公用组件结束------------------------------------- */
+  },
+  mounted() {
+    this.getInit()
+  },
+  data() {
+    return {
+      listCurrentIndex1: '',
+      listCurrentIndex2: '',
+      pickYear: new Date(), //选择年份
+      afforestationList: [],
+      AfforestationAreaList: [],
+      graphicsList: [],//地图区域
+      //左右缩进
+      indentStyle: '',
+      indentleft: '',
+      indentright: '',
+      indentText: '收起左右栏',
+      indentdisabled: false
 
-    methods: {
-      /** ----------------------------------底部按钮公用组件开始------------------------------------- */
-      showDialog(click) {
-        if (click == 'eventLocation') {
-          this.$refs.eventLocation.showEventLocation()
+    }
+  },
+
+  methods: {
+    /** ----------------------------------底部按钮公用组件开始------------------------------------- */
+    showDialog(click) {
+      if (click == 'eventLocation') {
+        this.$refs.eventLocation.showEventLocation()
+        this.$refs.supermap.isEditableLayers = false
+        this.$refs.bottomMenu.showChild = false
+        this.$refs.bottomMenu.showBanChild = false
+        this.$refs.bottomMenu.showChangChild = false
+      } else if (click == 'editableLayers') {
+        this.$refs.bottomMenu.showChild = false
+        this.$refs.bottomMenu.showBanChild = false
+        this.$refs.bottomMenu.showChangChild = false
+        if (!this.$refs.supermap.isEditableLayers) {
+          this.$refs.supermap.isEditableLayers = true
+        } else {
           this.$refs.supermap.isEditableLayers = false
+        }
+      } else if (click == 'layerSwitching') {
+        this.$refs.supermap.isEditableLayers = false
+        this.$refs.bottomMenu.showBanChild = false
+        this.$refs.bottomMenu.showChangChild = false
+        if (!this.$refs.bottomMenu.showChild) {
+          this.$refs.bottomMenu.showChild = true
+        } else {
           this.$refs.bottomMenu.showChild = false
-        } else if (click == 'editableLayers') {
-          this.$refs.bottomMenu.showChild = false
-          if (!this.$refs.supermap.isEditableLayers) {
-            this.$refs.supermap.isEditableLayers = true
-          } else {
-            this.$refs.supermap.isEditableLayers = false
-          }
-        } else if (click == 'layerSwitching') {
-          this.$refs.supermap.isEditableLayers = false
-          if (!this.$refs.bottomMenu.showChild) {
-            this.$refs.bottomMenu.showChild = true
-          } else {
-            this.$refs.bottomMenu.showChild = false
-          }
         }
-      },
-      //选择图层
-      choseLayerSwitching(url) {
-        this.$refs.supermap.layerSwitching(url, true)
-      },
-      /** ----------------------------------底部按钮公用组件结束------------------------------------- */
-
-      getInit() {
-        this.listCurrentIndex1=''
-        this.listCurrentIndex2=''
-        let that = this
-        this.afforestationList = []
-        this.AfforestationAreaList = []
-        //获取左侧菜单列表
-        getAfforestation(this.pickYear.getYear() + 1900).then(res => {
-          this.afforestationList = res.data
-          setTimeout(() => {
-            this.$refs.supermap.clearG()
-          }, 1000)
-        })
-      },
-      getAfforestationArea(afforestationId) {
-        this.listCurrentIndex1 = afforestationId
-        let that = this
-        //获取左侧菜单列表
-        getAfforestationArea(afforestationId).then(res => {
-          this.AfforestationAreaList = res.data
-        })
-      },
-      setGraphicsList(points) {
-        this.listCurrentIndex2 = points
-        this.graphicsList = []
-        if (points != null && points != '') {
-          this.graphicsList = JSON.parse(points)
-          this.$refs.supermap.clearG()
-          this.$refs.supermap.setGraphicsList(this.graphicsList, 'red')
+      } else if (click == 'TVWall') {
+        this.$refs.TVWall.showTVWall()
+        this.$refs.supermap.isEditableLayers = false
+        this.$refs.bottomMenu.showChild = false
+        this.$refs.bottomMenu.showBanChild = false
+        this.$refs.bottomMenu.showChangChild = false
+      } else if (click == 'forestban') {
+        this.$refs.supermap.isEditableLayers = false
+        this.$refs.bottomMenu.showChild = false
+        this.$refs.bottomMenu.showChangChild = false
+        if (!this.$refs.bottomMenu.showBanChild) {
+          this.$refs.bottomMenu.showBanChild = true
         } else {
-          this.$refs.supermap.clearG()
+          this.$refs.bottomMenu.showBanChild = false
         }
-      },
-
-      //吉祥物收起左右框
-      indent() {
-        let list = document.getElementsByClassName('el-tooltip__popper')
-        list[list.length - 1].style.display = 'none'
-        if (this.indentStyle == '') {
-          this.indentStyle = 'indent-style'
-          this.indentleft = 'indent-left'
-          this.indentright = 'indent-right'
-          this.indentText = '展开左右栏'
-        } else if (this.indentText == '展开左右栏') {
-          this.indentStyle = ''
-          this.indentleft = ''
-          this.indentright = ''
-          this.indentText = '收起左右栏'
+      } else if (click == 'forestchang') {
+        this.$refs.supermap.isEditableLayers = false
+        this.$refs.bottomMenu.showBanChild = false
+        this.$refs.bottomMenu.showChild = false
+        if (!this.$refs.bottomMenu.showChangChild) {
+          this.$refs.bottomMenu.showChangChild = true
+        } else {
+          this.$refs.bottomMenu.showChangChild = false
         }
-      },
-      dropLocation(lat, lng) {
-        this.$refs.supermap.dropLocation(lat, lng)
-      },
-      /** ----------------------------------摄像头预览开始------------------------------------- */
-      alertLogin: function() {
-        this.$modal.msg('登录中....')
-      },
-      alertLoginSuccess: function() {
-        this.$modal.msgSuccess('登录成功!')
-      },
-      alertLoginFailed: function() {
-        this.$modal.msgError('登陆失败!')
-      },
-      alertReinstall: function() {
-        this.$modal.msgWarning('请重新安装客户端')
-      },
-      /** 预览按钮操作 */
-      preview(channelCode) {
-        getDahuaVideoServer().then(newResponse => {
-          this.ws.detectConnectQt().then(res => {
-            if (res) { // 连接客户端成功
-              this.alertLogin()
-              this.ws.login({
-                loginIp: newResponse.loginIp,
-                loginPort: newResponse.loginPort,
-                userName: newResponse.userName,
-                userPwd: newResponse.userPwd,
-                token: '',
-                https: 1
-              })
-              this.ws.on('loginState', (res) => {
-                this.isLogin = res
-                console.log('---res-----', res)
-                if (res) {
-                  this.alertLoginSuccess()
-                  this.activePanel = 'key2'
-                  this.realTimeVideoDialog(channelCode)
-                } else {
-                  this.alertLoginFailed()
-                }
-              })
-            } else { // 连接客户端失败
-              this.alertReinstall()
-            }
-          })
+      }
+
+    },
+    //选择图层
+    choseLayerSwitching(url, isClear) {
+      this.$refs.supermap.layerSwitching(url, isClear)
+    },
+    //选择图层(传递数组)
+    choseLayerSwitchingList(urlList) {
+      this.$refs.supermap.layerSwitchingList(urlList)
+    },
+    /** ----------------------------------底部按钮公用组件结束------------------------------------- */
+
+    getInit() {
+      this.listCurrentIndex1 = ''
+      this.listCurrentIndex2 = ''
+      let that = this
+      this.afforestationList = []
+      this.AfforestationAreaList = []
+      //获取左侧菜单列表
+      getAfforestation(this.pickYear.getYear() + 1900).then(res => {
+        this.afforestationList = res.data
+        setTimeout(() => {
+          this.$refs.supermap.clearG()
+        }, 1000)
+      })
+    },
+    getAfforestationArea(afforestationId) {
+      this.listCurrentIndex1 = afforestationId
+      let that = this
+      //获取左侧菜单列表
+      getAfforestationArea(afforestationId).then(res => {
+        this.AfforestationAreaList = res.data
+      })
+    },
+    setGraphicsList(points) {
+      this.listCurrentIndex2 = points
+      this.graphicsList = []
+      if (points != null && points != '') {
+        this.graphicsList = JSON.parse(points)
+        this.$refs.supermap.clearG()
+        this.$refs.supermap.setGraphicsList(this.graphicsList, 'red')
+      } else {
+        this.$refs.supermap.clearG()
+      }
+    },
+
+    //吉祥物收起左右框
+    indent() {
+      let list = document.getElementsByClassName('el-tooltip__popper')
+      list[list.length - 1].style.display = 'none'
+      if (this.indentStyle == '') {
+        this.indentStyle = 'indent-style'
+        this.indentleft = 'indent-left'
+        this.indentright = 'indent-right'
+        this.indentText = '展开左右栏'
+      } else if (this.indentText == '展开左右栏') {
+        this.indentStyle = ''
+        this.indentleft = ''
+        this.indentright = ''
+        this.indentText = '收起左右栏'
+      }
+    },
+    dropLocation(lat, lng) {
+      this.$refs.supermap.dropLocation(lat, lng)
+    },
+    /** ----------------------------------摄像头预览开始------------------------------------- */
+    alertLogin: function() {
+      this.$modal.msg('登录中....')
+    },
+    alertLoginSuccess: function() {
+      this.$modal.msgSuccess('登录成功!')
+    },
+    alertLoginFailed: function() {
+      this.$modal.msgError('登陆失败!')
+    },
+    alertReinstall: function() {
+      this.$modal.msgWarning('请重新安装客户端')
+    },
+    /** 预览按钮操作 */
+    preview(channelCode) {
+      getDahuaVideoServer().then(newResponse => {
+        this.ws.detectConnectQt().then(res => {
+          if (res) { // 连接客户端成功
+            this.alertLogin()
+            this.ws.login({
+              loginIp: newResponse.loginIp,
+              loginPort: newResponse.loginPort,
+              userName: newResponse.userName,
+              userPwd: newResponse.userPwd,
+              token: '',
+              https: 1
+            })
+            this.ws.on('loginState', (res) => {
+              this.isLogin = res
+              console.log('---res-----', res)
+              if (res) {
+                this.alertLoginSuccess()
+                this.activePanel = 'key2'
+                this.realTimeVideoDialog(channelCode)
+              } else {
+                this.alertLoginFailed()
+              }
+            })
+          } else { // 连接客户端失败
+            this.alertReinstall()
+          }
         })
-      },
-      realTimeVideoDialog(cameraParams) { // 调用弹窗实时播放接口
-        if (!this.isLogin) {
-          this.$Message.info('正在登陆客户端,请稍等......')
-          return false
-        }
-        this.ws.openVideo(cameraParams)
+      })
+    },
+    realTimeVideoDialog(cameraParams) { // 调用弹窗实时播放接口
+      if (!this.isLogin) {
+        this.$Message.info('正在登陆客户端,请稍等......')
+        return false
       }
-      /** ----------------------------------摄像头预览结束------------------------------------- */
+      this.ws.openVideo(cameraParams)
     }
+    /** ----------------------------------摄像头预览结束------------------------------------- */
   }
+}
 </script>
 
 <style lang="scss" scoped>
-  @import '@/assets/styles/base.scss';
+@import '@/assets/styles/base.scss';
 
-  .el-table__header {
-    width: auto !important;
-  }
+.el-table__header {
+  width: auto !important;
+}
 
-  .d-dialog-con {
-    position: absolute;
-    left: -19rem;
-    top: 0;
-  }
+.d-dialog-con {
+  position: absolute;
+  left: -19rem;
+  top: 0;
+}
 </style>

+ 410 - 356
src/views/animal.vue

@@ -7,68 +7,75 @@
       <!-- 左侧 -->
       <div class="leftbar w-6" :class="indentleft" ref="left">
         <div class="forthis">
-          <div class="i-list-con h-78">
-            <div class="d-l-con-icon">
-              <div class="icon-con  m-btm-no icon-animal-con" :class="animalcount"  @click="getInit()">
-                <!--   -->
-                <!--<div class="icon icon-dot"></div>-->
-                <div class="icon-text animal-text">
-                  <h6>9</h6>
-                  <h5>总数</h5>
+          <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
+            <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;"/>
+            <div class="i-list-con h-78">
+              <div class="d-l-con-icon">
+                <div class="icon-con  m-btm-no icon-animal-con" :class="animalcount" @click="getInit()">
+                  <!--   -->
+                  <!--<div class="icon icon-dot"></div>-->
+                  <div class="icon-text animal-text">
+                    <h6>9</h6>
+                    <h5>总数</h5>
+                  </div>
                 </div>
               </div>
-            </div>
-            <div class="d-l-con-icon">
-              <div class="icon-con icon-animal-con" :class="{on:iconCurrentIndex1==item.type}"  v-for="(item,index) in animalDwfb"  @click="selectForestAnimalListByType(item.type)">
-                <div class="iconfont icon icon-normal icon-animal">
-                  <img :src="item.src">
-                </div>
-                <div class="icon-text icon-animal-text">
-                  <h5>{{item.name}}</h5>
+              <div class="d-l-con-icon">
+                <div class="icon-con icon-animal-con" :class="{on:iconCurrentIndex1==item.type}"
+                     v-for="(item,index) in animalDwfb" @click="selectForestAnimalListByType(item.type)">
+                  <div class="iconfont icon icon-normal icon-animal">
+                    <img :src="item.src">
+                  </div>
+                  <div class="icon-text icon-animal-text">
+                    <h5>{{ item.name }}</h5>
+                  </div>
                 </div>
               </div>
             </div>
-          </div>
+          </dv-border-box-13>
         </div>
       </div>
       <!-- 地图 -->
-      <supermap ref="supermap" style="width: 100%;height: 100vh;" :mapDiv="'animalMap'"
+      <supermap ref="supermap" style="width: 100%;height: 100vh;" :mapDiv="'animalMap'" class="indexSupermapClass"
                 :mapSite="{doubleClickZoom:false}" :codes="['9fa5']" :isSideBySide="false"></supermap>
       <!--      <button @click="showEventInfo1" style="position: absolute; right: 50%;top: 45%;z-index: 1000;">弹层事件演示用按钮-->
       <!--      </button>-->
       <!-- 右侧 -->
       <div class="rightbar" :class="indentright" ref="right">
         <div class="forthis">
-          <div class="this-title">
-            <span>事件分布</span>
-            <!-- <span>23</span> -->
-          </div>
-          <div class="i-list-con h-73">
-            <div class="d-l-con-icon">
-              <div class="h-19 overflow-y w100">
-                <div class="d-l-con" v-for="(item,index) in animalSjfb">
-                  <div class="d-l-l-text">
-                    <i class="i-small"></i>
-                    <h4>{{item.deptName}}</h4>
+          <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
+            <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;"/>
+            <div class="this-title">
+              <span>事件分布</span>
+              <dv-decoration-3 style="width:150px;height:15px;margin-right: 1rem;"/>
+            </div>
+            <div class="i-list-con h-73">
+              <div class="d-l-con-icon">
+                <div class="h-19 overflow-y w100">
+                  <div class="d-l-con" v-for="(item,index) in animalSjfb">
+                    <div class="d-l-l-text">
+                      <i class="i-small"></i>
+                      <h4>{{ item.deptName }}</h4>
+                    </div>
+                    <div class="d-l-l-count">{{ item.count }}</div>
                   </div>
-                  <div class="d-l-l-count">{{item.count}}</div>
                 </div>
               </div>
-            </div>
-            <div class="d-l-con">
-              <div id="animal-chart" style="width: 100%;height:26.2vh;"></div>
-            </div>
-            <div class="d-l-con d-evnet-list-con"  :class="{on:listCurrentIndex1==index}"   v-for="(item,index) in animalSjlb" @click="dropLocation(item.latitude,item.longitude,index)">
-              <img src="@/assets/images/visual/img-sample.png" class="event-list-img animal-img">
-              <div class="event-list-text">
-                <h3>{{item.eventTitle}}</h3>
-                <h4><span>摄像头</span><span>新上报</span><span>{{item.reportTime}}</span>
-                </h4>
+              <div class="d-l-con">
+                <div id="animal-chart" style="width: 100%;height:26.2vh;"></div>
+              </div>
+              <div class="d-l-con d-evnet-list-con" :class="{on:listCurrentIndex1==index}"
+                   v-for="(item,index) in animalSjlb"
+                   @click="dropLocation(item.latitude,item.longitude,index)">
+                <img src="@/assets/images/visual/img-sample.png" class="event-list-img animal-img">
+                <div class="event-list-text">
+                  <h3>{{ item.eventTitle }}</h3>
+                  <h4><span>摄像头</span><span>新上报</span><span>{{ item.reportTime }}</span>
+                  </h4>
+                </div>
               </div>
             </div>
-
-          </div>
-
+          </dv-border-box-13>
         </div>
 
       </div>
@@ -81,351 +88,398 @@
 
     </div>
     <eventLocation ref="eventLocation"></eventLocation>
+    <TVWall ref="TVWall"></TVWall>
   </div>
 </template>
 
 <script>
-  import {
-    getInit,selectForestAnimalListByType
-  } from '@/api/animal'
+import {
+  getInit,
+  selectForestAnimalListByType
+} from '@/api/animal'
 
-  import supermap from '@/components/supermap' //超图
-  import vheader from '@/components/v-header.vue' //一体化共用头部
-  import vBottomMenu from '@/components/vBottomMenu.vue' //一体化公共底部菜单
-  import eventLocation from '@/components/eventLocation.vue' //事件定位弹窗
+import supermap from '@/components/supermap' //超图
+import vheader from '@/components/v-header.vue' //一体化共用头部
+import vBottomMenu from '@/components/vBottomMenu.vue' //一体化公共底部菜单
+import eventLocation from '@/components/eventLocation.vue' //事件定位弹窗
+import TVWall from '@/components/TVWall.vue' //电视墙弹窗
 
-  let echarts = require('echarts')
-  export default {
-    components: {
-      supermap,
-      vheader,
-      vBottomMenu,
-      eventLocation
-    },
-    data() {
-      return {
-		animalcount:'',
-		iconCurrentIndex1:'',
-		listCurrentIndex1:'',
-        //左右缩进
-        indentStyle: '',
-        indentleft: '',
-        indentright: '',
-        indentText: '收起左右栏',
-        indentdisabled: false,
+let echarts = require('echarts')
+export default {
+  components: {
+    supermap,
+    vheader,
+    vBottomMenu,
+    eventLocation,
+    TVWall
+  },
+  data() {
+    return {
+      animalcount: '',
+      iconCurrentIndex1: '',
+      listCurrentIndex1: '',
+      //左右缩进
+      indentStyle: '',
+      indentleft: '',
+      indentright: '',
+      indentText: '收起左右栏',
+      indentdisabled: false,
 
-        //虚拟数据
-        animalDwfb: [{
-          name: '虎',
-          src: require('../assets/images/dwbh/hu-1.png'),
-          type:'forest_animal_hu'
-        }, {
-          name: '豹',
-          src: require('../assets/images/dwbh/bao-1.png'),
-          type:'forest_animal_bao'
-        }, {
-          name: '蛇',
-          src: require('../assets/images/dwbh/she-1.png'),
-          type:'forest_animal_she'
-        }, {
-          name: '鹰',
-          src: require('../assets/images/dwbh/ying-1.png'),
-          type:'forest_animal_ying'
-        }, {
-          name: '兔',
-          src: require('../assets/images/dwbh/tuzi-1.png'),
-          type:'forest_animal_tu'
-        }, {
-          name: '狐狸',
-          src: require('../assets/images/dwbh/huli-1.png'),
-          type:'forest_animal_huli'
-        }, {
-          name: '狗熊',
-          src: require('../assets/images/dwbh/gouxiong-1.png'),
-          type:'forest_animal_gouxiong'
-        }, {
-          name: '野鸡',
-          src: require('../assets/images/dwbh/yeji-1.png'),
-          type:'forest_animal_yeji'
-        }, {
-          name: '狍子',
-          src: require('../assets/images/dwbh/paozi-1.png'),
-          type:'forest_animal_paozi'
-        }],
-        animalSjfb: [],
-        animalSjlb: [],
-        markersList:[],//点位列表
+      //虚拟数据
+      animalDwfb: [{
+        name: '虎',
+        src: require('../assets/images/dwbh/hu-1.png'),
+        type: 'forest_animal_hu'
+      }, {
+        name: '豹',
+        src: require('../assets/images/dwbh/bao-1.png'),
+        type: 'forest_animal_bao'
+      }, {
+        name: '蛇',
+        src: require('../assets/images/dwbh/she-1.png'),
+        type: 'forest_animal_she'
+      }, {
+        name: '鹰',
+        src: require('../assets/images/dwbh/ying-1.png'),
+        type: 'forest_animal_ying'
+      }, {
+        name: '兔',
+        src: require('../assets/images/dwbh/tuzi-1.png'),
+        type: 'forest_animal_tu'
+      }, {
+        name: '狐狸',
+        src: require('../assets/images/dwbh/huli-1.png'),
+        type: 'forest_animal_huli'
+      }, {
+        name: '狗熊',
+        src: require('../assets/images/dwbh/gouxiong-1.png'),
+        type: 'forest_animal_gouxiong'
+      }, {
+        name: '野鸡',
+        src: require('../assets/images/dwbh/yeji-1.png'),
+        type: 'forest_animal_yeji'
+      }, {
+        name: '狍子',
+        src: require('../assets/images/dwbh/paozi-1.png'),
+        type: 'forest_animal_paozi'
+      }],
+      animalSjfb: [],
+      animalSjlb: [],
+      markersList: [] //点位列表
+    }
+  },
+  created() {
+    /** ----------------------------------底部按钮公用组件开始------------------------------------- */
+    window.showDialog = this.showDialog
+    window.choseLayerSwitching = this.choseLayerSwitching
+    window.choseLayerSwitchingList = this.choseLayerSwitchingList
+    /** ----------------------------------底部按钮公用组件结束------------------------------------- */
+  },
+  mounted() {
+    this.getInit()
+  },
+  methods: {
+    /** ----------------------------------底部按钮公用组件开始------------------------------------- */
+    showDialog(click) {
+      if (click == 'eventLocation') {
+        this.$refs.eventLocation.showEventLocation()
+        this.$refs.supermap.isEditableLayers = false
+        this.$refs.bottomMenu.showChild = false
+        this.$refs.bottomMenu.showBanChild = false
+        this.$refs.bottomMenu.showChangChild = false
+      } else if (click == 'editableLayers') {
+        this.$refs.bottomMenu.showChild = false
+        this.$refs.bottomMenu.showBanChild = false
+        this.$refs.bottomMenu.showChangChild = false
+        if (!this.$refs.supermap.isEditableLayers) {
+          this.$refs.supermap.isEditableLayers = true
+        } else {
+          this.$refs.supermap.isEditableLayers = false
+        }
+      } else if (click == 'layerSwitching') {
+        this.$refs.supermap.isEditableLayers = false
+        this.$refs.bottomMenu.showBanChild = false
+        this.$refs.bottomMenu.showChangChild = false
+        if (!this.$refs.bottomMenu.showChild) {
+          this.$refs.bottomMenu.showChild = true
+        } else {
+          this.$refs.bottomMenu.showChild = false
+        }
+      } else if (click == 'TVWall') {
+        this.$refs.TVWall.showTVWall()
+        this.$refs.supermap.isEditableLayers = false
+        this.$refs.bottomMenu.showChild = false
+        this.$refs.bottomMenu.showBanChild = false
+        this.$refs.bottomMenu.showChangChild = false
+      } else if (click == 'forestban') {
+        this.$refs.supermap.isEditableLayers = false
+        this.$refs.bottomMenu.showChild = false
+        this.$refs.bottomMenu.showChangChild = false
+        if (!this.$refs.bottomMenu.showBanChild) {
+          this.$refs.bottomMenu.showBanChild = true
+        } else {
+          this.$refs.bottomMenu.showBanChild = false
+        }
+      } else if (click == 'forestchang') {
+        this.$refs.supermap.isEditableLayers = false
+        this.$refs.bottomMenu.showBanChild = false
+        this.$refs.bottomMenu.showChild = false
+        if (!this.$refs.bottomMenu.showChangChild) {
+          this.$refs.bottomMenu.showChangChild = true
+        } else {
+          this.$refs.bottomMenu.showChangChild = false
+        }
       }
+
     },
-    created() {
-      /** ----------------------------------底部按钮公用组件开始------------------------------------- */
-      window.showDialog=this.showDialog
-      window.choseLayerSwitching=this.choseLayerSwitching
-      /** ----------------------------------底部按钮公用组件结束------------------------------------- */
+    //选择图层
+    choseLayerSwitching(url, isClear) {
+      this.$refs.supermap.layerSwitching(url, isClear)
     },
-    mounted() {
-      this.getInit()
+    //选择图层(传递数组)
+    choseLayerSwitchingList(urlList) {
+      this.$refs.supermap.layerSwitchingList(urlList)
     },
-    methods: {
-      /** ----------------------------------底部按钮公用组件开始------------------------------------- */
-      showDialog(click) {
-        if (click == 'eventLocation') {
-          this.$refs.eventLocation.showEventLocation()
-          this.$refs.supermap.isEditableLayers = false
-          this.$refs.bottomMenu.showChild = false
-        } else if (click == 'editableLayers') {
-          this.$refs.bottomMenu.showChild = false
-          if (!this.$refs.supermap.isEditableLayers) {
-            this.$refs.supermap.isEditableLayers = true
-          } else {
-            this.$refs.supermap.isEditableLayers = false
-          }
-        } else if (click == 'layerSwitching') {
-          this.$refs.supermap.isEditableLayers = false
-          if (!this.$refs.bottomMenu.showChild) {
-            this.$refs.bottomMenu.showChild = true
-          } else {
-            this.$refs.bottomMenu.showChild = false
-          }
-        }
-      },
-      //选择图层
-      choseLayerSwitching(url) {
-        this.$refs.supermap.layerSwitching(url, true);
-      },
-      /** ----------------------------------底部按钮公用组件结束------------------------------------- */
-      dropLocation(lat,lng,index) {
-		this.listCurrentIndex1 = index
-        this.$refs.supermap.dropLocation(lat,lng)
-      },
-      //初始化
-      getInit() {
-		this.iconCurrentIndex1 = ''
-		this.animalcount = 'on'
-        let that = this
-        //获取左侧菜单列表
-        getInit().then(res => {
-          this.animalSjfb = res.data.visuForestAnimalBOList
-          this.animalSjlb = res.data.visuForestVgdEventBOList
+    /** ----------------------------------底部按钮公用组件结束------------------------------------- */
+    dropLocation(lat, lng, index) {
+      this.listCurrentIndex1 = index
+      this.$refs.supermap.dropLocation(lat, lng)
+    },
+    //初始化
+    getInit() {
+      this.iconCurrentIndex1 = ''
+      this.animalcount = 'on'
+      let that = this
+      //获取左侧菜单列表
+      getInit().then(res => {
+        this.animalSjfb = res.data.visuForestAnimalBOList
+        this.animalSjlb = res.data.visuForestVgdEventBOList
 
-          that.markersList = [];
-          if (res.data.visuForestVgdEventBOList != null && res.data.visuForestVgdEventBOList.length > 0) {
-            for (let i = 0; i < res.data.visuForestVgdEventBOList.length; i++) {
-              let markersMap = {
-                lng: 124.59,
-                lat: 43.02,
-                icon: 'marker',
-                bindPopupHtml: '',
-                click: '',
-                parameter: '',
-                keepBindPopup: false,
-                isAggregation: false
-              }
-              if (res.data.visuForestVgdEventBOList.length > 50) {
-                markersMap.isAggregation = true
-              }
-              markersMap.lng = res.data.visuForestVgdEventBOList[i].longitude
-              markersMap.lat = res.data.visuForestVgdEventBOList[i].latitude
-              markersMap.bindPopupHtml = '<div class="map-tip">' +
-                '<span>' +
-                '                  <div class="d-l-con">' +
-                '                  <div class="d-l-l-text">' +
-                '                  <h4>经纬度:' + res.data.visuForestVgdEventBOList[i].longitude + ',' + res.data.visuForestVgdEventBOList[i]
-                  .latitude + '</h4>' +
-                '                </div>' +
-                '                </div>' +
-                '                </span>' +
-                '<span>' +
-                '                  <div class="d-l-con">' +
-                '                  <div class="d-l-l-text">' +
-                '                  <h4>事件名称:' + res.data.visuForestVgdEventBOList[i].eventTitle + '</h4>' +
-                '                </div>' +
-                '                </div>' +
-                '                </span>' +
-                '<span>' +
-                '                  <div class="d-l-con">' +
-                '                  <div class="d-l-l-text">' +
-                '                  <h4>事件时间:' + res.data.visuForestVgdEventBOList[i].reportTime + '</h4>' +
-                '                </div>' +
-                '                </div>' +
-                '                </span>' +
-                '</div>';
-              that.markersList.push(markersMap)
+        that.markersList = []
+        if (res.data.visuForestVgdEventBOList != null && res.data.visuForestVgdEventBOList.length >
+          0) {
+          for (let i = 0; i < res.data.visuForestVgdEventBOList.length; i++) {
+            let markersMap = {
+              lng: 124.59,
+              lat: 43.02,
+              icon: 'marker',
+              bindPopupHtml: '',
+              click: '',
+              parameter: '',
+              keepBindPopup: false,
+              isAggregation: false
+            }
+            if (res.data.visuForestVgdEventBOList.length > 50) {
+              markersMap.isAggregation = true
             }
-            setTimeout(() => {
-              that.$refs.supermap.clearM(false)
-              that.$refs.supermap.clearM(true)
-              that.$refs.supermap.setMarkers(that.markersList)
-            }, 1000)
-          }else{
-            setTimeout(() => {
-              that.$refs.supermap.clearM(false)
-              that.$refs.supermap.clearM(true)
-            }, 1000)
+            markersMap.lng = res.data.visuForestVgdEventBOList[i].longitude
+            markersMap.lat = res.data.visuForestVgdEventBOList[i].latitude
+            markersMap.bindPopupHtml = '<div class="map-tip">' +
+              '<span>' +
+              '                  <div class="d-l-con">' +
+              '                  <div class="d-l-l-text">' +
+              '                  <h4>经纬度:' + res.data.visuForestVgdEventBOList[i].longitude +
+              ',' + res.data.visuForestVgdEventBOList[i]
+                .latitude + '</h4>' +
+              '                </div>' +
+              '                </div>' +
+              '                </span>' +
+              '<span>' +
+              '                  <div class="d-l-con">' +
+              '                  <div class="d-l-l-text">' +
+              '                  <h4>事件名称:' + res.data.visuForestVgdEventBOList[i].eventTitle +
+              '</h4>' +
+              '                </div>' +
+              '                </div>' +
+              '                </span>' +
+              '<span>' +
+              '                  <div class="d-l-con">' +
+              '                  <div class="d-l-l-text">' +
+              '                  <h4>事件时间:' + res.data.visuForestVgdEventBOList[i].reportTime +
+              '</h4>' +
+              '                </div>' +
+              '                </div>' +
+              '                </span>' +
+              '</div>'
+            that.markersList.push(markersMap)
           }
-        })
-      },
+          setTimeout(() => {
+            that.$refs.supermap.clearM(false)
+            that.$refs.supermap.clearM(true)
+            that.$refs.supermap.setMarkers(that.markersList)
+          }, 1000)
+        } else {
+          setTimeout(() => {
+            that.$refs.supermap.clearM(false)
+            that.$refs.supermap.clearM(true)
+          }, 1000)
+        }
+      })
+    },
 
-      selectForestAnimalListByType(type){
-		this.iconCurrentIndex1 = type
-		this.animalcount = ''
-        let that = this
-        //获取左侧菜单列表
-        selectForestAnimalListByType(type).then(res => {
-          console.log(res)
-          this.animalSjfb = res.data.visuForestAnimalBOList
-          this.animalSjlb = res.data.visuForestVgdEventBOList
-          that.markersList = [];
-          if (res.data.visuForestVgdEventBOList != null && res.data.visuForestVgdEventBOList.length > 0) {
-            for (let i = 0; i < res.data.visuForestVgdEventBOList.length; i++) {
-              let markersMap = {
-                lng: 124.59,
-                lat: 43.02,
-                icon: 'marker',
-                bindPopupHtml: '',
-                click: '',
-                parameter: '',
-                keepBindPopup: false,
-                isAggregation: false
-              }
-              if (res.data.visuForestVgdEventBOList.length > 50) {
-                markersMap.isAggregation = true
-              }
-              markersMap.lng = res.data.visuForestVgdEventBOList[i].longitude
-              markersMap.lat = res.data.visuForestVgdEventBOList[i].latitude
-              markersMap.bindPopupHtml = '<div class="map-tip">' +
-                '<span>' +
-                '                  <div class="d-l-con">' +
-                '                  <div class="d-l-l-text">' +
-                '                  <h4>经纬度:' + res.data.visuForestVgdEventBOList[i].longitude + ',' + res.data.visuForestVgdEventBOList[i]
-                  .latitude + '</h4>' +
-                '                </div>' +
-                '                </div>' +
-                '                </span>' +
-                '<span>' +
-                '                  <div class="d-l-con">' +
-                '                  <div class="d-l-l-text">' +
-                '                  <h4>事件名称:' + res.data.visuForestVgdEventBOList[i].eventTitle + '</h4>' +
-                '                </div>' +
-                '                </div>' +
-                '                </span>' +
-                '<span>' +
-                '                  <div class="d-l-con">' +
-                '                  <div class="d-l-l-text">' +
-                '                  <h4>事件时间:' + res.data.visuForestVgdEventBOList[i].reportTime + '</h4>' +
-                '                </div>' +
-                '                </div>' +
-                '                </span>' +
-                '</div>';
-              that.markersList.push(markersMap)
+    selectForestAnimalListByType(type) {
+      this.iconCurrentIndex1 = type
+      this.animalcount = ''
+      let that = this
+      //获取左侧菜单列表
+      selectForestAnimalListByType(type).then(res => {
+        this.animalSjfb = res.data.visuForestAnimalBOList
+        this.animalSjlb = res.data.visuForestVgdEventBOList
+        that.markersList = []
+        if (res.data.visuForestVgdEventBOList != null && res.data.visuForestVgdEventBOList.length >
+          0) {
+          for (let i = 0; i < res.data.visuForestVgdEventBOList.length; i++) {
+            let markersMap = {
+              lng: 124.59,
+              lat: 43.02,
+              icon: 'marker',
+              bindPopupHtml: '',
+              click: '',
+              parameter: '',
+              keepBindPopup: false,
+              isAggregation: false
+            }
+            if (res.data.visuForestVgdEventBOList.length > 50) {
+              markersMap.isAggregation = true
             }
-            setTimeout(() => {
-              that.$refs.supermap.clearM(false)
-              that.$refs.supermap.clearM(true)
-              that.$refs.supermap.setMarkers(that.markersList)
-            }, 1000)
-          }else{
-            setTimeout(() => {
-              that.$refs.supermap.clearM(false)
-              that.$refs.supermap.clearM(true)
-            }, 1000)
+            markersMap.lng = res.data.visuForestVgdEventBOList[i].longitude
+            markersMap.lat = res.data.visuForestVgdEventBOList[i].latitude
+            markersMap.bindPopupHtml = '<div class="map-tip">' +
+              '<span>' +
+              '                  <div class="d-l-con">' +
+              '                  <div class="d-l-l-text">' +
+              '                  <h4>经纬度:' + res.data.visuForestVgdEventBOList[i].longitude +
+              ',' + res.data.visuForestVgdEventBOList[i]
+                .latitude + '</h4>' +
+              '                </div>' +
+              '                </div>' +
+              '                </span>' +
+              '<span>' +
+              '                  <div class="d-l-con">' +
+              '                  <div class="d-l-l-text">' +
+              '                  <h4>事件名称:' + res.data.visuForestVgdEventBOList[i].eventTitle +
+              '</h4>' +
+              '                </div>' +
+              '                </div>' +
+              '                </span>' +
+              '<span>' +
+              '                  <div class="d-l-con">' +
+              '                  <div class="d-l-l-text">' +
+              '                  <h4>事件时间:' + res.data.visuForestVgdEventBOList[i].reportTime +
+              '</h4>' +
+              '                </div>' +
+              '                </div>' +
+              '                </span>' +
+              '</div>'
+            that.markersList.push(markersMap)
           }
-        })
-      },
+          setTimeout(() => {
+            that.$refs.supermap.clearM(false)
+            that.$refs.supermap.clearM(true)
+            that.$refs.supermap.setMarkers(that.markersList)
+          }, 1000)
+        } else {
+          setTimeout(() => {
+            that.$refs.supermap.clearM(false)
+            that.$refs.supermap.clearM(true)
+          }, 1000)
+        }
+      })
+    },
 
-      //事件chart
-      eventChart() {
-        // 基于准备好的dom,初始化echarts实例
-        let myChart = echarts.init(document.getElementById('animal-chart'))
-        myChart.setOption({
-          color: ['#2EACFF', '#FFA61C', '#2EC054', '#8C64D7'],
-          tooltip: {
-            trigger: 'item',
-            formatter: '{a} <br/>{b} : {c} ({d}%)'
-          },
-          toolbox: {
-            show: true
+    //事件chart
+    eventChart() {
+      // 基于准备好的dom,初始化echarts实例
+      let myChart = echarts.init(document.getElementById('animal-chart'))
+      myChart.setOption({
+        color: ['#2EACFF', '#FFA61C', '#2EC054', '#8C64D7'],
+        tooltip: {
+          trigger: 'item',
+          formatter: '{a} <br/>{b} : {c} ({d}%)'
+        },
+        toolbox: {
+          show: true
+        },
+        series: [{
+          name: '事件分类',
+          type: 'pie',
+          roseType: true,
+          radius: [30, 70],
+          label: {
+            show: true,
+            formatter: '{b}\n{c} '
           },
-          series: [{
-            name: '事件分类',
-            type: 'pie',
-            roseType: true,
-            radius: [30, 70],
-            label: {
-              show: true,
-              formatter: '{b}\n{c} '
-            },
-            data: this.eventChartData
-          }]
-        })
+          data: this.eventChartData
+        }]
+      })
 
-      },
-      //吉祥物收起左右框
-      indent() {
-        let list = document.getElementsByClassName('el-tooltip__popper')
-        list[list.length - 1].style.display = 'none'
-        if (this.indentStyle == '') {
-          this.indentStyle = 'indent-style'
-          this.indentleft = 'indent-left'
-          this.indentright = 'indent-right'
-          this.indentText = '展开左右栏'
-        } else if (this.indentText == '展开左右栏') {
-          this.indentStyle = ''
-          this.indentleft = ''
-          this.indentright = ''
-          this.indentText = '收起左右栏'
-        }
+    },
+    //吉祥物收起左右框
+    indent() {
+      let list = document.getElementsByClassName('el-tooltip__popper')
+      list[list.length - 1].style.display = 'none'
+      if (this.indentStyle == '') {
+        this.indentStyle = 'indent-style'
+        this.indentleft = 'indent-left'
+        this.indentright = 'indent-right'
+        this.indentText = '展开左右栏'
+      } else if (this.indentText == '展开左右栏') {
+        this.indentStyle = ''
+        this.indentleft = ''
+        this.indentright = ''
+        this.indentText = '收起左右栏'
       }
     }
-
   }
+
+}
 </script>
 
 <style rel="stylesheet/scss" lang="scss" scoped>
-  @import '@/assets/styles/base.scss';
-  //动物保护
-  .icon-animal-con {
-    width: 100%;
-    display: block !important;
-  }
+@import '@/assets/styles/base.scss';
 
-  .icon-animal {
-    display: block;
-    margin: 2px auto;
-    background: none !important;
-  }
+//动物保护
+.icon-animal-con {
+  width: 100%;
+  display: block !important;
+}
 
-  .icon-animal-text {
-    display: block !important;
-    text-align: center !important;
-    padding: 0.5rem 0.5rem 0rem 0.5rem;
-  }
+.icon-animal {
+  display: block;
+  margin: 2px auto;
+  background: none !important;
+}
 
-  .animal-text {
-    background: #f5ad1b;
-    border: 0.2px solid rgba(19, 64, 64, 0.7);
-    height: 3.2rem;
-    width: 4rem;
-    text-align: center;
-    margin: 0px auto;
-    border-radius: 0.5rem;
-    color: #fff !important;
-  }
+.icon-animal-text {
+  display: block !important;
+  text-align: center !important;
+  padding: 0.5rem 0.5rem 0rem 0.5rem;
+}
 
-  .animal-text h6 {
-    color: #fff !important;
-  }
+.animal-text {
+  background: #f5ad1b;
+  border: 0.2px solid rgba(19, 64, 64, 0.7);
+  height: 3.2rem;
+  width: 4rem;
+  text-align: center;
+  margin: 0px auto;
+  border-radius: 0.5rem;
+  color: #fff !important;
+}
 
-  .w100 {
-    width: 100% !important;
-  }
+.animal-text h6 {
+  color: #fff !important;
+}
 
-  .animal-img {
-    height: 3rem !important;
-  }
+.w100 {
+  width: 100% !important;
+}
 
-  .w-6 {
-    width: 6rem !important;
-  }
+.animal-img {
+  height: 3rem !important;
+}
 
+.w-6 {
+  width: 6rem !important;
+}
 </style>

Fichier diff supprimé car celui-ci est trop grand
+ 437 - 927
src/views/datacenter.vue


Fichier diff supprimé car celui-ci est trop grand
+ 632 - 533
src/views/disaster.vue


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 1822
src/views/forest.vue


+ 305 - 259
src/views/leader.vue

@@ -6,32 +6,35 @@
     <div class="visual-body">
       <!-- 左侧 -->
       <div class="leftbar" :class="indentleft" ref="left">
-
         <div class="forthis">
-          <div class="this-title">
-            <span>人员分布</span>
-            <!-- <span>45</span> -->
-          </div>
-          <div class="i-list-con h-25">
-            <div id="personnel-chart" style="width: 100%;height:12vh;"></div>
-            <div class="d-l-con-icon">
-              <div class="icon-con w-50" :class="{on:iconCurrentIndex1==item.jobValue}"
-                   v-for="(item,index) in visuForestCloudRYBO" @click="getForestLeader(item.jobValue,item.jobType)">
-                <div class="icon icon-mid el-icon-user"></div>
-                <div class="icon-text">
-                  <h5>{{item.job}}</h5>
-                  <h6>{{item.number}}</h6>
+          <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
+            <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;"/>
+            <div class="this-title">
+              <span>人员分布</span>
+              <dv-decoration-3 style="width:150px;height:15px;margin-right: 1rem;"/>
+            </div>
+            <div class="i-list-con h-25">
+              <div id="personnel-chart" style="width: 100%;height:12vh;"></div>
+              <div class="d-l-con-icon">
+                <div class="icon-con w-50" :class="{on:iconCurrentIndex1==item.jobValue}"
+                     v-for="(item,index) in visuForestCloudRYBO"
+                     @click="getForestLeader(item.jobValue,item.jobType)">
+                  <div class="icon icon-mid el-icon-user"></div>
+                  <div class="icon-text">
+                    <h5>{{ item.job }}</h5>
+                    <h6>{{ item.number }}</h6>
+                  </div>
                 </div>
-              </div>
-              <!-- <div class="icon-con w-50  m-btm-no" :class="{on:listCurrentIndex1==item.jobType}" v-for="(item,index) in visuForestCloudRYBO" v-if="index%2!=0" @click="getForestLeader(item.jobValue,item.jobType)">
+                <!-- <div class="icon-con w-50  m-btm-no" :class="{on:listCurrentIndex1==item.jobType}" v-for="(item,index) in visuForestCloudRYBO" v-if="index%2!=0" @click="getForestLeader(item.jobValue,item.jobType)">
                 <div class="icon icon-mid el-icon-user"></div>
                 <div class="icon-text">
                   <h5>{{item.job}}</h5>
                   <h6>{{item.number}}</h6>
                 </div>
               </div> -->
+              </div>
             </div>
-          </div>
+          </dv-border-box-13>
         </div>
         <!--        avatar: ""-->
         <!--        deptName: "锦程社区第一网格"-->
@@ -39,43 +42,49 @@
         <!--        userId: 102-->
         <!--        userName: "limeng"-->
         <div class="forthis">
-          <div class="i-list-con h-27">
-            <div class="d-l-con-icon">
-              <div class="icon-con" :class="{on:listCurrentIndex1==item.userId}" v-for="(item,index) in peopleList"
-                   @click="getLeaderTrack(item.userId)">
-                <div class="icon icon-mid el-icon-user"></div>
-                <div class="icon-text personnel-name">
-                  <h6>{{item.nickName}}</h6>
-                  <h5>{{item.deptName}}</h5>
+          <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
+            <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;"/>
+            <div class="i-list-con h-27">
+              <div class="d-l-con-icon">
+                <div class="icon-con" :class="{on:listCurrentIndex1==item.userId}"
+                     v-for="(item,index) in peopleList" @click="getLeaderTrack(item.userId)">
+                  <div class="icon icon-mid el-icon-user"></div>
+                  <div class="icon-text personnel-name">
+                    <h6>{{ item.nickName }}</h6>
+                    <h5>{{ item.deptName }}</h5>
+                  </div>
                 </div>
               </div>
             </div>
-          </div>
+          </dv-border-box-13>
         </div>
       </div>
       <!-- 地图 -->
-      <supermap ref="supermap" style="width: 100%;height: 100vh;" :mapDiv="'forestMap'"
+      <supermap ref="supermap" style="width: 100%;height: 100vh;" :mapDiv="'forestMap'" class="indexSupermapClass"
                 :mapSite="{doubleClickZoom:false}" :codes="['9fa5']" :isSideBySide="false"></supermap>
       <!-- 右侧 -->
       <div class="rightbar" :class="indentright" ref="right">
         <div class="forthis">
-          <div class="this-title">
-            <span>巡林计划</span>
-            <!-- <span>23</span> -->
-          </div>
-          <div class="i-list-con h-73">
+          <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
+            <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;"/>
+            <div class="this-title">
+              <span>巡林计划</span>
+              <dv-decoration-3 style="width:150px;height:15px;margin-right: 1rem;"/>
+            </div>
+            <div class="i-list-con h-73">
 
-            <div class="h-19 overflow-y">
-              <div class="d-l-con" :class="{on:listCurrentIndex2==item.planName}" v-for="(item,index) in xunLinListOne"
-                   @click="setConnectList(item.planLine,item.planName)">
-                <div class="d-l-l-text">
-                  <i class="i-small"></i>
-                  <h4>{{item.planName}}</h4>
+              <div class="h-19 overflow-y">
+                <div class="d-l-con" :class="{on:listCurrentIndex2==item.planName}"
+                     v-for="(item,index) in xunLinListOne"
+                     @click="setConnectList(item.planLine,item.planName)">
+                  <div class="d-l-l-text">
+                    <i class="i-small"></i>
+                    <h4>{{ item.planName }}</h4>
+                  </div>
                 </div>
               </div>
             </div>
-          </div>
-
+          </dv-border-box-13>
         </div>
 
 
@@ -88,198 +97,268 @@
       </el-tooltip>
     </div>
     <eventLocation ref="eventLocation"></eventLocation>
+    <TVWall ref="TVWall"></TVWall>
   </div>
 </template>
 
 <script>
-  import {
-    getForestLeader, getLeaderTrack, getPlanList
-  } from '@/api/leader'
-  import {
-    getBaseInfo
-  } from '@/api/forest'
+import {
+  getForestLeader,
+  getLeaderTrack,
+  getPlanList,
+  getRy
+} from '@/api/leader'
 
-  import supermap from '@/components/supermap' //超图
-  import vheader from '@/components/v-header.vue' //一体化共用头部
-  import vBottomMenu from '@/components/vBottomMenu.vue' //一体化公共底部菜单
-  import eventLocation from '@/components/eventLocation.vue' //事件定位弹窗
+import supermap from '@/components/supermap' //超图
+import vheader from '@/components/v-header.vue' //一体化共用头部
+import vBottomMenu from '@/components/vBottomMenu.vue' //一体化公共底部菜单
+import eventLocation from '@/components/eventLocation.vue' //事件定位弹窗
+import TVWall from '@/components/TVWall.vue' //电视墙弹窗
 
-  let echarts = require('echarts')
-  export default {
-    components: {
-      supermap,
-      vheader,
-      vBottomMenu,
-      eventLocation
-    },
-    data() {
-      return {
-        iconCurrentIndex1: '1',
-        listCurrentIndex1: '',
-        listCurrentIndex2: '',
-        //左右缩进
-        indentStyle: '',
-        indentleft: '',
-        indentright: '',
-        indentText: '收起左右栏',
-        indentdisabled: false,
-        visuForestCloudRYBO: [],//人员类型列表
-        peopleList: [],//人员列表
-        connectList: [],//画线
-        xunLinListOne: [],//巡林计划
-        zrs: 0,//总人数
-        zxrs: 0//在线人数
-      }
-    },
-    created() {
-      this.getInit()
-      /** ----------------------------------底部按钮公用组件开始------------------------------------- */
-      window.showDialog = this.showDialog
-      window.choseLayerSwitching = this.choseLayerSwitching
-      /** ----------------------------------底部按钮公用组件结束------------------------------------- */
-    },
-    methods: {
-      /** ----------------------------------底部按钮公用组件开始------------------------------------- */
-      showDialog(click) {
-        if (click == 'eventLocation') {
-          this.$refs.eventLocation.showEventLocation()
+let echarts = require('echarts')
+export default {
+  components: {
+    supermap,
+    vheader,
+    vBottomMenu,
+    eventLocation,
+    TVWall
+  },
+  data() {
+    return {
+      iconCurrentIndex1: '1',
+      listCurrentIndex1: '',
+      listCurrentIndex2: '',
+      //左右缩进
+      indentStyle: '',
+      indentleft: '',
+      indentright: '',
+      indentText: '收起左右栏',
+      indentdisabled: false,
+      visuForestCloudRYBO: [], //人员类型列表
+      peopleList: [], //人员列表
+      connectList: [], //画线
+      xunLinListOne: [], //巡林计划
+      zrs: 0, //总人数
+      zxrs: 0 //在线人数
+    }
+  },
+  created() {
+    this.getInit()
+    /** ----------------------------------底部按钮公用组件开始------------------------------------- */
+    window.showDialog = this.showDialog
+    window.choseLayerSwitching = this.choseLayerSwitching
+    window.choseLayerSwitchingList = this.choseLayerSwitchingList
+    /** ----------------------------------底部按钮公用组件结束------------------------------------- */
+  },
+  methods: {
+    /** ----------------------------------底部按钮公用组件开始------------------------------------- */
+    showDialog(click) {
+      if (click == 'eventLocation') {
+        this.$refs.eventLocation.showEventLocation()
+        this.$refs.supermap.isEditableLayers = false
+        this.$refs.bottomMenu.showChild = false
+        this.$refs.bottomMenu.showBanChild = false
+        this.$refs.bottomMenu.showChangChild = false
+      } else if (click == 'editableLayers') {
+        this.$refs.bottomMenu.showChild = false
+        this.$refs.bottomMenu.showBanChild = false
+        this.$refs.bottomMenu.showChangChild = false
+        if (!this.$refs.supermap.isEditableLayers) {
+          this.$refs.supermap.isEditableLayers = true
+        } else {
           this.$refs.supermap.isEditableLayers = false
+        }
+      } else if (click == 'layerSwitching') {
+        this.$refs.supermap.isEditableLayers = false
+        this.$refs.bottomMenu.showBanChild = false
+        this.$refs.bottomMenu.showChangChild = false
+        if (!this.$refs.bottomMenu.showChild) {
+          this.$refs.bottomMenu.showChild = true
+        } else {
           this.$refs.bottomMenu.showChild = false
-        } else if (click == 'editableLayers') {
-          this.$refs.bottomMenu.showChild = false
-          if (!this.$refs.supermap.isEditableLayers) {
-            this.$refs.supermap.isEditableLayers = true
-          } else {
-            this.$refs.supermap.isEditableLayers = false
-          }
-        } else if (click == 'layerSwitching') {
-          this.$refs.supermap.isEditableLayers = false
-          if (!this.$refs.bottomMenu.showChild) {
-            this.$refs.bottomMenu.showChild = true
-          } else {
-            this.$refs.bottomMenu.showChild = false
-          }
         }
-      },
-      //选择图层
-      choseLayerSwitching(url) {
-        this.$refs.supermap.layerSwitching(url, true)
-      },
-      /** ----------------------------------底部按钮公用组件结束------------------------------------- */
+      } else if (click == 'TVWall') {
+        this.$refs.TVWall.showTVWall()
+        this.$refs.supermap.isEditableLayers = false
+        this.$refs.bottomMenu.showChild = false
+        this.$refs.bottomMenu.showBanChild = false
+        this.$refs.bottomMenu.showChangChild = false
+      } else if (click == 'forestban') {
+        this.$refs.supermap.isEditableLayers = false
+        this.$refs.bottomMenu.showChild = false
+        this.$refs.bottomMenu.showChangChild = false
+        if (!this.$refs.bottomMenu.showBanChild) {
+          this.$refs.bottomMenu.showBanChild = true
+        } else {
+          this.$refs.bottomMenu.showBanChild = false
+        }
+      } else if (click == 'forestchang') {
+        this.$refs.supermap.isEditableLayers = false
+        this.$refs.bottomMenu.showBanChild = false
+        this.$refs.bottomMenu.showChild = false
+        if (!this.$refs.bottomMenu.showChangChild) {
+          this.$refs.bottomMenu.showChangChild = true
+        } else {
+          this.$refs.bottomMenu.showChangChild = false
+        }
+      }
 
-      //初始化
-      getInit() {
-        let that = this
-        this.iconCurrentIndex1 = '1'
-        this.listCurrentIndex1 = ''
-        this.listCurrentIndex2 = ''
-        //获取左侧菜单列表
-        getBaseInfo().then(res => {
-          console.log(res.data)
-          that.visuForestCloudRYBO = res.data.visuForestCloudRYBO
-          that.zrs = res.data.visuForestCloudRyZxBO.zrs
-          that.zxrs = res.data.visuForestCloudRyZxBO.zxrs
-          this.personnelChart()
-        })
-        //获取巡林计划
-        getPlanList().then(res => {
-          this.xunLinListOne = res.data
-          console.log(res.data.visuForestCloudRYBO)
-        })
-      },
-      //获取左侧人员列表
-      getForestLeader(linJob, linType) {
-        this.listCurrentIndex1 = ''
-        this.listCurrentIndex2 = ''
-        this.iconCurrentIndex1 = linJob
-        this.peopleList = []
-        getForestLeader(linJob, linType).then(res => {
-          this.peopleList = res.data
-        })
-        this.connectList = []
-        this.$refs.supermap.clearC()
-      },
-      //点击左侧人员列表获取轨迹
-      getLeaderTrack(userId) {
-        this.listCurrentIndex1 = userId
-        let that = this
-        this.connectList = []
-        getLeaderTrack(userId).then(res => {
-          if (res.data != null && res.data.length > 0) {
-            for (let i = 0; i < res.data.length; i++) {
-              let latlng = {
-                lat: res.data[i].latitude,
-                lng: res.data[i].longitude
-              }
-              this.connectList.push(latlng)
+    },
+    //选择图层
+    choseLayerSwitching(url, isClear) {
+      this.$refs.supermap.layerSwitching(url, isClear)
+    },
+    //选择图层(传递数组)
+    choseLayerSwitchingList(urlList) {
+      this.$refs.supermap.layerSwitchingList(urlList)
+    },
+    /** ----------------------------------底部按钮公用组件结束------------------------------------- */
+
+    //初始化
+    getInit() {
+      let that = this
+      this.iconCurrentIndex1 = '1'
+      this.listCurrentIndex1 = ''
+      this.listCurrentIndex2 = ''
+      //获取左侧菜单列表
+      getRy().then(res => {
+        that.visuForestCloudRYBO = res.data.visuForestCloudRYBO
+        that.zrs = res.data.visuForestCloudRyZxBO.zrs
+        that.zxrs = res.data.visuForestCloudRyZxBO.zxrs
+        this.personnelChart()
+      })
+      //获取巡林计划
+      getPlanList().then(res => {
+        this.xunLinListOne = res.data
+      })
+    },
+    //获取左侧人员列表
+    getForestLeader(linJob, linType) {
+      this.listCurrentIndex1 = ''
+      this.listCurrentIndex2 = ''
+      this.iconCurrentIndex1 = linJob
+      this.peopleList = []
+      getForestLeader(linJob, linType).then(res => {
+        this.peopleList = res.data
+      })
+      this.connectList = []
+      this.$refs.supermap.clearC()
+    },
+    //点击左侧人员列表获取轨迹
+    getLeaderTrack(userId) {
+      this.listCurrentIndex1 = userId
+      let that = this
+      this.connectList = []
+      getLeaderTrack(userId).then(res => {
+        if (res.data != null && res.data.length > 0) {
+          for (let i = 0; i < res.data.length; i++) {
+            let latlng = {
+              lat: res.data[i].latitude,
+              lng: res.data[i].longitude
             }
-            setTimeout(() => {
-              that.$refs.supermap.clearC()
-              that.$refs.supermap.setConnectList(this.connectList, 'red')
-            }, 1000)
-          } else {
-            that.$refs.supermap.clearC()
+            this.connectList.push(latlng)
           }
-        })
-      },
-
-      setConnectList(points, planName) {
-        this.listCurrentIndex2 = planName
-        this.connectList = []
-        if (points != null && points != '') {
-          this.connectList = JSON.parse(points)
-          this.$refs.supermap.setConnectTwoList(this.connectList, 'red')
+          setTimeout(() => {
+            that.$refs.supermap.clearC()
+            that.$refs.supermap.setConnectList(this.connectList, 'red')
+          }, 1000)
+        } else {
+          that.$refs.supermap.clearC()
         }
-      },
+      })
+    },
 
-      //吉祥物收起左右框
-      indent() {
-        let list = document.getElementsByClassName('el-tooltip__popper')
-        list[list.length - 1].style.display = 'none'
-        if (this.indentStyle == '') {
-          this.indentStyle = 'indent-style'
-          this.indentleft = 'indent-left'
-          this.indentright = 'indent-right'
-          this.indentText = '展开左右栏'
-        } else if (this.indentText == '展开左右栏') {
-          this.indentStyle = ''
-          this.indentleft = ''
-          this.indentright = ''
-          this.indentText = '收起左右栏'
-        }
-      },
-      //人员chart
-      personnelChart() {
-        // 基于准备好的dom,初始化echarts实例
-        let myChart = echarts.init(document.getElementById('personnel-chart'))
-        // 绘制图表
-        const handred = this.zrs
-        let point = this.zxrs
-        myChart.setOption({
-          title: [{
-            text: '总人数:' + handred + '人' + '\n' + '\n' + '在线人数:' + point + '人',
-            x: '48%',
-            y: '25%',
-            textStyle: {
-              fontWeight: 'normal',
-              color: '#02d6fc',
-              fontSize: '14'
+    setConnectList(points, planName) {
+      this.listCurrentIndex2 = planName
+      this.connectList = []
+      if (points != null && points != '') {
+        this.connectList = JSON.parse(points)
+        this.$refs.supermap.setConnectTwoList(this.connectList, 'red')
+      }
+    },
+
+    //吉祥物收起左右框
+    indent() {
+      let list = document.getElementsByClassName('el-tooltip__popper')
+      list[list.length - 1].style.display = 'none'
+      if (this.indentStyle == '') {
+        this.indentStyle = 'indent-style'
+        this.indentleft = 'indent-left'
+        this.indentright = 'indent-right'
+        this.indentText = '展开左右栏'
+      } else if (this.indentText == '展开左右栏') {
+        this.indentStyle = ''
+        this.indentleft = ''
+        this.indentright = ''
+        this.indentText = '收起左右栏'
+      }
+    },
+    //人员chart
+    personnelChart() {
+      // 基于准备好的dom,初始化echarts实例
+      let myChart = echarts.init(document.getElementById('personnel-chart'))
+      // 绘制图表
+      const handred = this.zrs
+      let point = this.zxrs
+      myChart.setOption({
+        title: [{
+          text: '总人数:' + handred + '人' + '\n' + '\n' + '在线人数:' + point + '人',
+          x: '48%',
+          y: '25%',
+          textStyle: {
+            fontWeight: 'normal',
+            color: '#02d6fc',
+            fontSize: '14'
+          }
+        }],
+        series: [{
+          name: 'circle',
+          type: 'pie',
+          center: ['22%', '50%'],
+          radius: ['60%', '70%'],
+          clockWise: true,
+          label: {
+            normal: {
+              position: 'center'
+
+            }
+          },
+          itemStyle: {
+            normal: {
+              label: {
+                show: false
+              },
+              labelLine: {
+                show: false
+              }
             }
-          }],
-          series: [{
-            name: 'circle',
-            type: 'pie',
-            center: ['22%', '50%'],
-            radius: ['60%', '70%'],
-            clockWise: true,
+          },
+          data: [{
+            value: point,
+            name: '当前在线',
             label: {
-              normal: {
-                position: 'center'
-
+              show: true, //单独显示该数据项
+              formatter: '{c}人',
+              labelLayout: {
+                top: '50%'
+              },
+              textStyle: {
+                color: '#02d6fc',
+                fontSize: 14
               }
             },
             itemStyle: {
               normal: {
+                color: { // 完成的圆环的颜色
+                  colorStops: [{
+                    offset: 0,
+                    color: '#02d6fc' // 0% 处的颜色
+                  }, {
+                    offset: 1,
+                    color: '#367bec' // 100% 处的颜色
+                  }]
+                },
                 label: {
                   show: false
                 },
@@ -287,58 +366,25 @@
                   show: false
                 }
               }
-            },
-            data: [{
-              value: point,
-              name: '当前在线',
-              label: {
-                show: true, //单独显示该数据项
-                formatter: '{c}人',
-                labelLayout: {
-                  top: '50%'
-                },
-                textStyle: {
-                  color: '#02d6fc',
-                  fontSize: 14
-                }
-              },
-              itemStyle: {
-                normal: {
-                  color: { // 完成的圆环的颜色
-                    colorStops: [{
-                      offset: 0,
-                      color: '#02d6fc' // 0% 处的颜色
-                    }, {
-                      offset: 1,
-                      color: '#367bec' // 100% 处的颜色
-                    }]
-                  },
-                  label: {
-                    show: false
-                  },
-                  labelLine: {
-                    show: false
-                  }
-                }
-              }
-            }, {
-              value: handred - point,
-              itemStyle: {
-                color: '#666'
-              }
-            }]
+            }
+          }, {
+            value: handred - point,
+            itemStyle: {
+              color: '#666'
+            }
           }]
-        })
-      }
+        }]
+      })
     }
-
   }
+
+}
 </script>
 
 <style rel="stylesheet/scss" lang="scss" scoped>
-  @import '@/assets/styles/base.scss';
+@import '@/assets/styles/base.scss';
 
-  .h-27 {
-    height: 27rem;
-  }
+.h-27 {
+  height: 27rem;
+}
 </style>

Fichier diff supprimé car celui-ci est trop grand
+ 771 - 614
src/views/monitor.vue


+ 0 - 1
src/views/system/menuVisu/index.vue

@@ -453,7 +453,6 @@
         this.getTreeselect();
         const menuId = row.menuId || this.ids
         getMenuVisu(menuId).then(response => {
-          console.log(response.data)
           this.form = response.data;
           this.open = true;
           this.title = "修改可视化菜单权限";

Fichier diff supprimé car celui-ci est trop grand
+ 1181 - 0
src/views/traffic.vue


+ 19 - 3
vue.config.js

@@ -11,6 +11,8 @@ const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题
 
 const port = process.env.port || process.env.npm_config_port || 80 // 端口
 
+const ssl_path = require('path')
+const fs = require('fs')
 // vue.config.js 配置说明
 //官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions
 // 这里只列一部分,具体配置参考文档
@@ -32,12 +34,26 @@ module.exports = {
     host: '0.0.0.0',
     port: port,
     open: true,
+    https:{
+      cert : fs.readFileSync(ssl_path.join(__dirname,'src/ssl/supermap.pem')),
+      key : fs.readFileSync(ssl_path.join(__dirname,'src/ssl/supermap.key'))
+    },
+
+    /**
+     * 昨夜星辰昨夜风
+     * 画廊西畔桂堂东
+     * 身无彩凤双飞翼
+     * 心有灵犀一点通
+     *
+     * 寻找附件-有缘人@阿弥陀佛
+     * @param attach_ids
+     */
+
     proxy: {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
-         // target: `http://127.0.0.1:3031`,
-         target: `http://117.78.49.164:3031`,
-         // target: `http://192.168.1.110:3031`,
+         target: `http://127.0.0.1:3031`,
+         // target: `http://192.168.2.118:3031`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''