Files
smart-project/h5/alert.html
Jesxion e70e5cc69d feat(h5): 修复alert.html认证Bug + 新增log-detail.html日志详情页
- alert.html: requireAuth()后加return防止未登录时继续执行
- 新增log-detail.html: 独立详情页(骨架屏+设备标签+安全备注+照片)
- logs.html: 列表项跳转log-detail.html?id=xxx
- mock.js: MOCK_LOGS补全part/equipment/author/created_at/safety_note字段
- 补全equip-checkbox等CSS样式
2026-04-14 18:22:00 +08:00

147 lines
5.1 KiB
HTML
Raw 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.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>预警详情</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/weui@2.5.4/dist/style/weui.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/remixicon@4.5.0/fonts/remixicon.min.css">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="page">
<!-- 顶栏 page-hd -->
<header class="page-hd">
<a href="alerts.html" class="hd-back">
<i class="ri-arrow-left-s-line"></i>
</a>
<div class="hd-title">预警详情</div>
</header>
<div class="page-bd">
<!-- 预警头部 -->
<div id="alertHeader" class="alert-detail-header"></div>
<!-- 信息卡片 weui-panel -->
<div class="weui-panel">
<div class="weui-panel__hd">预警信息</div>
<div class="weui-panel__bd">
<div id="infoGrid" class="info-grid"></div>
</div>
</div>
<!-- 处理操作区 -->
<div id="actionArea" class="action-area"></div>
</div>
</div>
<script src="js/mock.js"></script>
<script src="js/api.js"></script>
<script src="js/app.js"></script>
<script>
requireAuth();
if (!requireAuth()) return;
var alertId = getQueryParam('id');
if (!alertId) location.href = 'alerts.html';
function loadAlert() {
var res = apiGetAlertDetail(alertId);
var a = res.data;
if (!a) {
showToast('预警不存在');
location.href = 'alerts.html';
return;
}
var levelText = {
danger: '危险',
warning: '警告',
handled: '已处理',
ignored: '已忽略'
};
var iconClass = a.level === 'danger' ? 'ri-error-warning-line' : 'ri-alert-line';
var levelClass = a.level === 'danger' ? 'danger' : 'warning';
// 预警头部
document.getElementById('alertHeader').innerHTML =
'<div class="alert-icon-wrap ' + levelClass + ' alert-icon-wrap--lg">' +
'<i class="' + iconClass + '"></i>' +
'</div>' +
'<div class="alert-level-text ' + levelClass + '">' + levelText[a.level] + '</div>' +
'<div class="alert-message">' + a.message + '</div>';
// 信息网格 2列
document.getElementById('infoGrid').innerHTML =
'<div class="info-grid-item">' +
'<div class="info-grid-label">设备名称</div>' +
'<div class="info-grid-value">' + a.deviceName + '</div>' +
'</div>' +
'<div class="info-grid-item">' +
'<div class="info-grid-label">发生时间</div>' +
'<div class="info-grid-value">' + a.createdAt + '</div>' +
'</div>' +
'<div class="info-grid-item">' +
'<div class="info-grid-label">触发指标</div>' +
'<div class="info-grid-value">' + a.metric + '</div>' +
'</div>' +
'<div class="info-grid-item">' +
'<div class="info-grid-label">当前值</div>' +
'<div class="info-grid-value">' + (a.value || '-') + '</div>' +
'</div>';
// 处理操作区
if (a.status === 'unread') {
document.getElementById('actionArea').innerHTML =
'<div class="weui-btn-area">' +
'<a href="javascript:;" class="weui-btn weui-btn_danger" onclick="handleAlert(\'handled\')">' +
'<i class="ri-check-line"></i> 确认处理' +
'</a>' +
'<a href="javascript:;" class="weui-btn weui-btn_plain-primary" onclick="handleAlert(\'ignored\')">' +
'<i class="ri-forbid-line"></i> 忽略' +
'</a>' +
'</div>' +
'<div class="weui-cells__title">处理备注</div>' +
'<div class="weui-cells weui-cells_form">' +
'<div class="weui-cell">' +
'<div class="weui-cell__bd">' +
'<textarea class="weui-textarea" id="handleNote" placeholder="选填" rows="3"></textarea>' +
'</div>' +
'</div>' +
'</div>';
} else {
var actionText = a.status === 'handled' ? '处理' : '忽略';
var noteText = a.handleNote ? '' + a.handleNote : '';
document.getElementById('actionArea').innerHTML =
'<div class="weui-form-preview">' +
'<div class="weui-form-preview__bd">' +
'<div class="weui-form-preview__item">' +
'<label class="weui-form-preview__label">处理结果</label>' +
'<span class="weui-form-preview__value">' + actionText + noteText + '</span>' +
'</div>' +
'</div>' +
'</div>';
}
}
function handleAlert(action) {
var note = document.getElementById('handleNote');
var noteValue = note ? note.value : '';
var res = apiHandleAlert(alertId, action, noteValue);
if (res.code === 0) {
showToast('操作成功');
setTimeout(function() {
location.href = 'alerts.html';
}, 500);
} else {
showToast(res.message || '操作失败');
}
}
loadAlert();
</script>
</body>
</html>