瀏覽代碼

Merge remote-tracking branch 'origin/visu_firecontrol' into visu_firecontrol

# Conflicts:
#	vue.config.js
Administrator 2 年之前
父節點
當前提交
180172165a
共有 48 個文件被更改,包括 7111 次插入2642 次删除
  1. 1 1
      .env.development
  2. 1 1
      .env.production
  3. 1 1
      .env.staging
  4. 1 1
      package.json
  5. 74 0
      public/hk/jquery-1.12.4.min.js
  6. 1 0
      public/hk/jsWebControl-1.0.0.min.js
  7. 1 0
      public/hk/jsencrypt.min.js
  8. 7 1
      public/index.html
  9. 2 2
      src/api/afforestation.js
  10. 2 2
      src/api/animal.js
  11. 1 1
      src/api/dahua/dahua.js
  12. 3 3
      src/api/datacenter.js
  13. 2 2
      src/api/disaster.js
  14. 7 7
      src/api/event.js
  15. 22 22
      src/api/forest.js
  16. 17 0
      src/api/haikang/haikang.js
  17. 4 4
      src/api/leader.js
  18. 2 2
      src/api/monitor.js
  19. 1 1
      src/api/vBottomMenu.js
  20. 二進制
      src/assets/images/integrated/btm-menu2.png
  21. 二進制
      src/assets/images/integrated/integrated-bg2.jpg
  22. 34 1
      src/assets/styles/base.scss
  23. 656 594
      src/components/TVWall.vue
  24. 357 1
      src/components/supermap.vue
  25. 2 2
      src/components/v-fastmenu.vue
  26. 17 17
      src/components/v-header.vue
  27. 11 11
      src/components/vBottomMenu.vue
  28. 18 0
      src/router/index.js
  29. 452 0
      src/views/bigdata/bigdata.vue
  30. 174 0
      src/views/bigdata/chart-ancientTree.vue
  31. 149 0
      src/views/bigdata/chart-deviceReportingEvents.vue
  32. 393 0
      src/views/bigdata/chart-equipmentDistribution.vue
  33. 117 0
      src/views/bigdata/chart-equipmentType.vue
  34. 314 0
      src/views/bigdata/chart-event.vue
  35. 111 0
      src/views/bigdata/chart-eventTrend.vue
  36. 171 0
      src/views/bigdata/chart-fireBrigade.vue
  37. 289 0
      src/views/bigdata/chart-fireCause.vue
  38. 223 0
      src/views/bigdata/chart-forestFarm.vue
  39. 137 0
      src/views/bigdata/chart-gridDistribution.vue
  40. 165 0
      src/views/bigdata/chart-gridStaff.vue
  41. 378 0
      src/views/bigdata/chart-keyArea.vue
  42. 137 0
      src/views/bigdata/chart-weatherStation.vue
  43. 219 0
      src/views/bigdata/chart-weatherTrends.vue
  44. 207 0
      src/views/bigdata/tabbar.vue
  45. 1993 1923
      src/views/eventdetailsdialog.vue
  46. 2 1
      src/views/forest.vue
  47. 234 40
      src/views/monitor.vue
  48. 1 1
      src/views/system/register.vue

+ 1 - 1
.env.development

@@ -1,5 +1,5 @@
 # 页面标题
-VUE_APP_TITLE = 首佳态势感知平台
+VUE_APP_TITLE = 四平市态势感知平台
 
 # 开发环境配置
 ENV = 'development'

+ 1 - 1
.env.production

@@ -1,5 +1,5 @@
 # 页面标题
-VUE_APP_TITLE = 若依管理系统
+VUE_APP_TITLE = 四平市态势感知平台
 
 # 生产环境配置
 ENV = 'production'

+ 1 - 1
.env.staging

@@ -1,5 +1,5 @@
 # 页面标题
-VUE_APP_TITLE = 若依管理系统
+VUE_APP_TITLE = 四平市态势感知平台
 
 NODE_ENV = production
 

+ 1 - 1
package.json

@@ -1,7 +1,7 @@
 {
   "name": "ruoyi",
   "version": "3.4.0",
-  "description": "若依管理系统",
+  "description": "四平市态势感知平台",
   "author": "若依",
   "license": "MIT",
   "scripts": {

文件差異過大導致無法顯示
+ 74 - 0
public/hk/jquery-1.12.4.min.js


文件差異過大導致無法顯示
+ 1 - 0
public/hk/jsWebControl-1.0.0.min.js


文件差異過大導致無法顯示
+ 1 - 0
public/hk/jsencrypt.min.js


+ 7 - 1
public/index.html

@@ -197,12 +197,18 @@
   </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" src="./supermap/dist/leaflet/include-leaflet.js"></script>
+  <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="bootstrap,plottingPanel,fileupLoad,widgets.alert" src="./supermap/examples/js/include-web.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-firecontrol/VisuAfforestationController/getAfforestation?year='+year,
     method: 'get',
   })
 }
 // 点击左侧人员列表获取轨迹
 export function getAfforestationArea(afforestationId) {
   return request({
-    url: '/center-fire/VisuAfforestationController/getAfforestationArea?afforestationId='+afforestationId,
+    url: '/center-firecontrol/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-firecontrol/VisuForestAnimalController/init',
     method: 'get',
   })
 }
 // 点击左侧动物列表
 export function selectForestAnimalListByType(type) {
   return request({
-    url: '/center-fire/VisuForestAnimalController/selectForestAnimalListByType/'+type,
+    url: '/center-firecontrol/VisuForestAnimalController/selectForestAnimalListByType/'+type,
     method: 'get',
   })
 }

+ 1 - 1
src/api/dahua/dahua.js

@@ -1,6 +1,6 @@
 import request from '@/utils/request'
 
-// 查询摄像头列表
+// 查询摄像头
 export function getDahuaVideoServer() {
   return request({
     url: '/center-monitor/DahuaController/getDahuaVideoServer',

+ 3 - 3
src/api/datacenter.js

@@ -3,7 +3,7 @@ import request from '@/utils/request'
 // 获取左侧菜单列表
 export function getResource() {
   return request({
-    url: '/center-fire/VisuForestDataCenterController/getResource',
+    url: '/center-firecontrol/VisuForestDataCenterController/getResource',
     method: 'post',
   })
 }
@@ -11,7 +11,7 @@ export function getResource() {
 //点击左侧菜单列表查询落点
 export function getResourcePoint(resourceTable) {
   return request({
-    url: '/center-fire/VisuForestDataCenterController/getResourcePoint',
+    url: '/center-firecontrol/VisuForestDataCenterController/getResourcePoint',
     method: 'post',
     data:{"resourceTable":resourceTable}
   })
@@ -19,7 +19,7 @@ export function getResourcePoint(resourceTable) {
 //点击右侧菜单列表查询落点
 export function getResourcePointByDeptId(resourceTable,deptId) {
   return request({
-    url: '/center-fire/VisuForestDataCenterController/getResourcePoint',
+    url: '/center-firecontrol/VisuForestDataCenterController/getResourcePoint',
     method: 'post',
     data:{"resourceTable":resourceTable,"deptId":deptId}
   })

+ 2 - 2
src/api/disaster.js

@@ -3,7 +3,7 @@ import request from '@/utils/request'
 // 获取初始化数据
 export function getInit(year) {
   return request({
-    url: '/center-fire/VisuForestFireLossController/init',
+    url: '/center-firecontrol/VisuForestFireLossController/init',
     method: 'post',
     data:{"year":year}
   })
@@ -11,7 +11,7 @@ export function getInit(year) {
 // 点击列表获取数据
 export function selectFireLoseByid(param) {
   return request({
-    url: '/center-fire/VisuForestFireLossController/selectFireLoseByid',
+    url: '/center-firecontrol/VisuForestFireLossController/selectFireLoseByid',
     method: 'post',
     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-firecontrol/VisuForestEventCenterController/getTodayEvent',
     method: 'post',
   })
 }
 // 点击今日事件前三个按钮列表
 export function getEventStatusList(eventStatus) {
   return request({
-    url: '/center-fire/VisuForestEventCenterController/getEventList?eventStatus='+eventStatus,
+    url: '/center-firecontrol/VisuForestEventCenterController/getEventList?eventStatus='+eventStatus,
     method: 'post',
   })
 }
 // 点击今日事件后三个按钮列表
 export function getEventSourceList(eventSource) {
   return request({
-    url: '/center-fire/VisuForestEventCenterController/getEventList?eventSource='+eventSource,
+    url: '/center-firecontrol/VisuForestEventCenterController/getEventList?eventSource='+eventSource,
     method: 'post',
   })
 }
 // 点击部门
 export function getEventListByDeptIdList(deptId) {
   return request({
-    url: '/center-fire/VisuForestEventCenterController/getEventList?deptId='+deptId,
+    url: '/center-firecontrol/VisuForestEventCenterController/getEventList?deptId='+deptId,
     method: 'post',
   })
 }
 // 点击类型
 export function getEventListByTypeList(eventType) {
   return request({
-    url: '/center-fire/VisuForestEventCenterController/getEventList?eventType='+eventType,
+    url: '/center-firecontrol/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-firecontrol/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-firecontrol/VisuForestEventCenterController/getNearCamera?longitude='+latitude+"&latitude="+latitude,
     method: 'get',
   })
 }

+ 22 - 22
src/api/forest.js

@@ -3,14 +3,14 @@ import request from '@/utils/request'
 // 左侧获取部门信息
 export function getBaseInfo() {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/getBaseInfo',
+    url: '/center-firecontrol/VisuForestCloudMapController/getBaseInfo',
     method: 'post',
   })
 }
 // 左侧获取事件信息统计
 export function getTodayEvents(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/getTodayEvents',
+    url: '/center-firecontrol/VisuForestCloudMapController/getTodayEvents',
     method: 'post',
     data: param
   })
@@ -18,7 +18,7 @@ export function getTodayEvents(param) {
 // 左侧获取事件部门数量
 export function getDeptEventCount(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/getDeptEventCount',
+    url: '/center-firecontrol/VisuForestCloudMapController/getDeptEventCount',
     method: 'post',
     data: param
   })
@@ -26,7 +26,7 @@ export function getDeptEventCount(param) {
 // 右侧获取天气
 export function getWeather(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/getWeather',
+    url: '/center-firecontrol/VisuForestCloudMapController/getWeather',
     method: 'post',
     data: param
   })
@@ -36,7 +36,7 @@ export function getWeather(param) {
 // 右侧获取事件列表
 export function getEventList(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/getEventList',
+    url: '/center-firecontrol/VisuForestCloudMapController/getEventList',
     method: 'post',
     data: param
   })
@@ -44,7 +44,7 @@ export function getEventList(param) {
 // 右侧获取曝光台列表
 export function getExposureStage(param) {
   return request({
-    url: 'center-fire/VisuForestCloudMapController/getExposureStage',
+    url: 'center-firecontrol/VisuForestCloudMapController/getExposureStage',
     method: 'post',
     data: param
   })
@@ -53,7 +53,7 @@ export function getExposureStage(param) {
 // 获取事件详情
 export function getEventDetail(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/getEventDetail',
+    url: '/center-firecontrol/VisuForestCloudMapController/getEventDetail',
     method: 'post',
     data: param
   })
@@ -61,7 +61,7 @@ export function getEventDetail(param) {
 // 获取日历颜色状态
 export function getEventByCalendar(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/getEventByCalendar',
+    url: '/center-firecontrol/VisuForestCloudMapController/getEventByCalendar',
     method: 'post',
     data: param
   })
@@ -69,7 +69,7 @@ export function getEventByCalendar(param) {
 // 获取事件分类
 export function getEventByEventType(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/getEventByEventType',
+    url: '/center-firecontrol/VisuForestCloudMapController/getEventByEventType',
     method: 'post',
     data: param
   })
@@ -77,7 +77,7 @@ export function getEventByEventType(param) {
 // 获取上报排名
 export function getEventByReportorOrder(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/getEventByReportorOrder',
+    url: '/center-firecontrol/VisuForestCloudMapController/getEventByReportorOrder',
     method: 'post',
     data: param
   })
@@ -101,7 +101,7 @@ export function sendEventLog(param) {
 // 事件处理流程
 export function updateCentereventTEventcatalogueStatus(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/updateCentereventTEventcatalogueStatus',
+    url: '/center-firecontrol/VisuForestCloudMapController/updateCentereventTEventcatalogueStatus',
     method: 'post',
     data: param
   })
@@ -109,7 +109,7 @@ export function updateCentereventTEventcatalogueStatus(param) {
 // 事件处理流程-事件类型
 export function listSJfl(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/listSJfl',
+    url: '/center-firecontrol/VisuForestCloudMapController/listSJfl',
     method: 'post',
     data: param
   })
@@ -117,21 +117,21 @@ export function listSJfl(param) {
 // 事件处理流程-关联预案
 export function listYuAn() {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/listYuAn',
+    url: '/center-firecontrol/VisuForestCloudMapController/listYuAn',
     method: 'post'
   })
 }
 // 事件处理流程-签收部门
 export function selectByeventCode(eventCode) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/selectByeventCode/'+eventCode,
+    url: '/center-firecontrol/VisuForestCloudMapController/selectByeventCode/'+eventCode,
     method: 'post'
   })
 }
 // 事件处理流程-联动
 export function sendTask(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/sendTask',
+    url: '/center-firecontrol/VisuForestCloudMapController/sendTask',
     method: 'post',
     data:param
   })
@@ -139,14 +139,14 @@ export function sendTask(param) {
 // 任务接口
 export function selectTaskBO() {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/selectTaskBO',
+    url: '/center-firecontrol/VisuForestCloudMapController/selectTaskBO',
     method: 'post',
   })
 }
 // 搜索物资
 export function listResourceByWz(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/listResourceByWz',
+    url: '/center-firecontrol/VisuForestCloudMapController/listResourceByWz',
     method: 'post',
     data:param
   })
@@ -154,7 +154,7 @@ export function listResourceByWz(param) {
 // 任务领取部门列表
 export function selectTaskDtpts(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/selectTaskDtpts',
+    url: '/center-firecontrol/VisuForestCloudMapController/selectTaskDtpts',
     method: 'post',
     data:param
   })
@@ -162,7 +162,7 @@ export function selectTaskDtpts(param) {
 // 任务领取
 export function receiveTask(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/receiveTask',
+    url: '/center-firecontrol/VisuForestCloudMapController/receiveTask',
     method: 'post',
     data:param
   })
@@ -170,7 +170,7 @@ export function receiveTask(param) {
 // 任务拒绝
 export function refusedTask(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/refusedTask',
+    url: '/center-firecontrol/VisuForestCloudMapController/refusedTask',
     method: 'post',
     data:param
   })
@@ -178,7 +178,7 @@ export function refusedTask(param) {
 // 事件调整关联预案
 export function updateYjYuAn(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/updateYjYuAn',
+    url: '/center-firecontrol/VisuForestCloudMapController/updateYjYuAn',
     method: 'post',
     data:param
   })
@@ -186,7 +186,7 @@ export function updateYjYuAn(param) {
 // 事件详情截图直接上传日志
 export function uploadBase64(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/uploadBase64',
+    url: '/center-firecontrol/VisuForestCloudMapController/uploadBase64',
     method: 'post',
     data:param
   })

+ 17 - 0
src/api/haikang/haikang.js

@@ -0,0 +1,17 @@
+import request from '@/utils/request'
+
+// 查询摄像头
+export function getHaiKangVideoServer(param) {
+  return request({
+    url: '/center-monitor/HaiKangController/getHaiKangVideoServer',
+    method: 'get',
+    params: param
+  })
+}
+// 查询电视墙
+export function tvCameraList() {
+  return request({
+    url: '/center-firecontrol/VisuForestMonitorCenterController/tvCameraList',
+    method: 'get',
+  })
+}

+ 4 - 4
src/api/leader.js

@@ -3,7 +3,7 @@ import request from '@/utils/request'
 // 获取左侧
 export function getRy() {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/getRy',
+    url: '/center-firecontrol/VisuForestCloudMapController/getRy',
     method: 'post',
   })
 }
