1275 lines
28 KiB
JavaScript
1275 lines
28 KiB
JavaScript
// var dataUrl ="http://192.168.0.110:8081/rearScreen/"
|
||
//平台在线的球机
|
||
var onLineBallList = [];
|
||
var token1 = localStorage.getItem("video_token1")
|
||
layui.use(['form'], function() {
|
||
$('#map').load('../../page/svg/svgMap_3D_index.svg');
|
||
//随机获取一个在线视频播放
|
||
getRandomVideo();
|
||
//获取接口状态数量x
|
||
// interfaceStatus();
|
||
getPortStatusNum();
|
||
|
||
//智慧用电表格
|
||
// setTimeout(function(){
|
||
// var svg = Snap('#tesr222');
|
||
// console.log(svg);
|
||
// svg.click(function() {
|
||
// alert('你点击了SVG元素!');
|
||
// });
|
||
// },500)
|
||
timeTask();
|
||
|
||
timeTaskVideo();
|
||
deviceNum();
|
||
// 空气质量检测
|
||
echartsInstrumentPanel();
|
||
environmentalMonitoring(1);
|
||
// echartsEnvironmentalMonitor();
|
||
});
|
||
|
||
var timeout = false; //启动及关闭按钮
|
||
var timeoutVideo = false; //启动及关闭按钮
|
||
// 60 *5s 刷新一次
|
||
function timeTask() {
|
||
if (!timeout) {
|
||
timeout = true;
|
||
} else {
|
||
getPortStatusNum();
|
||
}
|
||
setTimeout(timeTask, 1000 * 30);
|
||
}
|
||
function timeTaskVideo() {
|
||
if (!timeoutVideo) {
|
||
timeoutVideo = true;
|
||
} else {
|
||
getRandomVideo();
|
||
}
|
||
setTimeout(timeTask, 1000 * 60 * 10);
|
||
}
|
||
|
||
|
||
//根据uuid绑定svg内部的id和每个防区的线条数量
|
||
const idMap = new Map([
|
||
["83d8402f147a4752b533253a9b8efdcc",4],
|
||
["693b822a29c6485c89e20bf2f0361e71",8],
|
||
["d9d05050d8c54012b2888eb5c085c63a",4],
|
||
["0244961a68cb402a89081ef73947dc9a",12],
|
||
["399d97e087a84144a1e5cb41ab32e084",4],
|
||
["1de47425c6ff404883ac17b061f4d093",4],
|
||
["1de47425c6ff404883ac17b061f4d027",8]
|
||
])
|
||
|
||
/**
|
||
* 由home.js调用
|
||
* 用于改变 -- 各防区线的颜色
|
||
*/
|
||
function webscoketIndexSvg(strs){
|
||
var arr = strs.split(",");//uuid-code-status
|
||
for (var i = 0; i < arr.length; i++) {
|
||
var lineNum = idMap.get(arr[i].split("-")[0]);//防区线数量
|
||
var status = arr[i].split("-")[2];//防区状态
|
||
var lineColor = status == 5 ? "#FF3636" : "#23ee63";
|
||
if(arr[i].split("-")[1] == 2){
|
||
//第七房区
|
||
for (var k = 5; k <= 8; k++) {
|
||
changColor("a_"+arr[i].split("-")[0] +"_"+ k,lineColor);
|
||
}
|
||
}else{
|
||
//1-6防区
|
||
for (var k = 1; k <= lineNum; k++) {
|
||
changColor("a_"+arr[i].split("-")[0] +"_"+ k,lineColor);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
//修改防区线颜色
|
||
function changColor(code,lineColor){
|
||
var svg = Snap(`#${code}`);
|
||
svg.attr({
|
||
stroke: lineColor,
|
||
});
|
||
}
|
||
|
||
function deviceNum() {
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: dataUrl + 'electronicMap/deviceCount',
|
||
data: "",
|
||
dataType: 'json',
|
||
success: function(res) {
|
||
let deviceCount = res.obj.deviceCount;
|
||
var Monitoring = parseInt(deviceCount[0].camera)-(parseInt(deviceCount[0].camera1) + parseInt(deviceCount[0].camera2) + parseInt(deviceCount[0].camera3) + parseInt(deviceCount[0].camera4));
|
||
$('#map').find('#svg_795').text(parseInt(deviceCount[0].camera1));
|
||
$('#map').find('#svg_793').text(parseInt(deviceCount[0].camera2));
|
||
$('#map').find('#svg_800').text(parseInt(deviceCount[0].camera3));
|
||
$('#map').find('#svg_803').text(Monitoring);
|
||
$('#map').find('#svg_783').text(parseInt(deviceCount[0].camera4));
|
||
$('#map').find('#svg_801').text(parseInt(deviceCount[1].stand));
|
||
$('#map').find('#svg_796').text(parseInt(deviceCount[2].switch));
|
||
|
||
$('#map').find('#svg_804').text(parseInt(deviceCount[3].firefight-deviceCount[5].firefight3-deviceCount[4].firefight1)); //监控消防栓
|
||
$('#map').find('#svg_802').text(parseInt(deviceCount[5].firefight3)); //3号消防栓
|
||
$('#map').find('#svg_792').text(parseInt(deviceCount[4].firefight1)); //1号消防栓
|
||
}
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 点击首页视频监控的div跳转视频页面
|
||
*/
|
||
var puid = "";
|
||
var videoBtn = document.getElementById('video1')
|
||
videoBtn.addEventListener('click', function() {
|
||
localStorage.setItem("video_puid",puid);
|
||
window.parent.jumpVideo();
|
||
});
|
||
|
||
/**
|
||
* 随机获取一个在线视频播放
|
||
*/
|
||
function getRandomVideo(){
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: dataUrl + "index/getRandomVideo",
|
||
data: "",
|
||
dataType: 'json',
|
||
// async:false,
|
||
success: function(res) {
|
||
if(res.resMsg = "数据获取成功"){
|
||
puid = res.obj.puid;
|
||
var btn = document.getElementById('videoBtn')
|
||
btn.addEventListener('click', function() {
|
||
qxPlayVideo(puid,"0");
|
||
});
|
||
document.getElementById('videoBtn').click();
|
||
|
||
}else{
|
||
layer.msg("当前没有在线球机",{icon:0,time:2000});
|
||
}
|
||
},
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 播放视频
|
||
* @param puId
|
||
* @param idx
|
||
*/
|
||
function qxPlayVideo(puId, idx) {
|
||
setTimeout(function(){
|
||
readyPlay(puId, idx);
|
||
},500);
|
||
}
|
||
var myPlayer = null;
|
||
//开始播放视频
|
||
function readyPlay(puId, idx){
|
||
//若是清晰平台,删除连接对象
|
||
// mySet.delete(selectedScreen);
|
||
let url = _cf_1.q2http_url + "stream.flv?puid=" + puId + "&idx=0&stream=0&token=" + token1;
|
||
//循环视频播放列表
|
||
try{
|
||
if (myPlayer != null) {
|
||
myPlayer.pause();
|
||
myPlayer.unload();
|
||
myPlayer.detachMediaElement();
|
||
myPlayer.destroy();
|
||
myPlayer = null;
|
||
}
|
||
myPlayer = flvjs.createPlayer({
|
||
type: 'flv',
|
||
url: url,
|
||
isLive: true,
|
||
hasAudio: false
|
||
}, {
|
||
enableWorker: false,
|
||
autoCleanupSourceBuffer: true, //清理缓冲区
|
||
enableStashBuffer: false,
|
||
stashInitialSize: 128, // 减少首桢显示等待时长
|
||
statisticsInfoReportInterval: 600
|
||
});
|
||
|
||
myPlayer.attachMediaElement(document.getElementById('video1'));
|
||
myPlayer.load();
|
||
setTimeout(function () {
|
||
myPlayer.play();
|
||
}, 200);
|
||
}catch(e){
|
||
alert("该视频不在线。。。");
|
||
}
|
||
var selectedScreen = 'video1';
|
||
$('#video'+selectedScreen+'_html5_api').css("width", "100%");
|
||
$('#video'+selectedScreen+'_html5_api').css("height", "100%");
|
||
$('#video1').css("width", "85%");
|
||
$('#video1').css("height", "100%");
|
||
$('#video1').css("margin-left", "7%");
|
||
$('#video1').css("margin-top", "2%");
|
||
$('#video'+selectedScreen+'_html5_api').css("background-color","black");
|
||
$('.vjs-text-track-display').hide();
|
||
$('.vjs-loading-spinner').hide();
|
||
$('.vjs-big-play-button').hide();
|
||
$('.vjs-control-bar').hide();
|
||
$('.vjs-error-display').hide();
|
||
$('.vjs-error-display').hide();
|
||
$('.vjs-modal-dialog').hide();
|
||
$('.vjs-poster').removeAttr("class");
|
||
$('.video'+selectedScreen+'-dimensions').css("width", "100%");
|
||
$('.video'+selectedScreen+'-dimensions').css("height", "100%");
|
||
}
|
||
window.onbeforeunload = function(e) {
|
||
myPlayer.pause();
|
||
myPlayer.unload();
|
||
myPlayer.detachMediaElement();
|
||
myPlayer.destroy();
|
||
myPlayer = null;
|
||
}
|
||
/**
|
||
*
|
||
* @param {*} player 播放控件对象
|
||
* @param {*} index playBallList 下标,第几个
|
||
* @param {*} type 类型 1切换窗口关闭视频,2主动关闭视频
|
||
*/
|
||
function stopVideo(player,index,type) {
|
||
if(type == 1){
|
||
player.unload();
|
||
player.detachMediaElement();
|
||
player.destroy();
|
||
player = null;
|
||
playBallList.splice(index, 1);
|
||
}else{
|
||
$.each(playBallList, function (index, item) {
|
||
if (!isEmpty(item)) {
|
||
if (selectedScreen === item.selectedScreen) {
|
||
let start = item.start;
|
||
let player = item.myPlayer;
|
||
if(start && player !== null){
|
||
player.unload();
|
||
player.detachMediaElement();
|
||
player.destroy();
|
||
player = null;
|
||
playBallList.splice(index, 1);
|
||
}
|
||
}
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 获取接口状态数量
|
||
*/
|
||
function interfaceStatus() {
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: dataUrl + 'electricity/interfaceStatus',
|
||
data: {
|
||
type: ""
|
||
},
|
||
dataType: 'json',
|
||
success: function(res) {
|
||
let interface = res.obj.electricityBean;
|
||
document.getElementById('requestNum').innerText = parseInt(interface.requestNum);
|
||
document.getElementById('successNum').innerText = parseInt(interface.successNum);
|
||
document.getElementById('errorNum').innerText = parseInt(interface.errorNum);
|
||
}
|
||
});
|
||
}
|
||
|
||
function getPortStatusNum() {
|
||
$.ajax({
|
||
type: 'POST',
|
||
async: false, // 默认异步true,false表示同步
|
||
url: dataUrl + 'index/getPortStatusNum', // 请求地址
|
||
dataType: 'json', // 服务器返回数据类型
|
||
data: {}, //获取提交的表单字段
|
||
success: function(data) {
|
||
var resMsg = data.resMsg;
|
||
if ("数据获取成功" == resMsg) {
|
||
// let portInfo = data.obj.portStatusBean;
|
||
let fireBeanInfo = data.obj.fireBean;
|
||
let safeBeanInfo = data.obj.safeBean;
|
||
// document.getElementById('requestNum').innerText = portInfo.requestNum;
|
||
// document.getElementById('successNum').innerText = portInfo.successNum;
|
||
// document.getElementById('errorNum').innerText = portInfo.errorNum;
|
||
|
||
document.getElementById('fire_totalNum').innerText = parseInt(fireBeanInfo.warnNum);
|
||
document.getElementById('fire_warnNum').innerText = parseInt(fireBeanInfo.totalNum)
|
||
|
||
document.getElementById('safe_totalNum').innerText = parseInt(safeBeanInfo.totalNum);
|
||
document.getElementById('safe_warnNum').innerText = parseInt(safeBeanInfo.warnNum)
|
||
|
||
setTimeout(function () {
|
||
//用电统计
|
||
powerStatChart(data.obj);
|
||
//设备信息表格
|
||
deviceInfoList(data.obj);
|
||
//每月预警
|
||
earlyWarnChart(data.obj);
|
||
|
||
wisdomList(data.obj);
|
||
|
||
},200)
|
||
|
||
}
|
||
},
|
||
error: function(XMLHttpRequest, textStatus, e) {
|
||
// layer.close(loadingMsg);
|
||
layer.msg('数据请求发生异常,请稍后重试', {
|
||
icon: 16,
|
||
scrollbar: false
|
||
});
|
||
}
|
||
});
|
||
}
|
||
|
||
//用电统计获取数据
|
||
// function powerStatChartData() {
|
||
// // $.ajax({
|
||
// // type: 'POST',
|
||
// // url: dataUrl + "index/getElectricityConsumption",
|
||
// // data: "",
|
||
// // dataType: 'json',
|
||
// // // async:false,
|
||
// // success: function(res) {
|
||
// // powerStatChart(res.obj);
|
||
// // },
|
||
// // });
|
||
// // }
|
||
//用电统计ECharts
|
||
function powerStatChart(data) {
|
||
echarts.init(document.getElementById('chart')).dispose(); // 销毁实例
|
||
const myChart = echarts.init(document.getElementById('chart'));
|
||
|
||
const powerList = data.electricityList.map(function (date, index) {
|
||
return {date: date, value: data.electricityConsumptionList[index]};
|
||
}).sort(function (a, b) {
|
||
// 将日期转换为时间戳进行比较
|
||
const dateE = new Date("20" + a.date.replace("-", "/")).getTime();
|
||
const dateF = new Date("20" + b.date.replace("-", "/")).getTime();
|
||
return dateE - dateF;
|
||
});
|
||
let month = powerList.map(function(pair) {
|
||
return pair.date;
|
||
});
|
||
|
||
let value = powerList.map(function(pair) {
|
||
return pair.value;
|
||
});
|
||
console.log(month)
|
||
console.log(value)
|
||
let color = ['#CC1CAA', '#8D67FF', '#00FFFF', '#48DE13', '#FFC516', '#DC3E14', '#8E16F8'];
|
||
dom = 800;
|
||
barWidth = dom / 60;
|
||
let colors = []
|
||
for (let i = 0; i < 12; i++) {
|
||
colors.push({
|
||
type: 'linear',
|
||
x: 0,
|
||
x2: 1,
|
||
y: 0,
|
||
y2: 0,
|
||
colorStops: [{
|
||
offset: 0,
|
||
color: 'rgba(19,130,188,0.8)' // 最左边
|
||
}, {
|
||
offset: 0.5,
|
||
color: 'rgba(19,130,188,0.8)' // 左边的右边 颜色
|
||
}, {
|
||
offset: 0.5,
|
||
color: 'rgba(23,208,249,0.8)' // 右边的左边 颜色
|
||
}, {
|
||
offset: 1,
|
||
color: 'rgba(23,208,249,0.8)'
|
||
}]
|
||
})
|
||
}
|
||
option = {
|
||
//提示框
|
||
title:{
|
||
left: '80%',
|
||
top: '-6%',
|
||
subtext: '用电统计:kw/h',
|
||
subtextStyle: {
|
||
fontSize: 12,
|
||
color: '#fff'
|
||
}
|
||
},
|
||
tooltip: {
|
||
trigger: 'axis',
|
||
formatter: "{b} : {c}",
|
||
axisPointer: { // 坐标轴指示器,坐标轴触发有效
|
||
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
|
||
}
|
||
},
|
||
/**区域位置*/
|
||
grid: {
|
||
left: '6%',
|
||
right: '0',
|
||
top: '10%',
|
||
bottom: '15%',
|
||
},
|
||
//X轴
|
||
xAxis: {
|
||
data: month,
|
||
type: 'category',
|
||
axisLine: {
|
||
show: true,
|
||
lineStyle: {
|
||
color: 'rgba(255,255,255,0.6)',
|
||
shadowColor: 'rgba(255,255,255,0.6)',
|
||
shadowOffsetX: '20',
|
||
},
|
||
symbol: ['none', 'arrow'],
|
||
symbolOffset: [0, 25]
|
||
},
|
||
splitLine: {
|
||
show: false,
|
||
},
|
||
axisTick: {
|
||
show: false
|
||
},
|
||
axisLabel: {
|
||
margin: 10,
|
||
fontSize: 10,
|
||
rotate: 45,
|
||
},
|
||
},
|
||
yAxis: {
|
||
show: true,
|
||
splitNumber: 4,
|
||
axisLine: {
|
||
show: false,
|
||
},
|
||
splitLine: {
|
||
show: true,
|
||
lineStyle: {
|
||
type: 'dashed',
|
||
color: '#075858'
|
||
},
|
||
},
|
||
axisLabel: {
|
||
color: 'rgba(255,255,255,0.6)',
|
||
margin: 10,
|
||
fontSize: 12,
|
||
inside: true,
|
||
margin: -26
|
||
},
|
||
},
|
||
series: [{
|
||
type: 'bar',
|
||
barWidth: barWidth,
|
||
itemStyle: {
|
||
normal: {
|
||
color: function(params) {
|
||
return colors[params.dataIndex % 7];
|
||
}
|
||
}
|
||
},
|
||
label: {
|
||
show: false,
|
||
position: [barWidth / 2, -(barWidth + 20)],
|
||
color: '#ffffff',
|
||
fontSize: 12,
|
||
fontStyle: 'bold',
|
||
align: 'center',
|
||
},
|
||
data: value
|
||
},
|
||
{
|
||
z: 2,
|
||
type: 'pictorialBar',
|
||
data: value,
|
||
symbol: 'diamond',
|
||
symbolOffset: [0, '50%'],
|
||
symbolSize: [barWidth, barWidth * 0.5],
|
||
itemStyle: {
|
||
normal: {
|
||
color: function(params) {
|
||
return colors[params.dataIndex % 7];
|
||
},
|
||
}
|
||
},
|
||
},
|
||
{
|
||
z: 3,
|
||
type: 'pictorialBar',
|
||
symbolPosition: 'end',
|
||
data: value,
|
||
symbol: 'diamond',
|
||
symbolOffset: [0, '-50%'],
|
||
symbolSize: [barWidth, barWidth * 0.5],
|
||
itemStyle: {
|
||
normal: {
|
||
borderWidth: 0,
|
||
color: function(params) {
|
||
return colors[params.dataIndex % 7].colorStops[0].color;
|
||
},
|
||
|
||
}
|
||
},
|
||
},
|
||
],
|
||
};
|
||
myChart.setOption(option);
|
||
}
|
||
|
||
//设备信息表格
|
||
function deviceInfoData() {
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: dataUrl + "index/getEquipInfo",
|
||
data: "",
|
||
dataType: 'json',
|
||
// async:false,
|
||
success: function(res) {
|
||
deviceInfoList(res.obj);
|
||
},
|
||
});
|
||
}
|
||
|
||
function deviceInfoList(data) {
|
||
let equipNum = 6;
|
||
if(data.equipList.length < equipNum){
|
||
equipNum = data.equipList.length;
|
||
}
|
||
var html = ""
|
||
for (var i = 0; i < equipNum; i++) {
|
||
html += "<div style='font-size: 16px;font-weight: 600'>"
|
||
html += "<span title="+data.equipList[i].equipName+">" + (data.equipList[i].equipName.length > 10 ? data.equipList[i].equipName.substring(0,10) + ".." : data.equipList[i].equipName) + "</span>"
|
||
html += "<span>" + data.equipList[i].equipType+ "</span>"
|
||
html += "<span>" + data.equipList[i].equipAddress + "</span>"
|
||
html += "</div>"
|
||
}
|
||
$(".wisdom>.table").append(html)
|
||
}
|
||
|
||
//每月预警获取数据
|
||
function earlyWarnChartData() {
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: dataUrl + "index/getMonthlyEarlyWarning",
|
||
data: "",
|
||
dataType: 'json',
|
||
// async:false,
|
||
success: function(res) {
|
||
earlyWarnChart(res.obj);
|
||
},
|
||
});
|
||
}
|
||
//每周月预警ECharts
|
||
function earlyWarnChart(data) {
|
||
echarts.init(document.getElementById('earlyWarnContent')).dispose(); // 销毁实例
|
||
var myChart = echarts.init(document.getElementById('earlyWarnContent'));
|
||
|
||
// 将 monthList 和 securityList 配对,并根据日期排序
|
||
var pairList = data.monthList.map(function(date, index) {
|
||
return { date: date, value: data.securityList[index] };
|
||
}).sort(function(a, b) {
|
||
// 将日期转换为时间戳进行比较
|
||
var dateA = new Date("20" + a.date.replace("-", "/")).getTime();
|
||
var dateB = new Date("20" + b.date.replace("-", "/")).getTime();
|
||
return dateA - dateB;
|
||
});
|
||
var pairFileList = data.monthFireList.map(function(date, index) {
|
||
return { date: date, value: data.finalFireList[index] };
|
||
}).sort(function(a, b) {
|
||
// 将日期转换为时间戳进行比较
|
||
var dateC = new Date("20" + a.date.replace("-", "/")).getTime();
|
||
var dateD = new Date("20" + b.date.replace("-", "/")).getTime();
|
||
return dateC - dateD;
|
||
});
|
||
var months = pairList.map(function(pair) {
|
||
return pair.date;
|
||
});
|
||
|
||
var values2 = pairList.map(function(pair) {
|
||
return pair.value;
|
||
});
|
||
|
||
var values1 = pairFileList.map(function(pair) {
|
||
return pair.value;
|
||
});
|
||
option = {
|
||
grid: {
|
||
left: '0',
|
||
right: '2%',
|
||
top: '15%',
|
||
bottom: '0%',
|
||
containLabel: true
|
||
},
|
||
tooltip: {
|
||
show: true,
|
||
trigger: 'item'
|
||
},
|
||
legend: {
|
||
show: true,
|
||
x: '75%',
|
||
y: '0%',
|
||
icon: 'circle',
|
||
textStyle: {
|
||
color: '#ffffff'
|
||
},
|
||
data: ['火灾', '安防']
|
||
},
|
||
xAxis: [{
|
||
type: 'category',
|
||
boundaryGap: false,
|
||
axisLabel: {
|
||
color: '#ffffff'
|
||
},
|
||
axisLine: {
|
||
show: true,
|
||
lineStyle: {
|
||
color: '#ffffff'
|
||
}
|
||
},
|
||
axisTick: {
|
||
show: false,
|
||
},
|
||
splitLine: {
|
||
show: false,
|
||
},
|
||
data: months
|
||
}],
|
||
yAxis: [{
|
||
show: true,
|
||
splitNumber: 4,
|
||
// axisLabel: {
|
||
// color: '#ffffff',
|
||
// },
|
||
axisLabel: {
|
||
color: 'rgba(255,255,255,0.6)',
|
||
margin: 10,
|
||
fontSize: 12,
|
||
},
|
||
axisLine: {
|
||
|
||
lineStyle: {
|
||
color: '#27b4c2'
|
||
}
|
||
},
|
||
axisTick: {
|
||
show: false,
|
||
},
|
||
splitLine: {
|
||
show: true,
|
||
lineStyle: {
|
||
type: 'dashed',
|
||
color: '#075858'
|
||
},
|
||
},
|
||
},
|
||
|
||
],
|
||
series: [
|
||
{
|
||
name: '火灾',
|
||
type: 'line',
|
||
stack: '总量',
|
||
symbol: 'circle',
|
||
symbolSize: 12,
|
||
|
||
itemStyle: {
|
||
normal: {
|
||
color: '#FFE369',
|
||
lineStyle: {
|
||
color: "#FFE369",
|
||
width: 2
|
||
},
|
||
}
|
||
},
|
||
data: values1
|
||
},
|
||
{
|
||
name: '安防',
|
||
type: 'line',
|
||
stack: '总量',
|
||
symbol: 'circle',
|
||
symbolSize: 12,
|
||
itemStyle: {
|
||
normal: {
|
||
color: '#1892FF',
|
||
lineStyle: {
|
||
color: "#1892FF",
|
||
width: 2
|
||
},
|
||
}
|
||
},
|
||
data: values2
|
||
},
|
||
]
|
||
};
|
||
myChart.setOption(option);
|
||
}
|
||
|
||
function wisdomList(data) {
|
||
$(".barrierGate>.table").empty();
|
||
var html = ""
|
||
html += "<div class='tableList' style='font-size: 16px;font-weight: 600'> "
|
||
html += "<span>人员/车辆</span>"
|
||
html += "<span>时间</span>"
|
||
html += "<span>进出方向</span>"
|
||
html += "</div>"
|
||
for (let i = 0; i < 3; i++) {
|
||
html += "<div style='font-size: 16px;font-weight: 600'>"
|
||
html += `<span>${data.enterExitList[i].anyIndex}</span>`
|
||
html +=`<span>${data.enterExitList[i].entryExitTime}</span>`
|
||
html += `<span>${data.enterExitList[i].type}</span>`
|
||
html += "</div>"
|
||
}
|
||
$(".barrierGate>.table").append(html)
|
||
}
|
||
|
||
|
||
//接口状态点击
|
||
function interfaceStateClick() {
|
||
var index = layer.open({
|
||
title: ['接口状态', 'color: #fff'],
|
||
type: 2,
|
||
closeBtn: 2,
|
||
content: '../../page/index/child/interfaceState.html',
|
||
area: ["70%", "90%"],
|
||
maxmin: false
|
||
/*btn: ['确定', '关闭'],
|
||
success: function (layero, index) {
|
||
// localStorage.setItem("subName",params.name);
|
||
//var myIframe = window[layero.find('iframe')[0]['name']];
|
||
//var fnc = myIframe.setData(params.name); //aaa()为子页面的方法
|
||
},
|
||
yes: function (index, layero) {
|
||
// 获取弹出层中的form表单元素
|
||
// var formSubmit = layer.getChildFrame('form', index);
|
||
// var submited = formSubmit.find('button')[0];
|
||
// // 触发点击事件,会对表单进行验证,验证成功则提交表单,失败则返回错误信息
|
||
// submited.click();
|
||
},*/
|
||
});
|
||
}
|
||
|
||
//道闸管理
|
||
function gateManagementDataClick(){
|
||
var index = layer.open({
|
||
title: ['道闸管理','color: #fff'],
|
||
type: 2,
|
||
closeBtn: 2,
|
||
content: '../../page/index/child/gateManagementDataList.html',
|
||
area: ["70%", "97%"],
|
||
maxmin: false,
|
||
});
|
||
}
|
||
|
||
// 空气质量检测
|
||
function echartsInstrumentPanel() {
|
||
echarts.init(document.getElementById('instrumentPanel')).dispose(); // 销毁实例
|
||
const myChart = echarts.init(document.getElementById('instrumentPanel'));
|
||
const dataArr = 61;
|
||
const dataX = 200;
|
||
const height1 = { value: 800 };
|
||
option = {
|
||
backgroundColor: 'transparent',
|
||
/** 标题*/
|
||
title: [
|
||
{
|
||
text: '{val|' + 61 + '}',
|
||
bottom: '12%',
|
||
left: 'center',
|
||
textStyle: {
|
||
rich: {
|
||
val: {
|
||
fontSize: 24,
|
||
color: '#E5E5E5',
|
||
padding: [10, 0],
|
||
}
|
||
},
|
||
},
|
||
triggerEvent: true,
|
||
},
|
||
],
|
||
|
||
/** 关闭必图例*/
|
||
legend: {
|
||
show: false,
|
||
},
|
||
series: [
|
||
{
|
||
name: '最外部进度条',
|
||
type: 'gauge',
|
||
radius: '95%',
|
||
// splitNumber: 15,
|
||
axisLine: {
|
||
lineStyle: {
|
||
color: [
|
||
[
|
||
1,
|
||
{
|
||
type: 'linear',
|
||
x: 0,
|
||
y: 1,
|
||
x2: 0,
|
||
y2: 0,
|
||
colorStops: [
|
||
{
|
||
offset: 0,
|
||
color: '#032347', // 0% 处的颜色
|
||
},
|
||
{
|
||
offset: 0.5,
|
||
color: '#0B8BAA', // 100% 处的颜色
|
||
},
|
||
{
|
||
offset: 1,
|
||
color: '#03FCF3', // 100% 处的颜色
|
||
},
|
||
],
|
||
global: false, // 缺省为 false
|
||
},
|
||
],
|
||
],
|
||
width: 10,
|
||
},
|
||
},
|
||
axisLabel: {
|
||
show: false,
|
||
},
|
||
axisTick: {
|
||
show: false,
|
||
},
|
||
splitLine: {
|
||
length: 20,
|
||
lineStyle: {
|
||
color: '#031f45',
|
||
width: 2,
|
||
},
|
||
},
|
||
itemStyle: {
|
||
show: false,
|
||
},
|
||
detail: {
|
||
show: false,
|
||
},
|
||
title: {
|
||
// 标题
|
||
show: false,
|
||
},
|
||
data: [
|
||
{
|
||
name: 'title',
|
||
value: dataArr,
|
||
},
|
||
],
|
||
pointer: {
|
||
show: false,
|
||
},
|
||
animationDuration: 4000,
|
||
},
|
||
{
|
||
name: '外二红线',
|
||
type: 'gauge',
|
||
radius: '88%',
|
||
axisLine: {
|
||
lineStyle: {
|
||
color: [
|
||
[dataArr / dataX, '#031f45'],
|
||
[1, '#B74443'],
|
||
],
|
||
width: 3,
|
||
},
|
||
},
|
||
axisLabel: {
|
||
show: false,
|
||
},
|
||
axisTick: {
|
||
show: false,
|
||
},
|
||
splitLine: {
|
||
show: false,
|
||
},
|
||
itemStyle: {
|
||
show: false,
|
||
},
|
||
detail: {
|
||
show: false,
|
||
},
|
||
title: {
|
||
// 标题
|
||
show: false,
|
||
},
|
||
data: [
|
||
{
|
||
name: 'title',
|
||
value: dataArr,
|
||
},
|
||
],
|
||
pointer: {
|
||
show: false,
|
||
},
|
||
animationDuration: 4000,
|
||
},
|
||
{
|
||
name: '刻度尺',
|
||
type: 'gauge',
|
||
radius: '85%',
|
||
splitNumber: 10, // 刻度数量
|
||
min: 0, // 最小刻度
|
||
max: dataX, // 最大刻度
|
||
// 仪表盘轴线相关配置
|
||
axisLine: {
|
||
lineStyle: {
|
||
color: [
|
||
[
|
||
1,
|
||
{
|
||
type: 'radial',
|
||
x: 0.5,
|
||
y: 0.6,
|
||
r: 0.6,
|
||
colorStops: [
|
||
{
|
||
offset: 0.85,
|
||
color: '#031F46', // 0% 处的颜色
|
||
},
|
||
{
|
||
offset: 0.93,
|
||
color: '#086989', // 100% 处的颜色
|
||
},
|
||
{
|
||
offset: 1,
|
||
color: '#12D7EF', // 100% 处的颜色
|
||
},
|
||
],
|
||
},
|
||
],
|
||
],
|
||
width: 10,
|
||
},
|
||
},
|
||
/** 分隔线样式*/
|
||
splitLine: {
|
||
show: true,
|
||
length: 12,
|
||
lineStyle: {
|
||
width: 2,
|
||
color: '#12E5FE', // 用颜色渐变函数不起作用
|
||
},
|
||
},
|
||
/** 刻度线*/
|
||
axisTick: {
|
||
show: true,
|
||
splitNumber: 10,
|
||
lineStyle: {
|
||
color: '#12E5FE', // 用颜色渐变函数不起作用
|
||
width: 1,
|
||
},
|
||
length: 5,
|
||
},
|
||
/** 刻度标签*/
|
||
axisLabel: {
|
||
distance: 2,
|
||
color: '#CEF3FE',
|
||
fontSize: 10,
|
||
},
|
||
detail: {
|
||
show: false,
|
||
},
|
||
animationDuration: 4000,
|
||
},
|
||
{
|
||
name: '渐变进度',
|
||
type: 'gauge',
|
||
radius: '70%',
|
||
splitNumber: 15,
|
||
axisLine: {
|
||
lineStyle: {
|
||
color: [
|
||
[
|
||
dataArr / dataX,
|
||
{
|
||
type: 'linear',
|
||
x: 0,
|
||
y: 1,
|
||
x2: 0,
|
||
y2: 0,
|
||
colorStops: [
|
||
{
|
||
offset: 0,
|
||
color: 'rgba(60,207,223,0)', // 0% 处的颜色
|
||
},
|
||
{
|
||
offset: 0.9,
|
||
color: 'rgba(60,207,223,0.5)', // 100% 处的颜色
|
||
},
|
||
{
|
||
offset: 1,
|
||
color: 'rgba(60,207,223,0.9)', // 100% 处的颜色
|
||
},
|
||
],
|
||
global: false, // 缺省为 false
|
||
},
|
||
],
|
||
],
|
||
width: 20,
|
||
},
|
||
},
|
||
axisLabel: {
|
||
show: false,
|
||
},
|
||
axisTick: {
|
||
show: false,
|
||
},
|
||
splitLine: {
|
||
show: false,
|
||
},
|
||
itemStyle: {
|
||
show: false,
|
||
},
|
||
detail: {
|
||
show: false,
|
||
},
|
||
title: {
|
||
// 标题
|
||
show: false,
|
||
},
|
||
data: [
|
||
{
|
||
name: 'title',
|
||
value: dataArr,
|
||
},
|
||
],
|
||
pointer: {
|
||
show: false,
|
||
},
|
||
animationDuration: 4000,
|
||
},
|
||
{
|
||
name: '内层带指针',
|
||
type: 'gauge',
|
||
radius: '35%',
|
||
splitNumber: 10, // 刻度数量
|
||
min: 0, // 最小刻度
|
||
max: dataX, // 最大刻度
|
||
// 仪表盘轴线相关配置
|
||
axisLine: {
|
||
lineStyle: {
|
||
color: [
|
||
[
|
||
1,
|
||
{
|
||
type: 'radial',
|
||
x: 0.5,
|
||
y: 0.59,
|
||
r: 0.6,
|
||
colorStops: [
|
||
{
|
||
offset: 0.72,
|
||
color: '#032046',
|
||
},
|
||
{
|
||
offset: 0.94,
|
||
color: '#086989',
|
||
},
|
||
{
|
||
offset: 0.98,
|
||
color: '#0FAFCB',
|
||
},
|
||
{
|
||
offset: 1,
|
||
color: '#0EA4C1',
|
||
},
|
||
],
|
||
},
|
||
],
|
||
],
|
||
width: 50,
|
||
},
|
||
},
|
||
/** 分隔线样式*/
|
||
splitLine: {
|
||
show: false,
|
||
},
|
||
/** 刻度线*/
|
||
axisTick: {
|
||
show: false,
|
||
},
|
||
/** 刻度标签*/
|
||
axisLabel: {
|
||
show: false,
|
||
},
|
||
/** 仪表盘指针*/
|
||
pointer: {
|
||
show: true,
|
||
length: '95%',
|
||
width: 2, // 指针粗细
|
||
},
|
||
/** 仪表盘指针样式*/
|
||
itemStyle: {
|
||
color: '#12E5FF',
|
||
},
|
||
data: [
|
||
{
|
||
value: dataArr,
|
||
},
|
||
],
|
||
detail: {
|
||
show: false,
|
||
},
|
||
},
|
||
],
|
||
graphic: {
|
||
elements: [
|
||
],
|
||
},
|
||
};
|
||
|
||
myChart.setOption(option);
|
||
|
||
}
|
||
//处理环境检测格式问题
|
||
function ProcessFormat(data){
|
||
let teamFormat =[];
|
||
teamFormat.push(data.temps)
|
||
teamFormat.push(data.humidty)
|
||
teamFormat.push(data.pm10)
|
||
teamFormat.push(data.pm25)
|
||
teamFormat.push(data.noise)
|
||
return teamFormat;
|
||
}
|
||
function environmentalMonitoring(data) {
|
||
let salvProValue = [];
|
||
//从后台动态获取数据
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: dataUrl + 'index/getSensorInfo',
|
||
data: {"type":data},
|
||
async:false,
|
||
dataType: 'json',
|
||
success: function(res) {
|
||
// 使用find方法找到第一个非空对象
|
||
const validData = res.obj.find(item => item && typeof item === 'object');
|
||
if(validData) {
|
||
salvProValue = ProcessFormat(validData);
|
||
}
|
||
|
||
}
|
||
});
|
||
switch (data) {
|
||
case 1:
|
||
//salvProValue = [50, 40, 0.5, 0.3, 25, 30];
|
||
echartsEnvironmentalMonitor(salvProValue);
|
||
break;
|
||
case 2:
|
||
//salvProValue = [45, 35, 0.4, 0.25, 20, 25];
|
||
echartsEnvironmentalMonitor(salvProValue);
|
||
break;
|
||
case 3:
|
||
//salvProValue = [40, 30, 0.35, 0.2, 18, 22];
|
||
echartsEnvironmentalMonitor(salvProValue);
|
||
break;
|
||
case 4:
|
||
//salvProValue = [35, 25, 0.3, 0.15, 15, 20];
|
||
echartsEnvironmentalMonitor(salvProValue);
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
function echartsEnvironmentalMonitor(salvProValue) {
|
||
echarts.init(document.getElementById('environmentalMonitor')).dispose(); // 销毁实例
|
||
const myChart = echarts.init(document.getElementById('environmentalMonitor'));
|
||
const salvProName = ["湿度", "温度", "PM10", "PM20", "噪音"];
|
||
const salvProMax = [];//背景按最大值
|
||
for (let i = 0; i < salvProValue.length; i++) {
|
||
salvProMax.push(salvProValue[0])
|
||
}
|
||
let option = {
|
||
backgroundColor: "transparent",
|
||
grid: {
|
||
left: '2%',
|
||
right: '2%',
|
||
bottom: '0',
|
||
top: '2%',
|
||
containLabel: true
|
||
},
|
||
tooltip: {
|
||
trigger: 'axis',
|
||
axisPointer: {
|
||
type: 'none'
|
||
},
|
||
formatter: function (params) {
|
||
return params[0].name + ' : ' + params[0].value
|
||
}
|
||
},
|
||
xAxis: {
|
||
show: false,
|
||
type: 'value'
|
||
},
|
||
yAxis: [{
|
||
type: 'category',
|
||
inverse: true,
|
||
axisLabel: {
|
||
show: true,
|
||
textStyle: {
|
||
color: '#34a0b4'
|
||
},
|
||
},
|
||
splitLine: {
|
||
show: false
|
||
},
|
||
axisTick: {
|
||
show: false
|
||
},
|
||
axisLine: {
|
||
show: false
|
||
},
|
||
data: salvProName
|
||
}, {
|
||
type: 'category',
|
||
inverse: true,
|
||
axisTick: 'none',
|
||
axisLine: 'none',
|
||
show: true,
|
||
axisLabel: {
|
||
textStyle: {
|
||
color: '#ffffff',
|
||
fontSize: '10'
|
||
},
|
||
},
|
||
data: salvProValue
|
||
}],
|
||
series: [{
|
||
name: '值',
|
||
type: 'bar',
|
||
zlevel: 1,
|
||
itemStyle: {
|
||
normal: {
|
||
barBorderRadius: 30,
|
||
color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
|
||
offset: 0,
|
||
color: '#3df0f1'
|
||
}, {
|
||
offset: 1,
|
||
color: '#67b1f5'
|
||
}]),
|
||
},
|
||
},
|
||
barWidth: 10,
|
||
data: salvProValue
|
||
},
|
||
{
|
||
name: '背景',
|
||
type: 'bar',
|
||
barWidth: 10,
|
||
barGap: '-100%',
|
||
data: salvProMax,
|
||
itemStyle: {
|
||
normal: {
|
||
color: '#1a3236',
|
||
barBorderRadius: 30,
|
||
}
|
||
},
|
||
},
|
||
],
|
||
};
|
||
myChart.setOption(option);
|
||
} |