【RuoYi-SpringBoot3-ElementPlus】:若依前端增强版 —— 功能扩展优化

简介: 【RuoYi-SpringBoot3-ElementPlus】基于若依Vue3,100%兼容原功能,新增省市区级联、千分位输入、增强上传、UEditor等8+实用组件,集成dayjs、xe-utils、mitt等主流工具库,支持拖拽排序、移动端适配、三级等保自动登出,配备代码检查、Prettier格式化、FTP自动部署,开箱即用,显著提升开发效率与系统安全性。

【RuoYi-SpringBoot3-ElementPlus】:若依前端增强版 —— 功能扩展优化

一、项目定位

RuoYi-SpringBoot3-ElementPlus这是一个基于 RuoYi-Vue3 的增强版前端项目,100% 保留原有功能,同时新增大量实用组件和开发工具,显著提升开发效率和用户体验。

核心特点:

  • ✅ 保留若依所有功能,无缝替换
  • ✅ 新增 8+ 实用业务组件
  • ✅ 集成主流工具库和插件
  • ✅ 开发工具链完善
  • ✅ 支持三级等保安全标准

二、新增功能

2.1 省市区级联选择器 —— 中国行政区划完美方案

痛点: 项目中经常需要用户选择地址,Element Plus 原生组件需要自己准备数据源,数据量大且不易维护。

解决方案: 内置 RegionCascader 组件,开箱即用。

<template>
  <!-- 三级联动(省-市-区) -->
  <RegionCascader v-model="region" placeholder="请选择省市区" />

  <!-- 只需要省市两级 -->
  <RegionCascader v-model="region" :level="2" />

  <!-- 只需要省份 -->
  <RegionCascader v-model="region" :level="1" />
</template>

<script setup>
import { ref } from 'vue'
const region = ref([]) // 返回: ['山东省', '青岛市', '市南区']
</script>

核心特性:

  • 支持 1-3 级灵活配置
  • 数据懒加载,性能优秀
  • 全局注册,直接使用
  • 数据来自后端接口,实时更新

2.2 千分位输入框 —— 金额输入不再繁琐

应用场景: 电商订单、财务报表、数据统计等涉及金额的场景。

<template>
  <InputNumberQianfen 
    v-model="amount" 
    :digits="2" 
    placeholder="请输入金额" 
  />
  <!-- 用户输入: 1234567.89 -->
  <!-- 显示效果: 1,234,567.89 -->
  <!-- 实际值: 1234567.89 (纯数字) -->
</template>

核心特性:

  • 自动千分位格式化
  • 支持小数位数控制
  • 输入时自动解析数字
  • 支持负数和小数

实现原理: 基于 xe-utilscommafy 函数,轻量且高效。

2.3 图片上传增强 —— 拖拽、视频、大文件全支持

这是对原版 ImageUpload 组件的全面重构,功能提升 10 倍以上。

8 大核心升级:

① 拖拽上传

<ImageUpload v-model="images" :drag="true" />
<!-- 直接拖拽文件到上传区域 -->

② 视频和音频支持

<ImageUpload 
  v-model="video"
  :file-type="['mp4', 'webm']"
  accept="video/*"
/>
<!-- 支持上传视频并预览 -->

③ 大文件支持

  • 原版:5MB 限制
  • 增强版:50MB 限制(可配置到 100MB)

④ 图片懒加载

<!-- 自动添加 loading="lazy" 属性 -->
<!-- 大量图片时显著提升性能 -->

⑤ 专业图片预览器

  • 集成 el-image-viewer 组件
  • 支持放大、缩小、旋转
  • 支持键盘快捷键(← → ESC)
  • 支持图片列表浏览

⑥ 移动端完美适配

  • 自动识别设备类型
  • 移动端预览全屏显示
  • 触摸手势支持

⑦ 多种数据格式

// 支持 3 种数据格式
form.images = 'img1.jpg,img2.jpg'  // 逗号分隔字符串
form.video = ['video1.mp4']        // 数组
form.album = '["p1.jpg","p2.jpg"]' // JSON 字符串

⑧ 防重复删除

  • 添加状态标记,防止快速点击导致的重复删除
  • 确保数据一致性

功能对比:

功能 RuoYi-Vue3 增强版
拖拽上传
视频支持
图片懒加载
专业预览器
移动端适配 基础 完美
文件大小 5MB 50MB
JSON 格式