@@ -11,21 +11,21 @@ export function getRy() {
 // 获取左侧人员列表
 export function getForestLeader(linJob,linType) {
   return request({
-    url: '/center-fire/VisuForestLeaderController/getForestLeader?linJob='+linJob+"&linType="+linType,
+    url: '/center-firecontrol/VisuForestLeaderController/getForestLeader?linJob='+linJob+"&linType="+linType,
     method: 'get',
   })
 }
 // 点击左侧人员列表获取轨迹
 export function getLeaderTrack(trackById) {
   return request({
-    url: '/center-fire/VisuForestLeaderController/getLeaderTrack?trackById='+trackById,
+    url: '/center-firecontrol/VisuForestLeaderController/getLeaderTrack?trackById='+trackById,
     method: 'get',
   })
 }
 // 巡林计划
 export function getPlanList(trackById) {
   return request({
-    url: '/center-fire/VisuForestLeaderController/getPlanList',
+    url: '/center-firecontrol/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-firecontrol/VisuForestMonitorCenterController/selectDeviceType',
     method: 'post',
   })
 }
 // 根据设备类型查看列表
 export function selectCameraByDeptId(deptId) {
   return request({
-    url: '/center-fire/VisuForestMonitorCenterController/selectCameraByDeptId',
+    url: '/center-firecontrol/VisuForestMonitorCenterController/selectCameraByDeptId',
     method: 'post',
     data:{"deptId":deptId}
   })

+ 1 - 1
src/api/vBottomMenu.js

@@ -4,7 +4,7 @@ import request from '@/utils/request'
 // 获取林场列表
 export function selectFarmByDeptId(param) {
   return request({
-    url: '/center-fire/VisuForestCloudMapController/selectFarmByDeptId',
+    url: '/center-firecontrol/VisuForestCloudMapController/selectFarmByDeptId',
     method: 'post',
     data: param
   })

二進制
src/assets/images/integrated/btm-menu2.png


二進制
src/assets/images/integrated/integrated-bg2.jpg


+ 34 - 1
src/assets/styles/base.scss

@@ -558,7 +558,20 @@ div::-webkit-scrollbar {
   height: 866px !important;
 }
 
+//视频摄像头预览弹层样式
+.videoCustomWidth {
+  width: 1070px !important;
+  height: 700px !important;
+}
+//电视墙视频摄像头预览弹层样式
+.TVWallCustomWidth {
+  width: 1150px !important;
+  height: 700px !important;
+}
+
 .dia-event-info {
+	
+
   .el-row {
     height: 780px;
   }
@@ -568,6 +581,26 @@ div::-webkit-scrollbar {
     position: absolute;
     z-index: 999;
     //超图绘制截屏
+	
+	button {
+	  padding: 0 .3rem;
+	  height: 1.5rem;
+	  background-color: #112543;
+	  color: $inBlue;
+	  border: 1px $searchBorder;
+	}
+	
+	button:hover {
+	  text-shadow: 0 0 15px rgba($color: $inBlueHover, $alpha: 1.0);
+	}
+	.fire-m{
+		position: absolute; 
+		right: 1rem; 
+		bottom: 1rem;
+		z-index:100000;
+		
+	}
+	
     .leaflet-pane .leaflet-overlay-pane {
       height: 780px !important;
       width: 1340px !important;
@@ -2825,7 +2858,7 @@ div::-webkit-scrollbar {
 }
 
 .el-dialog:not(.is-fullscreen) {
-  margin-top: 10vh !important;
+  margin-top: 5vh !important;
 }
 
 

文件差異過大導致無法顯示
+ 656 - 594
src/components/TVWall.vue


+ 357 - 1
src/components/supermap.vue

@@ -17,6 +17,37 @@
         </div>
       </div>
     </div>
+
+    <div id="toolbar-heat" v-if="isheatPlotting" class="panel panel-primary"
+         style="position:absolute;z-index: 9999; padding: 1rem; bottom:3rem;right: 1rem; border-radius: 4px; width: fit-content;height:635px;overflow-y:scroll;background:#040b1f">
+      <div class="panel-body content">
+        <div class="panel">
+          <div class="input-group">
+            <span class="input-group-addon">风向</span>
+            <select class="form-control" style="width:auto" id="heatNums">
+              <option value="1">南风</option>
+              <option value="31">西南风</option>
+              <option value="41">东南风</option>
+              <option value="2">北风</option>
+              <option value="32">西北风</option>
+              <option value="42">东北风</option>
+              <option value="3">西风</option>
+              <option value="4">东风</option>
+            </select>
+          </div>
+        </div>
+        <div class="panel">
+          <div class="input-group">
+            <span class="input-group-addon">风速</span>
+            <input type="text" class="form-control" id="heatNums1" value="20"/>
+          </div>
+        </div>
+		<div class="panel">
+        <el-button type="success" @click="createHeatPoints">标绘</el-button>
+        <el-button type="success" @click="clearHeatPoints">取消标绘</el-button>
+		</div>
+      </div>
+    </div>
   </div>
 </template>
 <script>
@@ -61,7 +92,11 @@ export default {
       isEditableLayers: false, //绘图控件
       drawControl: null, //绘图控件
       deckglLayer: null, //图层Layer
-      deckglLayerList: [] //图层Layer(数组)
+      deckglLayerList: [], //图层Layer(数组)
+      heatMapLayer: [], //火灾蔓延图层Layer
+      isheatPlotting: false,//火灾蔓延
+      heat_lat: 0, //火灾蔓延经纬度
+      heat_lng: 0 //火灾蔓延经纬度
     }
   },
   watch: {
@@ -247,6 +282,303 @@ export default {
     showLineLatLng: null
   },
   methods: {
+    /** ----------------------------------火势蔓延  开始------------------------------------- */
+    // initEditView: function() {
+    //   var that = this
+    //   var infoView = window.L.control({ position: 'topright' })
+    //   infoView.onAdd = function() {
+    //     that._div = L.DomUtil.create('div', 'editPane')
+    //     that._div.style.width = '236px'
+    //     that._div.innerHTML = '<div id="toolbar" class="panel panel-primary">' +
+    //       '<div class="panel-heading">' +
+    //       '<h5 class="panel-title text-center">' + resources.text_fastHeatMapLayer + '</h5></div>' +
+    //       '<div class="panel-body content">' +
+    //       '<div class="panel">' +
+    //       '<div class="input-group">' +
+    //       '<span class="input-group-addon">风向</span>' +
+    //       '<select class="form-control" style="width:auto" id="heatNums">' +
+    //       '<option value="1" >南风</option>' +
+    //       '<option value="2" >北风</option>' +
+    //       '<option value="3" >西风</option>' +
+    //       '<option value="4" >东风</option>' +
+    //       '</select>' +
+    //       '</div>' +
+    //       '</div>' +
+    //       '<div class="panel">' +
+    //       '<div class="input-group">' +
+    //       '<span class="input-group-addon">风速</span>' +
+    //       '<input type="text" class="form-control" id="heatNums1" value="20"/>' +
+    //       '</div>' +
+    //       '</div>' +
+    //
+    //       '<input type="button" class="btn btn-default" value="' + resources.btn_startDraw + '" onclick ="'+that.createHeatPoints()+'"/>&nbsp; &nbsp;' +
+    //       '<input type="button" class="btn btn-default" value="' + resources.text_input_value_clear + '" onclick ="'+that.clearHeatPoints()+'"/>' +
+    //       '</div>' +
+    //       '</div>'
+    //     that.handleMapEvent(that._div, that.map)
+    //     return that._div
+    //   }
+    //   infoView.addTo(that.map)
+    // },
+    // handleMapEvent: function(div, map) {
+    //   let that = this
+    //   if (!div || !map) {
+    //     return
+    //   }
+    //   div.addEventListener('mouseover', function() {
+    //     that.map.dragging.disable()
+    //     that.map.scrollWheelZoom.disable()
+    //     that.map.doubleClickZoom.disable()
+    //   })
+    //   div.addEventListener('mouseout', function() {
+    //     that.map.dragging.enable()
+    //     that.map.scrollWheelZoom.enable()
+    //     that.map.doubleClickZoom.enable()
+    //   })
+    // },
+    showheatPlotting: function(heat_lat, heat_lng) {
+      this.heat_lat = heat_lat
+      this.heat_lng = heat_lng
+      this.isheatPlotting = true
+    },
+    createHeatPoints: function() {
+      let that = this
+      that.clearHeatPoints()
+      that.heatMapLayer = new window.L.supermap.heatMapLayer(
+        'heatMap',
+        {
+          'map': that.map,
+          'id': 'heatmap',
+          'radius': 10,
+//            设置图层透明度:(参数方式)
+          'opacity': 0.5,
+          //featureWeight指定以哪个属性值为热力权重值创建热力图:
+          'featureWeight': 'value'
+        }
+      )
+      var heatNums = parseInt($('#heatNums').val())
+      //热力半径单位不使用用地理单位
+      that.heatMapLayer.useGeoUnit = true
+      that.heatMapLayer.radius = 0.01
+
+      var features = []
+
+      switch (heatNums) {
+        case 1://南风
+          features = that.getPointArray1()
+          break
+        case 31://西南风
+          features = that.getPointArray3_1()
+          break
+        case 41://东南风
+          features = that.getPointArray4_1()
+          break
+        case 2://北风
+          features = that.getPointArray2()
+          break
+        case 32://西北风
+          features = that.getPointArray3_2()
+          break
+        case 42://东北风
+          features = that.getPointArray4_2()
+          break
+        case 3://西风
+          features = that.getPointArray3()
+          break
+        case 4://东风
+          features = that.getPointArray4()
+          break
+      }
+
+      //加载heatMapFeature格式数据:
+      that.heatMapLayer.addFeatures(features)
+      that.heatMapLayer.addTo(that.map)
+
+    },
+
+    clearHeatPoints: function() {
+      let that = this
+      if (that.heatMapLayer) {
+        that.map.removeLayer(that.heatMapLayer)
+        that.heatMapLayer = null
+      }
+    },
+
+    getPointArray1: function() {
+      var heatNums1 = parseInt($('#heatNums1').val())
+      var mLon = this.heat_lng, mLat = this.heat_lat
+      var points = []
+      for (var i = 0; i < parseInt(heatNums1 / 3); i++) {
+        mLat = this.accAdd(mLat, 0.005)
+        points[i] = new window.L.supermap.heatMapFeature(L.point(mLon, mLat), {
+          'value': 2000 - (i * Math.random())
+        })
+      }
+      return points
+    },
+    getPointArray3_1: function() {
+      var heatNums1 = parseInt($('#heatNums1').val())
+      var mLon = this.heat_lng, mLat = this.heat_lat
+      var points = []
+      for (var i = 0; i < parseInt(heatNums1 / 3); i++) {
+        mLat = this.accAdd(mLat, 0.005)
+        mLon = this.accAdd(mLon, 0.005)
+        points[i] = new window.L.supermap.heatMapFeature(L.point(mLon, mLat), {
+          'value': 2000 - (i * Math.random())
+        })
+      }
+      return points
+    },
+    getPointArray4_1: function() {
+      var heatNums1 = parseInt($('#heatNums1').val())
+      var mLon = this.heat_lng, mLat = this.heat_lat
+      var points = []
+      for (var i = 0; i < parseInt(heatNums1 / 3); i++) {
+        mLat = this.accAdd(mLat, 0.005)
+        mLon = this.accSub(mLon, 0.005)
+        points[i] = new window.L.supermap.heatMapFeature(L.point(mLon, mLat), {
+          'value': 2000 - (i * Math.random())
+        })
+      }
+      return points
+    },
+    getPointArray2: function() {
+      var heatNums1 = parseInt($('#heatNums1').val())
+      var mLon = this.heat_lng, mLat = this.heat_lat
+      var points = []
+      for (var i = 0; i < parseInt(heatNums1 / 3); i++) {
+        mLat = this.accSub(mLat, 0.005)
+        points[i] = new window.L.supermap.heatMapFeature(L.point(mLon, mLat), {
+          'value': 2000 - (i * Math.random())
+        })
+      }
+      return points
+    },
+    getPointArray3_2: function() {
+      var heatNums1 = parseInt($('#heatNums1').val())
+      var mLon = this.heat_lng, mLat = this.heat_lat
+      var points = []
+      for (var i = 0; i < parseInt(heatNums1 / 3); i++) {
+        mLat = this.accSub(mLat, 0.005)
+        mLon = this.accAdd(mLon, 0.005)
+        points[i] = new window.L.supermap.heatMapFeature(L.point(mLon, mLat), {
+          'value': 2000 - (i * Math.random())
+        })
+      }
+      return points
+    },
+    getPointArray4_2: function() {
+      var heatNums1 = parseInt($('#heatNums1').val())
+      var mLon = this.heat_lng, mLat = this.heat_lat
+      var points = []
+      for (var i = 0; i < parseInt(heatNums1 / 3); i++) {
+        mLat = this.accSub(mLat, 0.005)
+        mLon = this.accSub(mLon, 0.005)
+        points[i] = new window.L.supermap.heatMapFeature(L.point(mLon, mLat), {
+          'value': 2000 - (i * Math.random())
+        })
+      }
+      return points
+    },
+    getPointArray3: function() {
+      var heatNums1 = parseInt($('#heatNums1').val())
+      var mLon = this.heat_lng, mLat = this.heat_lat
+      var points = []
+      for (var i = 0; i < parseInt(heatNums1 / 3); i++) {
+        mLon = this.accAdd(mLon, 0.005)
+        points[i] = new window.L.supermap.heatMapFeature(L.point(mLon, mLat), {
+          'value': 2000 - (i * Math.random())
+        })
+      }
+      return points
+
+    },
+    getPointArray4: function() {
+      var heatNums1 = parseInt($('#heatNums1').val())
+      var mLon = this.heat_lng, mLat = this.heat_lat
+      var points = []
+      for (var i = 0; i < parseInt(heatNums1 / 3); i++) {
+        mLon = this.accSub(mLon, 0.005)
+        points[i] = new window.L.supermap.heatMapFeature(L.point(mLon, mLat), {
+          'value': 2000 - (i * Math.random())
+        })
+      }
+      return points
+
+    },
+    //加法函数,用来得到精确的加法结果
+//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
+//调用:accAdd(arg1,arg2)
+//返回值:arg1加上arg2的精确结果
+    accAdd: function(arg1, arg2) {
+      var r1, r2, m, c
+      try {
+        r1 = arg1.toString().split('.')[1].length
+      } catch (e) {
+        r1 = 0
+      }
+      try {
+        r2 = arg2.toString().split('.')[1].length
+      } catch (e) {
+        r2 = 0
+      }
+      c = Math.abs(r1 - r2)
+      m = Math.pow(10, Math.max(r1, r2))
+      if (c > 0) {
+        var cm = Math.pow(10, c)
+        if (r1 > r2) {
+          arg1 = Number(arg1.toString().replace('.', ''))
+          arg2 = Number(arg2.toString().replace('.', '')) * cm
+        } else {
+          arg1 = Number(arg1.toString().replace('.', '')) * cm
+          arg2 = Number(arg2.toString().replace('.', ''))
+        }
+      } else {
+        arg1 = Number(arg1.toString().replace('.', ''))
+        arg2 = Number(arg2.toString().replace('.', ''))
+      }
+      return (arg1 + arg2) / m
+    },
+    /**
+     ** 减法函数,用来得到精确的减法结果
+     ** 说明:javascript的减法结果会有误差,在两个浮点数相减的时候会比较明显。这个函数返回较为精确的减法结果。
+     ** 调用:accSub(arg1,arg2)
+     ** 返回值:arg1加上arg2的精确结果
+     **/
+    accSub: function(arg1, arg2) {
+      var r1, r2, m, n
+      try {
+        r1 = arg1.toString().split('.')[1].length
+      } catch (e) {
+        r1 = 0
+      }
+      try {
+        r2 = arg2.toString().split('.')[1].length
+      } catch (e) {
+        r2 = 0
+      }
+      m = Math.pow(10, Math.max(r1, r2)) //last modify by deeka //动态控制精度长度
+      n = r1 >= r2 ? r1 : r2
+      return ((arg1 * m - arg2 * m) / m).toFixed(n)
+    },
+    /** ----------------------------------火势蔓延  结束------------------------------------- */
+    /** ----------------------------------热力图  结束------------------------------------- */
+    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) {
@@ -923,6 +1255,30 @@ export default {
 
 <style lang="scss" scoped>
 @import '@/assets/styles/base.scss';
+.panel{
+	margin-bottom: .5rem;
+	button{
+		margin-top: .5rem;
+	}
+	.input-group{
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		.input-group-addon{
+			color: $inBlue;
+			
+		}
+		.form-control{
+			padding: 0 .3rem;
+			margin-left: .5rem;
+			height: 1.5rem;
+			line-height: 1.5rem;
+			background-color: #112543;
+			color: $inBlue;
+			border: 1px $searchBorder;
+		}
+	}
+}
 
 .button-group {
   button {

+ 2 - 2
src/components/v-fastmenu.vue

@@ -22,8 +22,8 @@
 						<el-button type="primary" size="small" @click="resetPwd">修改密码</el-button>
 						<el-button type="warning" size="small" @click="logout">退出登录</el-button>
 					</div>
-					<a href="#" style="border-top: 1px solid #334780;"><i class="el-icon-s-home"></i>返回首页</a>
-					<a href="#"><i class="el-icon-monitor"></i>管理系统</a>
+					<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" />

+ 17 - 17
src/components/v-header.vue

@@ -3,13 +3,13 @@
 	<div class="header">
 		<Clock></Clock>
 		<!--中间LOGO -->
-		<a class="title" href="/integrated/index" >
+		<div class="title">
 			<!-- <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>
+
 		<!--中间导航-->
 		<div class="bignav">
 			<img src="@/assets/images/integrated/bigdata-header-nav-left2.png" />
@@ -32,14 +32,14 @@
 		components:{
 			VfastMenu,
 			Clock
-			
+
 		},
 		created(){
 			this.navbar
 		},
 		data(){
 			return{
-				
+
 			}
 		},
 		methods:{
@@ -53,7 +53,7 @@
 				return constantRoutes.slice(1)
 			},
 		},
-		
+
 	}
 </script>
 
@@ -68,15 +68,15 @@
 		display: flex;
 		align-items: center;
 		z-index: 1000;
-		position: absolute;
+		position: fixed;
 		top: 0;
-	
+
 		.title {
 			display: flex;
 			position: fixed;
 			left: 50%;
 			transform: translateX(-50%);
-	
+
 			h3 {
 				display: flex;
 				align-items: center;
@@ -84,13 +84,13 @@
 				color: $white;
 				font-size: 1.8rem;
 				font-family: $fontFk;
-	
+
 				img {
 					margin-right: .5rem;
 				}
 			}
 		}
-	
+
 		.bignav {
 			height: 40px;
 			position: fixed;
@@ -102,14 +102,14 @@
 			display: flex;
 			justify-content: cetner;
 			align-items: center;
-	
+
 			.bignav-list {
 				background: url(../assets/images/integrated/bigdata-header-nav-re2.png) repeat-x center;
 				float: left;
 				display: flex;
 				justify-content: cetner;
 				align-items: center;
-				color: $fListTitle;	
+				color: $fListTitle;
 				height: 40px;
 				font-size: 12px;
 				padding: 0 23px;
@@ -118,7 +118,7 @@
 				transform: translateY(0);
 				transition: all 0.3s ease-in-out;
 			}
-	
+
 			.router-link-active,
 			.bignav-list:hover {
 				filter: brightness(2.3);
@@ -127,9 +127,9 @@
 				color: $inBlueHover;
 				border-bottom: 1px solid $inBlueHover;
 				transition: all 0.3s ease-in-out;
-	
+
 			}
 		}
-	
+
 	}
-</style>
+</style>

+ 11 - 11
src/components/vBottomMenu.vue

@@ -456,17 +456,17 @@ export default {
           icon: 'iconfont sj-icon-clgj',
           click: 'editableLayers'
         },
-        {
-          name: '林班',
-          icon: 'iconfont sj-icon-lbzy',
-          click: 'forestban'
-        },
-
-        {
-          name: '林场',
-          icon: 'iconfont sj-icon-lczy',
-          click: 'forestchang'
-        },
+        // {
+        //   name: '林班',
+        //   icon: 'iconfont sj-icon-lbzy',
+        //   click: 'forestban'
+        // },
+        //
+        // {
+        //   name: '林场',
+        //   icon: 'iconfont sj-icon-lczy',
+        //   click: 'forestchang'
+        // },
         {
           name: '电视墙',
           icon: 'el-icon-s-grid',

+ 18 - 0
src/router/index.js

@@ -61,6 +61,15 @@ export const constantRoutes = [
 			title: '监控中心'
 		}
 	},
+	{
+		//统计分析
+		path: '/bigdata',
+		name: 'bigdata',
+		component: () => import('@/views/bigdata/bigdata'),
+		meta: {
+			title: '统计分析'
+		}
+	},
 ]
 
 
@@ -97,6 +106,15 @@ export const constantRoutesNew = [{
 			title: '监控中心'
 		}
 	},
+  {
+    //统计分析
+    path: '/bigdata',
+    name: 'bigdata',
+    component: () => import('@/views/bigdata/bigdata'),
+    meta: {
+      title: '统计分析'
+    }
+  },
 	{
 		path: '/login',
 		component: () => import('@/views/system/login'),

+ 452 - 0
src/views/bigdata/bigdata.vue

@@ -0,0 +1,452 @@
+<!--一体化首页-->
+<template>
+  <div class="bigdata-con">
+    <!-- 头部B -->
+    <div class="header">
+      <!-- title -->
+      <div class="header-left"><img class="logo" src="@/assets/images/integrated/logo-small.png"/>
+        <h3 class="title">数字四平态势感知监管平台-数字消防-统计分析</h3>
+      </div>
+      <div class="bignav">
+        <img src="@/assets/images/integrated/bigdata-header-nav-left.png"/>
+        <router-link v-for="(navbar,index) in navbar " :key="index" :to="navbar.path" class="bignav-list"
+                     :class="index===navbar.length-1?'on':''" exact>
+          {{ navbar.name }}
+        </router-link>
+        <img src="@/assets/images/integrated/bigdata-header-nav-right.png"/>
+      </div>
+    </div>
+    <!-- 头部E -->
+
+    <div class="bigdata-body">
+      <!-- 第一纵向-->
+      <div class="bigdata-list wid-li-1">
+        <div class="b-con mg-b-20">
+          <div class="b-tit"><img src="@/assets/images/integrated/bigdata-tit-icon.png">
+            <span>事件来源,类型统计</span>
+          </div>
+          <chartEvent></chartEvent>
+        </div>
+        <div class="b-con mg-b-20">
+          <div class="b-tit"><img src="@/assets/images/integrated/bigdata-tit-icon.png">
+            <span>林场分布统计</span>
+          </div>
+          <chartForestFarm></chartForestFarm>
+        </div>
+        <div class="b-con">
+          <div class="b-tit"><img src="@/assets/images/integrated/bigdata-tit-icon.png">
+            <span>设备类型统计</span>
+          </div>
+          <chartEquipmentType></chartEquipmentType>
+        </div>
+      </div>
+      <!-- 第二纵向-->
+      <div class="bigdata-list wid-li-2 m-l-15">
+        <div class="bigdata-map mg-b-20">
+          <!-- 地图 -->
+          <bigdataSupermap ref="bigdataSupermap" style="width: 100%;height: 59vh;" class="indexSupermapClass"
+                           :mapDiv="'bigdataMap'" dynamicPlotting="false" :mapSite="{doubleClickZoom:false}"
+                           :codes="['9fa5']" :isSideBySide="false"/>
+        </div>
+        <tabbar></tabbar>
+      </div>
+      <!-- 第三纵向-->
+      <div class="bigdata-list wid-li-3 m-l-15 flex-r">
+        <div class="b-con mg-b-20 b-49">
+          <div class="b-tit"><img src="@/assets/images/integrated/bigdata-tit-icon.png">
+            <span>起火原因统计</span>
+          </div>
+          <chartFireCause></chartFireCause>
+        </div>
+        <div class="b-con mg-b-20 b-49">
+          <div class="b-tit"><img src="@/assets/images/integrated/bigdata-tit-icon.png">
+            <span>设备上报事件数量</span>
+          </div>
+          <chartDeviceReportingEvents></chartDeviceReportingEvents>
+        </div>
+        <div class="b-con mg-b-20 b-49">
+          <div class="b-tit"><img src="@/assets/images/integrated/bigdata-tit-icon.png">
+            <span>重点区域</span>
+          </div>
+          <chartKeyArea></chartKeyArea>
+        </div>
+        <div class="b-con mg-b-20 b-49">
+          <div class="b-tit"><img src="@/assets/images/integrated/bigdata-tit-icon.png">
+            <span>珍惜古树</span>
+          </div>
+          <chartAncientTree></chartAncientTree>
+        </div>
+        <div class="b-con">
+          <div class="b-tit"><img src="@/assets/images/integrated/bigdata-tit-icon.png">
+            <span>事件趋势</span>
+          </div>
+          <chartEventTrend></chartEventTrend>
+          <strong></strong>
+        </div>
+      </div>
+      <!-- 第四纵向-->
+      <div class="bigdata-list wid-li-3 m-l-15 flex-r">
+        <div class="b-con mg-b-20 tall">
+          <div class="b-tit"><img src="@/assets/images/integrated/bigdata-tit-icon.png">
+            <span>网格分布</span>
+          </div>
+          <chartGridDistribution></chartGridDistribution>
+        </div>
+        <div class="b-con">
+          <div class="b-tit"><img src="@/assets/images/integrated/bigdata-tit-icon.png">
+            <span>天气趋势</span>
+          </div>
+          <chartWeatherTrends></chartWeatherTrends>
+        </div>
+      </div>
+      <!-- 第五纵向-->
+      <div class="bigdata-list wid-li-3 m-l-15 flex-r">
+        <div class="b-con mg-b-20 tall">
+          <div class="b-tit"><img src="@/assets/images/integrated/bigdata-tit-icon.png">
+            <span>网格人员</span>
+          </div>
+          <chartGridStaff></chartGridStaff>
+        </div>
+        <div class="b-con mg-b-20 b-49">
+          <div class="b-tit"><img src="@/assets/images/integrated/bigdata-tit-icon.png">
+            <span>防火队</span>
+          </div>
+          <chartFireBrigade></chartFireBrigade>
+        </div>
+        <div class="b-con mg-b-20 b-49">
+          <div class="b-tit"><img src="@/assets/images/integrated/bigdata-tit-icon.png">
+            <span>气象站</span>
+          </div>
+          <chartWeatherStation></chartWeatherStation>
+        </div>
+      </div>
+      <!-- 第六纵向-->
+      <div class="bigdata-list wid-li-1 m-l-15">
+        <div class="b-con mg-b-20 taller">
+          <div class="b-tit"><img src="@/assets/images/integrated/bigdata-tit-icon.png">
+            <span>设备分布</span>
+          </div>
+          <chartEquipmentDistribution></chartEquipmentDistribution>
+        </div>
+      </div>
+    </div>
+
+  </div>
+</template>
+
+<script>
+import tabbar from './tabbar.vue' //区域切换
+import bigdataSupermap from '@/components/supermap' //超图
+
+//echarts
+import chartEvent from './chart-event.vue' //1  事件、、
+import chartForestFarm from './chart-forestFarm.vue' //2  林场分布、、
+import chartEquipmentType from './chart-equipmentType.vue' //3  公司、、
+import chartFireCause from './chart-fireCause.vue' //4  起火原因、、
+import chartDeviceReportingEvents from './chart-deviceReportingEvents.vue' //5  设备上报数量、、
+import chartEventTrend from './chart-eventTrend.vue' //6  事件趋势、、
+import chartKeyArea from './chart-keyArea.vue' //7  重点区域、、
+import chartAncientTree from './chart-ancientTree.vue' //8  珍惜古树、、
+import chartWeatherTrends from './chart-weatherTrends.vue' //9  天气趋势、、
+import chartGridDistribution from './chart-gridDistribution.vue' //10 网格分布、、
+import chartFireBrigade from './chart-fireBrigade.vue' //12 防火队、、
+import chartGridStaff from './chart-gridStaff.vue' //13 网格人员、、
+import chartWeatherStation from './chart-weatherStation.vue' //14 气象站、、
+import chartEquipmentDistribution from './chart-equipmentDistribution' //16 设备分布、、
+
+export default {
+  components: {
+    bigdataSupermap,
+    tabbar,
+    chartEvent,
+    chartForestFarm,
+    chartEquipmentType,
+    chartFireCause,
+    chartDeviceReportingEvents,
+    chartEventTrend,
+    chartKeyArea,
+    chartAncientTree,
+    chartWeatherTrends,
+    chartGridDistribution,
+    chartFireBrigade,
+    chartGridStaff,
+    chartWeatherStation,
+    chartEquipmentDistribution
+  },
+  data() {
+    return {
+      visited: '',
+      navbar: [{
+        //消防云图
+        path: '/forest',
+        name: '消防云图'
+      },
+        {
+          //数据中心
+          path: '/datacenter',
+          name: '数据中心'
+        },
+        {
+          //监控中心
+          path: '/monitor',
+          name: '监控中心'
+        },
+        {
+          //统计分析
+          path: '/bigdata',
+          name: '统计分析'
+        }
+
+      ],
+      total: 0, //事件总数
+      untreated: 0, //事件-未处理
+      processing: 0 // 事件-处理中
+    }
+  },
+  created() {
+  },
+  mounted() {
+    setTimeout(() => {
+      this.$refs.bigdataSupermap.loadHeatMap() //事件分布
+    }, 5000)
+  }
+}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+@import '@/assets/styles/base.scss';
+
+
+.bigdata-con {
+  width: -webkit-fit-content;
+  height: 100%;
+  background: #01020c;
+
+  .el-loading-mask {
+    background: none;
+  }
+
+  .header {
+    height: 3rem;
+    display: flex;
+    align-items: center;
+
+    .header-left {
+      position: fixed;
+      left: 10px;
+      top: 5px;
+      display: flex;
+      align-items: center;
+      color: $inBlue;
+      font-family: $fontFk;
+
+      .title {
+        margin: 0 auto;
+        text-align: center;
+        background-image: -webkit-linear-gradient(bottom, rgba($color: #00f6ff, $alpha: 1.0), rgba($color: #005aff, $alpha: 1.0));
+        -webkit-background-clip: text;
+        -webkit-text-fill-color: transparent;
+        color: #fff;
+        font-size: 28px;
+      }
+    }
+
+    .bignav {
+      height: 40px;
+      position: fixed;
+      left: 50%;
+      transform: translateX(-50%);
+      top: 0;
+      z-index: 1000;
+      border-radius: 5px;
+      display: flex;
+      justify-content: cetner;
+      align-items: center;
+
+      .bignav-list {
+        background: url(../../assets/images/integrated/bigdata-header-nav-re.png) repeat-x center;
+        float: left;
+        display: flex;
+        justify-content: cetner;
+        align-items: center;
+        color: #fff;
+        height: 40px;
+        font-size: 12px;
+        padding: 0 23px;
+        cursor: pointer;
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        transition: all 0.3s ease-in-out;
+      }
+
+      .router-link-active,
+      .bignav-list:hover {
+        filter: brightness(2.3);
+        -webkit-transform: translateY(2px);
+        transform: translateY(2px);
+        color: $inBlueHover;
+        border-bottom: 1px solid $inBlueHover;
+        transition: all 0.3s ease-in-out;
+
+      }
+    }
+
+
+  }
+
+  .bigdata-body {
+    margin: 15px;
+    display: flex;
+    align-items: top;
+    // justify-content: center;
+
+  }
+
+  .flex-r {
+    display: flex;
+    flex-direction: row !important;
+    align-content: flex-start;
+    justify-content: space-between
+  }
+
+  .bigdata-list {
+    display: flex;
+    flex-direction: column;
+    flex-wrap: wrap;
+
+    .twins-con {
+      width: 100% !important;
+    }
+
+    .b-49 {
+      width: 49% !important;
+    }
+
+    .b-con {
+      width: 100%;
+      height: 28.5vh;
+
+      box-shadow: 0 0 1px rgba($color: #163696, $alpha: .1),
+      -0 -0 30px rgba($color: #163696, $alpha: .5) inset;
+
+      // display: flex;
+      // flex-direction: column;
+      .b-tit {
+        width: 100%;
+        display: flex;
+        align-items: center;
+        padding: 10px;
+
+        span {
+          font-size: 15px;
+          color: #00ceec;
+          margin-left: 5px;
+          text-shadow: 0 0 3px rgba($color: #41ff84, $alpha: .5),
+          -0 -0 10px rgba($color: #41fff8, $alpha: .9);
+        }
+      }
+
+      .twins {
+        width: 100%;
+        display: flex;
+        position: relative;
+
+        .count {
+          width: 100%;
+          color: #fff;
+          font-size: 12px;
+          position: absolute;
+          display: flex;
+          align-items: center;
+          left: 1rem;
+          top: 9px;
+          z-index: 100;
+
+          .count-z {
+            display: flex;
+            margin: 0 .5rem;
+
+            span {
+              margin-left: .4rem;
+              font-size: 1rem;
+              color: #2ee0fb !important;
+              font-weight: bolder;
+            }
+          }
+
+
+        }
+      }
+
+    }
+
+    .tall {
+      height: 59vh !important;
+    }
+
+    .taller {
+      height: 89.5vh !important;
+    }
+
+    .three {
+      display: flex;
+      flex-direction: column;
+    }
+
+    .el-row {
+      width: 100%;
+    }
+
+
+    .bigdata-map {
+      width: 100%;
+      height: 59vh;
+      position: relative;
+      background: #00101f;
+
+      .event-count {
+        color: #fff;
+        font-size: 14px;
+        font-weight: bolder;
+        padding: 10px;
+        background-color: #000000;
+        position: absolute;
+        top: 10px;
+        left: 10px;
+        z-index: 1000;
+
+        span {
+          font-size: 16px;
+          color: #d50000;
+        }
+      }
+
+    }
+
+  }
+
+  .wid-li-1 {
+    width: 396px;
+  }
+
+  .wid-li-2 {
+    width: 760px;
+  }
+
+  .wid-li-3 {
+    width: 850px;
+  }
+
+  .wid-li-4 {
+    width: 304px;
+  }
+
+  .mg-b-20 {
+    margin-bottom: 2vh;
+  }
+
+  .m-l-15 {
+    margin-left: .5%;
+  }
+}
+</style>

+ 174 - 0
src/views/bigdata/chart-ancientTree.vue

@@ -0,0 +1,174 @@
+<!-- **************************************NO.8 养殖场分布*************************************** -->
+<template>
+	<div class="chart-container">
+		<div id="farm" style="width: 100%; height:23vh;">
+		</div>
+	</div>
+</template>
+
+<script>
+	import * as echarts from 'echarts';
+	export default {
+		name: 'farm',
+		data() {
+			return {
+				count: 0
+			}
+		},
+		mounted() {
+			this.myEcharts()
+
+		},
+
+		methods: {
+			// 出处 http://192.144.199.210:8080/editor/index.html?chart_id=KH0XpN7nyKZZae11
+
+			myEcharts() {
+
+
+				var chartDom = document.getElementById('farm');
+				var myChart = echarts.init(chartDom);
+				var color = ['#02CDFF', '#62FBE7', '#7930FF', '#ef5f9d', '#ecb935'];
+				var option;
+				var data =  [20, 80, 100, 40, 34];
+				option = {
+				    color: ["#41FF80"],
+				    title: {
+				        show: false
+				    },
+				    grid: {
+				        top: '15%',
+				        right: '12%',
+				        bottom: '22%',
+				        left: '15%'
+				    },
+				    tooltip: {
+				        show: false
+				    },
+				    xAxis: {
+				        data: [
+				            "双辽市",
+				            "梨树县",
+				            "伊通县",
+				            "铁东区",
+				            "铁西区",
+				        ],
+				        axisLine: {
+				            show: true, //隐藏X轴轴线
+				            lineStyle: {
+				                color: '#2D455A'
+				            }
+				        },
+				        axisTick: {
+				            show: false //隐藏X轴刻度
+				        },
+				        axisLabel: {
+				            show: true,
+				            margin: 14,
+				            fontSize: 10,
+				            textStyle: {
+				                color: '#ffffff' //X轴文字颜色
+				            }
+				        }
+				    },
+				    yAxis: [{
+				        type: 'value',
+				        gridIndex: 0,
+				        interval: 25,
+				        // splitNumber: 4,
+				        splitLine: {
+				            show: true,
+				            lineStyle: {
+				                type: 'solid',
+				                color: '#325A9F',
+				                width: 1
+				            }
+				        },
+				        axisTick: {
+				            show: false
+				        },
+				        axisLine: {
+				            show: false
+				        },
+				        axisLabel: {
+				            show: true,
+				            formatter: '{value}',
+				            fontSize: 10,
+				            textStyle: {
+				                color: '#6ad8ff' //X轴文字颜色
+				            }
+				        }
+				    }],
+				    series: [{
+				            name: '养殖场分布',
+				            type: 'bar',
+				            barWidth: 8,
+				            itemStyle: {
+				                normal: {
+				                    label: {
+				                        show: true, //开启显示
+				                        position: 'top', //在上方显示
+				                        textStyle: { //数值样式
+				                            color: '#fff',
+				                        }
+				                    },
+				                    color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
+				                            offset: 0,
+				                            color: '#fffa55'
+				                        },
+				                        {
+				                            offset: 0.5,
+				                            color: '#55ff18'
+				                        },
+				                        {
+				                            offset: 1,
+				                            color: '#29eeff'
+				                        }
+				                    ])
+				                }
+				            },
+				            data:data,
+				            z: 10,
+				            zlevel: 0
+				        },
+				        {
+				            // 分隔
+				            type: 'pictorialBar',
+				            itemStyle: {
+				                normal: {
+				                    color: '#0F375F'
+				                }
+				            },
+				            symbolRepeat: 'fixed',
+				            symbolMargin: 2,
+				            symbol: 'rect',
+				            symbolClip: true,
+				            symbolSize: [8, 2],
+				            symbolPosition: 'start',
+				            symbolOffset: [0, -1],
+				            // symbolBoundingData: this.total,
+				            data:data,
+				            width: "100%",
+				            z: 0,
+				            zlevel: 1
+				        }
+				    ]
+				};
+				option && myChart.setOption(option);
+			},
+
+		},
+
+
+	}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+	.chart-container {
+		width: 100%;
+		height: auto;
+		position: relative;
+		padding-bottom: 10px;
+		display: flex;
+	}
+</style>

+ 149 - 0
src/views/bigdata/chart-deviceReportingEvents.vue

@@ -0,0 +1,149 @@
+<!-- **************************************NO.5 林场*************************************** -->
+<template>
+	<div class="chart-container">
+		<div id="forestfarm" style="width: 100%; height:23vh;">
+		</div>
+	</div>
+</template>
+
+<script>
+	import * as echarts from 'echarts';
+	export default {
+		name: 'forestfarm',
+		data() {
+			return {
+				count: 0
+			}
+		},
+		mounted() {
+			this.myEcharts()
+
+		},
+
+		methods: {
+			// 出处 http://192.144.199.210:8080/editor/index.html?chart_id=2nuQSYycLWN0P_EG
+
+			myEcharts() {
+
+
+				var chartDom = document.getElementById('forestfarm');
+				var myChart = echarts.init(chartDom);
+				var color = ['#02CDFF', '#62FBE7', '#7930FF', '#E148EB', '#ecb935']
+				var option;
+				option = {
+				        tooltip: {
+				          trigger: 'axis',
+				          axisPointer: { // 坐标轴指示器,坐标轴触发有效
+				            type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
+				          }
+				        },
+				        grid: {
+				          left: '10%',
+				          right: '10%',
+				          bottom: '10%',
+				          top:'16%',
+				          containLabel: true
+				        },
+				        
+				        xAxis: {
+				          type: 'category',
+				          data: ['双辽市','梨树县','伊通县','铁东区','铁西区'],
+				          axisLine: {
+				            lineStyle: {
+				              color: '#1cc6a1'
+				
+				            }
+				          },
+				          axisLabel: {
+				            // interval: 0,
+				            // rotate: 40,
+				            textStyle: {
+				              fontFamily: 'Microsoft YaHei'
+				            }
+				          },
+				        },
+				
+				        yAxis: {
+				          type: 'value',
+				          max:'500',
+				          axisLine: {
+				            show: false,
+				            lineStyle: {
+				              color: '#19b1e8'
+				            }
+				          },
+				          splitLine: {
+				            show: true,
+				            lineStyle: {
+				              color: 'rgba(255,255,255,0.1)'
+				            }
+				          },
+				          axisLabel: {}
+				        },
+				        
+				        series: [{
+				          type: 'bar',
+				          barWidth: '15%',
+				          itemStyle: {
+				            normal: {
+				                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+				                    offset: 0,
+				                    color: '#fccb05'
+				                }, {
+				                    offset: 1,
+				                    color: '#1689f5'
+				                }]),
+				                barBorderRadius: 12,
+				            },
+				          },
+				          data: [400, 400, 300, 300, 300]
+				        }]
+				      };
+				
+				      var app = {
+				        currentIndex: -1,
+				      };
+				      setInterval(function () {
+				        var dataLen = option.series[0].data.length;
+				
+				        // 取消之前高亮的图形
+				        myChart.dispatchAction({
+				          type: 'downplay',
+				          seriesIndex: 0,
+				          dataIndex: app.currentIndex
+				        });
+				        app.currentIndex = (app.currentIndex + 1) % dataLen;
+				        //console.log(app.currentIndex);
+				        // 高亮当前图形
+				        myChart.dispatchAction({
+				          type: 'highlight',
+				          seriesIndex: 0,
+				          dataIndex: app.currentIndex,
+				        });
+				        // 显示 tooltip
+				        myChart.dispatchAction({
+				          type: 'showTip',
+				          seriesIndex: 0,
+				          dataIndex: app.currentIndex
+				        });
+				
+				
+				      }, 1000);
+				option && myChart.setOption(option);
+			},
+
+		},
+
+
+	}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+	.chart-container {
+		width: 100%;
+		height: auto;
+		position: relative;
+		padding-bottom: 10px;
+		display: flex;
+	}
+</style>

+ 393 - 0
src/views/bigdata/chart-equipmentDistribution.vue

@@ -0,0 +1,393 @@
+<!-- **************************************NO.16 摄像头*************************************** -->
+<template>
+	<div class="chart-container">
+		<!-- <div id="camera1" style="width: 100%; height:25vh; ">
+		</div> -->
+		<div id="camera2" style="width: 100%; height:85vh; ">
+		</div>
+		<!-- <div id="camera3" style="width: 100%; height:30vh; ">
+		</div> -->
+	</div>
+</template>
+
+<script>
+	import * as echarts from 'echarts';
+	export default {
+		name: 'camera',
+		data() {
+			return {
+				count: 0
+			}
+		},
+		mounted() {
+			// this.myEcharts1();
+			this.myEcharts2();
+			// this.myEcharts3();
+
+		},
+
+		methods: {
+			// 出处 http://192.144.199.210:8080/editor/index.html?chart_id=TMyJh73uiXkeu3_v
+			myEcharts1() {
+				var chartDom = document.getElementById('camera1');
+				var myChart = echarts.init(chartDom);
+				var option;
+				const dfColor = ['#92E1FF', '#0097FB', '#30ECA6', '#FFC227', '#FF4848'];
+				option = {
+					dataset: {
+						dimensions: ['name', '摄像头'],
+						source: [{
+								name: '双辽市',
+								'摄像头': 50
+							},
+							{
+								name: '梨树县',
+								'摄像头': 40
+							},
+							{
+								name: '伊通县',
+								'摄像头': 30
+							},
+							{
+								name: '铁东区',
+								'摄像头': 20
+							},
+							{
+								name: '铁西区',
+								'摄像头': 30
+							}
+						]
+					},
+					tooltip: {
+						trigger: 'item',
+						position: function(point, params, dom, rect, size) {
+							const x = point[0];
+							const y = point[1];
+				 		const viewWidth = size.viewSize[0];
+							const viewHeight = size.viewSize[1];
+							const boxWidth = size.contentSize[0];
+				 		const boxHeight = size.contentSize[1];
+							let posX = 0;
+							let posY = 0;
+				 		if (x < boxWidth) {
+								// 左边放不开
+								posX = 5;
+							} else {
+								// 左边放的下
+								posX = x - boxWidth;
+							}
+							if (y < boxHeight) {
+								// 上边放不开
+								posY = 5;
+							} else {
+								// 上边放得下
+								posY = y - boxHeight;
+							}
+							return [posX, posY];
+						},
+					},
+					angleAxis: {
+						max(value) {
+							return value.max * 1.1;
+						},
+						axisLabel: {
+							show: false
+						},
+						axisTick: {
+							show: false
+						},
+				  axisLine: {
+							show: false
+						},
+						splitLine: {
+							show: false
+						},
+						startAngle: 270
+					},
+					radiusAxis: {
+						type: 'category',
+						minorTick: {
+							show: false
+						},
+						axisLine: {
+							show: false
+						},
+						axisTick: {
+							show: false
+						},
+						axisLabel: {
+							show: false
+						},
+					},
+					polar: {
+				 	radius: ['40%', '90%'],
+				 },
+					// angleAxis:{
+					//     clockwise:false
+					// },
+					series: [{
+						type: 'bar',
+						coordinateSystem: 'polar',
+						itemStyle: {
+				  	color(params) {
+								const idx = params.dataIndex;
+								return dfColor[idx];
+							},
+						},
+						barWidth: 5,
+						roundCap: true,
+						showBackground: true,
+						backgroundStyle: {
+							color: 'RGBA(0, 69, 117, 0.5)',
+						},
+					}],
+				};
+				option && myChart.setOption(option);
+			},
+
+			// 出处 http://192.144.199.210:8080/editor/index.html?chart_id=pAD_0lcRq_zOGf_k
+			myEcharts2() {
+				var chartDom = document.getElementById('camera2');
+				var myChart = echarts.init(chartDom);
+				var option;
+				const dfColor = ['#92E1FF', '#0097FB', '#30ECA6', '#FFC227', '#FF4848'];
+				option = {
+					dataset: {
+						source: [
+							["类型1", 1200],
+							["类型2", 1000],
+							["类型3", 746],
+							["类型4", 636],
+							["类型5", 581],
+							["类型6", 426],
+							["类型7", 326]
+						],
+					},
+					tooltip: {
+						trigger: 'item',
+
+					},
+					grid: {
+						top: "0%",
+						left: "6%",
+						// right: "4%",
+						bottom: "5%",
+						width: '75%',
+						containLabel: true,
+					},
+					xAxis: {
+						show: false,
+						type: "value",
+					},
+					yAxis: {
+						type: "category", // 不设置类目轴,抽离的dataset数据展示不出来
+						inverse: true,
+						axisLabel: {
+							show: true,
+							textStyle: {
+								color: '#5deaff',
+								fontSize: '12'
+							}
+						},
+				  splitLine: {
+							show: false
+						},
+						axisTick: {
+							show: false
+						},
+						axisLine: {
+							show: false
+						},
+					},
+
+					series: [{
+
+						type: "bar",
+						animationCurve: "easeOutBack",
+						barWidth: 8,
+						label: {
+							show: true,
+							position: "right",
+							offset: [0, 0],
+							color: "#88dfd5",
+							// fontSize: "12",
+							style: {
+				   	fill: "#fff"
+							},
+						},
+						backgroundBar: {
+							show: true,
+							style: {
+								fill: "rgba(97,152,255,0.30)",
+							},
+						},
+						barStyle: {
+							stroke: "rgba(41,244,236,1)",
+						},
+						gradient: {
+							color: ["rgba(41,244,236,1)", "rgba(41,244,236,0)"],
+						},
+						itemStyle: {
+							label: {
+								show: true
+							},
+							labelLine: {
+								show: false,
+							},
+							color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
+				 				offset: 0,
+									color: "rgba(41,244,236,0)"
+								},
+								{
+									offset: 1,
+									color: "rgba(41,244,236,1)"
+								},
+							]),
+							borderColor: "#a2f9f7",
+							shadowBlur: 16,
+							shadowColor: "#a2f9f7",
+						},
+					}, ],
+				};
+				option && myChart.setOption(option);
+			},
+			// 出处 http://192.144.199.210:8080/editor/index.html?chart_id=ELjN7o3m72tLtmbv
+			myEcharts3() {
+				var chartDom = document.getElementById('camera3');
+				var myChart = echarts.init(chartDom);
+				var option;
+				option = {
+					color: ['#3D91F7', '#61BE67'],
+					tooltip: {},
+					legend: {
+						show: true,
+						icon: "circle",
+						bottom: 30,
+						center: 0,
+						itemWidth: 14,
+						itemHeight: 14,
+						itemGap: 21,
+						orient: "horizontal",
+						data: ['a', 'b'],
+						textStyle: {
+							color: '#8C8C8C'
+						},
+					},
+
+					radar: {
+						// shape: 'circle',
+						radius: '80%',
+						triggerEvent: true,
+						name: {
+							textStyle: {
+								color: '#fff',
+								fontSize: '10',
+								borderRadius: 3,
+								padding: [3, 5]
+							}
+						},
+						nameGap: '2',
+						indicator: [{ //[4300, 10000, 28000, 35000, 50000, 19000, 21000]
+								name: '型号1',
+								max: 6500
+							},
+							{
+								name: '型号2',
+								max: 16000
+							},
+							{
+								name: '型号3',
+								max: 30000
+							},
+							{
+								name: '型号4',
+								max: 38000
+							},
+							{
+								name: '型号5',
+								max: 52000
+							},
+							{
+								name: '型号6',
+								max: 25000
+							},
+							{
+								name: '型号7',
+								max: 25000
+							}
+						],
+						splitArea: {
+							areaStyle: {
+								color: [
+									'rgba(222,134,85, 0.1)', 'rgba(222,134,85, 0.2)',
+									'rgba(222,134,85, 0.4)', 'rgba(222,134,85, 0.6)',
+									'rgba(222,134,85, 0.8)', 'rgba(222,134,85, 1)'
+								].reverse()
+							}
+						},
+						// axisLabel:{//展示刻度
+						//     show: true
+						// },
+						axisLine: { //指向外圈文本的分隔线样式
+							lineStyle: {
+								color: 'rgba(0,0,0,0)'
+							}
+						},
+						splitLine: {
+							lineStyle: {
+								width: 2,
+								color: [
+									'rgba(224,134,82, 0.1)', 'rgba(224,134,82, 0.2)',
+									'rgba(224,134,82, 0.4)', 'rgba(224,134,82, 0.6)',
+									'rgba(224,134,82, 0.8)', 'rgba(224,134,82, 1)'
+								].reverse()
+							}
+						},
+
+					},
+
+					series: [{
+						name: '型号统计',
+						type: 'radar',
+						//areaStyle: {normal: {}},
+						areaStyle: {
+							normal: {
+								color: 'rgba(252,211,3, 0.3)'
+							}
+						},
+						symbolSize: 0,
+						lineStyle: {
+							normal: {
+								color: 'rgba(252,211,3, 1)',
+								width: 1
+				  	}
+						},
+						data: [{
+							value: [4300, 10000, 28000, 35000, 50000, 19000, 21000],
+							name: '型号统计',
+
+
+
+						}]
+					}]
+				};
+				option && myChart.setOption(option);
+			},
+
+
+		},
+
+
+	}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+	.chart-container {
+		width: 100%;
+		height: auto;
+		position: relative;
+		padding-bottom: 10px;
+		display: flex;
+		flex-direction: column;
+	}
+</style>

+ 117 - 0
src/views/bigdata/chart-equipmentType.vue

@@ -0,0 +1,117 @@
+<!-- **************************************NO.3 企业*************************************** -->
+<template>
+	<div class="chart-container">
+		<div id="enterprise" style="width: 100%; height:23vh;">
+		</div>
+	</div>
+</template>
+
+<script>
+	import * as echarts from 'echarts';
+	export default {
+		name: 'enterprise',
+		data() {
+			return {
+				count: 0
+			}
+		},
+		mounted() {
+			this.myEcharts()
+
+		},
+
+		methods:{
+			// 出处 http://192.144.199.210:8080/editor/index.html?chart_id=XWNjkKJQ3NBt1FK6
+			
+			myEcharts() {
+				
+				
+				var chartDom = document.getElementById('enterprise');
+				var myChart = echarts.init(chartDom);
+				var color = ['#02CDFF', '#62FBE7', '#7930FF','#E148EB','#ecb935']
+				var option;
+				 var value = [987, 634, 413, 312, 123];
+				var temp = 0;
+				option = {
+				  
+				    tooltip: {
+				        trigger: 'item',
+				        formatter: '{a} <br/>{b} : {c} ',
+				    },
+				   
+				    legend: {
+				        // show: false,
+						textStyle:{
+							color:'#fffff',
+							fontSize:10
+						},
+						itemWidth:19,
+						top:'2%',
+				        data: ['双辽市', '梨树县', '伊通县', '铁东区', '铁西区'],
+				    },
+				    series: [
+				        {
+				            name: '企业分布',
+				            type: 'funnel',
+							top:'25%',
+				            left: '10%',
+				            width: '70%',
+							height:'68%',
+							
+				            label: {
+				                show: true,
+				                color: '#07faa9',
+				                formatter: function () {
+				                    for (var i in value) {
+				                        console.log(value[i]);
+				                        if (i == temp) {
+				                            temp++;
+				                            return value[i] ;
+				                        }
+				                    }
+				                },
+				            },
+				            labelLine: {
+				                show: true,
+				            },
+				            itemStyle: {
+				                opacity: 1,
+				            },
+				            emphasis: {
+				                label: {
+				                    position: 'inside',
+				                    // formatter: '{b}Expected: {c}%',
+				                },
+				            },
+				            data: [
+				                { value: 100, name: '双辽市', itemStyle: { color: '#4672F7' } },
+				                { value: 80, name: '梨树县', itemStyle: { color: '#4C9DFF' } },
+				                { value: 60, name: '伊通县', itemStyle: { color: '#36DC88' } },
+				                { value: 40, name: '铁东区', itemStyle: { color: '#FBC71B' } },
+				                { value: 20, name: '铁西区', itemStyle: { color: '#F9A646' } },
+				            ],
+				        },
+				    ],
+				};
+				option && myChart.setOption(option);
+			},
+
+		},
+
+
+	}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+	.chart-container {
+		width: 100%;
+		height: auto;
+		position: relative;
+		padding-bottom: 10px;
+		display: flex;
+	}
+
+
+
+
+</style>

+ 314 - 0
src/views/bigdata/chart-event.vue

@@ -0,0 +1,314 @@
+<!-- **************************************NO.2 事件类型 分类*************************************** -->
+<template>
+	<div class="chart-container">
+		<div id="event" style="width: 50%; height:21vh;">
+		</div>
+		<div id="event2" style="width: 50%; height:21vh;">
+		</div>
+	</div>
+</template>
+
+<script>
+	import * as echarts from 'echarts';
+	export default {
+		name: 'event',
+		data() {
+			return {
+				count: 0
+			}
+		},
+		mounted() {
+			this.myEcharts()
+			this.myEcharts2()
+
+		},
+
+		methods:{
+			// 出处 https://echarts.apache.org/examples/zh/editor.html?c=pie-borderRadius
+			//http://192.144.199.210:8080/editor/index.html?chart_id=K8nTnNyu0caN65uT
+			
+			myEcharts() {
+				
+				
+				var chartDom = document.getElementById('event');
+				var myChart = echarts.init(chartDom);
+				var color = ['#02CDFF', '#62FBE7', '#7930FF','#E148EB','#ecb935']
+				var option;
+				
+				
+				option = {
+				  color: color,
+				  tooltip: {
+				    trigger: 'item',
+					position: 'top'
+				  },
+				  series: [
+				    {
+				      name: '事件类型',
+				      type: 'pie',
+					  center:['50%','60%'],
+				      radius: ['55%', '70%'],
+				      avoidLabelOverlap: false,
+				      
+				      label: {
+				        show: false,
+				        position: 'center'
+				      },
+				      emphasis: {
+				        label: {
+				          show: true,
+				          fontSize: '12',
+				          fontWeight: 'bold'
+				        }
+				      },
+				      labelLine: {
+				        show: false
+				      },
+				      data: [
+				        { value: 1048, name: '事件1' },
+				        { value: 735, name: '事件2' },
+				        { value: 580, name: '事件3' },
+				        { value: 484, name: '事件4' },
+				        { value: 300, name: '事件5' }
+				      ]
+				    },
+					
+				  ]
+				};
+				
+				option && myChart.setOption(option);
+				
+			},
+			myEcharts2() {
+				
+				
+				var chartDom = document.getElementById('event2');
+				var myChart = echarts.init(chartDom);
+				 let dashedPic =
+				    'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAM8AAAAOBAMAAAB6G1V9AAAAD1BMVEX////Kysrk5OTj4+TJycoJ0iFPAAAAG0lEQVQ4y2MYBaNgGAMTQQVFOiABhlEwCugOAMqzCykGOeENAAAAAElFTkSuQmCC';
+				let color = ['#FF8700', '#ffc300', '#00e473', '#009DFF', '#0034ff','#E148EB'];
+				var option;
+				let chartData = [
+				    {
+				        name: '双辽市',
+				        value: 40083,
+				        unit: '列',
+				    },
+				    {
+				        name: '梨树县',
+				        value: 33974,
+				        unit: '列',
+				    },
+				    {
+				        name: '伊通县',
+				        value: 15400,
+				        unit: '列',
+				    },
+				    {
+				        name: '铁东区',
+				        value: 11021,
+				        unit: '列',
+				    },
+				    {
+				        name: '铁西区',
+				        value: 30696,
+				        unit: '列',
+				    },
+				
+				];
+				let arrName = [];
+				let arrValue = [];
+				let sum = 0;
+				let pieSeries = [],
+				    lineYAxis = [];
+				
+				// 数据处理
+				chartData.forEach((v, i) => {
+				    arrName.push(v.name);
+				    arrValue.push(v.value);
+				    sum = sum + v.value;
+				});
+				
+				// 图表option整理
+				chartData.forEach((v, i) => {
+				    pieSeries.push({
+				        name: '沪昆线到达晚点情况',
+				        type: 'pie',
+				        clockWise: false,
+				        hoverAnimation: false,
+				        radius: [65 - i * 10 + '%', 66.5 - i * 10 + '%'],
+				        center: ['35%', '60%'],
+				        label: {
+				            show: false,
+				        },
+				        itemStyle: {
+				            borderRadius: 20,
+				        },
+				        data: [
+				            {
+				                value: v.value,
+				                name: v.name,
+				                 itemStyle: {
+				                    normal: {
+				                        borderWidth: 5,
+				                        borderColor:color[i]
+				                    }
+				                }
+				            },
+				            {
+				                value: sum - v.value,
+				                name: '',
+				                itemStyle: {
+				                    color: 'rgba(0,0,0,0)',
+				                },
+				            },
+				        ],
+				    });
+				    pieSeries.push({
+				        name: '',
+				        type: 'pie',
+				        silent: true,
+				        z: 1,
+				        clockWise: false, //顺时加载
+				        hoverAnimation: false, //鼠标移入变大
+				        radius: [65 - i * 10 + '%', 66.5 - i * 10 + '%'],
+				        center: ['35%', '60%'],
+				        label: {
+				            show: false,
+				        },
+				        itemStyle: {
+				            borderCap: 'round',
+				            borderJoin: 'round',
+				        },
+				        data: [
+				            {
+				                value: 7.5,
+				                itemStyle: {
+				                    color: '#E3F0FF',
+				                },
+				            },
+				            {
+				                value: 2.5,
+				                name: '',
+				                itemStyle: {
+				                    color: 'rgba(0,0,0,0)',
+				                },
+				            },
+				        ],
+				    });
+				    v.percent = ((v.value / sum) * 100).toFixed(1) + '%';
+				    lineYAxis.push({
+				        value: i,
+				        textStyle: {
+				            rich: {
+				                circle: {
+				                    color: color[i],
+				                    padding: [0, 0],
+				                },
+				            },
+				        },
+				    });
+				});
+				
+				option = {
+				    color: color,
+				    grid: {
+				        top: '20%',
+				        bottom: '45%',
+				        left: '40%',
+				        containLabel: false,
+				    },
+				    yAxis: [
+				        {
+				            type: 'category',
+				            inverse: true,
+				            axisLine: {
+				                show: false,
+				            },
+				            axisTick: {
+				                show: false,
+				            },
+				            axisLabel: {
+				                formatter: function (params) {
+				                    let item = chartData[params];
+				                    console.log(item);
+				                    return (
+				                        '{circle|●}{name|' +
+				                        item.name +
+				                        '}{bd||}{percent|' +
+				                        item.percent +
+				                        '}'
+				                    );
+				                },
+				                interval: 0,
+				                inside: true,
+				                textStyle: {
+				                    color: '#333',
+				                    fontSize: 10,
+				                    rich: {
+				                        line: {
+				                            width: 170,
+				                            height: 5,
+				                            backgroundColor: { image: dashedPic },
+				                        },
+				                        name: {
+				                            color: '#fff',
+				                            fontSize: 10,
+				                        },
+				                        bd: {
+				                            color: '#72afff',
+				                            padding: [0, 5],
+				                            fontSize: 10,
+				                        },
+				                        percent: {
+				                            color: '#5cdad0',
+				                            fontSize: 10,
+				                        },
+				                        value: {
+				                            color: '#333',
+				                            fontSize: 16,
+				                            fontWeight: 500,
+				                            padding: [0, 0, 0, 10],
+				                        },
+				                        unit: {
+				                            fontSize: 14,
+				                        },
+				                    },
+				                },
+				                show: true,
+				            },
+				            data: lineYAxis,
+				        },
+				    ],
+				    xAxis: [
+				        {
+				            show: false,
+				        },
+				    ],
+				    series: pieSeries,
+				};
+				
+				option && myChart.setOption(option);
+				
+			},
+
+
+		},
+
+
+	}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+	.chart-container {
+		width: 100%;
+		height: auto;
+		position: relative;
+		padding-bottom: 10px;
+		display: flex;
+	}
+
+
+
+
+</style>

+ 111 - 0
src/views/bigdata/chart-eventTrend.vue

@@ -0,0 +1,111 @@
+<!-- **************************************NO.6 矿坑*************************************** -->
+<template>
+	<div class="chart-container">
+		<div id="pit" style="width: 100%; height:24vh;">
+		</div>
+	</div>
+</template>
+
+<script>
+	import * as echarts from 'echarts';
+	export default {
+		name: 'pit',
+		data() {
+			return {
+				count: 0
+			}
+		},
+		mounted() {
+			this.myEcharts()
+
+		},
+
+		methods: {
+			// 出处 http://192.144.199.210:8080/editor/index.html?chart_id=udduEFcFiEYEEj4Q
+
+			myEcharts() {
+
+
+				var chartDom = document.getElementById('pit');
+				var myChart = echarts.init(chartDom);
+				var color = ['#02CDFF', '#62FBE7', '#7930FF','#ef5f9d','#ecb935'];
+				var option;
+        option = {
+          xAxis: {
+            data: [
+              '2021-05-17',
+              '2021-05-18',
+              '2021-05-19',
+              '2021-05-20',
+              '2021-05-21',
+              '2021-05-24',
+              '2021-05-25',
+              '2021-05-26',
+              '2021-05-27',
+            ],
+          },
+          yAxis: {
+            axisLabel: {
+              fontSize: 10,
+              color: '#999',
+              verticalAlign: 'bottom',
+              formatter: function (value, index) {
+                return `${value.toFixed(2)}%`;
+              },
+            },
+          },
+          series: [
+            {
+              type: 'line',
+              lineStyle: {
+                color: '#C22F43',
+                width: 1,
+                type: 'solid',
+              },
+              areaStyle: {
+                color: {
+                  type: 'linear',
+                  x: 0,
+                  y: 0,
+                  x2: 0,
+                  y2: 1,
+                  colorStops: [
+                    {
+                      offset: 0,
+                      color: 'rgba(194, 47, 67, 1.0)',
+                    },
+                    {
+                      offset: 1,
+                      color: 'rgba(194, 47, 67, 0.03)',
+                    },
+                  ],
+                  global: false,
+                },
+                origin: 'start',
+              },
+              opacity: 0.2,
+              shadowColor: 'rgba(194, 47, 67)',
+              shadowBlur: 0,
+              shadowOffsetX: 0,
+              data: [1.56, -1.34, 0.57, 2.34, -0.45, 0.57, 2.34, 1.2, 0.34],
+            },
+          ],
+        };
+				option && myChart.setOption(option);
+			},
+
+		},
+
+
+	}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+	.chart-container {
+		width: 100%;
+		height: 100%;
+		position: relative;
+		padding-bottom: 10px;
+		display: flex;
+	}
+</style>

+ 171 - 0
src/views/bigdata/chart-fireBrigade.vue

@@ -0,0 +1,171 @@
+<!-- **************************************NO.12 处理中心*************************************** -->
+<template>
+	<div class="chart-container">
+		<div id="processing" style="width: 100%; height:23vh;">
+		</div>
+	</div>
+</template>
+
+<script>
+	import * as echarts from 'echarts';
+	export default {
+		name: 'processing',
+		data() {
+			return {
+				count: 0
+			}
+		},
+		mounted() {
+			this.myEcharts()
+
+		},
+
+		methods: {
+			// 出处 http://192.144.199.210:8080/editor/index.html?chart_id=vNg2RQ3LrePk4CnZ
+			myEcharts() {
+
+
+				var chartDom = document.getElementById('processing');
+				var myChart = echarts.init(chartDom);
+				var color = ['#0E7CE2', '#FF8352', '#E271DE', '#F8456B', '#00FFFF', '#4AEAB0'];
+				var option;
+				let dataList = [{
+				    name: '双辽市',
+				    value: '56'
+				}, {
+				    name: '梨树县',
+				    value: '75'
+				}, {
+				    name: '伊通县',
+				    value: '85'
+				}, {
+				    name: '铁东区',
+				    value: '78'
+				}, {
+				    name: '铁西区',
+				    value: '76'
+				}];
+				
+				option = {
+				        grid: {
+				            left: "16%", //距离左边的距离
+				            right: "12%", //距离右边的距离
+				            bottom: "15%", //距离下边的距离
+				            top: "10%" //距离上边的距离
+				        },
+				        title: {
+				            text: '',
+				            left: 26,
+				            top: 26,
+				            textStyle: {
+				                color: '#FFFFFF',
+				                fontSize: 15,
+				                fontWeight: 50000,
+				                fontFamily: 'PingFang SC'
+				            }
+				        },
+				        tooltip: {
+				            trigger: "axis",
+				            axisPointer: {
+				                type: "shadow",
+				                crossStyle: {
+				                    color: "#134d74"
+				                }
+				            },
+				        },
+				        xAxis: [{
+				            type: "category",
+				            data: ['双辽市', '梨树县', '伊通县', '铁东区', '铁西区'],
+				            axisLabel: {
+				                textStyle: {
+				                    color: "#42a7ff",
+				                    fontSize: 10,
+				                }
+				            },
+				            axisLine: {
+				                show: false
+				            },
+				            axisTick: {
+				                show: false
+				            }
+				        }],
+				        yAxis: [{
+				                type: "value",
+				                axisLabel: {
+				                    formatter: "{value}%",
+				                    textStyle: {
+				                        color: "#42a7ff",
+				                        fontSize: 10,
+				                    },
+				                },
+				                splitLine: {
+				                    lineStyle: {
+				                        color: "#1f3335"
+				                    }
+				                },
+				                axisLine: {
+				                    show: false
+				                },
+				                axisTick: {
+				                    show: false
+				                }
+				            },
+				            
+				        ],
+				        dataZoom: [{
+				            type: 'inside',
+				            start: 0,
+				            end: dataList.length > 15 ? 35 : 100
+				        }],
+				        series: [{
+				                name: "",
+				                type: "bar",
+				                data: dataList,
+				                barGap: '-100%',
+				                barCategoryGap: '80%',
+				                itemStyle: {
+				                    normal: {
+				                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+				                                offset: 0,
+				                                color: 'rgba(27,168,240,1)'
+				                            },
+				                            {
+				                                offset: 1,
+				                                color: 'rgba(32,40,95,0.3)'
+				                            }
+				                        ])
+				                    },
+				                    emphasis: {
+				                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+				                                offset: 0,
+				                                color: 'rgba(27,168,240,1)'
+				                            },
+				                            {
+				                                offset: 1,
+				                                color: 'rgba(27,168,240,0.3)'
+				                            }
+				                        ])
+				                    }
+				                },
+				            },
+				            
+				        ]
+				};
+				option && myChart.setOption(option);
+			},
+
+		},
+
+
+	}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+	.chart-container {
+		width: 100%;
+		height: auto;
+		position: relative;
+		padding-bottom: 10px;
+		display: flex;
+	}
+</style>

