jyyhq/witDisplay/js/index/index.js

1275 lines
28 KiB
JavaScript
Raw Normal View History

2025-02-10 12:18:11 +08:00
// 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);
}