Skip to content

导航与界面布局

Admin 侧边栏导航

EcoCtrl 提供两个前端入口——Admin 管理后台Web 3D 驾驶舱——它们的导航逻辑和页面布局各有不同。本文将系统性地介绍这两个入口的界面结构,帮助你快速找到所需功能。


Admin 导航架构

Admin 管理后台采用 左侧可折叠侧边栏 + 内容区 的两栏布局。侧边栏是主要的导航工具,所有顶级功能模块都在这里以 Tab 形式列出。

侧边栏布局

侧边栏有两种状态:

状态宽度说明
展开240px显示图标 + 文字标签,适合大屏幕操作
折叠64px仅显示图标,鼠标悬停时弹出文字提示(Tooltip)

侧边栏底部有一个折叠/展开切换按钮:

  • 展开状态下,按钮显示为向左箭头(ChevronLeft),点击后折叠。
  • 折叠状态下,按钮显示为向右箭头(ChevronRight),悬停在底部区域时浮现,点击后展开。也可直接点击顶部品牌区域展开。

侧边栏折叠状态会自动保存,刷新页面后保持之前的折叠/展开设置。

顶级导航 Tab

侧边栏共列出 11 个顶级 Tab,按功能领域组织如下(列出顺序即侧边栏显示顺序):

Tab图标说明
管理总览LayoutDashboard平台核心仪表盘,展示关键指标和实时状态
账户控制Users用户管理、角色权限、OAuth 绑定配置
数据模型Server管理数据模型(Schema)、业务对象和点位信息
大屏模型Box配置 3D 大屏的热点区域和标签(全屏沉浸模式)
逻辑控制Workflow可视化工作流编辑器与执行记录
报表管理FileBox报表模板、生成与导出管理
维保管理Wrench设备维保计划、工单与历史记录
故障管理AlertTriangle实时故障列表与故障统计分析
能耗管理Zap分区能耗概览、详细数据、统计报表与碳排放因子配置
高级管理Shield高级平台管理功能
系统配置Settings系统全局设置入口,内部包含个人信息与偏好设置子页面

当前 Tab 高亮

侧边栏中当前激活的 Tab 会有明显的视觉区分:

  • 左侧显示一条彩色竖条指示线。
  • 背景和文字颜色变化(半透明主色背景加主色文字)。
  • 图标略微放大,线条加粗。
  • 切换 Tab 时,指示线会以平滑动画过渡到新的位置。

状态持久化

当前激活的 Tab 通过全局状态管理(Zustand)持久化到浏览器的 localStorage,刷新页面或关闭浏览器后重新打开,都会停留在上次访问的 Tab 上,无需重新定位。


页面内子 Tab 切换

部分功能模块内部包含多个子页面。Admin 后台通过 子 Tab 栏 实现页面内的切换,子 Tab 栏位于页面顶部、面包屑/标题的右侧。

子 Tab 示例

父模块子 Tab
能耗管理分区总览 / 详细数据 / 统计报表 / 碳排放因子
逻辑控制工作流 / 执行记录
故障管理实时故障列表 / 故障统计分析
数据模型数据模型 / 业务对象 / 点位信息
大屏模型热点区域配置 / 标签配置

子 Tab 的持久化

每个模块的子 Tab 状态独立存储、互不干扰。切换模块后,子 Tab 的选择会被记住,再次回到该模块时,会自动定位到最后一次查看的子页面。例如:

  1. 在「能耗管理」中切换到「详细数据」子页。
  2. 切换到「故障管理」查看故障列表。
  3. 点击「能耗管理」返回,页面直接显示「详细数据」而不是默认的「分区总览」。

这种持久化同样通过 Zustand 存储到 localStorage,刷新或关闭浏览器后仍然保持。


界面布局特性

面包屑导航

页面顶部的面包屑组件显示当前所在的位置层级。以「个人信息」页面为例:

plaintext
首页 / 系统配置 / 个人信息