+ 289 - 0
src/views/bigdata/chart-fireCause.vue

@@ -0,0 +1,289 @@
+<!-- **************************************NO.4 隐患*************************************** -->
+<template>
+	<div class="chart-container">
+		<div id="danger" style="width: 100%; height:23vh;">
+		</div>
+	</div>
+</template>
+
+<script>
+	import * as echarts from 'echarts';
+	export default {
+		name: 'danger',
+		data() {
+			return {
+				count: 0
+			}
+		},
+		mounted() {
+			this.myEcharts()
+
+		},
+
+		methods: {
+			// 出处 http://192.144.199.210:8080/editor/index.html?chart_id=XWNjkKJQ3NBt1FK6
+
+			myEcharts() {
+
+
+				var chartDom = document.getElementById('danger');
+				var myChart = echarts.init(chartDom);
+				var color = ['#02CDFF', '#62FBE7', '#7930FF', '#E148EB', '#ecb935']
+				var option;
+				let data = [582, 421, 622, 625, 265]
+				let indicator = [{
+						name: '双辽市',
+						max: 1000
+					},
+					{
+						name: '梨树县',
+						max: 1000
+					},
+					{
+						name: '伊通县',
+						max: 1000
+					},
+					{
+						name: '铁东区',
+						max: 1000
+					},
+					{
+						name: '铁西区',
+						max: 1000
+					},
+				]
+
+				option = {
+
+					radar: {
+						center: ['50%', '50%'],
+						radius: '89%',
+						name: {
+							formatter: function(name, indicator) {
+								let arr;
+								//   if(name=='开卡绑定数'||name=='渠道批量办理业务'){
+								//         arr = [
+								//         '{a|'+name+'}{b|'+indicator.value+'万}'
+								//     ]
+								//   }else{
+								arr = [
+									'{a|' + name + '}'
+								]
+								//   }
+
+								return arr.join('\n')
+							},
+							textStyle: {
+								rich: { //根据文字的组设置格式
+									a: {
+										color: '#13ffdc',
+										fontSize: 12,
+										fontFamily: 'Source Han Sans CN',
+									},
+									// b:{
+									//     fontSize:14,
+									//     verticalAlign:'top',
+									//     width:57,
+									//     color:'#8E88FE',
+									//     fontWeight:600,
+									//     align:'center'
+									// },
+								}
+
+							}
+						},
+						nameGap: 0,
+						indicator: indicator,
+						splitLine: {
+							show: false
+
+						},
+						splitArea: {
+							show: false
+						},
+						axisLine: {
+							show: false
+						}
+					},
+					series: [{
+							// name: '家庭融合包',
+							type: 'radar',
+							data: [data],
+							// value:14,
+							label: {
+								show: true,
+								formatter: function(params) {
+									console.log(params)
+									return params.value ;
+								},
+								color: '#ffffff',
+								// position:[-20,-10,-10,-10],
+								align: 'right',
+								distance: 10,
+								align: 'right'
+							},
+							symbolSize: [6, 6],
+							lineStyle: { //边缘颜色
+								width: 0
+							},
+							itemStyle: {
+								borderWidth: 1,
+								color: '#fff',
+								borderColor: '#F2F063',
+							},
+							areaStyle: {
+								color: '#7D77F1',
+								opacity: 0.6
+							}
+						},
+						{
+							type: 'radar',
+							data: [
+								[1000, 1000, 1000, 1000, 1000, 1000],
+							],
+							symbol: 'none',
+							lineStyle: {
+								width: 0
+							},
+							itemStyle: {
+								color: '#4175F5'
+							},
+
+							areaStyle: {
+								color: '#4175F5',
+								opacity: 0.06
+							}
+						},
+						{
+							type: 'radar',
+							data: [
+								[900, 900, 900, 900, 900, 900],
+							],
+
+							symbol: 'none',
+							lineStyle: {
+								width: 0
+							},
+							itemStyle: {
+								color: '#2C72C8'
+							},
+
+							areaStyle: {
+								color: '#2C72C8',
+								opacity: 0.12
+							}
+						},
+						{
+							type: 'radar',
+							data: [
+								[800, 800, 800, 800, 800, 800]
+							],
+
+							symbol: 'none',
+							lineStyle: {
+								width: 0
+							},
+							itemStyle: {
+								color: '#4175F5'
+							},
+
+							areaStyle: {
+								color: '#4175F5',
+								opacity: 0.18
+							}
+						},
+						{
+							type: 'radar',
+							data: [
+								[700, 700, 700, 700, 700, 700]
+							],
+
+							symbol: 'none',
+							lineStyle: {
+								width: 0
+							},
+							itemStyle: {
+								color: '#4175F5'
+							},
+
+							areaStyle: {
+								color: '#4175F5',
+								opacity: 0.19
+							}
+						},
+						{
+							type: 'radar',
+							data: [
+								[600, 600, 600, 600, 600, 600],
+							],
+
+							symbol: 'none',
+							lineStyle: {
+								width: 0
+							},
+							itemStyle: {
+								color: '#4175F5'
+							},
+
+							areaStyle: {
+								color: '#4175F5',
+								opacity: 0.17
+							}
+						},
+						{
+							type: 'radar',
+							data: [
+								[500, 500, 500, 500, 500, 500],
+							],
+							symbol: 'none',
+							lineStyle: {
+								width: 0
+							},
+							itemStyle: {
+								color: '#4175F5'
+							},
+
+							areaStyle: {
+								color: '#4175F5',
+								opacity: 0.16
+							}
+						},
+						{
+							type: 'radar',
+							data: [
+								[400, 400, 400, 400, 400, 400],
+							],
+
+							symbol: 'none',
+							lineStyle: {
+								width: 0
+							},
+							itemStyle: {
+								color: '#4175F5'
+							},
+
+							areaStyle: {
+								color: '#4175F5',
+								opacity: 0.13
+							}
+						},
+					]
+				};
+				option && myChart.setOption(option);
+			},
+
+		},
+
+
+	}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+	.chart-container {
+		width: 100%;
+		height: auto;
+		position: relative;
+		padding-bottom: 10px;
+		display: flex;
+	}
+</style>

