Files
smart-project/docs/h5.md
Jesxion cb0ef8c30c docs: 全面审阅修复
- architecture.md: 全面重写,对齐 Node.js+MySQL 技术栈,
  新增三个模块(隐患随手拍/施工日志/AI分析)到模块列表和架构图,
  更新数据流、租户隔离模型、部署架构、安全设计
- h5.md: 补充 6 个新页面 wireframe(3.7~3.14),
  更新页面清单(15个页面),API endpoint 前缀 /api → /v1,
  更新已知待确认项为已确认状态
- offline.md: 补充 hazards/construction_logs/ai_analyses 三个
  IndexedDB store,更新刷新策略表,
  补充 6 种离线操作类型(action 类型表)
- SPEC.md: 状态升级为"设计完成",版本升至 v0.2.1,
  所有待确认项均已确认(部署地址/推送凭证/OSS路径/JWT/台账)
2026-04-14 16:53:33 +08:00

30 KiB
Raw Permalink Blame History

H5 页面结构与交互设计

状态: 设计中


1. 技术选型

项目 选型
页面渲染 原生 HTML5 + CSS3 + Vanilla JS
UI 框架 无,响应式布局手工实现
图表 EChartsCDN 引入)
字体图标 阿里巴巴矢量图标库iconfont
构建 无构建步骤,单 HTML 文件按模块拆分

设计原则

  • 移动端优先(适配 375px ~ 414px 宽度)
  • 低依赖,不依赖任何 JS 框架
  • 离线可缓存核心资产Service Worker

2. 页面清单

页面 路由 说明
登录 /login.html 账号密码登录
首页仪表盘 /index.html 设备统计、预警统计、快捷入口
设备列表 /devices.html 塔吊/升降机分类列表
设备详情 /device.html?id=xxx 实时数据 + 历史曲线
预警列表 /alerts.html 预警推送列表
预警详情 /alert.html?id=xxx 预警详情 + 处理操作
隐患随手拍 /report.html 拍照 + 表单提交
隐患列表 /reports.html 项目内隐患列表,状态/类别/严重程度筛选
隐患详情 /report.html?id=xxx 隐患详情 + 认领/处理操作
日志列表 /logs.html 列表 + 日期筛选
写日志 /log.html 新建日志(含照片上传)
日志详情 /log.html?id=xxx 查看日志详情
AI 分析列表 /ai-analyses.html AI 分析结果列表,类型筛选
AI 分析详情 /ai-analysis.html?id=xxx 分析详情 + 建议措施
个人中心 /profile.html 个人信息、设置

3. 页面结构

3.1 首页仪表盘 /index.html

┌──────────────────────────────────────┐
│  ☰  郑州智慧工地         [👤 个人中心] │  ← 顶栏
├──────────────────────────────────────┤
│                                      │
│   ┌────────────┐ ┌────────────┐      │
│   │  塔吊      │ │  升降机     │      │  ← 设备数量卡片
│   │  12 台    │ │  8 台      │      │
│   │  12 在线   │ │  8 在线     │      │
│   └────────────┘ └────────────┘      │
│                                      │
│   ┌──────────────────────────────┐   │
│   │  今日预警                    │   │  ← 预警统计卡片
│   │  危险  2    警告  5         │   │
│   └──────────────────────────────┘   │
│                                      │
│   最新预警                            │
│   ┌──────────────────────────────┐   │
│   │ 🔴 1号塔吊 载重超限           │   │  ← 预警列表最新5条
│   │    10:25                     │   │
│   ├──────────────────────────────┤   │
│   │ 🟡 3号升降机 风速过大        │   │
│   │    10:20                     │   │
│   └──────────────────────────────┘   │
│                                      │
│   [查看全部预警]                      │
│                                      │
└──────────────────────────────────────┘

3.2 设备列表 /devices.html