面包屑的特性:

  • 每个分段(除「首页」外)如果存在同级页面,会显示为下拉菜单,点击可快速跳转到同级页面。
  • 左侧扁平布局(手机等小屏幕)时,面包屑隐藏,改用页面标题展示。
  • 面包屑的显示/隐藏可以在「偏好设置」中切换。

页面头部

每个功能页面的头部区域包含:

  • 左侧:面包屑导航(大屏幕)或当前页面标题(小屏幕)。
  • 中侧:子 Tab 切换栏(如该模块有子页面)。
  • 右侧:全局搜索、主题切换(浅色/深色/跟随系统)、通知铃铛、用户头像与下拉菜单。

用户头像下拉菜单提供三个入口:

  • 个人信息:修改头像、用户名、邮箱等资料。
  • 偏好设置:调整主题、布局密度、字体大小、通知方式等。
  • 退出登录:清除当前会话。

全屏沉浸式页面

以下三个页面采用 全屏沉浸式布局,进入后会隐藏侧边栏和页面头部,独占整个浏览器视口,以获得最大的操作空间:

页面入口位置说明
大屏模型侧边栏「大屏模型」Tab全屏配置 3D 热点区域和标签,预览大屏效果
工作流画布逻辑控制 > 工作流详情可视化 DAG 工作流编辑器的全屏操作界面
日志查看器逻辑控制 > 执行记录 > 详情全屏查看工作流执行日志,支持日志流式滚动

在沉浸式页面的右上角通常有「退出全屏」或「返回」按钮,点击后恢复侧边栏和头部。

系统配置嵌套页面

「系统配置」不包含子 Tab,而是在其下以 独立页面 的方式管理两个子页面:

  • 个人信息/profile):修改用户头像、用户名、邮箱等账户资料。
  • 偏好设置/preferences):调整界面主题(浅色/深色/跟随系统)、布局密度(舒适/紧凑)、字体大小、桌面通知、告警音效、邮箱通知、侧边栏默认折叠状态、面包屑显示开关。

这两个页面不出现在侧边栏中,而是通过用户头像下拉菜单或系统配置内的链接跳转到达。

内容区布局分类

Admin 后台的内容区根据页面类型有两种布局方式:

布局模式适用的页面说明
居中定宽管理总览、账户控制、报表管理、维保管理内容在 1440px 最大宽度内居中显示,两侧留白,适合阅读型页面
全宽流动系统配置、偏好设置、个人信息、逻辑控制、数据模型、故障管理、能耗管理、高级管理内容区域填满屏幕宽度,适合数据密集和操作密集型页面

Web 3D 驾驶舱界面

Web 门户(/)以 3D 建筑场景为核心,提供沉浸式的可视化体验,界面构成与 Admin 后台有较大差异。

整体页面结构

Web 驾驶舱是一个 单页面应用,页面由三个视觉层级叠加构成:

  1. 全屏背景层:Babylon.js 3D 建筑场景,占据整个视口
  2. 覆盖层:Bento Grid 仪表盘组件(统计卡片、图表、列表等),悬浮在 3D 场景之上
  3. 浮动控件:导航栏(顶部 SSE 状态 + 时间)、相机控制按钮(右下侧浮动)、区域标签(3D 场景中悬浮)

顶部导航栏

导航栏固定在页面顶部(高度 56px),包含三个区域:

左侧:Logo 按钮。包含 EcoCtrl 品牌图标和文字,点击后跳转到 /settings 设置页。

中央:状态胶囊。显示以下信息:

  • SSE 连接状态指示器:一个彩色圆点,绿色(已连接)/ 琥珀色(重连中)/ 红色(已断开),旁边显示实时的连接状态。
  • 场地标识文字(如 "ECCTRL LOCATION")及 "MONITORING" 标签。

右侧:当前时间。24 小时制时间显示,下方配日期,每秒自动更新。

3D 场景与浮动相机控制

3D 建筑场景以全屏背景方式渲染(Babylon.js 引擎),覆盖整个浏览器视口。