文件差異過大導致無法顯示
+ 223 - 0
src/views/bigdata/chart-forestFarm.vue


+ 137 - 0
src/views/bigdata/chart-gridDistribution.vue

@@ -0,0 +1,137 @@
+<!-- **************************************NO.10 收集点*************************************** -->
+<template>
+	<div class="chart-container">
+		<div id="collection" style="width: 100%; height:50vh;">
+		</div>
+	</div>
+</template>
+
+<script>
+	import * as echarts from 'echarts';
+	export default {
+		name: 'collection',
+		data() {
+			return {
+				count: 0
+			}
+		},
+		mounted() {
+			this.myEcharts()
+
+		},
+
+		methods: {
+			// 出处 http://192.144.199.210:8080/editor/index.html?chart_id=UDNqxg4NZdRORp80
+			myEcharts() {
+
+
+				var chartDom = document.getElementById('collection');
+				var myChart = echarts.init(chartDom);
+				var color = ['#0E7CE2', '#FF8352', '#E271DE', '#F8456B', '#00FFFF', '#4AEAB0'];
+				var option;
+				let bgColor = '#fff';
+				let title = '总量';
+				let echartData = [
+				    {
+				        name: '双辽市',
+				        value: '3720',
+				    },
+				    {
+				        name: '梨树县',
+				        value: '2920',
+				    },
+				    {
+				        name: '伊通县',
+				        value: '2200',
+				    },
+				    {
+				        name: '铁东区',
+				        value: '1420',
+				    },
+					{
+					    name: '铁西区',
+					    value: '1620',
+					},
+				];
+				
+				let formatNumber = function (num) {
+				    let reg = /(?=(\B)(\d{3})+$)/g;
+				    return num.toString().replace(reg, ',');
+				};
+				let total = echartData.reduce((a, b) => {
+				    return a + b.value * 1;
+				}, 0);
+				
+				option = {
+				    color: color,
+				    series: [
+				        {
+				            type: 'pie',
+				            radius: ['60%', '80%'],
+				            center: ['50%', '50%'],
+				            data: echartData,
+				            hoverAnimation: false,
+				            itemStyle: {
+				                normal: {
+				                    borderWidth:1,
+				                },
+				
+				                emphasis: {
+				                    borderColor: bgColor,
+				                    borderWidth: 2,
+				                         shadowBlur: 8,
+				                borderColor: "#00ffff",
+				                shadowColor: "#00ffff",
+				                },
+				            },
+				            labelLine: {
+				                normal: {
+				                    length: 20,
+				                    length2:10,
+				                    lineStyle: {
+				                        color: '#356781',
+				                    },
+				                },
+				            },
+				            label: {
+				                normal: {
+				                    formatter: (params) => {
+				                        return '{icon|●}{name|' + params.name + '}{value|' + formatNumber(params.value) + '}';
+				                    },
+				                    rich: {
+				                        icon: {
+				                            fontSize: 10,
+				                        },
+				                        name: {
+				                            fontSize:10,
+				                            padding: [0, 3, 0, 4],
+				                            color: '#23c9ea',
+				                        },
+				                        value: {
+				                            fontSize: 10,
+				                            color: '#ffffff',
+				                        },
+				                    },
+				                },
+				            },
+				        },
+				    ],
+				};
+				option && myChart.setOption(option);
+			},
+
+		},
+
+
+	}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+	.chart-container {
+		width: 100%;
+		height: auto;
+		position: relative;
+		padding-bottom: 10px;
+		display: flex;
+	}
+</style>