┌──────────────────────────────────────┐
│  ☰  设备列表           [筛选 ▼]       │
├──────────────────────────────────────┤
│  [全部] [塔吊] [升降机]              │  ← Tab 切换
├──────────────────────────────────────┤
│                                      │
│  ┌──────────────────────────────┐   │
│  │ 🏗️ 1号塔吊   🟢 在线          │   │  ← 设备卡片
│  │     QTZ500 | A区施工现场      │   │
│  │     最后在线: 10:30           │   │
│  └──────────────────────────────┘   │
│                                      │
│  ┌──────────────────────────────┐   │
│  │ 🏗️ 2号塔吊   ⚫ 离线          │   │
│  │     QTZ500 | B区施工现场      │   │
│  │     最后离线: 04-13 18:00    │   │
│  └──────────────────────────────┘   │
│                                      │
└──────────────────────────────────────┘

3.3 设备详情 /device.html

┌──────────────────────────────────────┐
│  ← 返回     1号塔吊                  │
├──────────────────────────────────────┤
│                                      │
│   ┌──────────────────────────────┐  │
│   │      实时数据面板              │  │  ← 关键指标卡片
│   │  载重    幅度    起升高度      │  │
│   │  45.2kN  30.5m    85.0m       │  │
│   │                               │  │
│   │  风速    力矩    回转角度      │  │
│   │  5.2m/s  320.5  120.5°       │  │
│   │                               │  │
│   │  ⚠️ 载重超限                  │  │  ← 告警状态
│   └──────────────────────────────┘  │
│                                      │
│   历史趋势最近24小时             │
│   ┌──────────────────────────────┐  │
│   │      📈 ECharts 折线图        │  │  ← ECharts 图表
│   │   载重 / 幅度 / 风速 曲线     │  │
│   └──────────────────────────────┘  │
│                                      │
│   [ 刷新 ]                           │
│                                      │
└──────────────────────────────────────┘

3.4 预警列表 /alerts.html

┌──────────────────────────────────────┐
│  预警中心                   [筛选 ▼]  │
├──────────────────────────────────────┤
│  [全部] [危险] [警告] [已处理]        │  ← Tab 筛选
├──────────────────────────────────────┤
│                                      │
│  ┌──────────────────────────────┐   │
│  │ 🔴 载重超限                   │   │  ← 危险预警(红色)
│  │ 1号塔吊 | 2026-04-14 10:25   │   │
│  │ 当前45.2kN超过额定40kN    │   │
│  └──────────────────────────────┘   │
│                                      │
│  ┌──────────────────────────────┐   │
│  │ 🟡 风速过大                  │   │  ← 警告预警(黄色)
│  │ 3号升降机 | 2026-04-14 10:20 │   │
│  │ 当前8.5m/s超过阈值6m/s    │   │
│  └──────────────────────────────┘   │
│                                      │
└──────────────────────────────────────┘

3.5 预警详情 /alert.html

┌──────────────────────────────────────┐
│  ← 返回     预警详情                  │
├──────────────────────────────────────┤
│                                      │
│   🔴 危险                            │
│                                      │
│   载重超限                           │
│                                      │
│   设备: 1号塔吊QTZ500            │
│   位置: A区施工现场                  │
│   时间: 2026-04-14 10:25:00         │
│                                      │
│   当前载重: 45.2 kN                 │
│   额定载重: 40.0 kN阈值         │
│   超限幅度: 13%                     │
│                                      │
│   ┌──────────────────────────────┐  │
│   │ 处理方式:                    │  │
│   │                              │  │
│   │  [确认处理]  [忽略]          │  │  ← 操作按钮
│   │                              │  │
│   │  备注: ____________________ │  │
│   │                              │  │
│   │         [提交]              │  │
│   └──────────────────────────────┘  │
│                                      │
└──────────────────────────────────────┘

3.6 个人中心 /profile.html