2.4 UEditor 富文本编辑器

为什么需要两个富文本编辑器?

  • Vue Quill:轻量级,适合简单场景(如文章摘要、评论)
  • UEditor:功能强大,适合复杂场景(如文章编辑、新闻发布)

UEditor 优势:

  • 支持图片、视频、音频上传
  • 支持表格编辑
  • 支持公式编辑(数学公式、化学式)
  • 支持代码高亮
  • 支持全屏编辑

三、开发工具增强

3.1 代码检查器 —— 浏览器中直接定位代码

痛点: 看到浏览器页面效果,想修改代码,需要手动在项目中查找对应文件。

解决方案: 集成 code-inspector-plugin

使用方法:

  1. 按住 Ctrl + Shift(Mac 用 Cmd + Shift
  2. 点击页面任意元素
  3. IDE 自动打开对应的源代码文件

效果: 开发效率提升 50% 以上,告别手动查找文件。

3.2 Prettier 代码格式化

统一团队代码风格,避免代码评审时的格式争议。

// prettier.config.cjs 配置示例
module.exports = {
   
  semi: false,            // 不使用分号
  singleQuote: true,      // 使用单引号
  tabWidth: 2,            // 缩进 2 空格
  trailingComma: 'none',  // 不使用尾随逗号
  printWidth: 120         // 每行最多 120 字符
}

集成效果:

  • 保存时自动格式化
  • 支持 Vue、JS、CSS、HTML 等文件
  • 全团队统一风格

3.3 FTP/SFTP 自动部署

痛点: 每次构建后需要手动上传文件到服务器,繁琐且容易出错。

解决方案: 内置部署脚本,构建完成自动上传。

配置文件(ftp/ftp.js):

const config = {
   
  user: "admin",                  // FTP 用户名
  password: "password123",         // FTP 密码
  host: "example.com",            // 服务器地址
  port: 21,                       // FTP 端口
  localRoot: "./dist",            // 本地构建目录
  remoteRoot: "/www/admin"        // 远程目标路径
}

使用方法:

npm run build:prod
# 构建完成后自动上传到服务器,无需手动操作

四、工具库生态

4.1 dayjs —— 轻量级日期处理

替代臃肿的 moment.js,体积仅 2KB。

import dayjs from 'dayjs'

// 格式化
dayjs().format('YYYY-MM-DD HH:mm:ss')  // 2024-11-28 14:30:00

// 相对时间
dayjs().from(dayjs('2024-01-01'))      // 10 个月前

// 日期计算
dayjs().add(7, 'day')                  // 7 天后
dayjs().subtract(1, 'month')           // 1 个月前

4.2 xe-utils —— 300+ 实用函数

涵盖日常开发常见场景的工具函数库。

import {
    commafy, clone, isEmpty, throttle } from 'xe-utils'

// 千分位格式化
commafy(1234567.89)  // "1,234,567.89"

// 深拷贝
const obj2 = clone(obj1)

// 判空(比自己写更严谨)
isEmpty(null)      // true
isEmpty('')        // true
isEmpty([])        // true
isEmpty({
   })        // true

// 节流函数
const handleScroll = throttle(() => {
   
  console.log('滚动事件')
}, 300)

4.3 mitt —— 事件总线

Vue 3 推荐的组件通信方案,替代 Vue 2 的 EventBus。

// 创建事件总线
import mitt from 'mitt'
const emitter = mitt()

// 组件 A:触发事件
emitter.emit('refresh', {
    id: 123 })

// 组件 B:监听事件
emitter.on('refresh', (data) => {
   
  console.log('收到刷新事件', data.id)
})

4.4 sortablejs —— 拖拽排序

强大的拖拽库,支持列表、表格、卡片等场景。

<template>
  <div ref="listRef">
    <div v-for="item in list" :key="item.id">
      {
  { item.name }}
    </div>
  </div>
</template>

<script setup>
import Sortable from 'sortablejs'
import { onMounted, ref } from 'vue'

const listRef = ref()
const list = ref([
  { id: 1, name: '项目一' },
  { id: 2, name: '项目二' }
])

onMounted(() => {
  Sortable.create(listRef.value, {
    animation: 150,  // 动画效果
    onEnd: (evt) => {
      // 拖拽完成,更新数组顺序
      const item = list.value.splice(evt.oldIndex, 1)[0]
      list.value.splice(evt.newIndex, 0, item)
    }
  })
})
</script>

4.5 Vant —— 移动端 UI

轻量、可靠的移动端组件库,适配移动端场景。

<template>
  <van-button type="primary">按钮</van-button>
  <van-field v-model="username" placeholder="请输入用户名" />
  <van-picker :columns="columns" @confirm="onConfirm" />
</template>

<script setup>
import { Button, Field, Picker } from 'vant'
</script>

五、安全合规增强

三级等保 —— 用户无操作自动登出

法规要求: 根据《信息安全技术 网络安全等级保护基本要求》(GB/T 22239-2019),三级等保系统需要支持"用户长时间无操作自动登出"功能。

实现原理:

// 监听用户的键盘、鼠标、滚动操作
// 每次操作重置计时器
// 超时自动退出登录

配置方法(.env.production):

# 30 分钟无操作自动登出
VITE_LOGOUT_LIMIT=1800000

# 60 分钟无操作自动登出
VITE_LOGOUT_LIMIT=3600000

# 不启用自动登出
VITE_LOGOUT_LIMIT=0

监控的操作类型:

  • 🖱️ 鼠标移动、点击
  • ⌨️ 键盘按键
  • 📜 页面滚动

六、快速开始

6.1 环境准备

Node.js >= 20
npm 或 yarn 或 pnpm

6.2 安装启动

# 1. 克隆项目
git clone https://github.com/undsky/RuoYi-SpringBoot3-ElementPlus.git
cd RuoYi-SpringBoot3-ElementPlus

# 2. 安装依赖(使用国内镜像加速)
npm install --registry=https://registry.npmmirror.com

# 3. 启动开发服务器
npm run dev

# 4. 浏览器访问
http://localhost:80

6.3 构建部署

# 构建生产环境(自动部署到服务器)
npm run build:prod

# 构建测试环境
npm run build:stage

# 本地预览构建结果
npm run preview

七、与原版对比

功能 RuoYi-Vue3 增强版 说明
省市区选择器 三级联动,开箱即用
千分位输入 金额场景适用
UEditor 功能更强大
图片上传 基础 增强 拖拽、视频、大文件
日期处理 dayjs 轻量级,仅 2KB
事件总线 mitt 组件通信
PDF 预览 pdf-vue3 在线预览
拖拽排序 sortablejs 拖拽功能
移动端 UI Vant 移动端适配
工具函数 xe-utils 300+ 函数
代码检查器 效率提升 50%
代码格式化 Prettier 统一风格
自动部署 FTP/SFTP 一键部署
三级等保 自动登出

八、项目结构

RuoYi-SpringBoot3-ElementPlus/
├── ftp/                          # 🆕 FTP/SFTP 部署
│   ├── ftp.js                   # FTP 脚本
│   └── sftp.js                  # SFTP 脚本
├── public/
│   └── UEditorPlus/             # 🆕 UEditor 资源
├── src/
│   ├── api/
│   │   └── biz/                 # 🆕 业务接口
│   │       └── Region.js        # 省市区接口
│   ├── components/
│   │   ├── ImageUpload/         # 🆕 图片上传增强
│   │   ├── InputNumberQianfen/  # 🆕 千分位输入
│   │   ├── RegionCascader/      # 🆕 省市区选择
│   │   └── UEditorPlus/         # 🆕 UEditor 富文本
│   ├── views/
│   │   └── login2.vue           # 🆕 第二种登录页
│   └── App.vue                   # 🆕 自动登出逻辑
├── .prettierignore              # 🆕 格式化配置
├── prettier.config.cjs          # 🆕 格式化规则
└── vite.config.js               # 代码检查器配置

🆕 = 新增功能

九、配置说明

9.1 后端接口地址

// vite.config.js
const baseUrl = 'http://localhost:8087' // 修改为实际后端地址

9.2 自动登出配置

# .env.production
VITE_LOGOUT_LIMIT=1800000  # 30分钟(建议值)

9.3 FTP 部署配置

// ftp/ftp.js
const config = {
   
  user: "your-username",
  password: "your-password",
  host: "your-server.com",
  port: 21,
  localRoot: "./dist",
  remoteRoot: "/www/admin"
}

十一、总结

RuoYi-SpringBoot3-ElementPlus 是一个生产级别的前端项目,它不是简单的组件堆砌,而是经过深思熟虑的增强和优化。

核心价值:

  1. 开箱即用的业务组件

    • 省市区选择、千分位输入等常见需求
    • 无需重复造轮子,节省开发时间
  2. 完善的开发工具链

    • 代码检查器、格式化、自动部署
    • 提升开发效率和团队协作
  3. 丰富的工具库生态

    • dayjs、xe-utils、mitt 等主流库
    • 覆盖日常开发 90% 的场景
  4. 符合安全合规要求

    • 三级等保自动登出
    • 满足政企项目需求
  5. 持续维护和更新

    • 跟随 Vue 3 和 Element Plus 更新
    • 持续添加实用功能

目录
相关文章
|
22天前
|
JavaScript 前端开发 数据安全/隐私保护
【RuoYi-SpringBoot3-Pro】:拒绝“大众脸”!高颜值前端框架选型
拒绝“若依脸”!推荐两款高颜值前端框架:BearJia Vue3(Ant Design Vue 4 + Vite)打造专业现代界面,RuoYi-Vue3-Prettier 全面重构Element Plus,支持TS与Hook封装。视觉升级、代码精简,助你轻松实现差异化后台系统。
154 1
【RuoYi-SpringBoot3-Pro】:拒绝“大众脸”!高颜值前端框架选型
|
JavaScript
若依框架-------弹层表格
若依框架-------弹层表格
955 0
|
26天前
|
人工智能 前端开发 Java
【RuoYi-SpringBoot3-Pro】:接入 AI 对话能力
RuoYi-SpringBoot3-Pro 内置 OpenAI 工具类,支持同步/流式对话、多角色消息与代理配置,兼容 OpenAI 及第三方 API,开箱即用,助力开发者快速集成 AI 聊天功能。
159 0
|
21天前
|
移动开发 小程序 JavaScript
【RuoYi-SpringBoot3-UniApp】:一套代码,多端运行的移动端开发方案
RuoYi-SpringBoot3-UniApp 是基于 Vue3 与 UniApp 的跨平台移动端解决方案,支持一套代码编译到小程序、App、H5 和桌面端。集成 Pinia 状态管理、JWT 认证、权限路由、z-paging 分页、mp-html 富文本等主流功能,开箱即用,显著降低多端开发与维护成本,助力高效构建企业级应用。
240 6
|
21天前
|
SQL XML JavaScript
【RuoYi-Eggjs】:将若依带入 Node.js 世界的企业级后台管理系统
RuoYi-Eggjs 是基于 Egg.js 的企业级后台系统,100% 复刻若依功能,支持 MyBatis XML 风格 SQL、多数据库、JWT 认证、权限控制与代码自动生成,完美对接 RuoYi-Vue3 前端,助力 Node.js 开发者高效构建管理系统。
123 5
|
22天前
|
关系型数据库 Java 数据库连接
【RuoYi-SpringBoot3-Pro】:MyBatis-Plus 集成
RuoYi-SpringBoot3-Pro 集成 MyBatis-Plus 3.5.12,提供分页、乐观锁、多租户、Lambda 查询等核心功能,支持动态条件构建与代码生成,提升开发效率,助力企业级 SaaS 应用快速开发。
331 0
|
22天前
|
NoSQL Java API
【RuoYi-SpringBoot3-Pro】:Magic API 低代码开发
RuoYi-SpringBoot3-Pro 集成 Magic API,实现低代码快速开发。通过 Web 界面编写脚本,无需编写 Controller、Service 等代码,支持实时生效、数据库操作、多数据源、权限校验与 Redis 缓存,助力高效构建 RESTful 接口,适用于原型开发、报表查询等场景。
326 0
|
21天前
|
XML Java 数据库连接
【RuoYi-Eggjs】:告别手写,自动生成代码
【RuoYi-Eggjs】是一款面向 Egg.js 项目的自动化代码生成工具,通过解析 MyBatis 风格的 XML Mapper 文件,智能生成标准化的 Service 层代码,彻底告别重复手写。支持实时监听、多数据库映射与内网穿透,提升开发效率与规范性。
77 7
|
存储 安全 对象存储
如何简单快速搭建自己的云对象存储服务(OSS)
简单来说,其实我们只需要有一台服务器,利用服务器的各种资源,搭配其它厂商开发的软件,就能很轻易拥有自己的云对象存储服务。不需要在阿里云上花钱买什么服务,甚至还能自己给别人提供服务,真的是太爽了。