+ 165 - 0
src/views/bigdata/chart-gridStaff.vue

@@ -0,0 +1,165 @@
+<!-- **************************************NO.13 消火栓*************************************** -->
+<template>
+	<div class="chart-container">
+		<div id="hydrant" style="width: 100%; height:55vh;">
+		</div>
+	</div>
+</template>
+
+<script>
+	import * as echarts from 'echarts';
+	export default {
+		name: 'hydrant',
+		data() {
+			return {
+				count: 0
+			}
+		},
+		mounted() {
+			this.myEcharts()
+
+		},
+
+		methods: {
+			// 出处 http://192.144.199.210:8080/editor/index.html?chart_id=Ve9zCnhVwZvXTdD0
+			myEcharts() {
+
+
+				var chartDom = document.getElementById('hydrant');
+				var myChart = echarts.init(chartDom);
+        function rand(m, n) {
+          if (!n) {
+            return Math.floor(Math.random() * m);
+          } else {
+            var c = n - m + 1;
+            return Math.floor(Math.random() * c + m);
+          }
+        }
+
+        function getMax(arr, key) {
+          var max = 0,
+            len = arr.length;
+          for (var i = 0; i < len; i++) {
+            var item = arr[i][key];
+            if (max < item) max = item;
+          }
+          return max;
+        }
+
+        function getValArr(arr, key) {
+          var val = [],
+            len = arr.length;
+          for (var i = 0; i < len; i++) {
+            val.push(arr[i][key]);
+          }
+          return val;
+        }
+
+        var arr = [];
+        for (var i = 0; i < 10; i++) {
+          arr.push({
+            name: '类目名称' + rand(99),
+            amount: rand(99999) / 100 // 采购金额
+          });
+        }
+
+        var max = getMax(arr, 'amount'),
+          angleAxisData = getValArr(arr, 'name');
+        $.each(arr, function(i, e) {
+          e.value = (e.amount / max * 100).toFixed(2);
+        });
+        var option = {
+          backgroundColor: '#222',
+          tooltip: {
+            trigger: 'item',
+            textStyle: {
+              fontSize: 16,
+              color: '#fff',
+              fontFamily: 'Microsoft YaHei'
+            }
+          },
+          angleAxis: {
+            type: 'category',
+            axisLine: {
+              lineStyle: {
+                color: '#6d8a92'
+              }
+            },
+            axisLabel: {
+              interval: 0,
+              fontSize: 14,
+              color: '#fff',
+              fontFamily: 'Microsoft YaHei'
+            },
+            axisTick: {
+              show: false
+            },
+            data: angleAxisData,
+            z: 10
+          },
+          radiusAxis: {
+            max: 100,
+            min: 0,
+            axisTick: {
+              show: false
+            },
+            axisLine: {
+              show: true,
+              lineStyle: {
+                color: '#6d8a92'
+              }
+            },
+            axisLabel: {
+              formatter: '{value}%',
+              textStyle: {
+                fontSize: 11,
+                color: '#61d9fb',
+                fontFamily: 'Microsoft YaHei'
+              }
+            },
+            splitLine: {
+              show: true,
+              lineStyle: {
+                color: '#6d8a92'
+              }
+            },
+            splitArea: {
+              areaStyle: {
+                color: 'transparent'
+              }
+            }
+          },
+          polar: {
+            center: ['50%', '50%'],
+            radius: '74%',
+          },
+          series: [{
+            type: 'bar',
+            data: arr,
+            itemStyle: {
+              color: function(params) {
+                var colorList = ['#5cc6ca', '#d87a7f', '#f5b97f', '#5ab1ef', '#b6a2de', '#8d98b3', '#e5d02d', '#97b552', '#956f6d', '#d0579c'];
+                return colorList[params.dataIndex];
+              }
+            },
+            coordinateSystem: 'polar',
+          }]
+        };
+				option && myChart.setOption(option);
+			},
+
+		},
+
+
+	}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+	.chart-container {
+		width: 100%;
+		height: auto;
+		position: relative;
+		padding-bottom: 10px;
+		display: flex;
+	}
+</style>