┌──────────────────────────────────────┐
│  ← 返回     个人中心                  │
├──────────────────────────────────────┤
│                                      │
│        ┌──────────┐                  │
│        │   👤     │                  │
│        └──────────┘                  │
│         张三(安全员)                │
│        138****1234                   │
│                                      │
│   ┌──────────────────────────────┐  │
│   │  📊 预警接收设置              │  │
│   │    [ ] 危险预警推送           │  │
│   │    [ ] 警告预警推送           │  │
│   │    [x] 短信通知               │  │
│   └──────────────────────────────┘  │
│                                      │
│   ┌──────────────────────────────┐  │
│   │  🔔 消息推送设置              │  │
│   └──────────────────────────────┘  │
│                                      │
│   ┌──────────────────────────────┐  │
│   │  🔐 修改密码                  │  │
│   └──────────────────────────────┘  │
│                                      │
│        [退出登录]                    │
│                                      │
└──────────────────────────────────────┘

3.7 隐患随手拍 /report.html

┌──────────────────────────────────────┐
│  ← 返回     上报隐患                  │
├──────────────────────────────────────┤
│                                      │
│   ┌──────────────────────────────┐  │
│   │                              │  │
│   │      📷 点击拍照              │  │  ← 拍照区
│   │      (最多 4 张)            │  │
│   └──────────────────────────────┘  │
│                                      │
│   隐患类别 *                          │
│   ┌──────────────────────────────┐  │
│   │  请选择类别              ▼   │  │  ← 下拉选择
│   └──────────────────────────────┘  │
│   高处坠落 / 物体打击 / 机械伤害 ...   │
│                                      │
│   严重程度 *                          │
│   ○ 一般   ○ 较大   ○ 重大           │  ← 单选
│                                      │
│   隐患描述 *                          │
│   ┌──────────────────────────────┐  │
│   │                              │  │
│   │                              │  │
│   └──────────────────────────────┘  │
│                                      │
│   GPS 坐标: 34.7652, 113.6241      │  │  ← 自动获取(可关闭)
│                                      │
│        [提交隐患]                    │
│                                      │
└──────────────────────────────────────┘

表单字段category / severity / description必填photos / gps_lat / gps_lng选填

3.8 隐患列表 /reports.html

┌──────────────────────────────────────┐
│  ☰  隐患随手拍           [筛选 ▼]     │
├──────────────────────────────────────┤
│  [全部] [待处理] [处理中] [已处理]    │  ← Tab 状态筛选
├──────────────────────────────────────┤
│                                      │
│  ┌──────────────────────────────┐  │
│  │ 🔴 一般  高处坠落             │  │  ← 红色=待处理
│  │ A区2楼临边防护缺失             │  │
│  │ 安全员 · 2小时前              │  │
│  └──────────────────────────────┘  │
│                                      │
│  ┌──────────────────────────────┐  │
│  │ 🟡 较大  机械伤害             │  │  ← 黄色=处理中
│  │ B区钢筋加工区缺防护罩         │  │
│  │ 安全负责人 · 昨天            │  │
│  └──────────────────────────────┘  │
│                                      │
│  ┌──────────────────────────────┐  │
│  │ 🟢 一般  物体打击             │  │  ← 绿色=已处理
│  │ C区材料堆放过高              │  │
│  │ 安全员 · 04-13              │  │
│  └──────────────────────────────┘  │
│                                      │
│   [+ 上报隐患]                      │  ← 悬浮按钮
└──────────────────────────────────────┘

3.9 隐患详情 /report.html?id=xxx