场景上方浮动一组相机控制按钮,位于页面右下侧,纵向排列:

  • 全屏切换(最大化/最小化图标):进入或退出沉浸式全屏模式。
  • 放大+):推近相机,拉近视角。
  • 缩小-):拉远相机,扩大视野。
  • 复位:将相机恢复到默认位置和角度,同时清除选中的热点标签、退出全屏模式。

点击 3D 场景中的热点标签时,相机自动聚焦到该区域,左侧弹出 照明控制面板(宽度 320px),用于调整该区域的照明组状态。此时仪表盘组件自动淡出,相机控制按钮隐藏。

Bento Grid 仪表盘覆盖层

3D 场景之上覆盖有一层 Bento Grid 布局的仪表盘,以 16 列 x 8 行的 CSS 网格排列。每个网格单元放置一个数据可视化组件(能耗趋势图、设备状态、告警列表等)。

查看模式:组件按预设位置排列,鼠标悬停可查看详情。

编辑模式:点击页面底部的编辑工具栏可进入布局编辑:

  • 每个组件左上角出现拖拽手柄,可以自由拖动到其他位置。
  • 组件右下角可调整尺寸(宽度/高度)。
  • 点击组件上的眼睛图标可隐藏该组件,隐藏后的组件在编辑模式下显示为占位符。
  • 将组件拖到其他组件上方可交换二者位置。
  • 编辑完成后点击「完成」保存布局,或点击「取消」回退到之前的状态。

布局编辑支持自动保存到后端,每次修改会以去抖方式同步到服务端。

设置页

点击顶部导航栏的 Logo 或使用底部导航 Pill 中的「设置」按钮,可进入全屏设置页面(/settings),覆盖在 3D 场景之上。

设置页左侧是导航选项卡,右侧是滚动内容区,使用 Scroll Spy 技术自动高亮当前浏览的章节:

选项卡配置项
General语言、减少动效、加载动画开关、Screen Pet 主题、语音配置
Appearance自动旋转、热点标签显示、辉光效果、环境预设、相机设置
LayoutBento Grid 编辑入口、编辑超时自动退出延迟
Data数据刷新间隔、导航隐藏延迟、同步去抖间隔
Account登录/注销、用户信息展示

设置页右上角有「保存」和「重置」按钮,修改内容以去抖方式自动同步到服务端。

浮动 AI 助手

Screen Pet 是一个可拖拽的浮动角色,在所有页面或场景中都可见。点击它可以展开对话气泡,通过自然语言与平台 AI 交互,查询能耗数据、设备状态或执行简单的控制操作。


常见问题

问:侧边栏折叠后找不到某个功能?

鼠标悬停到对应的图标上,会弹出文字提示显示功能名称。如果仍不确定,可以点击底部的展开按钮将侧边栏恢复为完整显示。

问:子 Tab 的位置为什么会记住?

子 Tab 的选择会自动保存到浏览器本地存储。这是为了方便多模块之间的频繁切换,不需要每次进入模块后重新选择子页面。如需重置,清除浏览器站点数据即可。

问:为什么大屏模型页面没有侧边栏?

大屏模型、工作流画布和日志查看器是全屏沉浸式页面,为了最大化操作空间会自动隐藏侧边栏和顶部导航。使用页面内的返回按钮即可退出沉浸模式。

问:Web 驾驶舱可以匿名访问吗?

可以。Web 3D 驾驶舱支持匿名访问,公开仪表盘无需登录即可查看。如需使用更多功能或查看详细数据,可在设置页登录账户。

问:Bento Grid 布局能恢复默认吗?

可以。在编辑模式下点击「重置」按钮,即可将布局恢复到系统默认配置。

问:Web 驾驶舱的 SSE 连接断开怎么办?

当 SSE 连接断开时,顶部导航栏的状态指示器会变为红色。系统会自动尝试重连,状态指示器会变为琥珀色(重连中)。连接恢复后自动转为绿色。如长时间无法连接,请检查网络或联系管理员确认服务端状态。

基于 MIT 协议发布