+ 378 - 0
src/views/bigdata/chart-keyArea.vue

@@ -0,0 +1,378 @@
+<!-- **************************************NO.7 散养户分布*************************************** -->
+<template>
+	<div class="chart-container">
+		<div id="freelyraise" style="width: 100%; height:23vh;">
+		</div>
+	</div>
+</template>
+
+<script>
+	import * as echarts from 'echarts';
+	export default {
+		name: 'freelyraise',
+		data() {
+			return {
+				count: 0
+			}
+		},
+		mounted() {
+			this.myEcharts()
+
+		},
+
+		methods: {
+			// 出处 http://192.144.199.210/forum.php?mod=viewthread&tid=6785&highlight=%E6%9F%B1%E7%8A%B6%E5%9B%BE
+
+			myEcharts() {
+
+
+				var chartDom = document.getElementById('freelyraise');
+				var myChart = echarts.init(chartDom);
+				var color = ['#02CDFF', '#62FBE7', '#7930FF', '#ef5f9d', '#ecb935'];
+				var option;
+				let data = [{
+						"name": "双辽市",
+						"num": "18.987691"
+					},
+					{
+						"name": "梨树县",
+						"num": "20.377176"
+					},
+					{
+						"name": "伊通县",
+						"num": "19.127404"
+					},
+					{
+						"name": "铁东区",
+						"num": "18.40882"
+					},
+					{
+						"name": "铁西区",
+						"num": "17.980597"
+					},
+				]
+
+				function contains(arr, dst) {
+					var i = arr.length;
+					while ((i -= 1)) {
+						if (arr[i] == dst) {
+							return i;
+						}
+					}
+					return false;
+				}
+
+			 var attackSourcesColor = [
+					new echarts.graphic.LinearGradient(0, 1, 1, 1, [{
+							offset: 0,
+							color: "#EB3B5A"
+						},
+						{
+							offset: 1,
+							color: "#FE9C5A"
+						}
+					]),
+					new echarts.graphic.LinearGradient(0, 1, 1, 1, [{
+							offset: 0,
+							color: "#FA8231"
+						},
+						{
+							offset: 1,
+							color: "#FFD14C"
+						}
+					]),
+					new echarts.graphic.LinearGradient(0, 1, 1, 1, [{
+							offset: 0,
+							color: "#F7B731"
+						},
+						{
+							offset: 1,
+							color: "#FFEE96"
+						}
+					]),
+					new echarts.graphic.LinearGradient(0, 1, 1, 1, [{
+							offset: 0,
+							color: "#21fe8f"
+						},
+						{
+							offset: 1,
+							color: "#38911f"
+						}
+					]),
+					new echarts.graphic.LinearGradient(0, 1, 1, 1, [{
+							offset: 0,
+							color: "#395CFE"
+						},
+						{
+							offset: 1,
+							color: "#2EC7CF"
+						}
+					])
+					
+				];
+				var attackSourcesColor1 = [
+					"#EB3B5A",
+					"#FA8231",
+					"#F7B731",
+					"#38911f",
+					"#3860FC",
+					"#F57474",
+					"#56D0E3",
+					"#1089E7",
+					"#F57474",
+					"#1089E7",
+					"#F57474",
+					"#F57474"
+				];
+				var attaData = [];
+				var attaName = [];
+				var topName = []
+				data.forEach((it, index) => {
+					attaData[index] = parseFloat(it.num).toFixed(0);
+					//attaData[index] = parseInt(it.num);
+					attaName[index] = it.name;
+					topName[index] = `${it.name}`
+				});
+				var salvProMax = [];
+				var max = attaData[0];
+				for (let i = 0; i < attaData.length; i++) {
+					max = max < attaData[i + 1] ? attaData[i + 1] : max;
+				}
+				for (let i = 0; i < attaData.length; i++) {
+					salvProMax.push(max); //背景按最大值
+				}
+
+				function attackSourcesDataFmt(sData) {
+					var sss = [];
+					sData.forEach(function(item, i) {
+						let itemStyle = {
+							color: i > 5 ? attackSourcesColor[5] : attackSourcesColor[i]
+						};
+						sss.push({
+							value: item,
+							itemStyle: itemStyle
+						});
+					});
+					return sss;
+				}
+
+				option = {
+					tooltip: {
+						show: false,
+						backgroundColor: "rgba(3,169,244, 0.5)", //背景颜色(此时为默认色)
+						textStyle: {
+							fontSize: 12
+						}
+			  },
+					color: ["#F7B731"],
+					legend: {
+						show: false,
+						pageIconSize: [12, 12],
+						itemWidth: 20,
+						itemHeight: 10,
+						textStyle: {
+							//图例文字的样式
+							fontSize: 12,
+							color: "#fff"
+						},
+						selectedMode: false,
+						data: ["个人所得(亿元)"]
+					},
+					grid: {
+						left: '12%',
+						width: '70%',
+						bottom: '5%',
+						top: "8%",
+					},
+					xAxis: {
+						type: "value",
+
+						splitLine: {
+							show: false
+						},
+						axisLabel: {
+							show: false
+						},
+						axisTick: {
+							show: false
+			  	},
+						axisLine: {
+							show: false
+						}
+					},
+					yAxis: [{ //左侧排行数字
+							type: "category",
+							inverse: true,
+			  		axisLine: {
+								show: false
+							},
+							axisTick: {
+								show: false
+							},
+							axisPointer: {
+								label: {
+									show: true,
+									//margin: 30
+								}
+			 			},
+							padding: [5, 0, 0, 0],
+							postion: "right",
+							data: attaName,
+							axisLabel: {
+								margin: 30,
+								fontSize: 12,
+			  			align: "left",
+								padding: [2, 0, 0, 0],
+								color: "#000",
+								rich: {
+									nt1: {
+										color: "#fff",
+										backgroundColor: attackSourcesColor1[0],
+										width: 15,
+										height: 15,
+										fontSize: 12,
+										align: "center",
+										borderRadius: 100,
+										lineHeight: "5",
+										padding: [0, 1, 2, 1]
+										// padding:[0,0,2,0],
+									},
+									nt2: {
+										color: "#fff",
+										backgroundColor: attackSourcesColor1[1],
+										width: 15,
+										height: 15,
+										fontSize: 12,
+										align: "center",
+										borderRadius: 100,
+										padding: [0, 1, 2, 1]
+									},
+									nt3: {
+										color: "#fff",
+										backgroundColor: attackSourcesColor1[2],
+										width: 15,
+										height: 15,
+										fontSize: 12,
+										align: "center",
+										borderRadius: 100,
+										padding: [0, 1, 2, 1]
+									},
+									nt: {
+										color: "#fff",
+										backgroundColor: attackSourcesColor1[3],
+										width: 15,
+			  					height: 15,
+										fontSize: 12,
+										align: "center",
+										lineHeight: 3,
+										borderRadius: 100,
+										padding: [0, 1, 2, 1],
+										lineHeight: 5
+									}
+								},
+								
+							}
+						},
+						{ //右侧名字
+							type: "category",
+							inverse: true,
+							axisTick: "none",
+							axisLine: "none",
+							show: true,
+							axisLabel: {
+								textStyle: {
+									color: "#fff",
+									fontSize: "12"
+								}
+							},
+							//data: attackSourcesDataFmt(attaName) 
+							data: attackSourcesDataFmt(attaData) //数字
+						},
+						{ //名称
+							type: 'category',
+							offset: -10,
+							position: "left",
+							axisLabel: {
+								color: `#fff`,
+								fontSize: 10
+							},
+			  		axisLine: {
+								show: false
+							},
+							inverse: true,
+							axisTick: {
+								show: false
+							},
+							axisLabel: {
+								interval: 0,
+								color: ["#fff"],
+								align: "left",
+								verticalAlign: "bottom",
+								lineHeight: 32,
+								fontSize: 12
+							},
+							data: topName
+			 		},
+					],
+					series: [{ //条形图数值
+							zlevel: 1,
+							name: "个人所得(亿元)",
+							type: "bar",
+							barWidth: "8px",
+							animationDuration: 1500,
+							data: attackSourcesDataFmt(attaData),
+							align: "center",
+							itemStyle: {
+								normal: {
+									barBorderRadius: 10
+								}
+							},
+							label: {
+								show: false,
+			 				fontSize: 12,
+			  			color: "#fff",
+								textBorderWidth: 2,
+								padding: [2, 0, 0, 0]
+							}
+						},
+						{ //最大值背景条形图
+							name: "个人所得(亿元)",
+							type: "bar",
+							barWidth: 8,
+							barGap: "-100%",
+							margin: "20",
+							data: salvProMax,
+							textStyle: {
+								//图例文字的样式
+								fontSize: 12,
+								color: "#fff"
+							},
+							itemStyle: {
+								normal: {
+									color: "#05325F",
+									//width:"100%",
+									fontSize: 12,
+									barBorderRadius: 30
+								},
+							}
+						}
+					]
+				};
+				option && myChart.setOption(option);
+			},
+
+		},
+
+
+	}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+	.chart-container {
+		width: 100%;
+		height: auto;
+		position: relative;
+		padding-bottom: 10px;
+		display: flex;
+	}
+</style>

