You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1631 lines
62 KiB
1631 lines
62 KiB
2 years ago
|
<!DOCTYPE html>
|
||
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
|
||
|
pageEncoding="UTF-8" %>
|
||
|
<%@ page import="com.lp.cfg.ProConfig" %>
|
||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||
|
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||
|
<html lang="en">
|
||
|
|
||
|
<head>
|
||
|
<%@ include file="/WEB-INF/oss/iot/common/variable.jsp" %>
|
||
|
<%@ include file="/WEB-INF/oss/iot/common/resource_lib.jsp" %>
|
||
|
<script type="text/javascript" src="<%=basePath%>/lib/bigscreen/lib/jquery/jquery-1.9.1.min.js"></script>
|
||
|
<%@ include file="/WEB-INF/oss/iot/common/variable_js.jsp" %>
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||
|
<style>
|
||
|
.middenboox tbody tr:hover {
|
||
|
background: rgba(250, 250, 250, 0.2);
|
||
|
cursor: pointer;
|
||
|
}
|
||
|
|
||
|
.activeOntbody {
|
||
|
background: rgba(250, 250, 250, 0.2);
|
||
|
}
|
||
|
</style>
|
||
|
<link type="text/css" href="<%=basePath%>/lib/bigscreen/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet"/>
|
||
|
<link rel="stylesheet" href="<%=basePath%>/lib/bigscreen/lib/font/css/font-awesome.min.css">
|
||
|
<link rel="stylesheet" href="<%=basePath%>/lib/bigscreen/css/style.css">
|
||
|
|
||
|
<script type="text/javascript" src="<%=basePath%>/lib/lpro/ljc_0.2.js?<%=v%>"></script>
|
||
|
|
||
|
<link type="text/css" href="<%=basePath%>/lib/iview/dist/styles/iview.css" rel="stylesheet"/>
|
||
|
<!-- 引入elment组件库 -->
|
||
|
<link rel="stylesheet" href="<%=basePath%>/lib/element-ui/index.css">
|
||
|
</head>
|
||
|
|
||
|
<body>
|
||
|
|
||
|
<div id="app">
|
||
|
<div class="bigBox">
|
||
|
<header class="top"><span v-text="atitle"></span>
|
||
|
<p v-text="currentdate">-年-月-日-:-:-</p>
|
||
|
</header>
|
||
|
<article>
|
||
|
<div class="leftOneBoxa">
|
||
|
<div class="rigTitle rigTitleOnline">
|
||
|
<img src="<%=basePath%>/lib/bigscreen/image/leftTwo_icon.png">
|
||
|
<span>设备在线状态</span>
|
||
|
</div>
|
||
|
<div class="leftOneBox" id="leftOneBox"></div>
|
||
|
|
||
|
<div class="leftOneBoxnum" style="font-size: 18px;" v-text="this.counta"></div>
|
||
|
</div>
|
||
|
<div class="leftTwoBox">
|
||
|
<div class="rigTitle">
|
||
|
<img src="<%=basePath%>/lib/bigscreen/image/leftTwo_icon.png">
|
||
|
<span>视频摄像头轮播</span>
|
||
|
</div>
|
||
|
<div class="rigLine">
|
||
|
<img src="<%=basePath%>/lib/bigscreen/image/line.png">
|
||
|
</div>
|
||
|
<div style="width:98%;height:80%;margin-left: 2%;" id="leftTwoBox">
|
||
|
<video id="myPlayer" style="width:100%;height:98%;" poster="" controls playsInline webkit-playsinline autoplay>
|
||
|
<source src="" type="rtmp/flv" />
|
||
|
</video>
|
||
|
</div>
|
||
|
|
||
|
<div class="hide template0">
|
||
|
<video id="myPlayer" style="width:98%;height:98%;" poster="" controls playsInline webkit-playsinline autoplay>
|
||
|
<source src="" type="rtmp/flv" />
|
||
|
</video>
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
<div class="leftThreeBox" id="leftThreeBox">
|
||
|
<div class="rigTitle">
|
||
|
<img src="<%=basePath%>/lib/bigscreen/image/leftThree_icon.png">
|
||
|
<span>设备实时数据</span>
|
||
|
</div>
|
||
|
<div class="rigLine">
|
||
|
<img src="<%=basePath%>/lib/bigscreen/image/line.png">
|
||
|
</div>
|
||
|
<div class="middenBottomBoxChil" style="width: 100%;right: 0;left:2px" id="middenBottomBoxChil">
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="template2 hide">
|
||
|
<div class="map_info_window" style="color: #aaa;padding:0 10px 10px 10px;overflow: auto; ">
|
||
|
<div class="map_info_titles" style="margin-bottom: 5px;font-size: 16px;">
|
||
|
<span style="vertical-align: middle;">设备名称:{0}</span>
|
||
|
<br>
|
||
|
</div>
|
||
|
<div class="map_info_item" style="overflow: hidden;zoom:1;">
|
||
|
{1}
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="template3 hide">
|
||
|
<div style="" class="sensorStyle">
|
||
|
<div style="">
|
||
|
<span class="sensor-info">{0}</span>
|
||
|
</div>
|
||
|
<div style="">
|
||
|
<span style="font-size: 17px;color: #3499da;">{1}</span>
|
||
|
<span>{2}</span>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="middenTopBox" style="padding: 1px;" > <!-- id="middenTopBox" -->
|
||
|
<div id="map" style="width: 100%;height: 100%;">
|
||
|
</div>
|
||
|
<div style="position: absolute; left:10px;top:20px;">
|
||
|
<p>
|
||
|
<input style="display: inline;width: 200px;margin-left: 20px; " id="addessmap" placeholder="地址查询" class="input">
|
||
|
<button onclick="searchmap()" class="button" style="background: #fff;">查询</button>
|
||
|
</p>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="middenBottomBox" id="middenBottomBox">
|
||
|
<div class="middenboox" style="width: 90%;">
|
||
|
<div class="middenTitle">
|
||
|
<img src="<%=basePath%>/lib/bigscreen/image/bottomTable.png">
|
||
|
<span>监控列表</span>
|
||
|
<span style="cursor: pointer;float: right;margin-right: 20px;text-decoration: underline;" @click="showAllscene">全部项目</span>
|
||
|
</div>
|
||
|
<div class="boxChilden">
|
||
|
<table>
|
||
|
<thead>
|
||
|
<tr>
|
||
|
<th width="30%">项目名</th>
|
||
|
<th width="13%">设备数</th>
|
||
|
<th width="13%">传感器数</th>
|
||
|
<th width="13%">未读报警数</th>
|
||
|
<th width="25%">操作</th>
|
||
|
</tr>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<tr @click="middenboox(item,index)" :class="{activeOntbody:index==current}"
|
||
|
:id="'tableItemsa'+index" v-for="(item, index) in tableItemsb">
|
||
|
<th v-text="item.name"></th>
|
||
|
<th v-text="item.nodeCount"></th>
|
||
|
<th v-text="item.sensorCount"></th>
|
||
|
<th v-text="item.alarmCount"></th>
|
||
|
<th>
|
||
|
<button class="alesm"
|
||
|
style="background: #FF0000;width: 80px;height: 20px;font-size: 12px;color: #eee;line-height: 0px;border-radius: 3px;outline: none;border: 0px;font-weight: 200;"
|
||
|
@click="loadWarning(item)">未处理报警
|
||
|
</button>
|
||
|
<button class="histo"
|
||
|
style="background: #2897C4;width: 80px;height: 20px;font-size: 12px;color: #eee;line-height: 0px;border-radius: 3px;outline: none;border: 0px;font-weight: 200;"
|
||
|
@click="loadHistory(item)">历史数据
|
||
|
</button>
|
||
|
</th>
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="rightOneBoxa">
|
||
|
<div class="rigTitle rigTitleOnline">
|
||
|
<img src="<%=basePath%>/lib/bigscreen/image/leftTwo_icon.png">
|
||
|
<span>报警处理状态</span>
|
||
|
</div>
|
||
|
<div class="rightOneBox" id="rightOneBox"></div>
|
||
|
<div class="rightOneBoxnum" v-text="this.bjcont"></div>
|
||
|
</div>
|
||
|
|
||
|
<div class="rightTwoBox" id="rightTwoBox">
|
||
|
<div class="rigTitle">
|
||
|
<img src="<%=basePath%>/lib/bigscreen/image/aleram.png">
|
||
|
<span>报警记录</span>
|
||
|
</div>
|
||
|
<div class="rigLine">
|
||
|
<img src="<%=basePath%>/lib/bigscreen/image/line.png">
|
||
|
</div>
|
||
|
<div v-if="aleamItems==null||aleamItems.length<=0" class="myCarousela">暂无数据</div>
|
||
|
<div v-else class="ybox">
|
||
|
<ul>
|
||
|
<li v-for="(item, index) in aleamItems" v-text="item.value"></li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
<div class="rightThreeBox">
|
||
|
<div class="rigTitle">
|
||
|
<img src="<%=basePath%>/lib/bigscreen/image/rightThree_icon.png">
|
||
|
<span>数据统计</span>
|
||
|
</div>
|
||
|
<div class="rigLine">
|
||
|
<img src="<%=basePath%>/lib/bigscreen/image/line.png">
|
||
|
</div>
|
||
|
<div style="width:100%;height:100%;" id="rightThreeBox"></div>
|
||
|
</div>
|
||
|
</article>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<!-- 报警记录 -->
|
||
|
<Modal width="1100" v-model="showWarning" draggable scrollable title="报警记录">
|
||
|
<div style="margin-bottom: 10px">
|
||
|
<i-select v-model="warningLevel" style="width:200px">
|
||
|
<i-option :value="0">全部</i-option>
|
||
|
<i-option v-for="item in levelList" :value="item.code" :key="item.code">{{ item.name }}</i-option>
|
||
|
</i-select>
|
||
|
<el-date-picker
|
||
|
v-model="warningTime"
|
||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||
|
style="top:2px"
|
||
|
type="datetimerange"
|
||
|
size="small"
|
||
|
range-separator="至"
|
||
|
start-placeholder="开始日期"
|
||
|
end-placeholder="结束日期">
|
||
|
</el-date-picker>
|
||
|
<i-button type="primary" @click="searchWarning">查询</i-button>
|
||
|
</div>
|
||
|
<el-table
|
||
|
:data="warningList"
|
||
|
border
|
||
|
height="427"
|
||
|
size="mini"
|
||
|
style="width: 100%">
|
||
|
<el-table-column
|
||
|
prop="name"
|
||
|
align="center"
|
||
|
label="报警名称"
|
||
|
width="180">
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="sensor_name"
|
||
|
label="报警传感器"
|
||
|
align="center"
|
||
|
width="100">
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="name"
|
||
|
label="报警数值 / 报警阀值"
|
||
|
align="center"
|
||
|
width="150">
|
||
|
<template slot-scope="scope">
|
||
|
{{scope.row.sdata}}/{{scope.row.alarm_sdata}}
|
||
|
</template>
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="description"
|
||
|
label="报警详情">
|
||
|
</el-table-column>
|
||
|
|
||
|
<el-table-column
|
||
|
prop="data.iot_trigger_alarm_level"
|
||
|
width="80"
|
||
|
align="center"
|
||
|
label="报警级别">
|
||
|
</el-table-column>
|
||
|
|
||
|
<el-table-column
|
||
|
prop="data.iot_alarm_process_status"
|
||
|
width="80"
|
||
|
align="center"
|
||
|
label="处理标志">
|
||
|
</el-table-column>
|
||
|
|
||
|
<el-table-column
|
||
|
prop="atimestr"
|
||
|
width="100"
|
||
|
align="center"
|
||
|
label="时间">
|
||
|
</el-table-column>
|
||
|
</el-table>
|
||
|
<div slot="footer">
|
||
|
<Page v-if="warningCount>0" transfer @on-change="warningPageChange"
|
||
|
@on-page-size-change="warningSizeChange"
|
||
|
:current="warningPaged"
|
||
|
:page-size="warningPageSize"
|
||
|
prev-text="上一页"
|
||
|
next-text="下一页" :total="warningCount" size="small" show-elevator show-total show-sizer/>
|
||
|
</div>
|
||
|
</Modal>
|
||
|
|
||
|
<!-- 历史数据 -->
|
||
|
<Modal width="700" v-model="showHistory" draggable scrollable title="历史数据">
|
||
|
|
||
|
<div style="margin-bottom: 10px">
|
||
|
<i-select v-model="historyQuery.sensor_id" placeholder="请选择传感点" style="width:200px">
|
||
|
<i-option :value="''">全部</i-option>
|
||
|
<i-option v-for="item in nodeSensor" :value="item.id" :key="item.id">{{item.name}}</i-option>
|
||
|
</i-select>
|
||
|
<el-date-picker
|
||
|
v-model="historyTime"
|
||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||
|
style="top:2px"
|
||
|
type="datetimerange"
|
||
|
size="small"
|
||
|
range-separator="至"
|
||
|
start-placeholder="开始日期"
|
||
|
end-placeholder="结束日期">
|
||
|
</el-date-picker>
|
||
|
<i-button type="primary" @click="searchHistory">查询</i-button>
|
||
|
</div>
|
||
|
|
||
|
<el-table
|
||
|
:data="historyList"
|
||
|
border
|
||
|
height="397"
|
||
|
size="mini"
|
||
|
style="width: 100%">
|
||
|
<el-table-column
|
||
|
prop="sensor_name"
|
||
|
label="传感器"
|
||
|
align="center">
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="data.iot_sensor_type"
|
||
|
label="类型"
|
||
|
align="center"
|
||
|
width="100">
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="sdata"
|
||
|
width="150"
|
||
|
label="数值">
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="atimestr"
|
||
|
width="150"
|
||
|
align="center"
|
||
|
label="时间">
|
||
|
</el-table-column>
|
||
|
</el-table>
|
||
|
<div slot="footer">
|
||
|
<Page v-if="historyCount>0" transfer @on-change="historyPageChange"
|
||
|
@on-page-size-change="historySizeChange"
|
||
|
:current="historyPaged"
|
||
|
:page-size="historyPageSize"
|
||
|
prev-text="上一页"
|
||
|
next-text="下一页" :total="historyCount" size="small" show-elevator show-total show-sizer/>
|
||
|
</div>
|
||
|
</Modal>
|
||
|
|
||
|
<!-- 预过保和已过保设备数据 -->
|
||
|
<Modal width="900" v-model="showGuarantee" draggable scrollable :title="guaranteeTitle">
|
||
|
<el-table
|
||
|
:data="guaranteeList"
|
||
|
border
|
||
|
height="397"
|
||
|
size="mini"
|
||
|
style="width: 100%">
|
||
|
<el-table-column
|
||
|
prop="name"
|
||
|
label="名称"
|
||
|
align="center">
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="manager"
|
||
|
label="设备主管"
|
||
|
align="center"
|
||
|
width="80">
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="manager_phone"
|
||
|
label="联系方式"
|
||
|
align="center"
|
||
|
width="100">
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="pic"
|
||
|
label="负责人"
|
||
|
align="center"
|
||
|
width="80">
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="pic_phone"
|
||
|
label="联系方式"
|
||
|
align="center"
|
||
|
width="100">
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="install_time"
|
||
|
label="安装时间"
|
||
|
align="center"
|
||
|
width="150">
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="maintenance_time"
|
||
|
align="center"
|
||
|
width="150"
|
||
|
label="维保时间">
|
||
|
</el-table-column>
|
||
|
</el-table>
|
||
|
</Modal>
|
||
|
|
||
|
</div>
|
||
|
</body>
|
||
|
<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=<%=ProConfig.Map.BAIDU_MAP_KEY%>"></script>
|
||
|
<script type="text/javascript" src="<%=basePath%>/lib/bigscreen/lib/bootstrap/js/bootstrap.min.js"></script>
|
||
|
<script type="text/javascript" src="<%=basePath%>/lib/bigscreen/lib/echarts/echarts.min.js" charset="UTF-8"></script>
|
||
|
<script type="text/javascript" src="https://gallery.echartsjs.com/dep/echarts/map/js/china.js" charset="UTF-8"></script>
|
||
|
<script type="text/javascript" src="<%=basePath%>/lib/bigscreen/lib/newscrool.js"></script> <!-- 此处引用的为上面的插件实现代码 -->
|
||
|
<script type="text/javascript" src="<%=basePath%>/lib/bigscreen/js/vue.min.js"></script>
|
||
|
<script type="text/javascript" src="<%=basePath%>/lib/iview/dist/iview.min.js" charset="UTF-8"></script>
|
||
|
<script src="<%=basePath%>/lib/element-ui/index.js"></script>
|
||
|
<script src="https://open.ys7.com/sdk/js/1.3/ezuikit.js"></script>
|
||
|
<script src="<%=basePath%>/lib/bigscreen/js/index.js"></script>
|
||
|
<script>
|
||
|
|
||
|
var videoCache = "" ;
|
||
|
var sensorCache = "" ;
|
||
|
var vindex = 0 ;
|
||
|
var sindex = 0 ;
|
||
|
var player ;
|
||
|
var map ;
|
||
|
var dataCache ;
|
||
|
|
||
|
// 将地址解析结果显示在地图上,并调整地图视野
|
||
|
var myGeo = new BMap.Geocoder();
|
||
|
|
||
|
function searchmap(){
|
||
|
// 地址查询经纬度
|
||
|
myGeo.getPoint( $("#addessmap").val(), function(point){
|
||
|
if (point) {
|
||
|
map.centerAndZoom(point, 12);
|
||
|
}else{
|
||
|
alert("您填写地址没有找到结果!");
|
||
|
}
|
||
|
}, "中国");
|
||
|
}
|
||
|
|
||
|
$(function(){
|
||
|
|
||
|
var area = "中国" ; // '湖北省钟祥市'
|
||
|
var mapcenter = "郑州" ;
|
||
|
|
||
|
map = new BMap.Map("map" ); // 创建Map实例
|
||
|
|
||
|
map.setMapStyle({
|
||
|
features: ["building","water","land"],
|
||
|
style : "dark"
|
||
|
});
|
||
|
|
||
|
map.centerAndZoom(mapcenter, 5); // 初始化地图,设置中心点坐标和地图级别
|
||
|
|
||
|
//添加地图类型控件
|
||
|
map.addControl(new BMap.MapTypeControl({
|
||
|
mapTypes:[
|
||
|
BMAP_NORMAL_MAP,
|
||
|
BMAP_HYBRID_MAP
|
||
|
]}));
|
||
|
|
||
|
map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
|
||
|
|
||
|
var bdary = new BMap.Boundary();
|
||
|
bdary.get(area, function (rs) { //获取行政区域
|
||
|
//网上查了下,东西经南北纬的范围
|
||
|
var EN_JW = "180, 90;"; //东北角
|
||
|
var NW_JW = "-180, 90;"; //西北角
|
||
|
var WS_JW = "-180, -90;"; //西南角
|
||
|
var SE_JW = "180, -90;"; //东南角
|
||
|
//4.添加环形遮罩层
|
||
|
var ply1 = new BMap.Polygon(rs.boundaries[0] + SE_JW + SE_JW + WS_JW + NW_JW + EN_JW + SE_JW, { strokeColor: "none", fillColor: "rgb(246,246,246,0.2)", fillOpacity:0.5, strokeOpacity: 0.5 }); //建立多边形覆盖物
|
||
|
|
||
|
map.addOverlay(ply1);
|
||
|
//5. 给目标行政区划添加边框,其实就是给目标行政区划添加一个没有填充物的遮罩层
|
||
|
var ply = new BMap.Polygon(rs.boundaries[0], { strokeWeight: 2, strokeColor: "#00f",fillColor: "" });
|
||
|
map.addOverlay(ply);
|
||
|
|
||
|
});
|
||
|
|
||
|
function setTextShowMap(lon,lat ,obj){
|
||
|
var point = new BMap.Point(lon,lat);
|
||
|
var opts = {
|
||
|
position : point, // 指定文本标注所在的地理位置
|
||
|
offset : new BMap.Size(2, -27) //设置文本偏移量
|
||
|
}
|
||
|
var label = new BMap.Label(obj.name , opts);
|
||
|
label.setStyle({
|
||
|
color : "black",
|
||
|
fontSize : "14px",
|
||
|
fontFamily:"微软雅黑"
|
||
|
});
|
||
|
map.addOverlay(label);
|
||
|
}
|
||
|
|
||
|
// 地址设置标记点
|
||
|
function selfLocation(lon,lat,obj){
|
||
|
// 显示文本
|
||
|
setTextShowMap(lon,lat,obj);
|
||
|
//单独设定图标的样式
|
||
|
var icon = new BMap.Icon('<%=basePath%>/image/oss/iot/location2.png', new BMap.Size(32, 32), {
|
||
|
anchor: new BMap.Size(32, 32)
|
||
|
});
|
||
|
//创建一个图像标注实例。point参数指定了图像标注所在的地理位置
|
||
|
var mkr = new BMap.Marker(new BMap.Point(lon,lat), {
|
||
|
icon: icon
|
||
|
});
|
||
|
|
||
|
mkr.addEventListener("click", function () {
|
||
|
// 这边不弄对象了;
|
||
|
|
||
|
vm.sceneid = obj.id;
|
||
|
vm.initPage()
|
||
|
getVideos({scene_id:obj.id });
|
||
|
getSensorData({scene_id:obj.id });
|
||
|
|
||
|
});
|
||
|
mkr.addEventListener("mouseover", function (e) {
|
||
|
|
||
|
});
|
||
|
mkr.addEventListener("mouseout", function (e) {
|
||
|
$(".show_index").hide();
|
||
|
});
|
||
|
//将覆盖物添加到地图中
|
||
|
map.addOverlay(mkr);
|
||
|
//将地图的中心点更改为给定的点
|
||
|
map.panTo(lon,lat);
|
||
|
}
|
||
|
|
||
|
getMySceneData();
|
||
|
|
||
|
// 获取项目信息
|
||
|
function getMySceneData(){
|
||
|
postAjax(localUrl+"/page/scene.json?pageSize=300&paged=1", {},function(data){
|
||
|
if(isOK(data)){
|
||
|
var dataT = data.data.data ;
|
||
|
dataCache = dataT ;
|
||
|
for(var i=0;i<dataT.length;i++){
|
||
|
selfLocation(dataT[i].lon,dataT[i].lat,dataT[i]);
|
||
|
if(i==0){
|
||
|
map.panTo(dataT[i].lon,dataT[i].lat);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// 切换摄像头显示
|
||
|
function changev(){
|
||
|
vindex ++ ;
|
||
|
if( videoCache!= null && videoCache != '' && videoCache.length>0 ){
|
||
|
if(vindex >= videoCache.length ){
|
||
|
vindex = 0;
|
||
|
}
|
||
|
if(videoCache.length == 1){
|
||
|
return ;
|
||
|
}
|
||
|
$("#leftTwoBox").empty();
|
||
|
$("#leftTwoBox").append( $(".template0").html());
|
||
|
$("#myPlayer").attr("src",videoCache[vindex].rtmp_url_common);
|
||
|
player = new EZUIPlayer('myPlayer');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// 90s 切换一次视频
|
||
|
setInterval( function() {
|
||
|
changev();
|
||
|
}, 90*1000);
|
||
|
|
||
|
|
||
|
// 5s 切换传感器数据
|
||
|
setInterval( function() {
|
||
|
sindex++ ;
|
||
|
if( sensorCache!= null && sensorCache != '' && sensorCache.length>0 ){
|
||
|
if(sindex >= sensorCache.length){
|
||
|
if(sindex==1){
|
||
|
return ;
|
||
|
}
|
||
|
sindex=0;
|
||
|
}
|
||
|
$("#middenBottomBoxChil").empty();
|
||
|
var sContent = $(".template2").html().format(sensorCache[sindex].name , generateSensor(sensorCache[sindex].iotSensorList ) );
|
||
|
$("#middenBottomBoxChil").append( sContent ) ;
|
||
|
}
|
||
|
}, 5*1000);
|
||
|
|
||
|
$(".map_info_window").height( $("#middenBottomBoxChil").height() -10 );
|
||
|
|
||
|
// 立即更新
|
||
|
getSensorData({});
|
||
|
getVideos({});
|
||
|
|
||
|
})
|
||
|
|
||
|
// 请求摄像头信息
|
||
|
function getVideos(data){
|
||
|
// 请求摄像头的数据
|
||
|
postAjax(localUrl+'/page/video.json?pageSize=30&paged=1',
|
||
|
data,
|
||
|
function(data){
|
||
|
if(isOK(data)){
|
||
|
var dataT = data.data.data ;
|
||
|
$("#leftTwoBox").empty();
|
||
|
$("#leftTwoBox").append( $(".template0").html());
|
||
|
$("#myPlayer").attr("src",dataT[0].rtmp_url_common);
|
||
|
player = new EZUIPlayer('myPlayer');
|
||
|
videoCache = dataT ;
|
||
|
vindex = 0 ;
|
||
|
}else{
|
||
|
player.pause();
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
}
|
||
|
|
||
|
// 请求传感器数据
|
||
|
function getSensorData(data){
|
||
|
// 实时数据
|
||
|
postAjax(localUrl+'/page/node/sensor/lists?paged=1&pageSize=30',
|
||
|
data,
|
||
|
function(data){
|
||
|
if(isOK(data)){
|
||
|
var dataT = data.data.data ;
|
||
|
sensorCache = dataT ;
|
||
|
sindex = 0 ;
|
||
|
$("#middenBottomBoxChil").empty();
|
||
|
var sContent = $(".template2").html().format(dataT[0].name , generateSensor(dataT[0].iotSensorList ) );
|
||
|
$("#middenBottomBoxChil").append( sContent ) ;
|
||
|
}else{
|
||
|
$("#middenBottomBoxChil").empty();
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
}
|
||
|
|
||
|
function generateSensor(data){
|
||
|
var s = '' ;
|
||
|
var dataT = data ;
|
||
|
for(var i=0;i<dataT.length;i++){
|
||
|
if( dataT[i].iot_sensor_type == 25 ){
|
||
|
s += $(".template3").html().format(dataT[i].name , gdv(dataT[i].sdata,0) ,dataT[i].data.measure_unit_type );
|
||
|
}else if( dataT[i].iot_sensor_type == 26 || dataT[i].iot_sensor_type == 27 ){
|
||
|
if( dataT[i].measure_unit_type == 250 ){
|
||
|
s += $(".template3").html().format(dataT[i].name , getWindUint(gdv(dataT[i].sdata,0)) ,"" );
|
||
|
}else{
|
||
|
s += $(".template3").html().format(dataT[i].name ,gdv(dataT[i].data.measure_unit_type,'-') ,"" );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return s ;
|
||
|
}
|
||
|
|
||
|
function getWindUint(sdata){
|
||
|
if( sdata == 0 ){
|
||
|
return "北风 " ;
|
||
|
}else if( sdata >0 && sdata <90 ){
|
||
|
return "东北 ";
|
||
|
}else if( sdata == 90 ){
|
||
|
return "东 ";
|
||
|
}else if( sdata >90 && sdata <180 ){
|
||
|
return "东南 ";
|
||
|
}else if( sdata== 180 ){
|
||
|
return "南 ";
|
||
|
}else if( sdata >180 && sdata <270 ){
|
||
|
return "西南 ";
|
||
|
}else if( sdata ==270 ){
|
||
|
return "西 ";
|
||
|
}else if( sdata >270 ){
|
||
|
return "西北 ";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// 10s刷新报警等信息
|
||
|
setInterval(function() {
|
||
|
vm.drawOfflineItems();
|
||
|
vm.shebeiItems();
|
||
|
}, 15* 1000 );
|
||
|
|
||
|
// 30min 一次页面
|
||
|
setTimeout(function(){
|
||
|
window.location.reload();
|
||
|
}, 30 * 60 * 1000);
|
||
|
|
||
|
var myChartMap = null
|
||
|
var vm= new Vue({
|
||
|
el: '#app',
|
||
|
data: function () {
|
||
|
return {
|
||
|
current: null,
|
||
|
cityName: "",
|
||
|
currentdate: '',
|
||
|
atitle: '中控管理平台数据统计',
|
||
|
echarts: echarts,
|
||
|
myCarousela: false,//
|
||
|
myCarouselb: false,//
|
||
|
begintime: '',//开始时间
|
||
|
begintimea: '',//开始时间
|
||
|
endtime: '',//结束时间
|
||
|
endtimea: '',//结束时间
|
||
|
sceneid: null,//项目ID
|
||
|
cont: 0,//总数
|
||
|
bjcont: 0,//报警总数
|
||
|
seildcont: 0,//项目总数
|
||
|
indexLun: 0,//
|
||
|
numa: 0,//
|
||
|
numberr: 0,//
|
||
|
counta: 0,//在线离线总数
|
||
|
noOnline: 0,//不在线
|
||
|
yesOnline: 0,//在线
|
||
|
yinume: 0,//已处理
|
||
|
weinume: 0,//未处理
|
||
|
yibannume: 0,//一般报警
|
||
|
yanzhongnume: 0,//严重报警
|
||
|
jinjinume: 0,//紧急报警
|
||
|
chuliAleam: [],//已处理未处理数组
|
||
|
dengAleam: [],//报警等级数组
|
||
|
aleamItems: [],//报警记录
|
||
|
aleamLineItems: [],//在线离线
|
||
|
leftThreeBoxa: [],//轮播
|
||
|
shujuTjX: [],//数据统计x轴
|
||
|
shujuTjY: [],//y轴
|
||
|
sensorCount: [],//历史数据
|
||
|
triggerCount: [],//触发数据
|
||
|
alarmCounta: [],//
|
||
|
shealarmCounta: [],//
|
||
|
sensorCounta: [],//
|
||
|
maoNames: [],//
|
||
|
numbera: 0,//
|
||
|
listIteams: {name: [], value: []},//轮播
|
||
|
geoCoordMapa: {},
|
||
|
tableItems: [],
|
||
|
tableItemsb: [],
|
||
|
showWarning: false,//是否显示设备报警
|
||
|
warningQuery: {//报警查询条件
|
||
|
},
|
||
|
warningTime: [],//报警查询时间范围
|
||
|
warningPaged: 1,//报警当前页
|
||
|
warningPageSize: 10,//报警每页条数
|
||
|
warningSensorid: 0,//选择的报警传感点
|
||
|
warningLevel: 0,//选择的报警等级
|
||
|
warningList: [],//报警列表
|
||
|
warningCount: 0,//报警总数
|
||
|
levelList: [],//报警级别
|
||
|
showHistory: false,//是否显示历史数据
|
||
|
historyList: [],//历史数据
|
||
|
historyCount: 0,//历史总数
|
||
|
historyQuery: {//历史查询条件
|
||
|
},
|
||
|
historyPaged: 1,//历史当前页
|
||
|
historyPageSize: 10,//历史每页条数
|
||
|
nodeSensor: [],//设备传感点
|
||
|
historyTime: [],//历史查询时间范围
|
||
|
nodeOver:null,//设备过保
|
||
|
nodePre:null,//预设备过保
|
||
|
guaranteeTitle:null,//过保标题
|
||
|
showGuarantee:false,//是否显示过保数据
|
||
|
guaranteeList:[]//过保数据
|
||
|
}
|
||
|
|
||
|
},
|
||
|
methods: {
|
||
|
//查询报警
|
||
|
searchWarning: function () {
|
||
|
this.warningPaged = 1
|
||
|
this.getWarning()
|
||
|
},
|
||
|
//获取报警数据
|
||
|
getWarning: function () {
|
||
|
var that = this
|
||
|
if (that.warningSensorid == 0) {
|
||
|
that.warningQuery.sensor_id = null
|
||
|
} else {
|
||
|
that.warningQuery.sensor_id = that.warningSensorid
|
||
|
}
|
||
|
if (that.warningLevel == 0) {
|
||
|
that.warningQuery.iot_trigger_alarm_level = null
|
||
|
} else {
|
||
|
that.warningQuery.iot_trigger_alarm_level = that.warningLevel
|
||
|
}
|
||
|
if (that.warningTime != null && that.warningTime.length > 0) {
|
||
|
that.warningQuery.start_time = that.warningTime[0]
|
||
|
that.warningQuery.end_time = that.warningTime[1]
|
||
|
} else {
|
||
|
delete that.warningQuery.start_time
|
||
|
delete that.warningQuery.end_time
|
||
|
}
|
||
|
var loading = layer.msg('正在加载,请稍后...', {icon: 16, time: false, shade: 0.1})
|
||
|
commonAjax("POST", localUrl + "/page/alarm?paged=" + that.warningPaged + '&pageSize=' + that.warningPageSize, that.warningQuery, function (res) {
|
||
|
layer.close(loading)
|
||
|
if (res.data == null) {
|
||
|
that.warningList = []
|
||
|
that.warningCount = 0
|
||
|
} else {
|
||
|
that.warningList = res.data.data
|
||
|
that.warningCount = res.data.totalCount
|
||
|
}
|
||
|
that.showWarning = true;
|
||
|
});
|
||
|
},
|
||
|
// 报警第几页
|
||
|
warningPageChange: function (val) {
|
||
|
this.warningPaged = val
|
||
|
this.getWarning()
|
||
|
},
|
||
|
// 报警每页显示条数
|
||
|
warningSizeChange: function (val) {
|
||
|
this.warningPageSize = val
|
||
|
this.warningPaged = 1
|
||
|
this.getWarning()
|
||
|
},
|
||
|
//获取级别
|
||
|
getLeve: function () {
|
||
|
var that = this
|
||
|
getAjax(localUrl + "/get-dictionary?p_code=" + 38, function (res) {
|
||
|
that.levelList = res.data
|
||
|
}
|
||
|
)
|
||
|
},
|
||
|
//获取历史数据
|
||
|
getHistory: function () {
|
||
|
var that = this ;
|
||
|
if (that.historyTime != null && that.historyTime.length > 0) {
|
||
|
that.historyQuery.start_time = that.historyTime[0]
|
||
|
that.historyQuery.end_time = that.historyTime[1]
|
||
|
|
||
|
if (!DateUtil.compare(that.historyQuery.start_time, that.historyQuery.end_time, 30 * 24 * 60 * 60 * 1000)) {
|
||
|
layer.msg("查询时间不能超过一个月!")
|
||
|
return false
|
||
|
}
|
||
|
} else {
|
||
|
layer.msg("请选择查询时间!")
|
||
|
return false
|
||
|
}
|
||
|
var loading = layer.msg('正在加载,请稍后...', {icon: 16, time: false, shade: 0.1})
|
||
|
commonAjax("POST", localUrl + "/page/sensor/history?paged=" + that.historyPaged + '&pageSize=' + that.historyPageSize, that.historyQuery, function (res) {
|
||
|
layer.close(loading)
|
||
|
if (res.data == null) {
|
||
|
that.historyList = []
|
||
|
that.historyCount = 0
|
||
|
} else {
|
||
|
that.historyList = res.data.data
|
||
|
that.historyCount = res.data.totalCount
|
||
|
}
|
||
|
that.showHistory = true
|
||
|
});
|
||
|
},
|
||
|
searchHistory: function () {
|
||
|
this.historyPaged = 1
|
||
|
this.getHistory()
|
||
|
},
|
||
|
// 历史第几页
|
||
|
historyPageChange: function (val) {
|
||
|
this.historyPaged = val
|
||
|
this.getHistory()
|
||
|
},
|
||
|
// 历史每页显示条数
|
||
|
historySizeChange: function (val) {
|
||
|
this.historyPageSize = val
|
||
|
this.historyPaged = 1
|
||
|
this.getHistory()
|
||
|
},
|
||
|
//获取设备传感点
|
||
|
getNodeSensor: function (id) {
|
||
|
var that = this
|
||
|
postAjax(localUrl + "/page/sensor.json?pageSize=10000&paged=1",
|
||
|
{scene_id: id},
|
||
|
function (res) {
|
||
|
if (res.data != null && res.data.data != null) {
|
||
|
that.nodeSensor = res.data.data
|
||
|
}
|
||
|
}
|
||
|
)
|
||
|
},
|
||
|
//离线在线
|
||
|
drawOffline: function (data, num) {
|
||
|
var that = this
|
||
|
var echarts = that.echarts
|
||
|
var myChart = echarts.init(document.getElementById('leftOneBox'))
|
||
|
myChart.setOption({
|
||
|
color: ["#2D73FF", "#C23531",],
|
||
|
title: {
|
||
|
text: '设备总数',
|
||
|
//subtext: num,
|
||
|
textStyle: {
|
||
|
color: '#eee',
|
||
|
fontSize: 14,
|
||
|
lineHeight: 20,
|
||
|
// align: 'center'
|
||
|
},
|
||
|
subtextStyle: {
|
||
|
fontSize: 14,
|
||
|
lineHeight: 20,
|
||
|
color: ['#ff9d19']
|
||
|
},
|
||
|
x: '33%',
|
||
|
y: '43%',
|
||
|
},
|
||
|
tooltip: {
|
||
|
trigger: 'item',
|
||
|
formatter: "{a} <br/>{b} : {c}"
|
||
|
},
|
||
|
grid: {
|
||
|
bottom: 150,
|
||
|
left: 100,
|
||
|
right: '10%'
|
||
|
},
|
||
|
legend: {
|
||
|
show: false,
|
||
|
orient: 'vertical',
|
||
|
top: "15%",
|
||
|
right: "5%",
|
||
|
textStyle: {
|
||
|
color: '#eee',
|
||
|
fontSize: 14,
|
||
|
|
||
|
},
|
||
|
icon: 'roundRect',
|
||
|
data: data,
|
||
|
},
|
||
|
series: [
|
||
|
// 主要展示层的
|
||
|
{
|
||
|
radius: ['55%', '70%'],
|
||
|
center: ['42%', '58%'],
|
||
|
type: 'pie',
|
||
|
label: {
|
||
|
normal: {
|
||
|
show: true,
|
||
|
formatter: "{b}:{c}",
|
||
|
textStyle: {
|
||
|
fontSize: 14,
|
||
|
|
||
|
},
|
||
|
position: 'outside'
|
||
|
},
|
||
|
emphasis: {
|
||
|
show: true
|
||
|
}
|
||
|
},
|
||
|
labelLine: {
|
||
|
normal: {
|
||
|
show: true,
|
||
|
length: 7,
|
||
|
length2: 7
|
||
|
},
|
||
|
emphasis: {
|
||
|
show: true
|
||
|
}
|
||
|
},
|
||
|
name: "",
|
||
|
data: data,
|
||
|
|
||
|
},
|
||
|
// 边框的设置
|
||
|
{
|
||
|
radius: ['55%', '45%'],
|
||
|
center: ['42%', '58%'],
|
||
|
type: 'pie',
|
||
|
label: {
|
||
|
normal: {
|
||
|
show: false
|
||
|
},
|
||
|
emphasis: {
|
||
|
show: false
|
||
|
}
|
||
|
},
|
||
|
labelLine: {
|
||
|
normal: {
|
||
|
show: false
|
||
|
},
|
||
|
emphasis: {
|
||
|
show: false
|
||
|
}
|
||
|
},
|
||
|
animation: false,
|
||
|
tooltip: {
|
||
|
show: false
|
||
|
},
|
||
|
data: [{
|
||
|
value: 10,
|
||
|
itemStyle: {
|
||
|
color: "rgba(250,250,250,0.3)",
|
||
|
},
|
||
|
}],
|
||
|
}
|
||
|
]
|
||
|
});
|
||
|
|
||
|
},
|
||
|
//报警处理
|
||
|
drawAlerm: function (data, num) {
|
||
|
var that = this
|
||
|
var echarts = that.echarts
|
||
|
var myChart = echarts.init(document.getElementById('rightOneBox'))
|
||
|
myChart.setOption({
|
||
|
color: ["#2D73FF", "#C23531",],
|
||
|
title: {
|
||
|
text: '报警总数',
|
||
|
textStyle: {
|
||
|
color: '#eee',
|
||
|
fontSize: 14,
|
||
|
// align: 'center'
|
||
|
},
|
||
|
subtextStyle: {
|
||
|
fontSize: 14,
|
||
|
color: ['#ff9d19']
|
||
|
},
|
||
|
x: '37%',
|
||
|
y: '43%',
|
||
|
},
|
||
|
tooltip: {
|
||
|
trigger: 'item',
|
||
|
formatter: "{a} <br/>{b} : {c}"
|
||
|
},
|
||
|
grid: {
|
||
|
bottom: 150,
|
||
|
left: 100,
|
||
|
right: '10%'
|
||
|
},
|
||
|
legend: {
|
||
|
show: false,
|
||
|
orient: 'vertical',
|
||
|
top: "15%",
|
||
|
right: "5%",
|
||
|
textStyle: {
|
||
|
color: '#eee',
|
||
|
fontSize: 14,
|
||
|
|
||
|
},
|
||
|
icon: 'roundRect',
|
||
|
data: data,
|
||
|
},
|
||
|
series: [
|
||
|
// 主要展示层的
|
||
|
{
|
||
|
radius: ['55%', '70%'],
|
||
|
center: ['46%', '58%'],
|
||
|
type: 'pie',
|
||
|
label: {
|
||
|
normal: {
|
||
|
show: true,
|
||
|
formatter: "{b}:{c}",
|
||
|
textStyle: {
|
||
|
fontSize: 14,
|
||
|
|
||
|
},
|
||
|
position: 'outside'
|
||
|
},
|
||
|
emphasis: {
|
||
|
show: true
|
||
|
}
|
||
|
},
|
||
|
labelLine: {
|
||
|
normal: {
|
||
|
show: true,
|
||
|
length: 3,
|
||
|
length2: 5
|
||
|
},
|
||
|
emphasis: {
|
||
|
show: true
|
||
|
}
|
||
|
},
|
||
|
name: "",
|
||
|
data: data,
|
||
|
|
||
|
},
|
||
|
// 边框的设置
|
||
|
{
|
||
|
radius: ['55%', '45%'],
|
||
|
center: ['46%', '58%'],
|
||
|
type: 'pie',
|
||
|
label: {
|
||
|
normal: {
|
||
|
show: false
|
||
|
},
|
||
|
emphasis: {
|
||
|
show: false
|
||
|
}
|
||
|
},
|
||
|
labelLine: {
|
||
|
normal: {
|
||
|
show: false
|
||
|
},
|
||
|
emphasis: {
|
||
|
show: false
|
||
|
}
|
||
|
},
|
||
|
animation: false,
|
||
|
tooltip: {
|
||
|
show: false
|
||
|
},
|
||
|
data: [{
|
||
|
value: 10,
|
||
|
itemStyle: {
|
||
|
color: "rgba(250,250,250,0.3)",
|
||
|
},
|
||
|
}],
|
||
|
}
|
||
|
]
|
||
|
});
|
||
|
},
|
||
|
// 视频轮播
|
||
|
startVideo: function(data){
|
||
|
alert(data.data.length);
|
||
|
console.log(data);
|
||
|
},
|
||
|
//数据统计
|
||
|
drawStatisticsa: function (datax, sensorCount, triggerCount) {
|
||
|
var that = this
|
||
|
var echarts = that.echarts
|
||
|
var myChart = echarts.init(document.getElementById('rightThreeBox'))
|
||
|
myChart.setOption({
|
||
|
tooltip: {
|
||
|
trigger: "axis",
|
||
|
axisPointer: {
|
||
|
type: "shadow"
|
||
|
}
|
||
|
},
|
||
|
legend: {
|
||
|
data: ["历史数据", "触发历史"],
|
||
|
align: "right",
|
||
|
top: "4%",
|
||
|
right: "6%",
|
||
|
textStyle: {
|
||
|
color: "#fff"
|
||
|
},
|
||
|
itemWidth: 10,
|
||
|
itemHeight: 10,
|
||
|
itemGap: 35
|
||
|
},
|
||
|
grid: {
|
||
|
left: "5%",
|
||
|
right: "6%",
|
||
|
bottom: "20%",
|
||
|
top: "15%",
|
||
|
containLabel: true
|
||
|
},
|
||
|
xAxis: [
|
||
|
{
|
||
|
type: "category",
|
||
|
data: datax,
|
||
|
axisLine: {
|
||
|
show: true,
|
||
|
lineStyle: {
|
||
|
color: "#063374",
|
||
|
width: 1,
|
||
|
type: "solid"
|
||
|
}
|
||
|
},
|
||
|
axisTick: {
|
||
|
show: false
|
||
|
},
|
||
|
axisLabel: {
|
||
|
show: true,
|
||
|
textStyle: {
|
||
|
color: "#00c7ff"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
],
|
||
|
yAxis: [
|
||
|
{
|
||
|
type: "value",
|
||
|
interval: 1,
|
||
|
axisLabel: {
|
||
|
formatter: "{value}"
|
||
|
},
|
||
|
axisTick: {
|
||
|
show: false
|
||
|
},
|
||
|
axisLine: {
|
||
|
show: true,
|
||
|
lineStyle: {
|
||
|
color: "#00c7ff",
|
||
|
width: 1,
|
||
|
type: "solid"
|
||
|
}
|
||
|
},
|
||
|
splitLine: {
|
||
|
lineStyle: {
|
||
|
color: "#063374"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
],
|
||
|
series: [
|
||
|
|
||
|
{
|
||
|
name: "历史数据",
|
||
|
type: "bar",
|
||
|
data: sensorCount,
|
||
|
barWidth: 8,
|
||
|
// barGap: 1,
|
||
|
itemStyle: {
|
||
|
normal: {
|
||
|
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||
|
{
|
||
|
offset: 0,
|
||
|
color: "#00da9c"
|
||
|
},
|
||
|
{
|
||
|
offset: 1,
|
||
|
color: "#007a55"
|
||
|
}
|
||
|
]),
|
||
|
opacity: 1
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
name: "触发历史",
|
||
|
type: "bar",
|
||
|
data: triggerCount,
|
||
|
barWidth: 8,
|
||
|
itemStyle: {
|
||
|
normal: {
|
||
|
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||
|
{
|
||
|
offset: 0,
|
||
|
color: "#c4e300"
|
||
|
},
|
||
|
{
|
||
|
offset: 1,
|
||
|
color: "#728400"
|
||
|
}
|
||
|
]),
|
||
|
opacity: 1
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
]
|
||
|
});
|
||
|
|
||
|
},
|
||
|
drawStatistics: function (datax, sensorCount, triggerCount) {
|
||
|
var that = this
|
||
|
var echarts = that.echarts
|
||
|
var myChart = echarts.init(document.getElementById('rightThreeBox'))
|
||
|
myChart.setOption({
|
||
|
// backgroundColor: '#0f375f',
|
||
|
tooltip: {
|
||
|
trigger: 'axis',
|
||
|
axisPointer: {
|
||
|
type: 'shadow',
|
||
|
label: {
|
||
|
show: true,
|
||
|
backgroundColor: '#333'
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
legend: {
|
||
|
data: ['历史数据', '触发历史'],
|
||
|
textStyle: {
|
||
|
color: '#ccc'
|
||
|
}
|
||
|
},
|
||
|
grid: {
|
||
|
left: "5%",
|
||
|
right: "6%",
|
||
|
bottom: "20%",
|
||
|
top: "15%",
|
||
|
containLabel: true
|
||
|
},
|
||
|
xAxis: {
|
||
|
data: datax,
|
||
|
axisLine: {
|
||
|
lineStyle: {
|
||
|
color: '#ccc'
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
yAxis: {
|
||
|
splitLine: {show: false},
|
||
|
axisLine: {
|
||
|
lineStyle: {
|
||
|
color: '#ccc'
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
series: [{
|
||
|
name: '触发历史',
|
||
|
type: 'line',
|
||
|
smooth: true,
|
||
|
showAllSymbol: true,
|
||
|
symbol: 'emptyCircle',
|
||
|
symbolSize: 15,
|
||
|
data: triggerCount
|
||
|
}, {
|
||
|
name: '历史数据',
|
||
|
type: 'bar',
|
||
|
barWidth: 10,
|
||
|
itemStyle: {
|
||
|
normal: {
|
||
|
barBorderRadius: 5,
|
||
|
color: new echarts.graphic.LinearGradient(
|
||
|
0, 0, 0, 1,
|
||
|
[
|
||
|
{offset: 0, color: '#14c8d4'}
|
||
|
]
|
||
|
)
|
||
|
}
|
||
|
},
|
||
|
data: sensorCount
|
||
|
}]
|
||
|
});
|
||
|
|
||
|
},
|
||
|
//查询用户
|
||
|
usersItems: function () {
|
||
|
var that = this;
|
||
|
postAjax(localUrl + "/user/user-screen",
|
||
|
{},
|
||
|
function (res) {
|
||
|
}
|
||
|
)
|
||
|
},
|
||
|
//查询项目
|
||
|
middenButtonItems: function (num, namee, nodeCount, gsname, numa) {
|
||
|
var that = this;
|
||
|
if (num == undefined) {
|
||
|
postAjax(localUrl + "/page/scene-all",
|
||
|
{
|
||
|
start_time: that.begintime,
|
||
|
end_time: that.endtime,
|
||
|
},
|
||
|
function (res) {
|
||
|
that.tableItems = res.data;
|
||
|
that.tableItemsb = res.data;
|
||
|
that.seildcont = [];
|
||
|
that.sceneid = null;
|
||
|
that.drawOfflineItems();
|
||
|
that.shebeiItems();
|
||
|
that.historyItems();
|
||
|
}
|
||
|
)
|
||
|
} else {
|
||
|
postAjax(localUrl + "/page/scene-all",
|
||
|
{
|
||
|
start_time: that.begintime,
|
||
|
end_time: that.endtime,
|
||
|
},
|
||
|
function (res) {
|
||
|
if (res.data != null) {
|
||
|
that.tableItems = res.data;
|
||
|
that.seildcont = res.data.length;
|
||
|
that.sceneid = num;
|
||
|
that.initPage()
|
||
|
}
|
||
|
|
||
|
}
|
||
|
)
|
||
|
}
|
||
|
},
|
||
|
|
||
|
//查询报警
|
||
|
drawOfflineItems: function () {
|
||
|
var that = this;
|
||
|
postAjax(localUrl + "/page/alarm-all",
|
||
|
{
|
||
|
start_time: that.begintime,
|
||
|
end_time: that.endtime,
|
||
|
scene_id: that.sceneid
|
||
|
},
|
||
|
function (res) {
|
||
|
that.aleamItems=[]
|
||
|
that.yinume = 0;
|
||
|
that.weinume = 0;
|
||
|
var chuliAleama = [];
|
||
|
that.dengAleam = [];
|
||
|
that.cont = 0;
|
||
|
that.bjcont = 0;
|
||
|
if (res.data == null || res.data.length == 0 ) {
|
||
|
chuliAleama.push({
|
||
|
name: "已处理",
|
||
|
value: 0
|
||
|
}, {
|
||
|
name: "未处理",
|
||
|
value: 0
|
||
|
})
|
||
|
that.bjcont = 0
|
||
|
that.chuliAleam = chuliAleama;
|
||
|
that.drawAlerm(that.chuliAleam, that.bjcont);
|
||
|
|
||
|
} else {
|
||
|
that.aleamItems = [] ;
|
||
|
for (var i = 0; i < res.data.length; i++) {
|
||
|
if (res.data[i].iot_alarm_process_status == "47" ||
|
||
|
res.data[i].iot_alarm_process_status == "48" ) {
|
||
|
that.yinume++
|
||
|
} else {
|
||
|
that.weinume++
|
||
|
}
|
||
|
that.cont = res.data.length;
|
||
|
if( res.data[i].iot_alarm_process_status == "46" ||
|
||
|
res.data[i].iot_alarm_process_status == "48" ){
|
||
|
// 记录报警记录
|
||
|
that.aleamItems.push({
|
||
|
value: res.data[i].description
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if(!that.myCarouselb){
|
||
|
that.myCarouselb = true;
|
||
|
$(".ybox").scroll()
|
||
|
setTimeout(function () {
|
||
|
$(".ybox").scroll({
|
||
|
speed: 40,
|
||
|
direction: "y"
|
||
|
}); //设置为纵向滚动
|
||
|
}, 500);
|
||
|
}
|
||
|
|
||
|
that.bjcont = that.yinume + that.weinume
|
||
|
chuliAleama.push({
|
||
|
name: "已处理",
|
||
|
value: that.yinume++
|
||
|
}, {
|
||
|
name: "未处理",
|
||
|
value: that.weinume++
|
||
|
})
|
||
|
|
||
|
that.chuliAleam = chuliAleama;
|
||
|
that.drawAlerm(that.chuliAleam, that.bjcont);
|
||
|
}
|
||
|
}
|
||
|
)
|
||
|
},
|
||
|
// 视频摄像头
|
||
|
showVideos: function(){
|
||
|
},
|
||
|
//查询设备
|
||
|
shebeiItems: function () {
|
||
|
var that = this;
|
||
|
postAjax(localUrl + "/page/node-all",
|
||
|
{
|
||
|
scene_id: that.sceneid
|
||
|
},
|
||
|
function (res) {
|
||
|
that.aleamLineItems = [];
|
||
|
that.noOnline = 0;
|
||
|
that.yesOnline = 0;
|
||
|
if (res.data != null) {
|
||
|
for (var i = 0; i < res.data.length; i++) {
|
||
|
if (res.data[i].data.iot_node_status == "未连接" || res.data[i].data.iot_node_status == "设备已离线") {
|
||
|
that.noOnline++
|
||
|
} else {
|
||
|
that.yesOnline++
|
||
|
}
|
||
|
}
|
||
|
that.counta = res.data.length;
|
||
|
that.aleamLineItems.push({
|
||
|
name: "在线",
|
||
|
value: that.yesOnline++
|
||
|
}, {
|
||
|
name: "离线",
|
||
|
value: that.noOnline++
|
||
|
})
|
||
|
|
||
|
that.drawOffline(that.aleamLineItems, that.counta);
|
||
|
} else {
|
||
|
that.counta = 0;
|
||
|
that.aleamLineItems.push({
|
||
|
name: "在线",
|
||
|
value: 0
|
||
|
}, {
|
||
|
name: "离线",
|
||
|
value: 0
|
||
|
})
|
||
|
|
||
|
that.drawOffline(that.aleamLineItems, that.counta);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
)
|
||
|
},
|
||
|
//查询项目历史数据和触发历史数量
|
||
|
historyItems: function () {
|
||
|
var that = this;
|
||
|
postAjax(localUrl + "/scene/trigger-sensor",
|
||
|
{
|
||
|
start_time: that.begintimea,
|
||
|
end_time: that.endtimea,
|
||
|
scene_id: that.sceneid
|
||
|
},
|
||
|
function (res) {
|
||
|
that.shujuTjX = [];
|
||
|
that.sensorCount = [];
|
||
|
that.triggerCount = [];
|
||
|
if (res.data != null) {
|
||
|
for (var i = 0; i < res.data.length; i++) {
|
||
|
that.shujuTjX.push(res.data[i].name.substring(5, 10));
|
||
|
that.sensorCount.push(res.data[i].data.sensorCount);
|
||
|
that.triggerCount.push(res.data[i].data.triggerCount);
|
||
|
}
|
||
|
that.drawStatistics(that.shujuTjX, that.sensorCount, that.triggerCount);
|
||
|
}
|
||
|
}
|
||
|
)
|
||
|
},
|
||
|
//获取当前时间
|
||
|
getNowDate: function () {
|
||
|
var that = this;
|
||
|
var date = new Date();
|
||
|
var sign1 = "-";
|
||
|
var sign2 = ":";
|
||
|
var year = date.getFullYear() // 年
|
||
|
var month = date.getMonth() + 1; // 月
|
||
|
var day = date.getDate(); // 日
|
||
|
var hour = date.getHours(); // 时
|
||
|
var minutes = date.getMinutes(); // 分
|
||
|
var seconds = date.getSeconds() //秒
|
||
|
var weekArr = ['星期天','星期一', '星期二', '星期三', '星期四', '星期五', '星期六' ];
|
||
|
var week = weekArr[date.getDay()];
|
||
|
// 给一位数数据前面加 “0”
|
||
|
if (month >= 1 && month <= 9) {
|
||
|
month = "0" + month;
|
||
|
}
|
||
|
if (day >= 0 && day <= 9) {
|
||
|
day = "0" + day;
|
||
|
}
|
||
|
if (hour >= 0 && hour <= 9) {
|
||
|
hour = "0" + hour;
|
||
|
}
|
||
|
if (minutes >= 0 && minutes <= 9) {
|
||
|
minutes = "0" + minutes;
|
||
|
}
|
||
|
if (seconds >= 0 && seconds <= 9) {
|
||
|
seconds = "0" + seconds;
|
||
|
}
|
||
|
that.currentdate = year + sign1 + month + sign1 + day + " " + hour + sign2 + minutes + sign2 + seconds + " " + week;
|
||
|
|
||
|
},
|
||
|
//初始化页面
|
||
|
initPage: function () {
|
||
|
var that = this;
|
||
|
that.drawOfflineItems();
|
||
|
|
||
|
that.shebeiItems();
|
||
|
that.historyItems();
|
||
|
},
|
||
|
// 点击项目
|
||
|
middenboox: function (items, index) {
|
||
|
|
||
|
var that = this;
|
||
|
that.sceneid = items.id;
|
||
|
that.initPage()
|
||
|
|
||
|
getVideos({scene_id:items.id });
|
||
|
getSensorData({scene_id:items.id });
|
||
|
},
|
||
|
showAllscene: function () {
|
||
|
var that = this
|
||
|
that.tableItemsb = JSON.parse(JSON.stringify(that.tableItems))
|
||
|
that.sceneid = null
|
||
|
that.initPage();
|
||
|
},
|
||
|
//报警记录详情
|
||
|
loadWarning: function (item) {
|
||
|
var that = this
|
||
|
that.warningQuery.scene_id = item.id
|
||
|
that.warningPaged = 1
|
||
|
var end = new Date();
|
||
|
var start = new Date();
|
||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 3);
|
||
|
that.warningTime = [start, end]
|
||
|
that.warningLevel = 0
|
||
|
that.getWarning()
|
||
|
that.showWarning = true
|
||
|
},
|
||
|
loadHistory: function (item) {
|
||
|
var that = this
|
||
|
that.historyQuery.scene_id = item.id
|
||
|
that.historyPaged = 1
|
||
|
var end = new Date();
|
||
|
var start = new Date();
|
||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 1);
|
||
|
that.historyTime = [start, end]
|
||
|
that.historyQuery.sensor_id = ''
|
||
|
that.getNodeSensor(item.id)
|
||
|
that.getHistory();
|
||
|
that.showHistory = true
|
||
|
}
|
||
|
|
||
|
},
|
||
|
computed: function () {
|
||
|
|
||
|
},
|
||
|
|
||
|
created: function () {
|
||
|
var that = this
|
||
|
that.getLeve()
|
||
|
|
||
|
//取时间
|
||
|
Date.prototype.format = function (format) {
|
||
|
var o = {
|
||
|
"M+": this.getMonth() + 1, // month
|
||
|
"d+": this.getDate(), // day
|
||
|
"h+": this.getHours(), // hour
|
||
|
"m+": this.getMinutes(), // minute
|
||
|
"s+": this.getSeconds(), // second
|
||
|
"q+": Math.floor((this.getMonth() + 3) / 3),
|
||
|
"S": this.getMilliseconds()
|
||
|
}
|
||
|
if (/(y+)/.test(format))
|
||
|
format = format.replace(RegExp.$1, (this.getFullYear() + "")
|
||
|
.substr(4 - RegExp.$1.length));
|
||
|
for (var k in o)
|
||
|
if (new RegExp("(" + k + ")").test(format))
|
||
|
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k]
|
||
|
: ("00" + o[k]).substr(("" + o[k]).length));
|
||
|
return format;
|
||
|
}
|
||
|
var begin = new Date();
|
||
|
var end = new Date();
|
||
|
|
||
|
begin.setDate(new Date().getDate()-2);
|
||
|
that.begintime = begin.Format("yyyy-MM-dd hh:mm:ss");
|
||
|
that.begintimea = begin.Format("yyyy-MM-dd");
|
||
|
that.endtime = end.Format("yyyy-MM-dd hh:mm:ss");
|
||
|
that.endtimea = end.Format("yyyy-MM-dd");
|
||
|
|
||
|
window.onresize = function () {
|
||
|
echarts.init(document.getElementById('leftOneBox')).resize();
|
||
|
echarts.init(document.getElementById('leftTwoBox')).resize();
|
||
|
echarts.init(document.getElementById('rightOneBox')).resize();
|
||
|
echarts.init(document.getElementById('rightThreeBox')).resize();
|
||
|
}
|
||
|
that.getNowDate();
|
||
|
that.middenButtonItems();
|
||
|
},
|
||
|
mounted: function () {
|
||
|
var that = this;
|
||
|
setInterval(function () {
|
||
|
that.getNowDate();
|
||
|
}, 1000);
|
||
|
},
|
||
|
watch: {},
|
||
|
|
||
|
})
|
||
|
</script>
|
||
|
|
||
|
</html>
|