管理后台 - Vue3
引用文件
本文引用的文件
- README.md
- yudao-ui-admin-vue3/README.md
- yudao-module-infra-biz/src/main/resources/codegen/vue3/views/form.vue.vm
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngine.java
- deploy/jenkins/test/build.Jenkinsfile.sh
- deploy/jenkins/prod/build.Jenkinsfile.sh
- deploy/jenkins/prod/web-build-deploy.Jenkinsfile.sh
- yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/filter/grey/GrayLoadBalancer.java
- yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/filter/grey/GrayReactiveLoadBalancerClientFilter.java
- yudao-module-system/yudao-module-system-biz/src/main/resources/application.yaml
- yudao-module-infra/yudao-module-infra-biz/src/main/resources/application.yaml
- yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/logger/OperateLogDO.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/logger/ApiAccessLogDO.java
- yudao-module-rule/yudao-module-rule-biz/src/main/java/cn/iocoder/yudao/module/rule/controller/admin/chain/RuleLiteflowChainController.java
- yudao-module-rule/yudao-module-rule-biz/src/main/java/cn/iocoder/yudao/module/rule/dal/dataobject/chain/RuleLiteflowChainDO.java
- yudao-module-rule/yudao-module-rule-api/src/main/java/cn/iocoder/yudao/module/rule/util/RuleRunUtil.java
- yudao-module-rule/yudao-module-rule-api/src/main/java/cn/iocoder/yudao/module/rule/dto/RuleLiteflowChainCacheDTO.java
- yudao-module-rule/yudao-module-rule-biz/src/main/java/cn/iocoder/yudao/module/rule/service/business/RuleBusinessApiServiceImpl.java
- yudao-module-rule/yudao-module-rule-api/src/main/java/cn/iocoder/yudao/module/rule/api/dto/RuleBindReqDTO.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/framework/core/constant/DataSourceConstants.java
- yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/core/constant/DataSourceConstants.java
- yudao-module-device/yudao-module-device-biz/src/main/java/cn/iocoder/yudao/module/device/constant/DataSourceConstants.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/prometheus/PrometheusController.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/controller/admin/blacklisted/AppBlacklistedController.java
- yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/handler/GlobalExceptionHandler.java
- script/docker/docker-compose.yml
目录
简介
本项目为基于 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 镜像构建、推送与部署。
图示来源
章节来源
核心组件
- 页面与表单组件:基于代码生成器模板生成的列表页、表单弹窗、树形结构、主子表等,统一使用 Composition API、响应式数据与 Element Plus 表单校验。
- 表格组件:基于 Element Plus 表格封装,支持分页、排序、筛选、批量操作、行内操作等。
- 弹窗交互:统一的弹窗打开/关闭、表单加载状态、提交校验与成功回调。
- 路由与状态:采用 Vue Router + Pinia(或项目内状态管理方案),结合权限控制与菜单驱动。
- API 与数据绑定:通过统一的 API 模块与后端接口对接,支持异步加载、错误处理与重试。
- TypeScript 类型:接口与响应模型统一定义,确保类型安全与可维护性。
章节来源
- yudao-module-infra-biz/src/main/resources/codegen/vue3/views/form.vue.vm
- yudao-module-infra-biz/src/main/resources/codegen/vue3/views/form.vue.vm
架构总览
后端采用微服务架构,前端通过网关统一访问各业务模块。网关支持灰度发布(基于请求头版本号),并集成 SkyWalking 与 Prometheus 监控。基础设施模块提供代码生成器,支持 Vue3 代码生成,模板引擎自动注入表单校验、弹窗逻辑、树形结构与主子表等。
图示来源
章节来源
组件详解
表单组件(弹窗 + 校验 + 提交)
- 统一弹窗状态:dialogVisible、dialogTitle、formType、formLoading。
- 表单数据:formData 响应式对象,字段来自模板列配置;支持复选框等特殊类型初始化。
- 校验规则:基于列配置生成 formRules,必填字段自动添加校验。
- 打开弹窗:open(type, id?),支持新增/修改;修改时异步加载数据并设置表单。
- 提交流程:validate → 根据类型调用新增/修改 API → 成功后关闭弹窗并触发 success 事件 → 重置表单。
- 树表/主子表:模板支持树形结构与主子表场景,提供额外逻辑分支。
图示来源
章节来源
- yudao-module-infra-biz/src/main/resources/codegen/vue3/views/form.vue.vm
- yudao-module-infra-biz/src/main/resources/codegen/vue3/views/form.vue.vm
规则引擎(绑定/解绑 + 缓存 + 审批)
- 规则实体:RuleLiteflowChainDO,包含规则链名称、EL 表达式、业务类型、路由、命名空间、生效状态等。
- 缓存传输:RuleLiteflowChainCacheDTO,Redis 缓存规则详情,避免穿透与击穿。
- 获取规则:RuleRunUtil,多级缓存策略(Redis → 分布式锁 → DB),保证高并发下的正确性。
- 业务绑定:RuleBusinessApiServiceImpl,支持 bindOrUnbindRule 与变更摘要生成;审批场景通过 BPM 状态与 valid 字段协同。
图示来源
- yudao-module-rule/yudao-module-rule-biz/src/main/java/cn/iocoder/yudao/module/rule/controller/admin/chain/RuleLiteflowChainController.java
- yudao-module-rule/yudao-module-rule-biz/src/main/java/cn/iocoder/yudao/module/rule/dal/dataobject/chain/RuleLiteflowChainDO.java
- yudao-module-rule/yudao-module-rule-api/src/main/java/cn/iocoder/yudao/module/rule/util/RuleRunUtil.java
- yudao-module-rule/yudao-module-rule-api/src/main/java/cn/iocoder/yudao/module/rule/dto/RuleLiteflowChainCacheDTO.java
- yudao-module-rule/yudao-module-rule-biz/src/main/java/cn/iocoder/yudao/module/rule/service/business/RuleBusinessApiServiceImpl.java
- yudao-module-rule/yudao-module-rule-api/src/main/java/cn/iocoder/yudao/module/rule/api/dto/RuleBindReqDTO.java
章节来源
- yudao-module-rule/yudao-module-rule-biz/src/main/java/cn/iocoder/yudao/module/rule/controller/admin/chain/RuleLiteflowChainController.java
- yudao-module-rule/yudao-module-rule-biz/src/main/java/cn/iocoder/yudao/module/rule/dal/dataobject/chain/RuleLiteflowChainDO.java
- yudao-module-rule/yudao-module-rule-api/src/main/java/cn/iocoder/yudao/module/rule/util/RuleRunUtil.java
- yudao-module-rule/yudao-module-rule-api/src/main/java/cn/iocoder/yudao/module/rule/dto/RuleLiteflowChainCacheDTO.java
- yudao-module-rule/yudao-module-rule-biz/src/main/java/cn/iocoder/yudao/module/rule/service/business/RuleBusinessApiServiceImpl.java
- yudao-module-rule/yudao-module-rule-api/src/main/java/cn/iocoder/yudao/module/rule/api/dto/RuleBindReqDTO.java
网关灰度发布机制
- 请求过滤:GrayReactiveLoadBalancerClientFilter 检查 URL Scheme,拦截并处理灰度请求。
- 实例选择:GrayLoadBalancer 基于请求头 version 筛选匹配的实例,否则回退至全部实例,再按权重随机选择。
图示来源
- yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/filter/grey/GrayReactiveLoadBalancerClientFilter.java
- yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/filter/grey/GrayLoadBalancer.java
章节来源
- yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/filter/grey/GrayReactiveLoadBalancerClientFilter.java
- yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/filter/grey/GrayLoadBalancer.java
代码生成器(Vue3 模板)
- 模板引擎:基于 Velocity 模板生成 Vue3 页面与组件,自动注入表单校验、弹窗逻辑、树形结构与主子表。
- 代码修正:CodegenEngine 在生成后对 Vue2/3 的差异进行修正(如 refs、字典选项等)。
- 生成产物:列表页、表单弹窗、组件、API 调用等,统一风格与规范。
章节来源
- yudao-module-infra-biz/src/main/resources/codegen/vue3/views/form.vue.vm
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngine.java
依赖关系分析
- 前端管理后台依赖后端各模块提供的 API,通过网关统一入口访问。
- 网关依赖 Nacos 进行服务注册与配置管理,集成 Redis 缓存与 SkyWalking 监控。
- 规则引擎模块依赖 Redis 缓存与数据库,提供多级缓存与分布式锁保障一致性。
- 设备与任务模块依赖 TDengine 时序数据库,黑名单模块依赖 Kafka 消息队列。
图示来源
章节来源
性能考量
- 缓存策略:规则引擎采用 Redis 缓存 + 分布式锁 + 数据库兜底,降低热点规则的查询压力。
- 网关灰度:基于版本头的灰度发布减少全量切换风险,提升流量控制灵活性。
- 监控与可观测性:SkyWalking 与 Prometheus 集成,便于定位性能瓶颈与异常。
- 数据存储:MySQL 与 TDengine 混合存储,时序数据走 TDengine,降低 OLTP 压力。
章节来源
- yudao-module-rule/yudao-module-rule-api/src/main/java/cn/iocoder/yudao/module/rule/util/RuleRunUtil.java
- script/docker/docker-compose.yml
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/framework/core/constant/DataSourceConstants.java
故障排查指南
- 全局异常处理:当访问未开启或未导入表结构的模块时,全局异常处理器返回标准错误,便于定位问题。
- 日志体系:操作日志与 API 访问日志分别记录关键业务操作与请求详情,辅助问题追溯。
- 规则引擎:若规则未生效或缓存异常,检查 valid 与 BPM 状态,确认审批流程与缓存写入。
章节来源
- yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/handler/GlobalExceptionHandler.java
- yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/logger/OperateLogDO.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/logger/ApiAccessLogDO.java
结论
本管理后台以 Vue3 + TypeScript + Element Plus 为基础,结合后端微服务架构与规则引擎、灰度发布、监控与缓存等能力,形成一套可扩展、可维护、高性能的现代化后台解决方案。通过代码生成器与统一的表单/表格组件,显著提升开发效率与一致性;通过严格的日志与异常处理机制,保障系统稳定性与可运维性。
附录
开发调试
- 环境准备:JDK 17+、MySQL 8.0+、Redis 5.0+ 、Nacos 2.x、TDengine、Kafka。
- 启动顺序:先构建并启动网关,再启动各业务模块;查看控制台日志确认模块启动与文档地址输出。
章节来源
构建与打包
- 框架与模块构建:支持在根目录或单独模块构建,生成 JAR 并构建 Docker 镜像。
- Vue 打包:可通过 Jenkins 脚本在构建 Docker 镜像时完成前端打包,或在服务器具备 Node 20 环境时直接打包。
章节来源
- deploy/jenkins/test/build.Jenkinsfile.sh
- deploy/jenkins/prod/build.Jenkinsfile.sh
- deploy/jenkins/prod/web-build-deploy.Jenkinsfile.sh
部署上线
- Docker 镜像:构建完成后推送最新与带时间戳标签镜像,回滚时恢复 latest。
- 远程部署:通过 SSH 拉取镜像并运行容器,配置端口映射与主机名解析。
章节来源
与后端 API 对接
- 接口文档:SpringDoc/Swagger UI,默认启用,路径可在 application.yaml 中配置。
- 端口配置:各模块默认端口在 application.yaml 中定义,开发时注意端口占用。
章节来源