+ 137 - 0
src/views/bigdata/chart-weatherStation.vue

@@ -0,0 +1,137 @@
+<!-- **************************************NO.14 泡沫液*************************************** -->
+<template>
+	<div class="chart-container">
+		<div id="foam" style="width: 100%; height:23vh;">
+		</div>
+	</div>
+</template>
+
+<script>
+	import * as echarts from 'echarts';
+	export default {
+		name: 'foam',
+		data() {
+			return {
+				count: 0
+			}
+		},
+		mounted() {
+			this.myEcharts()
+
+		},
+
+		methods: {
+			// 出处 http://192.144.199.210:8080/editor/index.html?chart_id=daPJGrcYMpZanpxR
+			myEcharts() {
+
+
+				var chartDom = document.getElementById('foam');
+				var myChart = echarts.init(chartDom);
+				var zdslColorList = ['#D0A00E', '#34DA62', '#00C0E9', '#0096F3', '#33CCFF'];
+				var option;
+				  option = {
+				      grid: {
+				          top: '5%',
+				          left: '10%',
+				          right: '12%',
+				          bottom: '0',
+				          containLabel: true
+				      },
+				      tooltip: {
+				      },
+				      xAxis: {
+				          show: false,
+				          type: 'value'
+				      },
+				      yAxis: [{
+				              type: 'category',
+							  inverse:true,
+				              data: ['双辽市', '梨树县', '伊通县', '铁东区', '铁西区'],
+				              axisLabel: {
+				                  show: true,
+				                  textStyle: {
+				                      color: '#ADD6FF',
+				                      fontSize: '12'
+				                  }
+				              },
+				              splitLine: {
+				                  show: false
+				              },
+				              axisTick: {
+				                  show: false
+				              },
+				              axisLine: {
+				                  show: false
+				              },
+				          },
+				          {
+				              splitLine: {
+				                  show: false
+				              },
+				              axisTick: {
+				                  show: false
+				              },
+				              axisLine: {
+				                  show: false
+				              },
+				              axisLabel: {
+				                  show: true,
+				                  textStyle: {
+				                      color: '#ADD6FF',
+				                      fontSize: '12'
+				                  }
+				              },
+				              data: [150, 298, 206, 75, 154]
+				          }
+				      ],
+				 
+				      series: [{
+				              name: "受理数", // bar图的外边框
+				              type: "bar",
+				              barWidth: "20%",
+				              yAxisIndex: 0,
+				              data: [500, 500, 500, 500, 500].map((item, i) => {
+				                  return {
+				                      value: item,
+				                      itemStyle: {
+				                          color: "rgba(0,0,0,0)",
+				                          barBorderColor: zdslColorList[i],
+				                          borderWidth: 1,
+				                          shadowColor: "#33CCFF",
+				                          shadowBlur: 4
+				                      }
+				                  }
+				              }),
+				          },
+				          {
+				              name: "受理数", //这个是Bar图
+				              type: 'bar',
+				              yAxisIndex: 1,
+				              barWidth: "10%",
+				              data: [150, 298, 206, 75, 154]
+				          }
+				      ],
+				      itemStyle: {
+				          color: function(params) {
+				              return zdslColorList[params.dataIndex]
+				          }
+				      }
+				  }
+				option && myChart.setOption(option);
+			},
+
+		},
+
+
+	}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+	.chart-container {
+		width: 100%;
+		height: auto;
+		position: relative;
+		padding-bottom: 10px;
+		display: flex;
+	}
+</style>

+ 219 - 0
src/views/bigdata/chart-weatherTrends.vue

@@ -0,0 +1,219 @@
+<!-- **************************************NO.9 散养户、养殖场养殖种类*************************************** -->
+<template>
+	<div class="chart-container">
+		<div id="farmtype" style="width: 100%; height:24vh;">
+		</div>
+	</div>
+</template>
+
+<script>
+	import * as echarts from 'echarts';
+	export default {
+		name: 'farmtype',
+		data() {
+			return {
+				count: 0
+			}
+		},
+		mounted() {
+			this.myEcharts()
+
+		},
+
+		methods: {
+			// 出处 http://192.144.199.210:8080/editor/index.html?chart_id=smh2KYnoCMWnT1IN
+
+			myEcharts() {
+
+
+				var chartDom = document.getElementById('farmtype');
+				var myChart = echarts.init(chartDom);
+        var xData = ['2022年1月','2022年2月','2022年3月','2022年4月','2022年5月','2022年6月','2022年7月','2022年8月','2022年9月','2022年10月','2022年11月','2022年12月'];
+        var option;
+        option = {
+          backgroundColor:'#232d36',
+          tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+              lineStyle: {
+                color: {
+                  type: 'linear',
+                  x: 0,
+                  y: 0,
+                  x2: 0,
+                  y2: 1,
+                  colorStops: [{
+                    offset: 0,
+                    color: 'rgba(0, 255, 233,0)'
+                  }, {
+                    offset: 0.5,
+                    color: 'rgba(255, 255, 255,1)',
+                  }, {
+                    offset: 1,
+                    color: 'rgba(0, 255, 233,0)'
+                  }],
+                  global: false
+                }
+              },
+            },
+          },
+          grid: {
+            top: '15%',
+            left: '10%',
+            right: '5%',
+            bottom: '15%',
+          },
+          legend:{
+            data:['最高气温','最低气温'],
+            textStyle:{
+              color:'#fff',
+              align: 'center',
+              fontSize: 16
+            },
+            x:'center'
+          },
+          xAxis: [{
+            type: 'category',
+            // 轴线
+            axisLine: {
+              show: true,
+              lineStyle:{
+                color: '#85B1B4',
+              }
+            },
+            // 轴刻度线
+            axisTick:{
+              show:false,
+            },
+            // 坐标轴名称
+            axisLabel: {
+              color: '#fff',
+              margin:6,
+            },
+            // 轴分隔线
+            splitLine: {
+              show: false
+            },
+            // 轴两侧留白
+            boundaryGap: ['5%','5%'],
+            data: xData
+
+          }],
+
+          yAxis: [{
+            type: 'value',
+            min: 0,
+            // max: 140,
+            splitNumber: 4,
+            splitLine: {
+              show: false,
+            },
+            axisLine: {
+              show: true,
+              lineStyle:{
+                color: '#85B1B4'
+              }
+            },
+            axisLabel: {
+              show: true,
+              margin: 10,
+              textStyle: {
+                color: '#fff',
+
+              },
+            },
+            axisTick: {
+              show: false,
+            },
+          }],
+          series: [
+            {
+              name:'最高气温',
+              type: 'line',
+              showAllSymbol: true,
+              symbol: 'circle',
+              symbolSize: 4,
+              lineStyle: {
+                normal: {
+                  color: "#FF8736",
+                },
+              },
+              label: {
+                show: false,
+              },
+              itemStyle: {
+                color: "#FF8736",
+                borderColor: "#FF8736",
+                borderWidth: 2,
+              },
+              // areaStyle: {
+              //     normal: {
+              //         color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+              //             {
+              //                 offset: 0,
+              //                 color: 'rgba(43,193,145,0.3)'
+              //             },
+              //             {
+              //                 offset: 1,
+              //                 color: 'rgba(43,193,145,0)'
+              //             }
+              //         ], false),
+              //     }
+              // },
+              data: [4,7,8,12,15,23,24,24,25,28,27,24,21,23]//data.values
+            },
+            {
+              name:'最低气温',
+              type: 'line',
+              showAllSymbol: true,
+              symbol: 'circle',
+              symbolSize:4,
+              lineStyle: {
+                normal: {
+                  color: "#13EFB7",
+                },
+              },
+              label: {
+                show: false,
+              },
+              itemStyle: {
+                color: "#13EFB7",
+                borderColor: "#13EFB7",
+                borderWidth: 2,
+              },
+              areaStyle: {
+                normal: {
+                  color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                    {
+                      offset: 0,
+                      color: 'rgba(81,150,164,0.3)'
+                    },
+                    {
+                      offset: 1,
+                      color: 'rgba(81,150,164,0)'
+                    }
+                  ], false),
+                }
+              },
+              data: [3,5,4,2,1,7,6,3,4,5,6,7,1,2]//data.values
+            },
+          ]
+        };
+				option && myChart.setOption(option);
+			},
+
+		},
+
+
+	}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+	.chart-container {
+		width: 100%;
+		height: auto;
+		position: relative;
+		padding-bottom: 10px;
+		display: flex;
+	}
+</style>

+ 207 - 0
src/views/bigdata/tabbar.vue

