视频监控
This commit is contained in:
		| @@ -15,11 +15,27 @@ | ||||
|           <u-icon name="arrow-down" color="#666" size="24" /> | ||||
|         </AiAreaPicker> | ||||
|       </div> | ||||
|       <div class="num-content"> | ||||
|         <img src="./img/on-icon.png" alt="">在线 {{count.online || 0}} | ||||
|         <img src="./img/off-icon.png" alt="" class="mar-l40">离线 {{count.sum - count.online || 0}} | ||||
|       </div> | ||||
|     </AiTopFixed> | ||||
|     <div class="num-content"> | ||||
|       <!-- <img src="./img/on-icon.png" alt="">在线 {{count.online || 0}} | ||||
|       <img src="./img/off-icon.png" alt="" class="mar-l40">离线 {{count.sum - count.online || 0}} --> | ||||
|       <div class="item"> | ||||
|         <div id="echarts" style="width:100%;height:100%;"></div> | ||||
|         <img src="./img/monitor-icon.png" alt="" class="monitor-icon"> | ||||
|       </div> | ||||
|       <div class="item"> | ||||
|         <h3>{{count.online || 0}}</h3> | ||||
|         <p>在线</p> | ||||
|       </div> | ||||
|       <div class="item"> | ||||
|         <h3>{{count.sum - count.online || 0}}</h3> | ||||
|         <p>离线</p> | ||||
|       </div> | ||||
|       <div class="item"> | ||||
|         <h3>{{onlineRate*100 || 0}}%</h3> | ||||
|         <p>在线率</p> | ||||
|       </div> | ||||
|     </div> | ||||
|     <!-- <div class="list"> | ||||
|       <div class="item" v-for="row in monitors" :key="row.nodeId" :class="{online:!row.online}"> | ||||
|         <template v-if="!!row.deviceId"> | ||||
| @@ -46,6 +62,7 @@ | ||||
|   </section> | ||||
| </template> | ||||
| <script> | ||||
| import echarts from 'echarts' | ||||
| import { mapState } from 'vuex' | ||||
| export default { | ||||
|   name: "AppVideoSurveillance", | ||||
| @@ -60,7 +77,10 @@ export default { | ||||
|       areaId: '', | ||||
|       areaName: '', | ||||
|       list: [], | ||||
|       count: {} | ||||
|       count: {}, | ||||
|       Echart: null, | ||||
|       onlineRate: '', | ||||
|       offlineRate: '' | ||||
|     } | ||||
|   }, | ||||
|   computed: { ...mapState(['user']) }, | ||||
| @@ -93,6 +113,9 @@ export default { | ||||
|         if (res.code == 0) { | ||||
|           this.list = res.data.list | ||||
|           this.count = res.data.count | ||||
|           this.onlineRate = (this.count.online / this.count.sum).toFixed(2) | ||||
|           this.offlineRate = (1-this.onlineRate).toFixed(2) | ||||
|           this.initEchart() | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
| @@ -105,12 +128,59 @@ export default { | ||||
|       if(row.deviceStatus != 1) return | ||||
|       uni.navigateTo({url: `./monitorDetail?id=${row.id}`}) | ||||
|     }, | ||||
|     initEchart() { | ||||
|       var option = { | ||||
|         series: [ | ||||
|           { | ||||
|             type: 'pie', | ||||
|             radius: ['50%', '60%'], | ||||
|             avoidLabelOverlap: false, | ||||
|             label: { | ||||
|               show: false, | ||||
|               position: 'center' | ||||
|             }, | ||||
|             emphasis: { | ||||
|               label: { | ||||
|                 show: false, | ||||
|               } | ||||
|             }, | ||||
|             labelLine: { | ||||
|               show: false | ||||
|             }, | ||||
|             data: [ | ||||
|               { value: this.onlineRate}, | ||||
|               { value: this.offlineRate}, | ||||
|             ], | ||||
|             itemStyle: { | ||||
|               emphasis: { | ||||
|                   shadowBlur: 10, | ||||
|                   shadowOffsetX: 0, | ||||
|                   shadowColor: 'rgba(0, 0, 0, 0.5)' | ||||
|               }, | ||||
|               normal:{ | ||||
|                 color:function(params) { | ||||
|                   //自定义颜色 | ||||
|                   var colorList = ['#3192F4','#ccc',]; | ||||
|                   return colorList[params.dataIndex] | ||||
|               } | ||||
|               } | ||||
|             } | ||||
|           } | ||||
|         ] | ||||
|       }; | ||||
|  | ||||
|       option && this.Echart.setOption(option) | ||||
|     }, | ||||
|   }, | ||||
|   created() { | ||||
|      | ||||
|     this.areaId = this.user.areaId | ||||
|     this.areaName = this.user.areaName | ||||
|     this.getList() | ||||
|     // this.getMonitors() | ||||
|   }, | ||||
|   mounted() { | ||||
|     this.Echart = echarts.init(document.getElementById('echarts'))      | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| @@ -188,7 +258,7 @@ export default { | ||||
|  | ||||
|   .area-content{ | ||||
|     display: inline-block; | ||||
|     width: 45%; | ||||
|     width: 100%; | ||||
|     line-height: 64px; | ||||
|     img{ | ||||
|       width: 42px; | ||||
| @@ -200,20 +270,39 @@ export default { | ||||
|     } | ||||
|   } | ||||
|   .num-content{ | ||||
|     display: inline-block; | ||||
|     width: 55%; | ||||
|     font-size: 34px; | ||||
|     font-family: PingFangSC-Regular, PingFang SC; | ||||
|     color: #333; | ||||
|     line-height: 48px; | ||||
|     text-align: right; | ||||
|     img{ | ||||
|       width: 48px; | ||||
|       margin-right: 16px; | ||||
|       vertical-align: bottom; | ||||
|     } | ||||
|     .mar-l40{ | ||||
|       margin-left: 20px; | ||||
|     width: calc(100% - 40px); | ||||
|     height: 164px; | ||||
|     background: #EEE; | ||||
|     border-radius: 16px; | ||||
|     margin: 32px 0 0 20px; | ||||
|     display: flex; | ||||
|     .item{ | ||||
|       flex: 1; | ||||
|       text-align: center; | ||||
|       position: relative; | ||||
|       .monitor-icon{ | ||||
|         width: 48px; | ||||
|         height: 48px; | ||||
|         position: absolute; | ||||
|         top: 50%; | ||||
|         left: 50%; | ||||
|         margin-left: -24px; | ||||
|         margin-top: -24px; | ||||
|       } | ||||
|       h3{ | ||||
|         font-size: 44px; | ||||
|         font-family: PingFangSC-Semibold, PingFang SC; | ||||
|         font-weight: 600; | ||||
|         color: #333; | ||||
|         line-height: 60px; | ||||
|         margin-top: 32px; | ||||
|       } | ||||
|       p{ | ||||
|         font-size: 28px; | ||||
|         font-family: PingFangSC-Regular, PingFang SC; | ||||
|         color: #666; | ||||
|         line-height: 40px; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								src/apps/AppVideoSurveillance/img/monitor-icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/apps/AppVideoSurveillance/img/monitor-icon.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.6 KiB | 
		Reference in New Issue
	
	Block a user