232 lines
7.9 KiB
HTML
232 lines
7.9 KiB
HTML
|
|
<!DOCTYPE html>
|
||
|
|
<html>
|
||
|
|
<head>
|
||
|
|
<meta charset="utf-8">
|
||
|
|
<title>能耗异常详细分析</title>
|
||
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/layui@2.8.18/dist/css/layui.css">
|
||
|
|
<script src="https://cdn.jsdelivr.net/npm/layui@2.8.18/dist/layui.js"></script>
|
||
|
|
<style>
|
||
|
|
body {
|
||
|
|
background-color: transparent;
|
||
|
|
color: #FFFFFF;
|
||
|
|
padding: 30px;
|
||
|
|
font-family: "Microsoft YaHei", sans-serif;
|
||
|
|
font-size: 16px;
|
||
|
|
}
|
||
|
|
|
||
|
|
.card {
|
||
|
|
border-radius: 12px;
|
||
|
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
|
||
|
|
max-width: 600px;
|
||
|
|
margin: 0 auto;
|
||
|
|
}
|
||
|
|
|
||
|
|
.card-title {
|
||
|
|
font-size: 24px;
|
||
|
|
font-weight: bold;
|
||
|
|
margin-bottom: 20px;
|
||
|
|
border-left: 6px solid #16baaa;
|
||
|
|
padding-left: 12px;
|
||
|
|
}
|
||
|
|
|
||
|
|
.info-item {
|
||
|
|
display: flex;
|
||
|
|
margin-bottom: 16px;
|
||
|
|
}
|
||
|
|
|
||
|
|
.info-label {
|
||
|
|
width: 100px;
|
||
|
|
font-weight: bold;
|
||
|
|
color: #cccccc;
|
||
|
|
}
|
||
|
|
|
||
|
|
.info-value {
|
||
|
|
flex: 1;
|
||
|
|
color: #ffffff;
|
||
|
|
}
|
||
|
|
</style>
|
||
|
|
</head>
|
||
|
|
<body>
|
||
|
|
|
||
|
|
<div class="card">
|
||
|
|
|
||
|
|
<div class="info-item">
|
||
|
|
<div class="info-label">设备名称</div>
|
||
|
|
<div class="info-value" id="device-name">加载中...</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="info-item">
|
||
|
|
<div class="info-label">异常日期</div>
|
||
|
|
<div class="info-value" id="abnormal-date">加载中...</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="info-item">
|
||
|
|
<div class="info-label">异常描述</div>
|
||
|
|
<div class="info-value" id="anomalyDesc">加载中...</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="info-item">
|
||
|
|
<div class="info-label">异常时段</div>
|
||
|
|
<div class="info-value" id="time-range">13:00 - 14:30</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="info-item">
|
||
|
|
<div class="info-label">建议措施</div>
|
||
|
|
<div class="info-value" id="advice">加载中...</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<script>
|
||
|
|
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;
|
||
|
|
document.getElementById('abnormal-date').innerText = item.statDate.split(' ')[0];
|
||
|
|
document.getElementById('anomalyDesc').innerText = item.anomalyDesc;
|
||
|
|
document.getElementById('time-range').innerText = `${item.lastRecordDate.split(' ')[1]} - ${item.statDate.split(' ')[1]}`;
|
||
|
|
|
||
|
|
// 先默认提示
|
||
|
|
let adviceText = '建议进一步检查设备状态或联系技术人员。';
|
||
|
|
|
||
|
|
// 取设备、等级、描述
|
||
|
|
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;
|
||
|
|
}
|
||
|
|
|
||
|
|
</script>
|
||
|
|
</body>
|
||
|
|
</html>
|