@@ -0,0 +1,207 @@
+<template>
+	<div class="bigdata-map-tabbar">
+				<el-row :gutter="20">
+					<el-col :span="4" v-for="(regionNum,index) in regionNum" :key="index">
+						<div class="list-content">
+							<span>{{regionNum.count}}</span>
+							<h5>{{regionNum.name}}</h5>
+						</div>
+					</el-col>
+				</el-row>
+	</div>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				//tab默认停留项el-tab-pane > name = "?"
+				activeName: 'sp',
+				//地区分类tabtitle
+				district:[
+					{
+						label:'四平市',
+						name:'sp',
+						id:''
+					},
+					{
+						label:'双辽市',
+						name:'sl',
+						id:''
+					},
+					{
+						label:'梨树县',
+						name:'ls',
+						id:''
+					},
+					{
+						label:'伊通县',
+						name:'yt',
+						id:''
+					},
+					{
+						label:'铁东区',
+						name:'td',
+						id:''
+					},
+					{
+						label:'铁西区',
+						name:'tx',
+						id:''
+					},
+				],
+				// 本地区内分类项数量
+				regionNum:[
+					{
+				       count:641,
+					   name:'事件'
+					},
+					{
+					   count:351,
+					   name:'隐患'
+					},
+					{
+					   count:785,
+					   name:'人口'
+					},
+					{
+					   count:512,
+					   name:'企业'
+					},
+					{
+					   count:786,
+					   name:'林场'
+					},
+					{
+					   count:544,
+					   name:'矿坑'
+					},
+					{
+					   count:320,
+					   name:'收集点'
+					},
+					{
+					   count:321,
+					   name:'水鹤'
+					},
+					{
+					   count:400,
+					   name:'取水口'
+					},
+					{
+					   count:654,
+					   name:'消火栓'
+					},
+					{
+					   count:806,
+					   name:'摄像头'
+					},
+					{
+					   count:312,
+					   name:'养殖场'
+					},
+					{
+					   count:713,
+					   name:'处理中心'
+					},
+					{
+					   count:132,
+					   name:'泡沫液'
+					},
+					{
+					   count:466,
+					   name:'泡沫液'
+					},
+					{
+					   count:897,
+					   name:'消防力量'
+					},
+					{
+					   count:132,
+					   name:'探测器'
+					}
+				]
+			};
+		},
+		methods: {
+			handleClick(tab, event) {
+				console.log(tab, event);
+			}
+		}
+	};
+</script>
+
+<style rel="stylesheet/scss" lang="scss">
+	@import '@/assets/styles/base.scss';
+	.bigdata-map-tabbar {
+		width: 100%;
+		height: 28.5vh;
+		padding: 0 1rem 1rem 1rem!important;
+		box-shadow: 0 0 1px rgba($color: #163696, $alpha: .1),
+			-0 -0 20px rgba($color: #163696, $alpha: .6) inset;
+
+		.el-tabs__item {
+			color: #fff;
+			font-size: 12px;
+			height: 32px;
+			line-height: 32px;
+			padding: 0 10px;
+		}
+
+		.el-tabs__item.is-active {
+			color: #3ec6fc;
+		}
+
+		.el-tabs__nav-wrap::after {
+			background: none;
+		}
+
+		.el-tabs__active-bar {
+			// background-color: #ffbc30;
+			border-radius: 20px;
+		}
+
+		.el-tab-pane {
+			color: #fff;
+		}
+
+		.el-tabs__nav-next,
+		.el-tabs__nav-prev {
+			line-height: 40px;
+		}
+
+		.el-tabs__header {
+			margin: 0 0 10px;
+		}
+
+		.list-content {
+			width: 95%;
+			margin: 0 auto;
+			text-align: center;
+			margin-top: 1rem;
+
+			h5 {
+				width: 100%;
+				color: #0aaef2;
+				padding: .2rem 0;
+				border: 1px solid #091641;
+				font-size: 12px;
+			}
+
+			span {
+				width: 100%;
+				display: flex;
+				flex-direction: column;
+				font-size: 12px;
+				color: $white;
+				padding: .5rem 0;
+				font-weight: bolder;
+				border: 1px solid #091641;
+				border-bottom:none ;
+			}
+		}
+		.list-content:hover{
+			filter: brightness(2.3);
+		}
+	}
+</style>

文件差異過大導致無法顯示
+ 1993 - 1923
src/views/eventdetailsdialog.vue


+ 2 - 1
src/views/forest.vue

@@ -468,7 +468,7 @@ export default {
       //基本情况
       forestInfo: '', //基本情况
       //左侧获取事件信息统计
-      totalStr: '',
+      totalStr: '000000',
       aiTotal: '',
       newReport: '',
       otherTotal: '',
@@ -1119,6 +1119,7 @@ export default {
         this.$refs.bottomMenu.showChild = false
         this.$refs.bottomMenu.showBanChild = false
         this.$refs.bottomMenu.showChangChild = false
+        // window.open('http://192.168.0.200/');
       } else if (click == 'forestban') {
         this.$refs.supermap.isEditableLayers = false
         this.$refs.bottomMenu.showChild = false

+ 234 - 40
src/views/monitor.vue

@@ -26,6 +26,20 @@
                     <h5>{{ item.deviceName }}</h5>
                   </div>
                 </div>
+                <div class="icon-con w-33 m-btm-no">
+                  <div class="icon icon-dot"></div>
+                  <div class="icon-text">
+                    <h6>0</h6>
+                    <h5>传感器</h5>
+                  </div>
+                </div>
+                <div class="icon-con w-33 m-btm-no">
+                  <div class="icon icon-dot"></div>
+                  <div class="icon-text">
+                    <h6>0</h6>
+                    <h5>大喇叭</h5>
+                  </div>
+                </div>
               </div>
               <div class="overflow-y" style="height: 33vh;">
                 <el-collapse accordion>
@@ -104,6 +118,13 @@
     </div>
     <eventLocation ref="eventLocation"></eventLocation>
     <TVWall ref="TVWall"></TVWall>
+    <el-dialog :title="cameraTitle" :visible.sync="cameraVisible" v-if="cameraVisible" customClass="videoCustomWidth"
+               @close="cancelEventLocationShow()">
+      <div style="width:1020px;height:625px;position:relative;">
+        <!--视频窗口展示---海康-->
+        <div id="playWnd" class="playWnd" style="left: 0px; top: 0px;"></div>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -124,7 +145,10 @@ import TVWall from '@/components/TVWall.vue' //电视墙弹窗
 import {
   getDahuaVideoServer
 } from '@/api/dahua/dahua'
-import DHWs from '@/dahua/lib/DHWs'
+import {
+  getHaiKangVideoServer
+} from '@/api/haikang/haikang'
+// import DHWs from '@/dahua/lib/DHWs'
 
 /** ----------------------------------摄像头预览结束------------------------------------- */
   // import echarts from 'echarts'
@@ -140,8 +164,8 @@ export default {
   },
   created() {
     /** ----------------------------------摄像头预览开始------------------------------------- */
-    const DHWsInstance = DHWs.getInstance()
-    this.ws = DHWsInstance
+    // const DHWsInstance = DHWs.getInstance()
+    // this.ws = DHWsInstance
     /** ----------------------------------摄像头预览结束------------------------------------- */
 
     /** ----------------------------------底部按钮公用组件开始------------------------------------- */
@@ -151,20 +175,26 @@ export default {
     /** ----------------------------------底部按钮公用组件结束------------------------------------- */
   },
   mounted() {
-    this.selectDeviceType()
+    this.selectDeviceType(-1)
     this.selectKeyAreaList()
   },
   data() {
     return {
-      iconCurrentIndex1: '',
-      listCurrentIndex1: '',
-      listCurrentIndex2: '',
-      listCurrentIndex3: '',
+      iconCurrentIndex1: '-1',
+      listCurrentIndex1: '-1',
+      listCurrentIndex2: '-1',
       /** ----------------------------------摄像头预览开始------------------------------------- */
+      //大华
       activePanel: 'key1',
       isLogin: false,
       cameraParams: [],
       ws: null,
+      //海康
+      cameraTitle: '',
+      cameraVisible: false,
+      initCount: 0,
+      pubKey: '',
+      oWebControl: null,
       /** ----------------------------------摄像头预览结束------------------------------------- */
       visuForestCloudMapDeviceBOList: [],
       visuForestCloudCameraBOList: [],
@@ -389,8 +419,7 @@ export default {
               markersMap.isAggregation = true
             }
             if (res.data.visuForestCloudCameraBOList[i].channelCode != null) {
-              markersMap.parameter = res.data.visuForestCloudCameraBOList[i].channelCode.split(
-                ',')
+              markersMap.parameter = res.data.visuForestCloudCameraBOList[i].cameraCode
             } else {
               markersMap.parameter = []
             }
@@ -470,7 +499,7 @@ export default {
               markersMap.isAggregation = true
             }
             if (res.data[i].channelCode != null) {
-              markersMap.parameter = res.data[i].channelCode.split(',')
+              markersMap.parameter = res.data[i].cameraCode
             } else {
               markersMap.parameter = []
             }
@@ -549,36 +578,56 @@ export default {
     alertReinstall: function() {
       this.$modal.msgWarning('请重新安装客户端')
     },
+    cancelEventLocationShow() {
+      if (this.oWebControl != null) {
+        this.oWebControl.JS_HideWnd()   // 先让窗口隐藏,规避可能的插件窗口滞后于浏览器消失问题
+        this.oWebControl.JS_Disconnect().then(function() {  // 断开与插件服务连接成功
+          },
+          function() {  // 断开与插件服务连接失败
+          })
+      }
+    },
     /** 预览按钮操作 */
-    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()
-          }
-        })
+    preview(cameraCode) {
+      let that = this
+      // getDahuaVideoServer().then(newResponse => {
+      //   console.log(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()
+      //     }
+      //   })
+      // })
+      that.cameraVisible = true
+      getHaiKangVideoServer({cameraCode:cameraCode}).then(newResponse => {
+        that.cameraTitle = '摄像头-'+newResponse.data.cameraName
+        that.initPlugin(newResponse.data.appkey,newResponse.data.loginIp,newResponse.data.secret,newResponse.data.loginPort)
+        setTimeout(function() {
+          that.playhk(newResponse.data.channelCode)
+        }, 5000)
       })
+
     },
     realTimeVideoDialog(cameraParams) { // 调用弹窗实时播放接口
       if (!this.isLogin) {
@@ -586,14 +635,159 @@ export default {
         return false
       }
       this.ws.openVideo(cameraParams)
-    }
+    },
     /** ----------------------------------摄像头预览结束------------------------------------- */
 
+
+    /** ----------------------------------海康摄像头预览开始------------------------------------- */
+    // 创建播放实例
+    initPlugin(newappkey,newloginIp,newsecret,newloginPort) {
+      let that=this
+      that.oWebControl = new WebControl({
+        szPluginContainer: 'playWnd',                       // 指定容器id
+        iServicePortStart: 15900,                           // 指定起止端口号,建议使用该值
+        iServicePortEnd: 15909,
+        szClassId: '23BF3B0A-2C56-4D97-9C03-0CB103AA8F11',   // 用于IE10使用ActiveX的clsid
+        cbConnectSuccess: function() {                     // 创建WebControl实例成功
+          that.oWebControl.JS_StartService('window', {         // WebControl实例创建成功后需要启动服务
+            dllPath: './VideoPluginConnect.dll'         // 值"./VideoPluginConnect.dll"写死
+          }).then(function() {                           // 启动插件服务成功
+            that.oWebControl.JS_SetWindowControlCallback({   // 设置消息回调
+              cbIntegrationCallBack: cbIntegrationCallBack
+            })
+
+            that.oWebControl.JS_CreateWnd('playWnd', 1020, 600).then(function() { //JS_CreateWnd创建视频播放窗口,宽高可设定
+              that.init(newappkey,newloginIp,newsecret,newloginPort)  // 创建播放实例成功后初始化
+            })
+          }, function() { // 启动插件服务失败
+          })
+        },
+        cbConnectError: function() { // 创建WebControl实例失败
+          that.oWebControl = null
+          $('#playWnd').html('插件未启动,正在尝试启动,请稍候...')
+          WebControl.JS_WakeUp('VideoWebPlugin://') // 程序未启动时执行error函数,采用wakeup来启动程序
+          initCount++
+          if (initCount < 3) {
+            setTimeout(function() {
+              that.initPlugin(newappkey,newloginIp,newsecret,newloginPort)
+            }, 3000)
+          } else {
+            $('#playWnd').html('插件启动失败,请检查插件是否安装!')
+          }
+        },
+        cbConnectClose: function(bNormalClose) {
+          // 异常断开:bNormalClose = false
+          // JS_Disconnect正常断开:bNormalClose = true
+          console.log('cbConnectClose')
+          that.oWebControl = null
+        }
+      })
+    },
+    //播放海康摄像头
+    playhk(channelCode) {
+      var cameraIndexCode = channelCode     //获取输入的监控点编号值,必填
+      var streamMode = 0                                     //主子码流标识:0-主码流,1-子码流
+      var transMode = 1                                      //传输协议:0-UDP,1-TCP
+      var gpuMode = 0                                        //是否启用GPU硬解,0-不启用,1-启用
+      var wndId = -1                                         //播放窗口序号(在2x2以上布局下可指定播放窗口)
+
+      cameraIndexCode = cameraIndexCode.replace(/(^\s*)/g, '')
+      cameraIndexCode = cameraIndexCode.replace(/(\s*$)/g, '')
+
+      this.oWebControl.JS_RequestInterface({
+        funcName: 'startPreview',
+        argument: JSON.stringify({
+          cameraIndexCode: cameraIndexCode,                //监控点编号
+          streamMode: streamMode,                         //主子码流标识
+          transMode: transMode,                           //传输协议
+          gpuMode: gpuMode,                               //是否开启GPU硬解
+          wndId: wndId                                     //可指定播放窗口
+        })
+      })
+    },
+    //初始化
+    init(newappkey,newloginIp,newsecret,newloginPort) {
+      let that = this
+      that.getPubKey(function() {
+        ////////////////////////////////// 请自行修改以下变量值	////////////////////////////////////
+        var appkey = newappkey                           //综合安防管理平台提供的appkey,必填
+        var secret = that.setEncrypt(newsecret)   //综合安防管理平台提供的secret,必填
+        var ip = newloginIp                           //综合安防管理平台IP地址,必填
+        var playMode = 0                                  //初始播放模式:0-预览,1-回放
+        var port = Number(newloginPort)                                    //综合安防管理平台端口,若启用HTTPS协议,默认443
+        var snapDir = 'D:\\SnapDir'                       //抓图存储路径
+        var videoDir = 'D:\\VideoDir'                     //紧急录像或录像剪辑存储路径
+        var layout = '1x1'                                //playMode指定模式的布局
+        var enableHTTPS = 1                               //是否启用HTTPS协议与综合安防管理平台交互,这里总是填1
+        var encryptedFields = 'secret'					   //加密字段,默认加密领域为secret
+        var showToolbar = 1                               //是否显示工具栏,0-不显示,非0-显示
+        var showSmart = 1                                 //是否显示智能信息(如配置移动侦测后画面上的线框),0-不显示,非0-显示
+        var buttonIDs = '0,16,256,257,258,259,260,512,513,514,515,516,517,768,769'  //自定义工具条按钮
+        ////////////////////////////////// 请自行修改以上变量值	////////////////////////////////////
+
+        that.oWebControl.JS_RequestInterface({
+          funcName: 'init',
+          argument: JSON.stringify({
+            appkey: appkey,                            //API网关提供的appkey
+            secret: secret,                            //API网关提供的secret
+            ip: ip,                                    //API网关IP地址
+            playMode: playMode,                        //播放模式(决定显示预览还是回放界面)
+            port: port,                                //端口
+            snapDir: snapDir,                          //抓图存储路径
+            videoDir: videoDir,                        //紧急录像或录像剪辑存储路径
+            layout: layout,                            //布局
+            enableHTTPS: enableHTTPS,                  //是否启用HTTPS协议
+            encryptedFields: encryptedFields,          //加密字段
+            showToolbar: showToolbar,                  //是否显示工具栏
+            showSmart: showSmart,                      //是否显示智能信息
+            buttonIDs: buttonIDs                       //自定义工具条按钮
+          })
+        }).then(function(oData) {
+          that.oWebControl.JS_Resize(1020, 600)  // 初始化后resize一次,规避firefox下首次显示窗口后插件窗口未与DIV窗口重合问题
+        })
+      })
+    },
+    //获取公钥
+    getPubKey(callback) {
+      let that = this
+      that.oWebControl.JS_RequestInterface({
+        funcName: 'getRSAPubKey',
+        argument: JSON.stringify({
+          keyLength: 1024
+        })
+      }).then(function(oData) {
+        console.log(oData)
+        if (oData.responseMsg.data) {
+          that.pubKey = oData.responseMsg.data
+          callback()
+        }
+      })
+    },
+//RSA加密
+    setEncrypt(value) {
+      var encrypt = new JSEncrypt()
+      encrypt.setPublicKey(this.pubKey)
+      return encrypt.encrypt(value)
+    },
+    /** ----------------------------------海康摄像头预览结束------------------------------------- */
+
   }
 }
+
+// 推送消息
+function cbIntegrationCallBack(oData) {
+  console.log(JSON.stringify(oData.responseMsg))
+}
 </script>
 
 
 <style rel="stylesheet/scss" lang="scss" scoped>
 @import '@/assets/styles/base.scss';
+
+.playWnd {
+  margin: 4px 0 0 8px;
+  width: 1020px; /*播放容器的宽和高设定*/
+  height: 600px;
+  border: 1px solid red;
+}
 </style>

+ 1 - 1
src/views/system/register.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="register">
     <el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
-      <h3 class="title">若依后台管理系统</h3>
+      <h3 class="title">四平市态势感知平台</h3>
       <el-form-item prop="username">
         <el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="账号">
           <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />