jyyhq/witDisplay/js/electricity/electricity.js

1384 lines
29 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

$(function(){
// 智慧用电-开关状态
switchStatus();
// 线路分布
lineDistributionData();
// 年度用电情况
yearElect();
//近12月用电量接口数据获取
monthlyData();
// 近7日用电量接口数据获取
weeklyData();
// 智慧用电-接口状态
interfaceStatus();
// 异常报警
alarmData();
//防区告警表格
defenceWarnData();
})
/**
* 智慧用电-开关状态
*/
function switchStatus() {
$.ajax({
type: 'POST',
url: dataUrl + 'electricity/switchStatus',
data: "",
dataType: 'json',
success: function(res) {
console.log(res);
let offline = res.obj.switchStatus[0];
document.getElementById('onlineCount').innerText = offline.onlineCount;
document.getElementById('offlineCount').innerText = offline.offlineCount;
document.getElementById('total').innerText = offline.total;
console.log(onlineCount);
let overview = res.obj.equipmentOverview[0];
document.getElementById('onlineNum').innerText = overview.onlineNum;
document.getElementById('totalNum').innerText = overview.totalNum;
document.getElementById('alarmNum').innerText = overview.alarmNum;
}
});
}
/**
* 智慧用电-接口状态数量
*/
function interfaceStatus() {
$.ajax({
type: 'POST',
url: dataUrl + 'electricity/interfaceStatus',
data: "type=1",
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 lineDistributionData() {
$.ajax({
type: 'POST',
url: dataUrl + 'electricity/lineDistribution',
data: "",
dataType: 'json',
success: function(res) {
lineDistribution(res.obj.lineDistribution)
}
});
}
//线路分布ECharts
function lineDistribution(data){
let myChart = echarts.init(document.getElementById('chart'));
let xNameArr = [];
let yValueArr = [];
var attackSourcesColor = [
new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: '#EB3B5A' },
{ offset: 1, color: '#FE9C5A' },
]),
new echarts.graphic.LinearGradient(0, 1, 1, 1, [
{ offset: 0, color: '#FA8231' },
{ offset: 1, color: '#FFD14C' },
]),
new echarts.graphic.LinearGradient(0, 1, 1, 1, [
{ offset: 0, color: '#F7B731' },
{ offset: 1, color: '#FFEE96' },
]),
new echarts.graphic.LinearGradient(0, 1, 1, 1, [
{ offset: 0, color: '#395CFE' },
{ offset: 1, color: '#2EC7CF' },
]),
new echarts.graphic.LinearGradient(0, 1, 1, 1, [
{ offset: 0, color: '#395CFE' },
{ offset: 1, color: '#2EC7CF' },
]),
new echarts.graphic.LinearGradient(0, 1, 1, 1, [
{ offset: 0, color: '#F7B731' },
{ offset: 1, color: '#FFEE96' },
]),
];
let colorArr = ['#52a8f7', '#17f3f4', '#c6f8b5', '#c380f9', '#f394b7', '#f6cf83']; // 7种颜色
for (let i = 0; i < data.length; i++) {
xNameArr.push(data[i].switchName);
yValueArr.push(data[i].lineNum);
}
colorArr.push(new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: 'rgba(30, 144, 255, 0.8)'
}, {
offset: 1,
color: 'rgba(70, 130, 180, 0.8)'
}]));
let option = {
title: {
subtext: '单位:条',
subtextStyle: {
fontSize: 12,
color: '#fff'
}
},
tooltip: {
trigger: 'axis',
show: true
},
xAxis: {
data: xNameArr,
axisLine: {
lineStyle: {
color: '#fff'
}
},
axisLabel: {
rotate: -40, // 逆时针旋转40度
interval: 0 // 强制显示所有标签
}
},
yAxis: {
type: 'value',
splitLine: {
lineStyle: {
color: '#fff'
}
},
axisLine: {
lineStyle: {
color: '#fff'
}
}
},
series: [{
name: '数量',
type: 'bar',
data: yValueArr,
show: true,
label: {
show: true,
position: 'top',
color: '#fff'
},
itemStyle: {
color: function(params) {
let index = params.dataIndex % colorArr.length; // 取模运算,循环使用颜色数组
return colorArr[index];
}
}
}]
};
myChart.setOption(option);
}
/**
年度用电情况
*/
//年度用电情况接口数据获取
function yearElect() {
$.ajax({
type: 'POST',
url: dataUrl + 'electricity/yearElect',
data: "",
dataType: 'json',
success: function(res) {
yearElects(res.obj.yearElect)
monthElects(res.obj.yearElect)
}
});
}
//年度用电情况ECharts
function yearElects(data){
let yearChart = echarts.init(document.getElementById('year-chart'));
const payload = { id: 'liquid-fill-5', color: ['#1791ff', '#1791ff'], data: { data: Number(data[0].totalElectricity) } };
let yearElectData = payload.data.data;
const color = payload.color
yearOption = {
backgroundColor: 'transparent',
series: [
{
name: '水球图',
type: 'liquidFill',
radius: '95%',
center: ['50%', '50%'],
waveAnimation: 10, // 动画时长
amplitude: 5, // 振幅
// 注释上面2行, 并开启下面三行, 则关闭动画
// waveAnimation: false,
// animationDuration: 0,
// animationDurationUpdate: 0,
data: [0.55, 0.45],
itemStyle: {
//渐变色设置
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: color[0]
},
{
offset: 1,
color: color[1]
}
])
},
color: {
type: 'linear',
x: 0,
y: 0,
x2: 1,
y2: 1,
colorStops: [
{
offset: 1,
color: color[0]
},
{
offset: 0,
color: color[1]
}
],
globalCoord: false
},
outline: {
show: true,
borderDistance: 0,
itemStyle: {
borderWidth: 0,
}
},
backgroundStyle: {
color: '#001c22'
},
label: {
color: '#ffffff',
insideColor: '#ffffff',
fontSize: 18,
lineHeight: 30,
formatter: params => {
var reg = new RegExp(/^\d+(?:\.\d{0,2})?/)
return '' + data[0].totalElectricity.match(reg) + '\n' + '年总用电量'
}
}
}
]
}
yearChart.setOption(yearOption);
}
//月度用电情况ECharts
function monthElects(data){
let yearChart = echarts.init(document.getElementById('year-container'));
const payload = { id: 'liquid-fill-5', color: ['#1791ff', '#1791ff'], data: { data: Number(data[0].monthElectricity) } };
let yearElectData = payload.data.data;
const color = payload.color
monthOption = {
backgroundColor: 'transparent',
series: [
{
name: '水球图',
type: 'liquidFill',
radius: '85%',
center: ['50%', '50%'],
waveAnimation: 10, // 动画时长
amplitude: 5, // 振幅
// 注释上面2行, 并开启下面三行, 则关闭动画
// waveAnimation: false,
// animationDuration: 0,
// animationDurationUpdate: 0,
data: [0.55, 0.45],
itemStyle: {
//渐变色设置
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: color[0]
},
{
offset: 1,
color: color[1]
}
])
},
color: {
type: 'linear',
x: 0,
y: 0,
x2: 1,
y2: 1,
colorStops: [
{
offset: 1,
color: color[0]
},
{
offset: 0,
color: color[1]
}
],
globalCoord: false
},
outline: {
show: true,
borderDistance: 0,
itemStyle: {
borderWidth: 0,
}
},
backgroundStyle: {
color: '#001c22'
},
label: {
color: '#ffffff',
insideColor: '#ffffff',
fontSize: 18,
lineHeight: 30,
formatter: params => {
var reg = new RegExp(/^\d+(?:\.\d{0,2})?/)
return '' + data[0].monthElectricity.toString().match(reg) + '\n' + '月总用电量'
}
}
}
]
}
yearChart.setOption(monthOption);
}
/**
* 近12月用电量折线图
*/
//近12月用电量接口数据获取
function monthlyData() {
$.ajax({
type: 'POST',
url: dataUrl + 'electricity/electricityConsumption',
data: "",
dataType: 'json',
success: function(res) {
monthlyECharts(res.obj)
}
});
}
// 近12月用电量ECharts
function monthlyECharts(data) {
let monthlyChart = echarts.init(document.getElementById('monthly-chart'));
const yWeeklyValueArr = data.map(innerList => innerList.length > 0 ? innerList[0].dl : 0);
const yWeeklyValueArr1 = data.map(innerList => innerList.length > 0 ? innerList[1].dl : 0);
const yWeeklyValueArr2 = data.map(innerList => innerList.length > 0 ? innerList[2].dl : 0);
const yWeeklyValueArr3 = data.map(innerList => innerList.length > 0 ? innerList[3].dl : 0);
const yWeeklyValueArr4 = data.map(innerList => innerList.length > 0 ? innerList[4].dl : 0);
const yWeeklyValueArr5 = data.map(innerList => innerList.length > 0 ? innerList[5].dl : 0);
function handleLegendClick(params) {
var selectedName = params.name;
var selectedData;
if (selectedName === '1#配电柜1') {
selectedData = {name: '1#配电柜1', value: '187ED5338A38'};
} else if (selectedName === '2#配电柜') {
selectedData = {name: '2#配电柜', value: '187ED5338A64'};
} else if (selectedName === '1#配电柜2') {
selectedData = {name: '1#配电柜2', value: '187ED5338A70'};
} else if (selectedName === '1#1层动力照明') {
selectedData = {name: '1#1层动力照明', value: '187ED5338ADC'};
} else if (selectedName === '3#配电柜') {
selectedData = {name: '3#配电柜', value: '187ED533B8D8'};
} else if (selectedName === '4#配电柜') {
selectedData = {name: '4#配电柜', value: '187ED533B8E0'};
}
var contentUrl = './lineStatuFrom.html?value=' + selectedData.value;
layer.open({
title: selectedName,
type: 2, // 指定类型为iframe
content: contentUrl, // 弹窗内容为一个URL地址
area: ['70%', '95%']
});
}
function getLastTwelveMonths() {
var currentDate = new Date();
var months = [];
for (var i = 11; i >= 0; i--) {
var month = currentDate.getMonth() - i;
var year = currentDate.getFullYear();
if (month < 0) {
month += 12;
year -= 1;
}
var yearMonth = year + '-' + padZero(month + 1);
months.push(yearMonth);
}
return months;
}
function padZero(number) {
return number.toString().padStart(2, '0');
}
var lastTwelveMonths = getLastTwelveMonths();
monthlyOption ={
title:{
subtext: '单位:kw/h',
subtextStyle: {
fontSize: 12,
color: '#fff'
}
},
tooltip: {
trigger: "axis",
},
grid: {
left: '0%',
right: '10%',
top:'30%',
bottom: '0%',
containLabel: true
},
legend: {
show:true,
x:'55%',
top:'-2%',
y:'35',
icon: 'stack',
selectedMode: 'multiple', // 设置为单选模式
clickable: true, // 保留可点击属性
itemWidth:10,
itemHeight:10,
textStyle:{
color:'#1bb4f6'
},
data:['1#配电柜1', '1#配电柜2', '2#配电柜', '3#配电柜', '1#1层动力照明', '4#配电柜'],
},
xAxis : [
{
type : 'category',
boundaryGap : false,
axisLabel:{
color: '#fff',
interval:0,
rotate: -45
},
axisLine:{
show:true,
lineStyle:{
color:'#397cbc'
}
},
axisTick:{
show:false,
},
splitLine:{
show:false,
lineStyle:{
color:'#195384'
}
},
data : lastTwelveMonths,
}
],
yAxis : [
{
type : 'value',
axisLabel : {
formatter: '{value}',
textStyle:{
color:'#fff'
}
},
axisLine:{
lineStyle:{
color:'#27b4c2'
}
},
axisTick:{
show:false,
},
splitLine: {
show: true,
lineStyle: {
type:'dashed',
color: '#e7e9ea'
},
},
}],
series : [
{
name:'1#配电柜1',
type:'line',
stack: '总量',
symbolSize: 0,
itemStyle: {
normal: {
color:'#0092f6',
lineStyle: {
color: "#0092f6",
width:3
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: 'rgba(7,44,90,0.3)'
}, {
offset: 1,
color: 'rgba(0,146,246,0.9)'
}]),
}
}
},
markPoint:{
itemStyle:{
normal:{
color:'red'
}
}
},
data:yWeeklyValueArr,
},
{
name:'2#配电柜',
type:'line',
stack: '总量',
symbolSize: 0,
itemStyle: {
normal: {
color:'#17f3f4',
lineStyle: {
color: "#17f3f4",
width:3
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#004d4d'
}, {
offset: 1,
color: '#66ecff'
}]),
}
}
},
markPoint:{
itemStyle:{
normal:{
color:'red'
}
}
},
data:yWeeklyValueArr1,
},
{
name:'1#配电柜2',
type:'line',
stack: '总量',
symbolSize: 0,
itemStyle: {
normal: {
color:'#c6f8b5',
lineStyle: {
color: "#c6f8b5",
width:3
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#43cc1b'
}, {
offset: 1,
color: '#c6f8b5'
}]),
}
}
},
markPoint:{
itemStyle:{
normal:{
color:'red'
}
}
},
data:yWeeklyValueArr2,
},
{
name:'1#1层动力照明',
type:'line',
stack: '总量',
symbolSize: 0,
itemStyle: {
normal: {
color:'#c380f9',
lineStyle: {
color: "#c380f9",
width:3
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#8b16ef'
}, {
offset: 1,
color: '#c380f9'
}]),
}
}
},
markPoint:{
itemStyle:{
normal:{
color:'red'
}
}
},
data:yWeeklyValueArr3,
},
{
name:'3#配电柜',
type:'line',
stack: '总量',
symbolSize: 0,
itemStyle: {
normal: {
color:'#f394b7',
lineStyle: {
color: "#f394b7",
width:3
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#ee2e72'
}, {
offset: 1,
color: '#f689b0'
}]),
}
}
},
markPoint:{
itemStyle:{
normal:{
color:'red'
}
}
},
data:yWeeklyValueArr4,
},
{
name:'4#配电柜',
type:'line',
stack: '总量',
symbolSize: 0,
itemStyle: {
normal: {
color:'#f6cf83',
lineStyle: {
color: "#f6cf83",
width:3
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#ffb014'
}, {
offset: 1,
color: '#f6cf83'
}]),
}
}
},
markPoint:{
itemStyle:{
normal:{
color:'red'
}
}
},
data:yWeeklyValueArr5,
}
]
};
monthlyChart.setOption(monthlyOption);
monthlyChart.on('legendselectchanged', function(params) {
handleLegendClick(params);
});
}
/**
* 近7日用电量折线图
*/
// 近7日用电量接口数据获取
function weeklyData() {
$.ajax({
type: 'POST',
url: dataUrl + 'electricity/electricityConsumptionDay',
data: "",
dataType: 'json',
success: function(res) {
weeklyECharts(res.obj)
}
});
}
// 近7日用电量ECharts
function weeklyECharts(data) {
let weeklyChart = echarts.init(document.getElementById('weekly-chart'));
const yWeeklyValueArr = data.map(innerList => innerList.length > 0 ? innerList[0].dl : 0);
const yWeeklyValueArr1 = data.map(innerList => innerList.length > 0 ? innerList[1].dl : 0);
const yWeeklyValueArr2 = data.map(innerList => innerList.length > 0 ? innerList[2].dl : 0);
const yWeeklyValueArr3 = data.map(innerList => innerList.length > 0 ? innerList[3].dl : 0);
const yWeeklyValueArr4 = data.map(innerList => innerList.length > 0 ? innerList[4].dl : 0);
const yWeeklyValueArr5 = data.map(innerList => innerList.length > 0 ? innerList[5].dl : 0);
function getPastSevenDays() {
const dates = [];
for (let i = 6; i >= 0; i--) {
const currentDate = new Date();
currentDate.setDate(currentDate.getDate() - i);
const formattedDate = formatDate(currentDate);
dates.push(formattedDate);
}
return dates;
}
function formatDate(dateString) {
let date = new Date(dateString);
let day = date.getDate();
let month = date.getMonth() + 1;
let year = date.getFullYear();
if (day === 1) {
return month + '月' + day + '日';
} else {
return day + '日';
}
}
const xWeeklyNameArr = getPastSevenDays();
// let fontColor = '#30eee9';
weeklyOption ={
title:{
subtext: '单位:kw/h',
subtextStyle: {
fontSize: 12,
color: '#fff'
}
},
grid: {
left: '0%',
right: '10%',
top:'30%',
bottom: '0%',
containLabel: true
},
tooltip: {
trigger: "axis",
},
legend: {
show:true,
x:'55%',
top:'-2%',
y:'35',
icon: 'stack',
itemWidth:10,
itemHeight:10,
textStyle:{
color:'#1bb4f6'
},
data: ['1#配电柜1', '1#配电柜2', '2#配电柜', '3#配电柜', '1#1层动力照明', '4#配电柜']
},
xAxis : [
{
type : 'category',
boundaryGap : false,
axisLabel:{
color: '#fff',
interval:0,
rotate: -45
},
axisLine:{
show:true,
lineStyle:{
color:'#397cbc'
}
},
axisTick:{
show:false,
},
splitLine:{
show:false,
lineStyle:{
color:'#195384'
}
},
data : xWeeklyNameArr,
}
],
yAxis : [
{
type : 'value',
axisLabel : {
formatter: '{value}',
textStyle:{
color:'#fff'
}
},
axisLine:{
lineStyle:{
color:'#27b4c2'
}
},
axisTick:{
show:false,
},
splitLine: {
show: true,
lineStyle: {
type:'dashed',
color: '#e7e9ea'
},
},
}],
series : [
{
name:'1#配电柜1',
type:'line',
stack: '总量',
symbolSize: 0,
itemStyle: {
normal: {
color:'#0092f6',
lineStyle: {
color: "#0092f6",
width:3
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: 'rgba(7,44,90,0.3)'
}, {
offset: 1,
color: 'rgba(0,146,246,0.9)'
}]),
}
}
},
markPoint:{
itemStyle:{
normal:{
color:'red'
}
}
},
data:yWeeklyValueArr,
},
{
name:'2#配电柜',
type:'line',
stack: '总量',
symbolSize: 0,
itemStyle: {
normal: {
color:'#17f3f4',
lineStyle: {
color: "#17f3f4",
width:3
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#004d4d'
}, {
offset: 1,
color: '#66ecff'
}]),
}
}
},
markPoint:{
itemStyle:{
normal:{
color:'red'
}
}
},
data:yWeeklyValueArr1,
},
{
name:'1#配电柜2',
type:'line',
stack: '总量',
symbolSize: 0,
itemStyle: {
normal: {
color:'#c6f8b5',
lineStyle: {
color: "#c6f8b5",
width:3
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#43cc1b'
}, {
offset: 1,
color: '#c6f8b5'
}]),
}
}
},
markPoint:{
itemStyle:{
normal:{
color:'red'
}
}
},
data:yWeeklyValueArr2,
},
{
name:'1#1层动力照明',
type:'line',
stack: '总量',
symbolSize: 0,
itemStyle: {
normal: {
color:'#c380f9',
lineStyle: {
color: "#c380f9",
width:3
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#8b16ef'
}, {
offset: 1,
color: '#c380f9'
}]),
}
}
},
markPoint:{
itemStyle:{
normal:{
color:'red'
}
}
},
data:yWeeklyValueArr3,
},
{
name:'3#配电柜',
type:'line',
stack: '总量',
symbolSize: 0,
itemStyle: {
normal: {
color:'#f394b7',
lineStyle: {
color: "#f394b7",
width:3
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#ee2e72'
}, {
offset: 1,
color: '#f689b0'
}]),
}
}
},
markPoint:{
itemStyle:{
normal:{
color:'red'
}
}
},
data:yWeeklyValueArr4,
},
{
name:'4#配电柜',
type:'line',
stack: '总量',
symbolSize: 0,
itemStyle: {
normal: {
color:'#f6cf83',
lineStyle: {
color: "#f6cf83",
width:3
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#ffb014'
}, {
offset: 1,
color: '#f6cf83'
}]),
}
}
},
markPoint:{
itemStyle:{
normal:{
color:'red'
}
}
},
data:yWeeklyValueArr5,
}
]
};
weeklyChart.setOption(weeklyOption);
}
/**
* 异常报警
*/
// 异常报警接口数据获取
function alarmData() {
$.ajax({
type: 'POST',
url: dataUrl + 'electricity/alarm',
data: "",
dataType: 'json',
success: function(res) {
let alarm = res.obj.alarm[0];
document.getElementById('todayAlarm').innerText = alarm.todayAlarmNum;
document.getElementById('totalAlarm').innerText = alarm.yearAlarmNum;
document.getElementById('monthNum').innerText = alarm.monthAlarmNum;
console.log(res.obj.electricityLlarms);
defalarmECharts(res.obj.electricityLlarms)
}
});
}
// 异常报警ECharts
function defalarmECharts(date) {
// data = [
// {value: 2, name: '短路报警'},
// {value: 3, name: '漏电监测报警'},
// {value: 1, name: '过载报警'},
// {value: 1, name: '过流报警'},
// {value: 1, name: '其他'},
// ]
data = date;
let sumValue = 0; // 总值
// 计算总值
// data.map(item => {
// sumValue += item.value;
// });
let legendOption = {
orient: 'vertical',
top: 'center',
icon: "circle",
selectedMode: false,
itemWidth: 12,
itemGap: 50,
textStyle: {
fontSize: 14,
color: '#ffa',
rich: {
name: { color: "#333333", padding: [10, 5, 30, 5] },
percent: { color: "#18DB9F", fontSize: 18, padding: [0, 5, 0, 5] }
}
},
}
let abnormals = echarts.init(document.getElementById('alarmStatus'));
abnormal = {
backgroundColor: 'transparent',
tooltip: {
trigger: 'item'
},
// graphic: [{
// type: 'text',
// left: (sumValue >= 10 && sumValue < 1000) ? '46%' : (sumValue >= 1000 ? '43%' : '48%'), //
// top: '45%',
// style: {
// text: sumValue, // 替换为实际的总值
// textAlign: 'center',
// fill: '#ffa',
// fontSize: 32,
// fontWeight: 'bold'
// },
// formatter: (name) => {
// let datas = data;
// let valueIndex = datas.map(item => item.name).indexOf(name);
// return name + ':' + datas[valueIndex].value;
// }
// }],
legend: [{
left: '20', // 调整图例的左侧位置
data: ['短路报警', '过载报警', '过流报警'], // 调整了数据的顺序,将'高'放在最后
align: 'right',
...legendOption
},{
right: '20', // 调整图例的左侧位置
data: ['漏电监测报警', '其他'], // 调整了数据的顺序,将'高'放在最后
align: 'left',
...legendOption
}
],
series: [
{
// name: '总报警',
type: 'pie',
radius: ['40%', '63%'],
avoidLabelOverlap: false,
hoverAnimation: false,
label: {
formatter: '({d}%)'
},
color: ['rgb(85 234 241)', '#fac858', '#8c56df', '#52b96a', '#73c0de'],
emphasis: {
label: {
show: true,
fontSize: 13,
fontWeight: 'bold'
}
},
data,
},
{
type: 'custom',
coordinateSystem: 'none',
silent: true,
data: [0],
renderItem(params, api) {
//环形图半径
const r = Math.min(api.getWidth(), api.getHeight()) / 2
//圆心
const center = {
x: api.getWidth() / 2,
y: api.getHeight() / 2
}
//大圆半径
const rBig = r * 0.9
//小圆半径
const rSmall = r * 0.78
//大圆上的扇形
const bigSector = []
const smallSector = []
const circleOnCircle = [] //小圆上携带的小圆圈
const sectorSize = 60 //扇形长度(弧度)
const sectorInterval = 30 //扇形与扇形之间的间隔
const BigStartAngle = 310 //大扇形起始角度
for (let i = 0; i < 4; i++) {
const startAngle = ((i * (sectorInterval + sectorSize) + BigStartAngle) * Math.PI) / 180
const endAngle = startAngle + (sectorSize * Math.PI) / 180
const smallStartAngle = (Math.PI / 180) * (280 + angle + i * (sectorSize + sectorInterval))
const smallEndAngle = smallStartAngle + (sectorSize * Math.PI) / 180
bigSector.push({
type: 'sector',
shape: {
cx: center.x,
cy: center.y,
r: rBig,
r0: rBig * 0.93,
startAngle,
endAngle
},
style: {
fill: '#55EAF1',
lineWidth: 2
}
})
smallSector.push({
type: 'sector',
shape: {
cx: center.x,
cy: center.y,
r: rSmall * 0.93,
r0: rSmall * 0.87,
startAngle: smallStartAngle,
endAngle: smallEndAngle
},
style: {
fill: '#14769f',
lineWidth: 2
}
})
circleOnCircle.push({
type: 'circle',
shape: {
cx: getCirclePoint(center.x, center.y, rSmall, 270 + i * 90 -angle).x,
cy: getCirclePoint(center.x, center.y, rSmall, 270 + i * 90 - angle).y,
r: 6
},
style: {
fill: '#19ECFF',
stroke: '#19ECFF',
lineWidth: 2
}
})
}
return {
type: 'group',
children: [
{
type: 'group',
children: [
...bigSector,
...smallSector,
...circleOnCircle,
{
// 外圆环
type: 'arc',
shape: {
cx: center.x,
cy: center.y,
r: rBig
},
style: {
fill: 'transparent',
stroke: '#55EAF1',
lineWidth: 2
}
}
]
}
]
}
}
}
]
}
//获取圆上某点的坐标(x0、y0表示坐标r半径angle角度)
function getCirclePoint(x0, y0, r, angle) {
let x1 = x0 + r * Math.cos((angle * Math.PI) / 180)
let y1 = y0 + r * Math.sin((angle * Math.PI) / 180)
return {
x: x1,
y: y1
}
}
//添加旋转动画
let timer
let angle = 0
function play() {
angle += 3
// 在此处添加你需要执行的操作
if (timer) return
timer = setTimeout(() => {
cancelAnimationFrame(timer)
timer = null
}, 28)
}
abnormals.setOption(abnormal);
}
//报警表格
function defenceWarnData(){
$.ajax({
type: 'POST',
url: dataUrl + 'electricity/equipInfos',
data: "",
dataType: 'json',
success: function(res) {
defenceWarnList(res.obj);
},
});
}
function defenceWarnList(data){
let equipNum = 6;
if(data.equipInfo.length < equipNum){
equipNum = data.equipInfo.length;
}
let html = ""
for (let i = 0; i < equipNum; i++) {
html += "<div style='font-size: 12px'>"
html += "<span>" +data.equipInfo[i].equipName + "</span>"
html += "<span>" +data.equipInfo[i].alarmType + "</span>"
html += "<span>" +data.equipInfo[i].information + "</span>"
html += "<span>" +data.equipInfo[i].processStatus + "</span>"
html += "<span>" +data.equipInfo[i].alarmTime + "</span>"
html += "</div>"
}
$(".defenceWarn>.table").append(html)
}
//接口状态点击
function interfaceStateClick(){
var index = layer.open({
title: ['接口状态','color: #fff'],
type: 2,
closeBtn: 2,
content: '../../page/electricity/electricityFrom.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 defenceWarnDataClick(){
var index = layer.open({
title: ['报警信息','color: #fff'],
type: 2,
closeBtn: 2,
content: '../../page/electricity/defenceWarnDataList.html',
area: ["70%", "97%"],
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();
},*/
});
}