diff --git a/h5/ai-analyses.html b/h5/ai-analyses.html
new file mode 100644
index 0000000..56904a0
--- /dev/null
+++ b/h5/ai-analyses.html
@@ -0,0 +1,284 @@
+
+
+
+
+
+ AI 智能分析 - 郑州智慧工地
+
+
+
+
+
+
+
+
+
+
+
+
+
+
全部
+
人员安全
+
设备异常
+
环境风险
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/h5/ai-analysis.html b/h5/ai-analysis.html
new file mode 100644
index 0000000..09f1e07
--- /dev/null
+++ b/h5/ai-analysis.html
@@ -0,0 +1,279 @@
+
+
+
+
+
+ AI 分析详情 - 郑州智慧工地
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/h5/alerts.html b/h5/alerts.html
index 8aad5cd..fa0bdaa 100644
--- a/h5/alerts.html
+++ b/h5/alerts.html
@@ -33,31 +33,23 @@
-
-
diff --git a/h5/device.html b/h5/device.html
index 910bf76..ce4d9be 100644
--- a/h5/device.html
+++ b/h5/device.html
@@ -69,31 +69,23 @@
-
-
diff --git a/h5/devices.html b/h5/devices.html
index e16aa41..cba0638 100644
--- a/h5/devices.html
+++ b/h5/devices.html
@@ -43,9 +43,9 @@
设备
-
-
- 随手拍
+
+
+ 随手拍
diff --git a/h5/index.html b/h5/index.html
index 81fc3a8..8955227 100644
--- a/h5/index.html
+++ b/h5/index.html
@@ -77,31 +77,23 @@
-
-
diff --git a/h5/js/api.js b/h5/js/api.js
index 92aac9e..c474ada 100644
--- a/h5/js/api.js
+++ b/h5/js/api.js
@@ -113,6 +113,16 @@ function apiGetReports() {
});
}
+// 获取随手拍详情
+function apiGetReportDetail(id) {
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ const item = MOCK_REPORTS.find(r => r.id === id);
+ resolve({ code: 0, data: item });
+ }, 200);
+ });
+}
+
// 获取施工日志列表
function apiGetLogs() {
return new Promise((resolve) => {
@@ -152,3 +162,26 @@ function apiGetUploadToken(filename, contentType) {
}, 300);
});
}
+
+// 获取 AI 分析列表
+function apiGetAIAnalyses(params = {}) {
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ let items = [...MOCK_AI_ANALYSES];
+ if (params.type && params.type !== 'all') {
+ items = items.filter(a => a.analysisType === params.type);
+ }
+ resolve({ code: 0, data: { total: items.length, items } });
+ }, 300);
+ });
+}
+
+// 获取 AI 分析详情
+function apiGetAIAnalysisDetail(id) {
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ const item = MOCK_AI_ANALYSES.find(a => a.id === id);
+ resolve({ code: 0, data: item });
+ }, 200);
+ });
+}
diff --git a/h5/js/mock.js b/h5/js/mock.js
index 6779f3a..48a718b 100644
--- a/h5/js/mock.js
+++ b/h5/js/mock.js
@@ -315,15 +315,82 @@ function getUnreadAlertCount() {
}).length;
}
+// ==================== AI 智能分析数据 ====================
+const MOCK_AI_ANALYSES = [
+ {
+ id: 'ai001',
+ deviceId: 'tc001',
+ deviceName: '1号塔吊',
+ deviceType: 'tower_crane',
+ analysisType: 'person_safety',
+ confidence: 0.92,
+ description: '检测到人员靠近吊装区域,触发区域入侵告警',
+ measures: '建议立即疏散人员,后续加强吊装区域围挡和警示标志',
+ triggeredAt: '2026-04-14 10:25:00'
+ },
+ {
+ id: 'ai002',
+ deviceId: 'el001',
+ deviceName: '1号升降机',
+ deviceType: 'elevator',
+ analysisType: 'equipment_anomaly',
+ confidence: 0.87,
+ description: '载重超限预警,当前载重1.8吨,额定载重1.5吨',
+ measures: '建议减少载重后再进行升降操作',
+ triggeredAt: '2026-04-14 09:10:00'
+ },
+ {
+ id: 'ai003',
+ deviceId: 'tc002',
+ deviceName: '2号塔吊',
+ deviceType: 'tower_crane',
+ analysisType: 'environment_risk',
+ confidence: 0.95,
+ description: '风速持续超过安全阈值,当前风速8.2m/s,安全阈值6.0m/s',
+ measures: '建议停止高空作业,落下吊臂',
+ triggeredAt: '2026-04-13 15:40:00'
+ },
+ {
+ id: 'ai004',
+ deviceId: 'el002',
+ deviceName: '2号升降机',
+ deviceType: 'elevator',
+ analysisType: 'person_safety',
+ confidence: 0.78,
+ description: '检测到升降机运行中门未关闭,存在人员坠落风险',
+ measures: '建议立即检查门限位开关',
+ triggeredAt: '2026-04-12 14:20:00'
+ }
+];
+
+// 辅助函数:根据分析类型获取标签和图标
+function getAnalysisTypeInfo(type) {
+ const map = {
+ 'person_safety': { label: '人员安全', icon: 'ri-user-heart-line', colorClass: 'danger' },
+ 'equipment_anomaly': { label: '设备异常', icon: 'ri-settings-3-line', colorClass: 'warning' },
+ 'environment_risk': { label: '环境风险', icon: 'ri-windy-line', colorClass: 'warning' },
+ 'other': { label: '其他', icon: 'ri-alert-line', colorClass: 'muted' }
+ };
+ return map[type] || map['other'];
+}
+
+// 辅助函数:根据ID获取AI分析
+function getAIAnalysisById(id) {
+ return MOCK_AI_ANALYSES.find(a => a.id === id);
+}
+
// 导出全局变量和函数
window.MOCK_DEVICES = MOCK_DEVICES;
window.MOCK_REALTIME = MOCK_REALTIME;
window.MOCK_ALERTS = MOCK_ALERTS;
window.MOCK_REPORTS = MOCK_REPORTS;
window.MOCK_LOGS = MOCK_LOGS;
+window.MOCK_AI_ANALYSES = MOCK_AI_ANALYSES;
window.MOCK_USER = MOCK_USER;
window.getDeviceById = getDeviceById;
window.getAlertById = getAlertById;
window.getRealtimeById = getRealtimeById;
window.getOnlineDevices = getOnlineDevices;
window.getUnreadAlertCount = getUnreadAlertCount;
+window.getAIAnalysisById = getAIAnalysisById;
+window.getAnalysisTypeInfo = getAnalysisTypeInfo;
diff --git a/h5/log.html b/h5/log.html
index e4f9ef6..ffcd255 100644
--- a/h5/log.html
+++ b/h5/log.html
@@ -121,31 +121,23 @@
-
-
diff --git a/h5/logs.html b/h5/logs.html
index 5611122..8280551 100644
--- a/h5/logs.html
+++ b/h5/logs.html
@@ -28,31 +28,23 @@
-
-
diff --git a/h5/report-detail.html b/h5/report-detail.html
new file mode 100644
index 0000000..0196e5d
--- /dev/null
+++ b/h5/report-detail.html
@@ -0,0 +1,549 @@
+
+
+
+
+
+ 隐患详情 - 郑州智慧工地
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/h5/reports.html b/h5/reports.html
new file mode 100644
index 0000000..26afc10
--- /dev/null
+++ b/h5/reports.html
@@ -0,0 +1,350 @@
+
+
+
+
+
+ 隐患随手拍 - 郑州智慧工地
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+