ui 优化

This commit is contained in:
eafonyang
2026-07-14 18:56:13 +08:00
parent 4f10cc1648
commit 003b44e2bd
32 changed files with 1082 additions and 375 deletions
@@ -16,14 +16,14 @@
- [backend/src/utils/response.js](file://backend/src/utils/response.js)
- [backend/src/models/Model.js](file://backend/src/models/Model.js)
- [backend/src/models/Ota.js](file://backend/src/models/Ota.js)
- [frontend/src/views/toolbox/luxsin-controller/index.vue](file://frontend/src/views/toolbox/luxsin-controller/index.vue)
</cite>
## 更新摘要
**变更内容**
- 新增玻璃拟态视觉语言和设计令牌系统说明
- 更新首页组件的视觉样式实现细节
- 补充设计令牌在首页中的应用方式
- 增强响应式布局和用户体验优化章节
- 新增 Luxsin 控制器快捷入口链接,提供局域网设备数据同步的快速访问功能
- 更新快捷入口配置数组,增加工具箱功能模块
- 完善路由配置,支持新的工具页面导航
## 目录
1. [简介](#简介)
@@ -40,7 +40,7 @@
## 简介
本文件面向"首页仪表板"页面,系统性阐述其功能布局、数据展示机制、数据获取流程、响应式布局与样式定制、快捷入口配置与路由跳转、生命周期与错误处理、以及性能优化最佳实践。目标读者既包括前端开发者,也包括需要理解整体工作流的产品与运营人员。
**最新更新**:首页已全面升级至玻璃拟态视觉语言,采用统一的设计令牌系统和深色模式OLED优化,提供更现代的用户体验。
**最新更新**:首页已全面升级至玻璃拟态视觉语言,采用统一的设计令牌系统和深色模式OLED优化,提供更现代的用户体验。同时新增了 Luxsin 控制器快捷入口,为局域网设备数据同步提供了快速访问通道。
## 项目结构
首页位于前端单页应用中,采用 Vue 3 + Element Plus 组合,后端基于 Express + Sequelize 提供接口。首页通过 API 获取"今日新增"数据,并在页面上以卡片网格展示;同时提供快捷入口卡片,点击后通过路由跳转到相应功能模块。
@@ -58,34 +58,38 @@ G["router/index.js<br/>路由与鉴权守卫"]
H["utils/auth.js<br/>鉴权工具"]
I["utils/tabs.js<br/>标签页常量"]
J["styles/lux-theme.css<br/>设计令牌与玻璃拟态样式"]
K["toolbox/luxsin-controller/index.vue<br/>设备数据同步工具"]
end
subgraph "后端"
K["routes/dashboard.js<br/>GET /api/dashboard/today"]
L["utils/response.js<br/>统一响应结构"]
M["models/Model.js<br/>型号模型"]
N["models/Ota.js<br/>OTA模型"]
L["routes/dashboard.js<br/>GET /api/dashboard/today"]
M["utils/response.js<br/>统一响应结构"]
N["models/Model.js<br/>型号模型"]
O["models/Ota.js<br/>OTA模型"]
P["局域网设备<br/>dev/info.cgi"]
end
A --> B
B --> C
C --> D
D --> E
D --> J
D --> K
E --> F
F --> K
F --> L
G --> H
K --> L
K --> M
K --> N
L --> M
L --> N
L --> O
K --> P
```
**图表来源**
- [frontend/src/App.vue:1-30](file://frontend/src/App.vue#L1-L30)
- [frontend/src/layout/index.vue:1-338](file://frontend/src/layout/index.vue#L1-L338)
- [frontend/src/components/TabsView.vue:1-351](file://frontend/src/components/TabsView.vue#L1-L351)
- [frontend/src/views/home/index.vue:1-334](file://frontend/src/views/home/index.vue#L1-L334)
- [frontend/src/views/home/index.vue:1-335](file://frontend/src/views/home/index.vue#L1-L335)
- [frontend/src/api/dashboard.js:1-12](file://frontend/src/api/dashboard.js#L1-L12)
- [frontend/src/utils/request.js:1-72](file://frontend/src/utils/request.js#L1-L72)
- [frontend/src/router/index.js:1-91](file://frontend/src/router/index.js#L1-L91)
- [frontend/src/router/index.js:1-109](file://frontend/src/router/index.js#L1-L109)
- [frontend/src/utils/auth.js:1-99](file://frontend/src/utils/auth.js#L1-L99)
- [frontend/src/utils/tabs.js:1-9](file://frontend/src/utils/tabs.js#L1-L9)
- [frontend/src/styles/lux-theme.css:1-1259](file://frontend/src/styles/lux-theme.css#L1-L1259)
@@ -93,10 +97,11 @@ K --> N
- [backend/src/utils/response.js:1-25](file://backend/src/utils/response.js#L1-L25)
- [backend/src/models/Model.js:1-53](file://backend/src/models/Model.js#L1-L53)
- [backend/src/models/Ota.js:1-97](file://backend/src/models/Ota.js#L1-L97)
- [frontend/src/views/toolbox/luxsin-controller/index.vue:1-231](file://frontend/src/views/toolbox/luxsin-controller/index.vue#L1-L231)
**章节来源**
- [frontend/src/views/home/index.vue:1-334](file://frontend/src/views/home/index.vue#L1-L334)
- [frontend/src/router/index.js:1-91](file://frontend/src/router/index.js#L1-L91)
- [frontend/src/views/home/index.vue:1-335](file://frontend/src/views/home/index.vue#L1-L335)
- [frontend/src/router/index.js:1-109](file://frontend/src/router/index.js#L1-L109)
- [backend/src/routes/dashboard.js:1-66](file://backend/src/routes/dashboard.js#L1-L66)
## 核心组件
@@ -107,6 +112,7 @@ K --> N
- 布局与标签页:侧边栏导航、面包屑、用户下拉菜单、标签页持久化与缓存策略。
- 设计令牌系统:统一的玻璃拟态视觉语言,包含颜色、阴影、模糊等设计变量。
- 后端路由与模型:按日期范围查询型号与 OTA 新增记录,统一响应结构。
- **新增**:Luxsin 控制器工具页面:提供局域网设备数据同步和 PEQ 参数管理功能。
**章节来源**
- [frontend/src/views/home/index.vue:97-149](file://frontend/src/views/home/index.vue#L97-L149)
@@ -117,6 +123,7 @@ K --> N
- [frontend/src/components/TabsView.vue:55-287](file://frontend/src/components/TabsView.vue#L55-L287)
- [frontend/src/styles/lux-theme.css:11-78](file://frontend/src/styles/lux-theme.css#L11-L78)
- [backend/src/routes/dashboard.js:19-63](file://backend/src/routes/dashboard.js#L19-L63)
- [frontend/src/views/toolbox/luxsin-controller/index.vue:73-168](file://frontend/src/views/toolbox/luxsin-controller/index.vue#L73-L168)
## 架构总览
首页数据流自上而下:浏览器发起请求 -> 前端 Axios 拦截器 -> 后端路由 -> 数据库查询 -> 统一响应 -> 前端解析并渲染。
@@ -154,7 +161,7 @@ V-->>U : 渲染今日新增卡片
### 首页仪表板组件(Home
- 功能布局
- 欢迎信息:根据本地存储的用户信息动态显示用户名。
- 快捷入口卡片:支持点击跳转至品牌、型号、OTA、分享日志等模块。
- 快捷入口卡片:支持点击跳转至品牌、型号、OTA、分享日志、**Luxsin 控制器**等模块。
- 今日新增统计:分两列网格展示"新增型号"和"新增 OTA",包含加载态、空态与列表项。
- 数据绑定与状态
- 使用响应式引用保存加载状态、今日新增列表。
@@ -176,10 +183,10 @@ V-->>U : 渲染今日新增卡片
- 列表滚动容器设置最大高度并开启纵向滚动,避免长列表撑开页面。
- 列表项 hover 仅做背景色过渡,减少复杂动画。
**更新** 首页组件现已完全集成到玻璃拟态设计系统中,所有卡片和界面元素都采用统一的视觉语言。
**更新** 首页组件现已完全集成到玻璃拟态设计系统中,所有卡片和界面元素都采用统一的视觉语言。**新增 Luxsin 控制器快捷入口**,为用户提供局域网设备数据同步的快速访问功能。
**章节来源**
- [frontend/src/views/home/index.vue:1-334](file://frontend/src/views/home/index.vue#L1-L334)
- [frontend/src/views/home/index.vue:1-335](file://frontend/src/views/home/index.vue#L1-L335)
### 设计令牌系统与玻璃拟态视觉语言
- 设计哲学
@@ -237,12 +244,13 @@ V-->>U : 渲染今日新增卡片
**章节来源**
- [frontend/src/utils/request.js:1-72](file://frontend/src/utils/request.js#L1-L72)
- [frontend/src/utils/auth.js:1-99](file://frontend/src/utils/auth.js#L1-99)
- [frontend/src/utils/auth.js:1-99](file://frontend/src/utils/auth.js#L1-L99)
### 路由与导航
- 路由配置
- 首页路径为 /home,作为 / 的子路由。
- 所有子路由均需登录,部分路由需超级管理员权限。
- **新增**/toolbox/luxsin-controller 路由,指向 Luxsin 控制器工具页面。
- 导航与面包屑
- 侧边栏提供主要功能入口,支持折叠与高亮。
- 标签页组件负责多页面切换与持久化。
@@ -250,7 +258,7 @@ V-->>U : 渲染今日新增卡片
- 支持修改密码、账号管理(超级管理员)、退出登录。
**章节来源**
- [frontend/src/router/index.js:1-91](file://frontend/src/router/index.js#L1-91)
- [frontend/src/router/index.js:1-109](file://frontend/src/router/index.js#L1-L109)
- [frontend/src/layout/index.vue:144-222](file://frontend/src/layout/index.vue#L144-L222)
- [frontend/src/components/TabsView.vue:55-287](file://frontend/src/components/TabsView.vue#L55-L287)
@@ -271,15 +279,18 @@ V-->>U : 渲染今日新增卡片
### 快捷入口配置与路由跳转
- 配置方式
- quickLinks 数组定义了个入口项,每项包含 path、title、desc、icon。
- quickLinks 数组定义了个入口项,每项包含 path、title、desc、icon。
- **新增**:Luxsin 控制器入口,提供局域网设备数据同步功能。
- 图标通过动态组件渲染,支持任意 Element Plus 图标。
- 跳转机制
- 点击卡片触发 go(path) 函数,内部使用 vue-router 的 push 实现导航。
- 与侧边栏导航保持一致的路径约定,便于统一维护。
**更新** 快捷入口现已包含 Luxsin 控制器功能,用户可以通过首页直接访问设备数据同步工具。
**章节来源**
- [frontend/src/views/home/index.vue:113-144](file://frontend/src/views/home/index.vue#L113-L144)
- [frontend/src/router/index.js:26-54](file://frontend/src/router/index.js#L26-L54)
- [frontend/src/views/home/index.vue:113-119](file://frontend/src/views/home/index.vue#L113-L119)
- [frontend/src/router/index.js:67-72](file://frontend/src/router/index.js#L67-L72)
### 生命周期管理与错误处理
- 生命周期
@@ -314,13 +325,38 @@ V-->>U : 渲染今日新增卡片
- [frontend/src/components/TabsView.vue:47-50](file://frontend/src/components/TabsView.vue#L47-L50)
- [frontend/src/utils/request.js:6-9](file://frontend/src/utils/request.js#L6-L9)
- [frontend/src/views/home/index.vue:250-284](file://frontend/src/views/home/index.vue#L250-L284)
- [frontend/src/styles/lux-theme.css:356-370](file://frontend/src/styles/lux-theme.css#L356-L370)
- [frontend/src/styles/lux-theme.css:356-370](file://frontend/src/styles/lux-theme.css#L356-370)
### Luxsin 控制器工具页面
- 功能特性
- 设备 IP 输入验证与表单提交。
- 支持同步设备和同步 PEQ 两种操作模式。
- 自定义 Base64 解码器,处理设备返回的特殊编码数据。
- 原始响应与解码结果的可视化展示。
- 数据处理流程
- 通过 fetch API 直接访问局域网设备的 dev/info.cgi 接口。
- 实现自定义 Base64 字符映射表,将特殊编码转换为标准 Base64。
- 使用 TextDecoder 进行 UTF-8 解码,支持中文等多字节字符。
- 错误处理机制
- HTTP 状态码检查与错误提示。
- Base64 解码失败时的详细错误信息展示。
- 空数据响应的友好提示。
- 用户界面设计
- 响应式表单布局,支持回车键提交。
- 可折叠的原始响应查看器,节省屏幕空间。
- 语法高亮的 JSON 输出显示。
**新增** Luxsin 控制器工具页面为局域网设备管理提供了强大的数据同步能力,支持实时设备信息查询和 PEQ 参数管理。
**章节来源**
- [frontend/src/views/toolbox/luxsin-controller/index.vue:1-231](file://frontend/src/views/toolbox/luxsin-controller/index.vue#L1-L231)
## 依赖关系分析
- 组件耦合
- Home 依赖 api/dashboard.js 与 utils/request.js,形成清晰的职责分离。
- 与路由层通过 go(path) 解耦,便于测试与替换。
- 与样式层通过设计令牌解耦,便于主题切换。
- **新增**:Home 组件通过路由配置间接依赖 Luxsin 控制器工具页面。
- 外部依赖
- Element Plus 提供 UI 组件与图标。
- Vue Router 提供导航能力。
@@ -361,10 +397,20 @@ class LayoutIndexVue {
+activeMenu
+handleUserMenuCommand()
}
class LuxsinController {
+deviceIp : Ref<string>
+syncDataLoading : Ref<boolean>
+syncPeqLoading : Ref<boolean>
+decodeCustomBase64(input)
+handleSyncData()
+handleSyncPeq()
}
HomeIndexVue --> DashboardApi : "调用"
DashboardApi --> RequestUtil : "封装请求"
HomeIndexVue --> DesignTokens : "使用"
HomeIndexVue --> RouterGuard : "依赖"
LayoutIndexVue --> RouterGuard : "依赖"
HomeIndexVue --> LuxsinController : "路由跳转"
```
**图表来源**
@@ -374,6 +420,7 @@ LayoutIndexVue --> RouterGuard : "依赖"
- [frontend/src/styles/lux-theme.css:11-78](file://frontend/src/styles/lux-theme.css#L11-L78)
- [frontend/src/router/index.js:64-88](file://frontend/src/router/index.js#L64-L88)
- [frontend/src/layout/index.vue:144-222](file://frontend/src/layout/index.vue#L144-L222)
- [frontend/src/views/toolbox/luxsin-controller/index.vue:73-168](file://frontend/src/views/toolbox/luxsin-controller/index.vue#L73-L168)
## 性能考量
- 渲染层面
@@ -383,6 +430,7 @@ LayoutIndexVue --> RouterGuard : "依赖"
- 网络层面
- 统一超时与 baseURL,减少请求失败带来的等待。
- 401 自动清理鉴权信息并跳转,避免无效请求。
- **新增**Luxsin 控制器使用原生 fetch API,避免额外的 HTTP 客户端开销。
- 缓存层面
- 标签页 KeepAlive 与 sessionStorage 持久化,减少重复渲染与数据请求。
- **设计令牌性能**
@@ -402,6 +450,10 @@ LayoutIndexVue --> RouterGuard : "依赖"
- 快捷入口不生效
- 检查 quickLinks 的 path 是否与路由配置一致。
- 确认 go(path) 调用是否正确触发路由跳转。
- **Luxsin 控制器连接问题**
- 确认设备 IP 地址格式正确且设备在线。
- 检查防火墙设置,确保可以访问设备的 dev/info.cgi 接口。
- 验证自定义 Base64 解码器是否能正确处理设备返回的数据格式。
- **玻璃拟态样式问题**
- 检查 lux-theme.css 是否正确引入。
- 确认浏览器是否支持 backdrop-filter。
@@ -412,13 +464,15 @@ LayoutIndexVue --> RouterGuard : "依赖"
- [frontend/src/router/index.js:64-88](file://frontend/src/router/index.js#L64-L88)
- [frontend/src/views/home/index.vue:113-144](file://frontend/src/views/home/index.vue#L113-L144)
- [frontend/src/styles/lux-theme.css:11-78](file://frontend/src/styles/lux-theme.css#L11-L78)
- [frontend/src/views/toolbox/luxsin-controller/index.vue:134-168](file://frontend/src/views/toolbox/luxsin-controller/index.vue#L134-L168)
## 结论
首页仪表板通过清晰的组件划分、统一的 API 约定与完善的鉴权与拦截机制,实现了良好的用户体验与可维护性。**最新升级**引入了完整的玻璃拟态设计系统和设计令牌,提供了更加现代化和一致的视觉体验。建议后续在以下方面持续优化:
首页仪表板通过清晰的组件划分、统一的 API 约定与完善的鉴权与拦截机制,实现了良好的用户体验与可维护性。**最新升级**引入了完整的玻璃拟态设计系统和设计令牌,提供了更加现代化和一致的视觉体验。**新增的 Luxsin 控制器快捷入口**进一步增强了系统的实用性,为用户提供了便捷的局域网设备数据同步功能。建议后续在以下方面持续优化:
- 增加加载骨架屏与错误重试策略,进一步提升弱网体验。
- 对今日新增列表增加分页或虚拟滚动,应对数据量增长。
- 将快捷入口配置抽象为可配置文件,便于产品侧快速调整。
- 继续完善设计令牌系统,支持更多自定义主题选项。
- **新增**:考虑为 Luxsin 控制器添加设备历史记录功能,方便用户快速访问常用设备。
## 附录
- 快捷入口卡片配置项
@@ -433,9 +487,14 @@ LayoutIndexVue --> RouterGuard : "依赖"
- 语义令牌:页面、玻璃表面、边框、模糊
- 阴影层级:4级 elevation 系统
- 圆角规范:sm/md/lg/xl 四级
- **新增**Luxsin 控制器功能说明
- 支持同步设备信息和 PEQ 参数
- 自定义 Base64 字符映射表解码
- 实时设备状态监控与数据可视化
**章节来源**
- [frontend/src/views/home/index.vue:113-118](file://frontend/src/views/home/index.vue#L113-L118)
- [frontend/src/views/home/index.vue:113-119](file://frontend/src/views/home/index.vue#L113-L119)
- [frontend/src/utils/tabs.js:1-9](file://frontend/src/utils/tabs.js#L1-L9)
- [frontend/src/styles/lux-theme.css:11-78](file://frontend/src/styles/lux-theme.css#L11-L78)
- [DESIGN.md:28-97](file://DESIGN.md#L28-L97)
- [DESIGN.md:28-97](file://DESIGN.md#L28-L97)
- [frontend/src/views/toolbox/luxsin-controller/index.vue:88-124](file://frontend/src/views/toolbox/luxsin-controller/index.vue#L88-L124)