跳到主要内容

管理后台 - Vue3

引用文件

本文引用的文件

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 组件详解
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本项目为基于 Vue3 + TypeScript + Element Plus 的现代化管理后台实现,采用 Composition API、响应式数据与组件化开发模式,结合后端 Spring Cloud Alibaba 微服务架构,提供统一网关、系统管理、基础设施、设备与运营、任务与OTA、规则引擎等模块。文档聚焦于前端管理后台的实现要点、项目结构、路由与状态管理、组件封装、页面与表单、表格与弹窗交互、TypeScript 类型与接口规范、错误处理、与后端 API 的对接与数据绑定、异步处理,以及开发调试、构建打包与部署上线的完整流程。

项目结构

  • 前端管理后台位于 yudao-ui-admin-vue3,提供 Vue3 + Element Plus 的实现入口与仓库链接。
  • 后端通过 yudao-gateway 网关统一接入,系统模块包括 system、infra、device、launcher、blacklist、task、rule 等。
  • 基础设施模块提供代码生成器,支持 Vue3 代码生成,配套模板引擎生成页面、表单、表格等前端文件。
  • 部署侧提供 Jenkins 自动化流水线脚本,覆盖框架、API、BIZ 模块构建与 Docker 镜像构建、推送与部署。

Mermaid Diagram Code:

graph TB
FE["yudao-ui-admin-vue3<br/>Vue3 + Element Plus"] --> GW["yudao-gateway<br/>Spring Cloud Gateway"]
GW --> SYS["yudao-module-system"]
GW --> INFRA["yudao-module-infra"]
GW --> DEV["yudao-module-device"]
GW --> LCH["yudao-module-launcher"]
GW --> BLK["yudao-module-blacklist"]
GW --> TSK["yudao-module-task"]
GW --> RUL["yudao-module-rule"]

图示来源

章节来源

核心组件

  • 页面与表单组件:基于代码生成器模板生成的列表页、表单弹窗、树形结构、主子表等,统一使用 Composition API、响应式数据与 Element Plus 表单校验。
  • 表格组件:基于 Element Plus 表格封装,支持分页、排序、筛选、批量操作、行内操作等。
  • 弹窗交互:统一的弹窗打开/关闭、表单加载状态、提交校验与成功回调。
  • 路由与状态:采用 Vue Router + Pinia(或项目内状态管理方案),结合权限控制与菜单驱动。
  • API 与数据绑定:通过统一的 API 模块与后端接口对接,支持异步加载、错误处理与重试。
  • TypeScript 类型:接口与响应模型统一定义,确保类型安全与可维护性。

章节来源

架构总览

后端采用微服务架构,前端通过网关统一访问各业务模块。网关支持灰度发布(基于请求头版本号),并集成 SkyWalking 与 Prometheus 监控。基础设施模块提供代码生成器,支持 Vue3 代码生成,模板引擎自动注入表单校验、弹窗逻辑、树形结构与主子表等。

Mermaid Diagram Code:

graph TB
subgraph "前端"
UI["管理后台 UI<br/>Vue3 + Element Plus"]
end
subgraph "网关与服务"
GW["Spring Cloud Gateway"]
SVC_SYS["系统模块"]
SVC_INFRA["基础设施模块"]
SVC_DEV["设备模块"]
SVC_LCH["运营模块"]
SVC_BLK["黑名单模块"]
SVC_TSK["任务/OTA模块"]
SVC_RUL["规则引擎模块"]
end
subgraph "中间件"
NACOS["Nacos"]
REDIS["Redis"]
MYSQL["MySQL"]
TD["TDengine"]
KAFKA["Kafka"]
end
UI --> GW
GW --> SVC_SYS
GW --> SVC_INFRA
GW --> SVC_DEV
GW --> SVC_LCH
GW --> SVC_BLK
GW --> SVC_TSK
GW --> SVC_RUL
SVC_SYS -.-> NACOS
SVC_INFRA -.-> NACOS
SVC_DEV -.-> TD
SVC_TSK -.-> TD
SVC_BLK -.-> KAFKA
GW -.-> REDIS

图示来源

章节来源

组件详解

表单组件(弹窗 + 校验 + 提交)

  • 统一弹窗状态:dialogVisible、dialogTitle、formType、formLoading。
  • 表单数据:formData 响应式对象,字段来自模板列配置;支持复选框等特殊类型初始化。
  • 校验规则:基于列配置生成 formRules,必填字段自动添加校验。
  • 打开弹窗:open(type, id?),支持新增/修改;修改时异步加载数据并设置表单。
  • 提交流程:validate → 根据类型调用新增/修改 API → 成功后关闭弹窗并触发 success 事件 → 重置表单。
  • 树表/主子表:模板支持树形结构与主子表场景,提供额外逻辑分支。

Mermaid Diagram Code:

flowchart TD
Start(["打开弹窗"]) --> Init["初始化弹窗状态与表单数据"]
Init --> LoadData{"是否为修改?"}
LoadData --> |是| Fetch["异步加载数据并填充表单"]
LoadData --> |否| Ready["准备新增"]
Fetch --> Ready
Ready --> Validate["表单校验"]
Validate --> Valid{"校验通过?"}
Valid --> |否| End["结束"]
Valid --> |是| Submit["调用新增/修改 API"]
Submit --> Success{"提交成功?"}
Success --> |否| End
Success --> |是| Close["关闭弹窗并触发成功事件"]
Close --> Reset["重置表单"]
Reset --> End

图示来源

章节来源

