1384 lines
29 KiB
JavaScript
1384 lines
29 KiB
JavaScript
$(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();
|
||
},*/
|
||
});
|
||
}
|