节能减排
This commit is contained in:
parent
d496cb81b4
commit
0097c0dc9f
|
|
@ -442,89 +442,90 @@
|
|||
}
|
||||
|
||||
function deviceChartFn(data) {
|
||||
let deviceName = [];
|
||||
let consumptionKwh = []
|
||||
data.map(item => {
|
||||
deviceName.push(item.deviceName);
|
||||
consumptionKwh.push(Number(parseFloat(item.consumptionKwh).toFixed(2)));
|
||||
})
|
||||
let pieData = data.map(item => ({
|
||||
name: item.deviceName,
|
||||
value: Number(parseFloat(item.consumptionKwh).toFixed(2))
|
||||
}));
|
||||
|
||||
deviceChart.setOption({
|
||||
animation: false,
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {type: 'shadow'}
|
||||
trigger: 'item',
|
||||
formatter: '{b}: {c} kWh ({d}%)'
|
||||
},
|
||||
textStyle: {color: '#FFFFFF'},
|
||||
grid: {
|
||||
left: 30, // 增大左边距,给长标签留出空间
|
||||
right: 30,
|
||||
top: 20,
|
||||
bottom: 30,
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {type: 'value'},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: deviceName
|
||||
textStyle: { color: '#FFFFFF' },
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left',
|
||||
textStyle: { color: '#FFFFFF' }
|
||||
},
|
||||
series: [{
|
||||
type: 'bar',
|
||||
data: consumptionKwh,
|
||||
itemStyle: {color: '#008781'},
|
||||
name: '能耗占比',
|
||||
type: 'pie',
|
||||
radius: '55%',
|
||||
center: ['50%', '50%'],
|
||||
data: pieData,
|
||||
label: {
|
||||
show: true,
|
||||
position: 'right',
|
||||
formatter: '{b}: {d}%',
|
||||
color: '#FFFFFF',
|
||||
fontSize: 12,
|
||||
formatter: '{c}'
|
||||
fontSize: 12
|
||||
},
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}]
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
function renewableUsedKwhFn(data) {
|
||||
let deviceName = [];
|
||||
let renewableUsedKwh = []
|
||||
data.map(item => {
|
||||
deviceName.push(item.deviceName);
|
||||
renewableUsedKwh.push(Number(parseFloat(item.renewableUsedKwh).toFixed(2)));
|
||||
})
|
||||
let pieData = data.map(item => ({
|
||||
name: item.deviceName,
|
||||
value: Number(parseFloat(item.renewableUsedKwh).toFixed(2))
|
||||
}));
|
||||
|
||||
renewableUsedKwhChart.setOption({
|
||||
animation: false,
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {type: 'shadow'}
|
||||
trigger: 'item',
|
||||
formatter: '{b}: {c} kWh ({d}%)'
|
||||
},
|
||||
textStyle: {color: '#FFFFFF'},
|
||||
grid: {
|
||||
left: 30, // 增大左边距,给长标签留出空间
|
||||
right: 30,
|
||||
top: 20,
|
||||
bottom: 30,
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {type: 'value'},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: deviceName
|
||||
textStyle: { color: '#FFFFFF' },
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left',
|
||||
textStyle: { color: '#FFFFFF' }
|
||||
},
|
||||
series: [{
|
||||
type: 'bar',
|
||||
data: renewableUsedKwh,
|
||||
itemStyle: {color: '#008781'},
|
||||
name: '可再生能源使用占比',
|
||||
type: 'pie',
|
||||
radius: '55%',
|
||||
center: ['50%', '50%'],
|
||||
data: pieData,
|
||||
label: {
|
||||
show: true,
|
||||
position: 'right',
|
||||
formatter: '{b}: {d}%',
|
||||
color: '#FFFFFF',
|
||||
fontSize: 12,
|
||||
formatter: '{c}'
|
||||
fontSize: 12
|
||||
},
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
window.addEventListener('resize', function () {
|
||||
trendChart.resize();
|
||||
deviceChart.resize();
|
||||
|
|
|
|||
|
|
@ -77,18 +77,125 @@
|
|||
</div>
|
||||
|
||||
<script>
|
||||
const adviceMap = {
|
||||
'设备过载能耗': '检查设备运行负荷,适当分配工作任务,避免长时间高负荷运行。',
|
||||
'能耗异常': '立即核查相关设备运行状态,排查是否存在故障或人为干预因素。',
|
||||
'轻微异常': '持续观察能耗变化,记录趋势并安排定期巡检。',
|
||||
};
|
||||
|
||||
// 从 URL 获取参数
|
||||
function getQueryParam(param) {
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
return urlParams.get(param);
|
||||
const device_anomaly_dict = {
|
||||
'塔吊': {
|
||||
'info': [
|
||||
'使用频率略高,建议优化排班',
|
||||
'短时间内作业密集,能耗轻微升高'
|
||||
],
|
||||
'warning': [
|
||||
'高频率起吊任务持续 2 小时以上,能耗偏高',
|
||||
'塔吊运转间隔过短,存在低效能耗'
|
||||
],
|
||||
'danger': [
|
||||
'连续运行超 6 小时,疑似空转或控制异常',
|
||||
'起重电机功率突增,可能存在电控系统故障'
|
||||
]
|
||||
},
|
||||
'照明系统': {
|
||||
'info': [
|
||||
'白天开启部分照明区域',
|
||||
'光照充足时未自动关闭灯具'
|
||||
],
|
||||
'warning': [
|
||||
'夜间全部区域照明常开,未启用感应控制',
|
||||
'楼道、空置区域照明长时间亮灯'
|
||||
],
|
||||
'danger': [
|
||||
'多区域电流突升,疑似电路故障',
|
||||
'照明系统异常重启,功率波动剧烈'
|
||||
]
|
||||
},
|
||||
'办公区': {
|
||||
'info': [
|
||||
'空调温度设置偏低,能耗轻微升高',
|
||||
'部分办公设备下班后未关闭'
|
||||
],
|
||||
'warning': [
|
||||
'下班后空调/电脑/灯具未关闭,持续耗电',
|
||||
'节假日期间未检测到办公人员但设备照常运行'
|
||||
],
|
||||
'danger': [
|
||||
'空调系统异常自启动,持续运行超 12 小时',
|
||||
'存在非办公类大功率设备接入,能耗异常'
|
||||
]
|
||||
},
|
||||
'其他': {
|
||||
'info': [
|
||||
'监控与通信设备正常运行,功耗平稳',
|
||||
'传感器网络轻微功耗波动'
|
||||
],
|
||||
'warning': [
|
||||
'通信模块频繁重连,导致功率上升',
|
||||
'部分感知终端异常活跃,数据回传功耗偏高'
|
||||
],
|
||||
'danger': [
|
||||
'关键设备死机重启,功耗异常升高',
|
||||
'系统故障导致数据上传异常,持续过载运行'
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
const device_energy_saving_suggestions = {
|
||||
'塔吊': {
|
||||
'info': [
|
||||
'建议合理安排作业时间,避免频繁作业导致能耗升高。',
|
||||
'调整作业密集时间,避免短时高负荷运转。'
|
||||
],
|
||||
'warning': [
|
||||
'优化起吊任务调度,避免长时间高频运行。',
|
||||
'增加运转间隔,减少低效能耗。'
|
||||
],
|
||||
'danger': [
|
||||
'排查设备空转,及时修复控制异常。',
|
||||
'检修起重电机电控系统,防止功率异常升高。'
|
||||
]
|
||||
},
|
||||
'照明系统': {
|
||||
'info': [
|
||||
'根据自然光调整照明开启,避免白天浪费电力。',
|
||||
'安装自动关灯装置,避免光照充足时灯具未关闭。'
|
||||
],
|
||||
'warning': [
|
||||
'启用感应照明控制,避免夜间长期开灯。',
|
||||
'关闭楼道及空置区域照明,减少无效耗电。'
|
||||
],
|
||||
'danger': [
|
||||
'尽快检修电路,防止电流异常导致安全隐患。',
|
||||
'升级控制系统,减少功率波动带来的损耗。'
|
||||
]
|
||||
},
|
||||
'办公区': {
|
||||
'info': [
|
||||
'适当调节空调温度,减少不必要的能耗。',
|
||||
'加强节能意识,下班关闭所有办公设备。'
|
||||
],
|
||||
'warning': [
|
||||
'落实下班关闭设备制度,杜绝持续耗电。',
|
||||
'节假日期间关闭空调及灯具,降低闲置能耗。'
|
||||
],
|
||||
'danger': [
|
||||
'检修空调异常启动问题,防止长时间运行浪费。',
|
||||
'禁止非办公大功率设备接入办公区。'
|
||||
]
|
||||
},
|
||||
'其他': {
|
||||
'info': [
|
||||
'定期维护监控及通信设备,保持稳定功耗。',
|
||||
'监控传感器网络,避免异常功耗波动。'
|
||||
],
|
||||
'warning': [
|
||||
'修复通信模块故障,降低重连带来的能耗。',
|
||||
'优化感知终端数据上传频率,减少功耗。'
|
||||
],
|
||||
'danger': [
|
||||
'及时处理设备死机重启问题,避免异常功耗。',
|
||||
'排查系统故障,防止持续过载运行。'
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function setParams(data) {
|
||||
let item = JSON.parse(data);
|
||||
document.getElementById('device-name').innerText = item.deviceName;
|
||||
|
|
@ -96,18 +203,29 @@
|
|||
document.getElementById('anomalyDesc').innerText = item.anomalyDesc;
|
||||
document.getElementById('time-range').innerText = `${item.lastRecordDate.split(' ')[1]} - ${item.statDate.split(' ')[1]}`;
|
||||
|
||||
// 先默认提示
|
||||
let adviceText = '建议进一步检查设备状态或联系技术人员。';
|
||||
|
||||
// 根据异常类型填充建议措施
|
||||
const advice = adviceMap[item.anomalyDesc] || '建议进一步检查设备状态或联系技术人员。';
|
||||
document.getElementById('advice').innerText = advice;
|
||||
// 取设备、等级、描述
|
||||
let device = item.deviceName;
|
||||
let level = item.anomalyLevel; // 必须是 info/warning/danger
|
||||
let desc = item.anomalyDesc;
|
||||
|
||||
// 判断设备和等级是否存在对应数据
|
||||
if (device_energy_saving_suggestions[device] && device_energy_saving_suggestions[device][level]) {
|
||||
// 找到当前等级所有异常描述列表
|
||||
let descList = device_anomaly_dict[device][level];
|
||||
// 找到当前描述的索引
|
||||
let idx = descList.indexOf(desc);
|
||||
if (idx !== -1) {
|
||||
// 根据索引取对应建议
|
||||
adviceText = device_energy_saving_suggestions[device][level][idx];
|
||||
}
|
||||
}
|
||||
|
||||
document.getElementById('advice').innerText = adviceText;
|
||||
}
|
||||
|
||||
// 示例调用(正式使用时替换 data 参数)
|
||||
// setParams(JSON.stringify({
|
||||
// deviceName: "空调1号",
|
||||
// statDate: "2025-07-24",
|
||||
// anomalyDesc: "设备过载能耗"
|
||||
// }));
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
Loading…
Reference in New Issue