规则引擎(绑定/解绑 + 缓存 + 审批)

  • 规则实体:RuleLiteflowChainDO,包含规则链名称、EL 表达式、业务类型、路由、命名空间、生效状态等。
  • 缓存传输:RuleLiteflowChainCacheDTO,Redis 缓存规则详情,避免穿透与击穿。
  • 获取规则:RuleRunUtil,多级缓存策略(Redis → 分布式锁 → DB),保证高并发下的正确性。
  • 业务绑定:RuleBusinessApiServiceImpl,支持 bindOrUnbindRule 与变更摘要生成;审批场景通过 BPM 状态与 valid 字段协同。

Mermaid Diagram Code:

sequenceDiagram
participant UI as "管理后台界面"
participant API as "规则业务接口"
participant Cache as "Redis缓存"
participant DB as "数据库"
UI->>API : "提交绑定/解绑请求"
API->>Cache : "查询规则缓存"
alt 缓存命中
Cache-->>API : "返回规则DTO"
else 缓存未命中
API->>API : "获取分布式锁"
API->>Cache : "二次查询缓存"
alt 仍未命中
API->>DB : "查询规则详情"
DB-->>API : "返回规则数据"
API->>Cache : "写入缓存"
end
end
API-->>UI : "返回结果含变更摘要"

图示来源

章节来源

网关灰度发布机制

  • 请求过滤:GrayReactiveLoadBalancerClientFilter 检查 URL Scheme,拦截并处理灰度请求。
  • 实例选择:GrayLoadBalancer 基于请求头 version 筛选匹配的实例,否则回退至全部实例,再按权重随机选择。

Mermaid Diagram Code:

sequenceDiagram
participant Client as "客户端"
participant Filter as "灰度过滤器"
participant LB as "灰度负载均衡"
participant Nacos as "注册中心"
participant Inst as "服务实例"
Client->>Filter : "携带版本头的请求"
Filter->>LB : "choose() 选择实例"
LB->>Nacos : "获取实例列表"
Nacos-->>LB : "返回实例含元数据"
LB->>LB : "按版本筛选实例"
alt 存在匹配版本
LB->>LB : "按权重随机选择"
else 无匹配或无版本头
LB->>LB : "在全部实例中按权重选择"
end
LB-->>Filter : "返回目标实例"
Filter->>Inst : "转发请求"
Inst-->>Client : "响应"

图示来源

章节来源

代码生成器(Vue3 模板)

  • 模板引擎:基于 Velocity 模板生成 Vue3 页面与组件,自动注入表单校验、弹窗逻辑、树形结构与主子表。
  • 代码修正:CodegenEngine 在生成后对 Vue2/3 的差异进行修正(如 refs、字典选项等)。
  • 生成产物:列表页、表单弹窗、组件、API 调用等,统一风格与规范。

章节来源

依赖关系分析

  • 前端管理后台依赖后端各模块提供的 API,通过网关统一入口访问。
  • 网关依赖 Nacos 进行服务注册与配置管理,集成 Redis 缓存与 SkyWalking 监控。
  • 规则引擎模块依赖 Redis 缓存与数据库,提供多级缓存与分布式锁保障一致性。
  • 设备与任务模块依赖 TDengine 时序数据库,黑名单模块依赖 Kafka 消息队列。

Mermaid Diagram Code:

graph LR
UI["管理后台 UI"] --> API["后端 API"]
API --> GW["网关"]
GW --> SVC["各业务服务"]
SVC --> REDIS["Redis"]
SVC --> MYSQL["MySQL"]
SVC --> TD["TDengine"]
SVC --> KAFKA["Kafka"]

图示来源

章节来源

性能考量

  • 缓存策略:规则引擎采用 Redis 缓存 + 分布式锁 + 数据库兜底,降低热点规则的查询压力。
  • 网关灰度:基于版本头的灰度发布减少全量切换风险,提升流量控制灵活性。
  • 监控与可观测性:SkyWalking 与 Prometheus 集成,便于定位性能瓶颈与异常。
  • 数据存储:MySQL 与 TDengine 混合存储,时序数据走 TDengine,降低 OLTP 压力。

章节来源

故障排查指南

  • 全局异常处理:当访问未开启或未导入表结构的模块时,全局异常处理器返回标准错误,便于定位问题。
  • 日志体系:操作日志与 API 访问日志分别记录关键业务操作与请求详情,辅助问题追溯。
  • 规则引擎:若规则未生效或缓存异常,检查 valid 与 BPM 状态,确认审批流程与缓存写入。

章节来源

结论

本管理后台以 Vue3 + TypeScript + Element Plus 为基础,结合后端微服务架构与规则引擎、灰度发布、监控与缓存等能力,形成一套可扩展、可维护、高性能的现代化后台解决方案。通过代码生成器与统一的表单/表格组件,显著提升开发效率与一致性;通过严格的日志与异常处理机制,保障系统稳定性与可运维性。

附录

开发调试

  • 环境准备:JDK 17+、MySQL 8.0+、Redis 5.0+、Nacos 2.x、TDengine、Kafka。
  • 启动顺序:先构建并启动网关,再启动各业务模块;查看控制台日志确认模块启动与文档地址输出。

章节来源

构建与打包

  • 框架与模块构建:支持在根目录或单独模块构建,生成 JAR 并构建 Docker 镜像。
  • Vue 打包:可通过 Jenkins 脚本在构建 Docker 镜像时完成前端打包,或在服务器具备 Node 20 环境时直接打包。

章节来源

部署上线

  • Docker 镜像:构建完成后推送最新与带时间戳标签镜像,回滚时恢复 latest。
  • 远程部署:通过 SSH 拉取镜像并运行容器,配置端口映射与主机名解析。

章节来源

与后端 API 对接

  • 接口文档:SpringDoc/Swagger UI,默认启用,路径可在 application.yaml 中配置。
  • 端口配置:各模块默认端口在 application.yaml 中定义,开发时注意端口占用。

章节来源

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答