|
|
@@ -0,0 +1,297 @@
|
|
|
+# 数据可视化配置页面 · 产品需求与设计说明
|
|
|
+
|
|
|
+> 所属项目:实验室安全智能监测与管控中心
|
|
|
+> 页面文件:`prototype-ui/admin-9grid-config.html`
|
|
|
+> 设计分辨率:1920×1080px(屏幕等比缩放自适应)
|
|
|
+> 设计风格:亮色企业管理后台(Ant Design 规范)
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 一、页面定位
|
|
|
+
|
|
|
+本页面为大屏「默认」视图中固定监控宫格的**后台配置入口**,供系统管理员分别配置「安全大厦」(9路,3×3)和「基地」(4路,2×2)两套监控方案的摄像头槽位。配置保存后可选择是否立即生效并推送至大屏端。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 二、整体布局
|
|
|
+
|
|
|
+```
|
|
|
+┌─────────────────────────── 顶部标题栏 (56px) ───────────────────────────┐
|
|
|
+│ Logo │ ← 返回 │ 首页 / 基础结构管理* / 实验室管理 / 系统配置 / 数据报表 │ 右侧操作区 │
|
|
|
+├──────────┬────────────────────┬──────────────────────────────────────────┤
|
|
|
+│ 左导航菜单│ 摄像头库侧边栏 │ 槽位配置区(选项卡切换) │
|
|
|
+│ 282px │ 322px │ flex:1 │
|
|
|
+│ │ │ │
|
|
|
+│ 基础结构 │ [搜索框] │ 顶部:[标题栏] ‖ 右侧 [安全大厦][基地] 标签 │
|
|
|
+│ 管理 │ [单位筛选] │ │
|
|
|
+│ > 数据可 │ 摄像头树形列表 │ 安全大厦模式 (3×3): │
|
|
|
+│ 视化配置│ (按楼栋/楼层/房间) │ ┌──┬──┬──┐ │
|
|
|
+│ 实验室管理│ │ │1 │2 │3 │ │
|
|
|
+│ 系统设置 │ │ ├──┼──┼──┤ │
|
|
|
+│ │ │ │4 │5 │6 │ │
|
|
|
+│ │ │ ├──┼──┼──┤ │
|
|
|
+│ │ │ │7 │8 │9 │ │
|
|
|
+│ │ │ └──┴──┴──┘ │
|
|
|
+│ │ │ │
|
|
|
+│ │ │ 基地模式 (2×2): │
|
|
|
+│ │ │ ┌──┬──┐ │
|
|
|
+│ │ │ │1 │2 │ │
|
|
|
+│ │ │ ├──┼──┤ │
|
|
|
+│ │ │ │3 │4 │ │
|
|
|
+│ │ │ └──┴──┘ │
|
|
|
+│ │ │ │
|
|
|
+│ │ │ [配置状态统计栏] │
|
|
|
+├──────────┴────────────────────┴──────────────────────────────────────────┤
|
|
|
+│ 底部操作栏:系统状态 | 保存时间 | 有效性 ‖ 立即生效 开关 | 重置/预览/保存 │
|
|
|
+└──────────────────────────────────────────────────────────────────────────┘
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 三、顶部标题栏
|
|
|
+
|
|
|
+| 区域 | 内容 |
|
|
|
+|------|------|
|
|
|
+| Logo | 圆形蓝色图标「安」+ 系统名称「安科院管理后台」+ 副标题 |
|
|
|
+| 返回按钮 | `← 返回`,调用 `history.back()`,hover 变蓝 |
|
|
|
+| 横向导航 | 首页 / **基础结构管理**(激活)/ 实验室管理 / 系统配置 / 数据报表 |
|
|
|
+| 右侧操作 | 查看大屏图标按钮(新标签打开 `index-v2.html`)、通知铃铛、分割线、用户信息(姓名+角色) |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 四、左导航菜单(282px)
|
|
|
+
|
|
|
+分三个分组,带分组标题:
|
|
|
+
|
|
|
+**基础结构管理**
|
|
|
+- 🖥️ 实时监控大屏
|
|
|
+- 📺 **数据可视化配置**(**当前页,激活高亮,蓝色左边框**)
|
|
|
+- 📷 摄像头管理(角标显示数量)
|
|
|
+- 🗺️ 点位地图
|
|
|
+
|
|
|
+**实验室管理**
|
|
|
+- 🔬 实验室列表(角标 128)
|
|
|
+- 📊 安全分级
|
|
|
+- 👥 人员管理
|
|
|
+- ⚗️ 化学品管理
|
|
|
+
|
|
|
+**系统设置**
|
|
|
+- 👤 用户管理
|
|
|
+- 🔔 预警配置
|
|
|
+- 📋 操作日志
|
|
|
+
|
|
|
+> 激活项样式:蓝色左边框 `border-left: 3px solid #1890ff`,背景 `#e6f7ff`,文字蓝色加粗。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 五、面包屑导航
|
|
|
+
|
|
|
+顶部内容区面包屑路径:`基础结构管理 / 数据可视化配置`
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 六、摄像头库侧边栏(322px)
|
|
|
+
|
|
|
+### 6.1 顶部信息区
|
|
|
+- 标题「摄像头库」+ 数量角标(共 N 台)
|
|
|
+- 三个统计芯片:在线数(绿色)/ 离线数(红色)/ 总计(蓝色)
|
|
|
+
|
|
|
+### 6.2 搜索与筛选
|
|
|
+- 搜索框:带搜索图标,实时过滤摄像头名称/房间号
|
|
|
+- 下拉筛选:按二级单位(化学/物理/生物/材料/工程研究所)筛选
|
|
|
+
|
|
|
+### 6.3 摄像头树形列表
|
|
|
+结构层级:**楼栋 → 楼层 → 摄像头**,前两级可展开/折叠。
|
|
|
+
|
|
|
+每条摄像头条目显示:
|
|
|
+- `⠿` 拖拽手柄
|
|
|
+- 圆点状态(绿=在线 / 红=离线)
|
|
|
+- 摄像头名称(超长省略)
|
|
|
+- 类型标签(等宽 38px):
|
|
|
+ - **AI**(绿色):AI 智能摄像头
|
|
|
+ - **已配置**(绿色):已分配至某槽位
|
|
|
+ - 普通摄像头不显示标签
|
|
|
+
|
|
|
+> ⚠️ 摄像头条目**不显示**悬浮预览浮窗,鼠标经过无弹层。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 七、槽位配置区
|
|
|
+
|
|
|
+### 7.1 选项卡(内容区顶部右侧)
|
|
|
+
|
|
|
+配置区顶部操作栏右侧提供两个标签按钮,切换当前配置的方案:
|
|
|
+
|
|
|
+| 标签 | 说明 |
|
|
|
+|------|------|
|
|
|
+| **安全大厦**(默认激活) | 9路监控,3×3 宫格布局 |
|
|
|
+| **基地** | 4路监控,2×2 宫格布局 |
|
|
|
+
|
|
|
+- 两套方案的槽位数据**完全独立**,切换标签不影响另一套方案
|
|
|
+- 切换标签时同步更新卡片标题、宫格布局及统计栏
|
|
|
+- 当前激活标签:蓝色填充背景 + 白色文字;未激活:灰白底色
|
|
|
+
|
|
|
+### 7.2 卡片标题栏
|
|
|
+
|
|
|
+从左到右单行排列:
|
|
|
+
|
|
|
+```
|
|
|
+📺 安全大厦监控配置 | 槽位1须为 AI 摄像头 · 保存后即时生效 | ● 大屏实时同步
|
|
|
+ [右对齐]
|
|
|
+💡 点选摄像头→点击槽位,或直接拖拽 [🗑 清空全部]
|
|
|
+```
|
|
|
+
|
|
|
+- 安全大厦模式:卡片标题显示「安全大厦监控配置」
|
|
|
+- 基地模式:卡片标题显示「基地监控配置」
|
|
|
+- 快捷操作区**仅保留** 🗑 清空全部 按钮
|
|
|
+
|
|
|
+### 7.3 宫格槽位网格
|
|
|
+
|
|
|
+**安全大厦模式(gridMode = 9)**:3×3 共 9 个槽位
|
|
|
+**基地模式(gridMode = 4)**:2×2 共 4 个槽位
|
|
|
+
|
|
|
+每个槽位包含:
|
|
|
+- 左上角编号徽标(选中时变蓝填充)
|
|
|
+- 右上角:AI 标签(绿色)/ "须AI" 警告标签(橙色)/ REC 录制标签(红色闪烁)/ 离线标签
|
|
|
+- Canvas 模拟监控画面(深色背景 `#040d1e`)
|
|
|
+- 底部:摄像头名称(左)+ 房间号·楼层(右)
|
|
|
+- 悬停显示操作浮层:**替换** / **清除(红色)**
|
|
|
+
|
|
|
+**槽位 1 特殊规则(两种模式共同):**
|
|
|
+- 强制要求分配 AI 智能摄像头
|
|
|
+- 已正确配置:绿色边框
|
|
|
+- 未配置或配置非 AI:橙色警告边框 + "须AI" 标签
|
|
|
+- 仅槽位 1 显示危险行为检测框(红色动画虚框 + "危险行为检测"标签)
|
|
|
+
|
|
|
+**空槽位:**
|
|
|
+- 槽位 1:显示 🤖 + "请分配 AI 摄像头"
|
|
|
+- 其他:显示 📷 + "点击选择摄像头"
|
|
|
+- 均显示「或从左侧拖拽至此」提示
|
|
|
+
|
|
|
+### 7.4 分配交互方式
|
|
|
+
|
|
|
+| 方式 | 操作描述 |
|
|
|
+|------|----------|
|
|
|
+| 点选分配 | 点击左侧摄像头条目 → 再点击目标槽位 |
|
|
|
+| 先选槽后选摄像头 | 点击槽位激活 → 再点击摄像头条目 |
|
|
|
+| 拖拽(从树)| 从摄像头库拖拽条目至目标槽位 |
|
|
|
+| 槽位互换 | 从已配置槽位拖拽至另一槽位 |
|
|
|
+| 替换 | 悬停槽位 → 点击「替换」→ 再选摄像头 |
|
|
|
+| 清除 | 悬停槽位 → 点击「清除」 |
|
|
|
+
|
|
|
+### 7.5 配置规则(强制约束)
|
|
|
+1. **槽位 1 必须分配 AI 摄像头**(拖拽互换时同样校验,违规自动回滚)
|
|
|
+2. 同一摄像头不可重复分配至多个槽位(分配时自动从原槽位移除)
|
|
|
+3. 离线摄像头可分配,但显示占位画面
|
|
|
+
|
|
|
+### 7.6 状态统计栏(卡片底部)
|
|
|
+
|
|
|
+| 字段 | 说明 |
|
|
|
+|------|------|
|
|
|
+| 已配置 | X / N(满配绿色,否则橙色;N=9 或 4 取决于当前模式)|
|
|
|
+| AI槽位 | 槽位1是否满足约束(✓ 绿 / ✗ 红)|
|
|
|
+| 待配置 | 空槽位数(0 绿色,否则橙色)|
|
|
|
+| 在线率 | 已配置中在线摄像头占比 |
|
|
|
+| 右侧约束徽章 | 全局 AI 约束状态(满足绿色 / 不满足红色闪烁)|
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 八、底部操作栏
|
|
|
+
|
|
|
+**左侧状态信息:**
|
|
|
+- `● 系统运行正常`(绿色脉冲点)
|
|
|
+- `上次保存:HH:MM:SS`(保存后更新)
|
|
|
+- 配置有效性描述(AI约束满足 + 槽位完整度)
|
|
|
+
|
|
|
+**右侧操作区(从左到右):**
|
|
|
+
|
|
|
+| 控件 | 类型 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| 立即生效 | Toggle 开关(默认开启) | 控制保存时是否同步推送大屏;开启=蓝色,关闭=灰色 |
|
|
|
+| `重置` | 默认样式按钮 | 将当前标签的配置恢复至最近一次保存的快照 |
|
|
|
+| `预览效果` | 描边蓝色按钮 | 弹出模拟大屏宫格预览弹窗 |
|
|
|
+| `💾 保存` | 蓝色主按钮 | 保存配置;若「立即生效」开启则同时推送大屏,否则仅保存草稿 |
|
|
|
+
|
|
|
+> **立即生效 Toggle 逻辑:**
|
|
|
+> - 开关开启(checked)→ 保存时 toast 提示「已保存并生效,大屏即时更新」
|
|
|
+> - 开关关闭(unchecked)→ 保存时 toast 提示「草稿已保存」
|
|
|
+> - `doSave()` 读取 `#apply-toggle` checkbox 的 `.checked` 状态决定行为,无参数传入
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 九、预览效果弹窗
|
|
|
+
|
|
|
+点击「预览效果」后弹出全屏遮罩弹窗,内容:
|
|
|
+- 标题:「📺 大屏监控宫格预览」+ 副标题(根据当前 gridMode 显示对应格数)
|
|
|
+- 深色背景 `#1a1a2e` 内展示对应 Canvas 模拟监控网格
|
|
|
+- 每格显示:编号、摄像头名称、AI 标签(仅 AI 摄像头)
|
|
|
+- 底部按钮:关闭 / **确认并保存生效**(强制打开「立即生效」开关后调用 `doSave()`)
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 十、设计规范
|
|
|
+
|
|
|
+| 属性 | 值 |
|
|
|
+|------|-----|
|
|
|
+| 设计分辨率 | 1920×1080px |
|
|
|
+| 缩放方式 | `transform: scale()` 等比缩放居中,响应窗口 resize |
|
|
|
+| 主色 | `#1890ff` |
|
|
|
+| 成功色 | `#52c41a` |
|
|
|
+| 警告色 | `#faad14` |
|
|
|
+| 错误色 | `#ff4d4f` |
|
|
|
+| 主要文字 | `#262626` |
|
|
|
+| 次要文字 | `#595959` / `#8c8c8c` |
|
|
|
+| 页面背景 | `#f5f7fa` |
|
|
|
+| 卡片背景 | `#ffffff` |
|
|
|
+| 边框色 | `#e8e8e8` |
|
|
|
+| 圆角 | `8px`(卡片)/ `4px`(按钮/输入框)|
|
|
|
+| 字体 | `-apple-system, 'PingFang SC', 'Microsoft YaHei', sans-serif` |
|
|
|
+| 图表库 | 无(Canvas 2D 模拟)|
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 十一、数据结构
|
|
|
+
|
|
|
+### 摄像头对象 `CAM_DB[]`
|
|
|
+```javascript
|
|
|
+{
|
|
|
+ id: 'A301-1', // 唯一ID
|
|
|
+ name: 'A301 有机合成室 #1', // 显示名称
|
|
|
+ code: 'A301', // 房间号
|
|
|
+ labName: '有机合成实验室', // 实验室名称
|
|
|
+ floor: '3层', // 楼层
|
|
|
+ building: '综合实验楼A', // 楼栋
|
|
|
+ unit: '化学研究所', // 二级单位
|
|
|
+ type: 'ai' | 'normal', // 摄像头类型
|
|
|
+ status: 'online' | 'offline' // 在线状态
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 槽位对象 `slots9[]` / `slots4[]`
|
|
|
+```javascript
|
|
|
+{
|
|
|
+ pos: 1, // 槽位编号(安全大厦: 1~9,基地: 1~4)
|
|
|
+ camId: null, // 已分配摄像头ID(null=空)
|
|
|
+ aiRequired: true // 是否要求AI摄像头(仅pos=1为true)
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 双模式独立状态
|
|
|
+```javascript
|
|
|
+let slots9 = Array(9) // 安全大厦槽位数组(独立)
|
|
|
+let slots4 = Array(4) // 基地槽位数组(独立)
|
|
|
+let savedSnapshot9 = [] // 安全大厦最近保存快照
|
|
|
+let savedSnapshot4 = [] // 基地最近保存快照
|
|
|
+let gridMode = 9 // 当前激活模式(9 或 4)
|
|
|
+let slots = slots9 // 运行时指针,switchGridMode() 切换
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 十二、待扩展功能(预留)
|
|
|
+
|
|
|
+- [ ] 与后端 API 对接:摄像头列表拉取、配置读取/写入
|
|
|
+- [ ] 配置历史记录查询与回滚
|
|
|
+- [ ] 摄像头实时在线状态 WebSocket 推送
|
|
|
+- [ ] 多套宫格方案管理(草稿/发布)
|
|
|
+- [ ] 操作权限控制(仅指定角色可保存生效)
|