# RuoYi-SpringBoot3-ElementPlus **Repository Path**: asd2015/RuoYi-SpringBoot3-ElementPlus ## Basic Information - **Project Name**: RuoYi-SpringBoot3-ElementPlus - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-01-09 - **Last Updated**: 2026-01-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

logo

RuoYi-SpringBoot3-ElementPlus v3.9.1

基于 RuoYi-Vue3 的增强优化版本

## 📝 项目简介 本项目是在 [RuoYi-Vue3](https://github.com/yangzongzhuan/RuoYi-Vue3) 基础上进行的深度优化和功能扩展版本,保留了原有的所有功能,并新增了大量实用的组件和工具,致力于提供更好的开发体验和更强大的功能支持。 ![公众号](https://cdn.undsky.com/img/ghss.png) > 关注公众号,聚焦 AI 应用落地与开发经验分享 ## 📑 目录 - [项目简介](#项目简介) - [后端项目](#后端项目) - [核心新特性](#核心新特性) - [功能对比](#功能对比) - [快速开始](#快速开始) - [项目结构](#项目结构) - [配置说明](#配置说明) - [内置功能](#内置功能) - [贡献指南](#贡献指南) - [许可证](#许可证) - [致谢](#致谢) - [联系方式](#联系方式) ## 后端项目 - 💻 https://github.com/undsky/RuoYi-SpringBoot3-Pro ### 技术栈 - **前端框架**: Vue 3.5.16 + Vite 6.3.5 - **UI 组件库**: Element Plus 2.9.11 + Vant 4.9.17 - **状态管理**: Pinia 3.0.2 - **路由管理**: Vue Router 4.5.1 - **工具库**: xe-utils、dayjs、mitt、VueUse - **富文本编辑器**: Vue Quill + UEditor - **其他**: ECharts、axios、sortablejs、pdf-vue3 --- ## ✨ 核心新特性 ### 🎯 1. 智能化组件增强 #### 📍 省市区级联选择器 (RegionCascader) 一个功能强大的省市区三级级联选择器组件,专为中国行政区划设计。 **核心特性**: - ✅ 支持省-市-区三级联动,灵活的层级控制(1-3 级可选) - ✅ 按需懒加载数据,极大提升性能 - ✅ 支持 v-model 双向绑定 - ✅ 内置完整的错误处理机制 - ✅ 响应式设计,支持多种尺寸和样式 - ✅ 全局注册,开箱即用 **使用示例**: ```vue ``` [📖 查看完整文档](src/components/RegionCascader/README.md) #### 💰 千分位数字输入框 (InputNumberQianfen) 基于 `xe-utils` 实现的智能千分位格式化输入框。 **核心特性**: - ✅ 自动千分位格式化显示(如:1,234,567.89) - ✅ 支持小数位数控制 - ✅ 输入时自动解析,输出纯数字 - ✅ 支持负数和小数 - ✅ 完美集成 Element Plus 输入框 **使用示例**: ```vue ``` #### 📝 UEditor 富文本编辑器 (UEditorPlus) 集成强大的 UEditor 富文本编辑器,提供更丰富的编辑功能。 **核心特性**: - ✅ 支持图片、视频、音频上传 - ✅ 丰富的文本格式化选项 - ✅ 表格、公式、代码编辑 - ✅ 支持全屏编辑 - ✅ 自定义工具栏配置 #### 📸 ImageUpload 图片上传增强 对原有图片上传组件进行了全面增强,提供更强大的功能和更好的用户体验。 **🎯 核心增强特性**: **1. 拖拽上传支持** - ✅ 支持拖拽文件上传,操作更便捷 - ✅ 拖拽排序已上传的图片,调整显示顺序 - ✅ 集成 sortablejs 实现流畅的拖拽体验 **2. 视频支持** - ✅ 支持上传视频文件(mp4, webm, ogg) - ✅ 支持上传音频文件(mp3) - ✅ 视频预览自动播放,带播放控制器 - ✅ 自动识别文件类型,图片和视频分别展示 **3. 图片懒加载** - ✅ 使用 `loading="lazy"` 属性优化加载性能 - ✅ 大量图片时显著提升页面性能 **4. 高级预览功能** - ✅ 集成 `el-image-viewer` 组件 - ✅ 支持图片放大、缩小、旋转 - ✅ 支持键盘快捷键操作 - ✅ 支持图片列表浏览,可切换查看 **5. 响应式设计** - ✅ 完美适配移动端 - ✅ 移动端预览全屏显示 - ✅ 自动识别设备类型调整界面 **6. 更强大的文件支持** - ✅ 文件大小限制从 5MB 提升到 50MB - ✅ 支持自定义 accept 属性 - ✅ 支持更多文件格式 **7. 数据格式增强** - ✅ 支持 JSON 格式数据 - ✅ 支持 Array/String/Object 多种数据格式 - ✅ 使用 xe-utils 进行数据处理 **8. 防重复删除机制** - ✅ 添加状态标记防止重复删除 - ✅ 确保数据一致性 **对比原版改进**: | 功能 | RuoYi-Vue3 | 本项目增强版 | | ------------- | ------------- | ------------- | | 拖拽上传 | ❌ | ✅ 支持 | | 拖拽排序 | ✅ 基础 | ✅ 优化 | | 视频支持 | ❌ | ✅ 完整支持 | | 图片懒加载 | ❌ | ✅ 支持 | | 图片预览器 | ❌ 简单对话框 | ✅ 专业浏览器 | | 移动端适配 | ❌ 基础 | ✅ 完美适配 | | 文件大小限制 | 5MB | 50MB | | Accept 属性 | ❌ | ✅ 支持 | | JSON 数据格式 | ❌ | ✅ 支持 | | 防重复删除 | ❌ | ✅ 支持 | **使用示例**: ```vue ``` **Props 参数**: | 参数 | 说明 | 类型 | 默认值 | | ---------- | ------------------ | ------------------- | --------------------------------------------- | | modelValue | 绑定值 | String/Array/Object | - | | action | 上传接口地址 | String | /common/upload | | data | 上传携带的额外参数 | Object | - | | disabled | 是否禁用 | Boolean | false | | accept | 接受的文件类型 | String | \* | | limit | 最大上传数量 | Number | 5 | | fileSize | 文件大小限制(MB) | Number | 50 | | fileType | 文件类型限制 | Array | ['png','jpg','jpeg','mp4','webm','ogg','mp3'] | | isShowTip | 是否显示提示 | Boolean | true | | drag | 是否启用拖拽排序 | Boolean | true | **技术实现**: - 基于 Element Plus Upload 组件 - 使用 sortablejs 实现拖拽排序 - 使用 el-image-viewer 实现图片预览 - 使用 xe-utils 进行数据处理 --- ### 🛠️ 2. 开发工具增强 #### 🔍 代码检查器 (Code Inspector) 集成 `code-inspector-plugin`,实现浏览器中一键定位源代码。 **使用方法**: 1. 在浏览器中按住 `Ctrl/Cmd + Shift` 并点击任意元素 2. IDE 将自动打开对应的源代码文件 3. 极大提升开发调试效率 #### 🎨 Prettier 代码格式化 统一的代码格式化配置,确保团队代码风格一致。 **特性**: - ✅ 自动格式化 Vue、JavaScript、CSS 等文件 - ✅ 支持保存时自动格式化 - ✅ 统一的缩进、引号、换行等规则 **配置文件**: `prettier.config.cjs` --- ### 📦 3. 工具库增强 #### ⏰ dayjs - 轻量级日期处理 替代 moment.js 的轻量级日期处理库,仅 2KB 大小。 ```javascript import dayjs from 'dayjs'; // 格式化日期 dayjs().format('YYYY-MM-DD HH:mm:ss'); // 相对时间 dayjs().from(dayjs('2024-01-01')); // 日期计算 dayjs().add(7, 'day'); ``` #### 🚌 mitt - 轻量级事件总线 Vue 3 推荐的事件总线解决方案,用于组件间通信。 ```javascript import mitt from 'mitt'; const emitter = mitt(); // 监听事件 emitter.on('foo', (e) => console.log('foo', e)); // 触发事件 emitter.emit('foo', { a: 'b' }); ``` #### 🧰 xe-utils - 强大的工具函数库 提供 300+ 实用工具函数,覆盖日常开发常见场景。 ```javascript import { commafy, toNumber, clone, isEmpty } from 'xe-utils'; // 千分位格式化 commafy(1234567.89); // "1,234,567.89" // 深拷贝 const obj2 = clone(obj1); // 判空 isEmpty(null); // true ``` #### 📄 pdf-vue3 - PDF 预览 Vue 3 版本的 PDF 预览组件,支持在线预览 PDF 文件。 ```vue ``` #### 🔀 sortablejs - 拖拽排序 强大的拖拽排序库,支持列表、表格、卡片等多种场景。 ```vue ``` #### 📱 Vant - 移动端 UI 组件库 轻量、可靠的移动端 Vue 组件库,适配移动端场景。 ```vue ``` --- ### 🚀 4. 部署工具增强 #### 📤 FTP/SFTP 自动部署 内置 FTP 和 SFTP 自动部署功能,构建后一键上传至服务器。 **配置文件**: `ftp/ftp.js` 或 `ftp/sftp.js` ```javascript // ftp/ftp.js 配置示例 const config = { user: 'your-username', // FTP 用户名 password: 'your-password', // FTP 密码 host: 'your-host.com', // FTP 主机地址 port: 21, // FTP 端口 localRoot: './dist', // 本地构建目录 remoteRoot: '/www/admin' // 远程目标路径 }; ``` **使用方法**: ```bash # 构建并自动部署 npm run build:prod ``` 构建完成后会自动上传到配置的服务器,无需手动操作。 --- ### 🔒 5. 安全增强 #### 🛡️ 三级等保 - 用户无操作自动登出 符合信息安全等级保护三级标准的自动登出机制,当用户在指定时间内无任何操作时,系统将自动登出以保护账户安全。 **核心特性**: - ✅ **监控用户操作**:监听键盘、鼠标、滚动等用户交互行为 - ✅ **智能计时器**:用户每次操作后自动重置计时器 - ✅ **自动登出**:超时后自动退出登录,跳转至登录页面 - ✅ **灵活配置**:通过环境变量自定义超时时长 - ✅ **安全合规**:满足三级等保安全要求 **实现原理**: ```vue ``` **配置方法**: 在项目根目录创建 `.env` 或 `.env.production` 文件: ```bash # 设置自动登出时长(单位:毫秒) # 例如:1800000 = 30分钟,3600000 = 60分钟 # 开发环境 (.env.development) VITE_LOGOUT_LIMIT=1800000 # 生产环境 (.env.production) VITE_LOGOUT_LIMIT=1800000 # 如果设置为 0 或不设置,则不启用自动登出 # VITE_LOGOUT_LIMIT=0 ``` **使用场景**: - ✅ 政府、金融等对安全要求高的行业 - ✅ 需要通过信息安全等级保护三级认证的系统 - ✅ 公共场所使用的管理系统 - ✅ 涉及敏感数据的后台管理系统 **监控的用户操作类型**: - 🖱️ **鼠标操作**:移动(mousemove)、点击(mousedown/click) - ⌨️ **键盘操作**:按键按下(keydown) - 📜 **滚动操作**:页面滚动(scroll) **安全说明**: - 🔐 超时后立即清除所有用户会话信息 - 🔐 自动跳转至登录页,需要重新输入密码 - 🔐 防止用户离开座位后被他人非法操作 - 🔐 符合《信息安全技术 网络安全等级保护基本要求》GB/T 22239-2019 --- ### 🎨 6. UI/UX 增强 #### 🔐 第二种登录页面 新增 `login2.vue` 登录页面样式,提供更多视觉选择。 特性: - ✅ 现代化设计风格 - ✅ 响应式布局 - ✅ 流畅的动画效果 --- ## 📊 功能对比 | 功能模块 | RuoYi-Vue3 | 本项目 | 说明 | | ------------ | -------------------- | ------------------------ | -------------------------- | | 基础框架 | Vue 3 + Element Plus | ✅ 完全兼容 | 保持一致 | | 省市区选择器 | ❌ | ✅ RegionCascader | 新增,支持三级联动 | | 千分位输入 | ❌ | ✅ InputNumberQianfen | 新增,金额场景适用 | | UEditor | ❌ | ✅ UEditorPlus | 新增,功能更强大 | | 图片上传 | ✅ 基础 | ✅ 增强版 | 拖拽上传、视频支持、懒加载 | | 日期处理 | ❌ | ✅ dayjs | 新增,更轻量 | | 事件总线 | ❌ | ✅ mitt | 新增,组件通信 | | PDF 预览 | ❌ | ✅ pdf-vue3 | 新增,在线预览 | | 拖拽排序 | ❌ | ✅ sortablejs | 新增,拖拽功能 | | 移动端 UI | ❌ | ✅ Vant | 新增,移动端适配 | | 工具函数库 | ❌ | ✅ xe-utils | 新增,300+ 函数 | | 代码检查器 | ❌ | ✅ code-inspector | 新增,开发效率提升 | | 代码格式化 | ❌ | ✅ Prettier | 新增,统一代码风格 | | AI 编程规范 | ❌ | ✅ Cursor/Windsurf Rules | 新增,智能代码建议 | | 自动部署 | ❌ | ✅ FTP/SFTP | 新增,一键部署 | | 三级等保安全 | ❌ | ✅ 无操作自动登出 | 新增,符合等保要求 | | 登录页面 | 1 种 | 2 种 | 新增第二种样式 | --- ## 🚀 快速开始 ### 环境要求 - Node.js >= 20 - npm 或 yarn 或 pnpm ### 安装依赖 ```bash # 克隆项目 git clone [项目地址] # 进入项目目录 cd RuoYi-SpringBoot3-ElementPlus # 安装依赖(推荐使用国内镜像) npm install --registry=https://registry.npmmirror.com # 或使用 yarn yarn --registry=https://registry.npmmirror.com # 或使用 pnpm pnpm install --registry=https://registry.npmmirror.com ``` ### 启动开发服务器 ```bash # 启动开发服务器 npm run dev # 浏览器访问 http://localhost:80 ``` ### 构建生产环境 ```bash # 构建生产环境(会自动执行 FTP 部署) npm run build:prod # 构建测试环境 npm run build:stage # 本地预览构建结果 npm run preview ``` --- ## 📁 项目结构 ``` RuoYi-SpringBoot3-ElementPlus/ ├── .cursor/ # 🆕 Cursor/Windsurf 编辑器配置 │ ├── rules/ # 🆕 AI 编程规范 (Cursor) │ │ ├── clean-code.mdc # 简洁代码指南 │ │ ├── codequality.mdc # 代码质量指南 │ │ ├── common.mdc # 通用开发规范 │ │ ├── project.mdc # 项目特定规范 │ │ ├── vue.mdc # Vue 最佳实践 │ │ ├── vue-3-composition-api---general.mdc # Vue3 组合式 API 指南 │ │ └── vue-3-project-structure.mdc # Vue3 项目结构 │ └── mcp.json # Cursor MCP 配置 ├── .windsurf/ # 🆕 Windsurf 编辑器配置 │ └── rules/ # 🆕 AI 编程规范 (Windsurf) ├── ftp/ # 🆕 FTP/SFTP 部署配置 │ ├── ftp.js # FTP 部署脚本 │ └── sftp.js # SFTP 部署脚本 ├── public/ # 静态资源 │ ├── favicon.ico │ ├── logo.png │ └── UEditorPlus/ # UEditor 资源文件 ├── src/ │ ├── api/ # API 接口 │ │ ├── biz/ # 🆕 业务接口 │ │ │ └── Region.js # 🆕 省市区接口 │ │ ├── login.js │ │ ├── menu.js │ │ ├── monitor/ # 系统监控 │ │ ├── system/ # 系统管理 │ │ └── tool/ # 系统工具 │ ├── assets/ # 资源文件 │ │ ├── icons/ # 图标 │ │ ├── images/ # 图片 │ │ │ └── login-background2.jpg # 🆕 新登录背景 │ │ ├── logo/ # Logo │ │ └── styles/ # 样式文件 │ ├── components/ # 全局组件 │ │ ├── Breadcrumb/ # 面包屑 │ │ ├── Crontab/ # Cron 表达式 │ │ ├── DictTag/ # 字典标签 │ │ ├── Editor/ # Quill 富文本编辑器 │ │ ├── FileUpload/ # 文件上传 │ │ ├── IconSelect/ # 图标选择器 │ │ ├── ImageUpload/ # 🆕 图片上传增强版(拖拽、视频、懒加载) │ │ ├── InputNumberQianfen/ # 🆕 千分位输入框 │ │ ├── Pagination/ # 分页组件 │ │ ├── RegionCascader/ # 🆕 省市区级联选择器 │ │ ├── RightToolbar/ # 右侧工具栏 │ │ ├── UEditorPlus/ # 🆕 UEditor 富文本编辑器 │ │ └── ... # 其他组件 │ ├── directive/ # 全局指令 │ ├── layout/ # 布局组件 │ ├── plugins/ # 插件 │ ├── router/ # 路由配置 │ ├── store/ # Pinia 状态管理 │ ├── utils/ # 工具函数 │ ├── views/ # 页面视图 │ │ ├── error/ # 错误页面 │ │ ├── login.vue # 登录页面 │ │ ├── login2.vue # 🆕 第二种登录页面 │ │ ├── monitor/ # 系统监控 │ │ ├── system/ # 系统管理 │ │ └── tool/ # 系统工具 │ ├── App.vue # 根组件 │ └── main.js # 入口文件 ├── vite/ # Vite 配置 │ └── plugins/ # Vite 插件 ├── .prettierignore # 🆕 Prettier 忽略配置 ├── prettier.config.cjs # 🆕 Prettier 格式化配置 ├── vite.config.js # Vite 配置文件 ├── package.json # 项目依赖 └── README.md # 项目说明 🆕 标记为本项目新增内容 ``` --- ## 🔧 配置说明 ### 1. 后端接口配置 修改 `vite.config.js` 中的 `baseUrl`: ```javascript const baseUrl = 'http://localhost:8087'; // 修改为你的后端接口地址 ``` ### 2. FTP 部署配置 编辑 `ftp/ftp.js` 或 `ftp/sftp.js`: ```javascript const config = { user: '', // 你的 FTP 用户名 password: '', // 你的 FTP 密码 host: '', // FTP 主机地址 port: 21, // FTP 端口 localRoot: './dist', remoteRoot: '/dist' // 远程目标路径 }; ``` ### 3. Prettier 配置 编辑 `prettier.config.cjs` 自定义代码格式化规则。 ### 4. 三级等保安全配置 在项目根目录创建环境变量文件: **开发环境 `.env.development`**: ```bash # 开发环境可以设置更长的超时时间,方便调试 VITE_LOGOUT_LIMIT=3600000 # 60分钟 ``` **生产环境 `.env.production`**: ```bash # 生产环境建议设置 30 分钟,符合三级等保要求 VITE_LOGOUT_LIMIT=1800000 # 30分钟 ``` **测试环境 `.env.staging`**: ```bash # 测试环境可与生产环境保持一致 VITE_LOGOUT_LIMIT=1800000 # 30分钟 ``` **不启用自动登出**: ```bash # 如果不需要自动登出功能,设置为 0 或不配置该变量 VITE_LOGOUT_LIMIT=0 ``` ### 5. 代码检查器配置 代码检查器已在 `vite/plugins/index.js` 中配置,开发时可直接使用。 --- ## 📖 内置功能 基于 RuoYi-Vue3 的完整功能: 1. **用户管理**:用户是系统操作者,该功能主要完成系统用户配置 2. **部门管理**:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限 3. **岗位管理**:配置系统用户所属担任职务 4. **菜单管理**:配置系统菜单,操作权限,按钮权限标识等 5. **角色管理**:角色菜单权限分配、设置角色按机构进行数据范围权限划分 6. **字典管理**:对系统中经常使用的一些较为固定的数据进行维护 7. **参数管理**:对系统动态配置常用参数 8. **通知公告**:系统通知公告信息发布维护 9. **操作日志**:系统正常操作日志记录和查询;系统异常信息日志记录和查询 10. **登录日志**:系统登录日志记录查询包含登录异常 11. **在线用户**:当前系统中活跃用户状态监控 12. **定时任务**:在线(添加、修改、删除)任务调度包含执行结果日志 13. **代码生成**:前后端代码的生成(java、html、xml、sql)支持 CRUD 下载 14. **系统接口**:根据业务代码自动生成相关的 api 接口文档 15. **服务监控**:监视当前系统 CPU、内存、磁盘、堆栈等相关信息 16. **缓存监控**:对系统的缓存信息查询,命令统计等 17. **在线构建器**:拖动表单元素生成相应的 HTML 代码 18. **连接池监视**:监视当前系统数据库连接池状态,可进行分析 SQL 找出系统性能瓶颈 --- ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request! --- ## 📄 许可证 本项目基于 [MIT License](LICENSE) 开源。 --- ## 🙏 致谢 - 感谢 [RuoYi-Vue3](https://github.com/yangzongzhuan/RuoYi-Vue3) 提供的优秀基础框架 - 感谢所有开源组件的作者和贡献者 --- ## 📞 联系方式 - 网站:[https://www.undsky.com](https://www.undsky.com) - GitHub:[https://github.com/undsky/RuoYi-SpringBoot3-ElementPlus](https://github.com/undsky/RuoYi-SpringBoot3-ElementPlus) - Issues:[https://github.com/undsky/RuoYi-SpringBoot3-ElementPlus/issues](https://github.com/undsky/RuoYi-SpringBoot3-ElementPlus/issues) --- 如果这个项目对你有帮助,请给个 Star ⭐ 支持一下!