┌──────────────────────────────────────┐
│  ← 返回     隐患详情                  │
├──────────────────────────────────────┤
│                                      │
│  🔴 一般                            │
│  高处坠落                           │
│                                      │
│  A区2楼临边防护缺失                   │
│                                      │
│  ┌────┐ ┌────┐                      │
│  │ 📷 │ │ 📷 │                      │  ← 照片
│  └────┘ └────┘                      │
│                                      │
│  位置: 34.7652, 113.6241            │
│                                      │
│  ── 流程 ────────────────────────── │
│                                      │
│  上报  安全员 张三  04-14 14:30     │
│    ↓                                 │
│  认领  安全负责人 李四  04-14 15:00  │
│    ↓                                 │
│  处理  (待处理)                    │
│                                      │
│  ┌──────────────────────────────┐  │
│  │  处理说明(选填)             │  │
│  │  __________________________ │  │
│  │                              │  │
│  │  [认领]   [处理完成]         │  │  ← 根据状态显示
│  └──────────────────────────────┘  │
│                                      │
└──────────────────────────────────────┘

状态说明

  • pending(待处理):显示「认领」「处理完成」按钮
  • assigned(处理中):显示「处理完成」按钮,附处理说明输入框
  • resolved(已处理):显示处理结果,无操作按钮

3.10 施工日志 /log.html(新建)

┌──────────────────────────────────────┐
│  ← 返回     写日志                    │
├──────────────────────────────────────┤
│                                      │
│  日期 *                              │
│  ┌──────────────────────────────┐  │
│  │  2026-04-14                  │  │
│  └──────────────────────────────┘  │
│                                      │
│  施工部位 *                          │
│  ┌──────────────────────────────┐  │
│  │  A区主体结构                  │  │
│  └──────────────────────────────┘  │
│                                      │
│  作业内容 *                          │
│  ┌──────────────────────────────┐  │
│  │                              │  │
│  │                              │  │
│  └──────────────────────────────┘  │
│                                      │
│  人员出勤 *  28 人                   │
│                                      │
│  设备运行                            │
│  ☑ 塔吊      ☑ 升降机              │
│                                      │
│  现场照片                            │
│  ┌────┐ ┌────┐                      │
│  │ 📷 │ │  │                      │
│  └────┘ └────┘                      │
│                                      │
│  安全问题(选填)                    │
│  ┌──────────────────────────────┐  │
│  │                              │  │
│  └──────────────────────────────┘  │
│                                      │
│  备注(选填)                        │
│  ┌──────────────────────────────┐  │
│  │                              │  │
│  └──────────────────────────────┘  │
│                                      │
│        [提交日志]                    │
│                                      │
└──────────────────────────────────────┘

表单字段date / part / content / workers必填equipment / photos / safety_note / note选填

3.11 日志列表 /logs.html

┌──────────────────────────────────────┐
│  ☰  施工日志              [+ 写日志]  │
├──────────────────────────────────────┤
│  日期筛选                            │
│  [04-01 ─── ○ ─── 04-14]            │  ← 日期范围选择
├──────────────────────────────────────┤
│                                      │
│  ┌──────────────────────────────┐  │
│  │  04-14  A区主体结构           │  │
│  │  3层混凝土浇筑钢筋绑扎...  │  │
│  │  👷 28人  🏗️ 塔吊+升降机    │  │
│  │  安全员 张三 · 17:00        │  │
│  └──────────────────────────────┘  │
│                                      │
│  ┌──────────────────────────────┐  │
│  │  04-13  B区地下室            │  │
│  │  土方开挖,护坡施工...       │  │
│  │  👷 15人                    │  │
│  │  安全负责人 李四 · 16:30    │  │
│  └──────────────────────────────┘  │
│                                      │
└──────────────────────────────────────┘

3.12 日志详情 /log.html?id=xxx

┌──────────────────────────────────────┐
│  ← 返回     日志详情                  │
├──────────────────────────────────────┤
│                                      │
│  04-14  A区主体结构                   │
│                                      │
│  👷 28人   🏗️ 塔吊+升降机           │
│                                      │
│  作业内容                            │
│  3层混凝土浇筑钢筋绑扎模板安装    │
│                                      │
│  现场照片                            │
│  ┌────┐ ┌────┐ ┌────┐              │
│  │ 📷 │ │ 📷 │ │ 📷 │              │
│  └────┘ └────┘ └────┘              │
│                                      │
│  安全问题                            │
│  临边作业已挂安全网                  │
│                                      │
│  备注                                │
│  下午2点停电1小时                    │
│                                      │
│  ────────────────────────────────── │
│  安全员 张三  04-14 17:00           │
│                                      │
└──────────────────────────────────────┘

3.13 AI 分析列表 /ai-analyses.html

┌──────────────────────────────────────┐
│  ☰  AI 智能分析            [筛选 ▼]  │
├──────────────────────────────────────┤
│  [全部] [人员安全] [设备异常] [环境风险] │  ← Tab 类型筛选
├──────────────────────────────────────┤
│                                      │
│  ┌──────────────────────────────┐  │
│  │ 🤖 人员安全    置信度 92%     │  │
│  │ 1号塔吊                      │  │
│  │ 检测到人员靠近吊装区域...     │  │
│  │ 04-14 10:25                  │  │
│  └──────────────────────────────┘  │
│                                      │
│  ┌──────────────────────────────┐  │
│  │ ⚙️ 设备异常    置信度 87%     │  │
│  │ 2号升降机                    │  │
│  │ 载重超限预警...              │  │
│  │ 04-14 09:10                  │  │
│  └──────────────────────────────┘  │
│                                      │
└──────────────────────────────────────┘

3.14 AI 分析详情 /ai-analysis.html?id=xxx

┌──────────────────────────────────────┐
│  ← 返回     AI 分析详情               │
├──────────────────────────────────────┤
│                                      │
│  🤖 人员安全    置信度 92%           │
│                                      │
│  设备: 1号塔吊QTZ500            │
│  位置: A区施工现场                   │
│  时间: 04-14 10:25:00              │
│                                      │
│  ── AI 分析描述 ──────────────────── │
│  检测到人员靠近吊装区域,             │
│  触发区域入侵告警                    │
│                                      │
│  ── 建议措施 ────────────────────── │
│  建议立即疏散人员,后续加强          │
│  吊装区域围挡和警示标志              │
│                                      │
└──────────────────────────────────────┘

4. 页面交互

4.1 API 请求

所有页面通过 fetch 调用后台 API基础封装

// api.js
const API_BASE = '/v1';

async function api(endpoint, options = {}) {
  const token = localStorage.getItem('token');
  const resp = await fetch(API_BASE + endpoint, {
    ...options,
    headers: {
      'Content-Type': 'application/json',
      'Authorization': token ? `Bearer ${token}` : '',
      ...options.headers,
    }
  });
  if (resp.status === 401) {
    location.href = '/login.html';
    return;
  }
  const json = await resp.json();
  if (json.code !== 0) {
    alert(json.message);
    return;
  }
  return json.data;
}

4.2 数据加载流程

页面加载
    │
    ▼
检查登录状态localStorage.token
    │
    ├─ 无 token → 跳转 login.html
    │
    └─ 有 token → API 请求
              │
              ├─ 成功 → 渲染页面
              │
              └─ 失败 → 显示错误提示

4.3 实时数据刷新

  • 策略: 首次加载后,每 30 秒自动刷新实时数据
  • 实现: setInterval 定时调用 GET /devices/{id}/realtime
  • 优化: 仅在设备详情页刷新,其他页面用户主动下拉刷新

4.4 离线缓存

使用 Service Worker 缓存静态资源:

// 缓存策略Network First, Fallback to Cache
// 缓存内容HTML / CSS / JS / iconfont 字体

5. 响应式断点

断点 宽度 适配
mobile-s 320px ~ 374px 小屏手机
mobile-l 375px ~ 413px 主流手机
tablet 768px ~ 1023px 平板
desktop 1024px+ 桌面端

6. 待确认

  • 预警推送机制 → 轮询(前端每 30sSPEC.md 已确认)
  • 登录 Session 管理方案 → JWT 有效期 7 天SPEC.md 已确认)
  • 是否有扫码登录需求
  • 报表导出H5 直接拉 OSS 预签名 URL