Go to file
2025-05-20 10:18:19 +08:00
.codelf optimize: 优化代码质量 2025-05-13 23:13:23 +08:00
.gitee docs: 修改文档说明 2025-05-10 14:23:49 +08:00
.github feat: 新增 github 模板 2025-05-17 19:33:01 +08:00
.vscode feat: 接入tinymce富文本 2025-05-13 17:41:29 +08:00
build fix: 修复打包问题 2025-05-16 12:09:10 +08:00
docs style: 调整缩进 2025-05-19 23:59:55 +08:00
packages merge: Merge soybean. 2025-05-16 16:48:05 +08:00
public chore: 重构 tinymce 组件 2025-05-13 21:59:11 +08:00
src fix: 修复加载状态时,回车仍然可提交Bug 2025-05-20 10:16:06 +08:00
.editorconfig chore(projects): use eslint flat config & update config 2023-12-14 21:00:53 +08:00
.env feat: 新增开启水印环境变量 2025-05-09 16:38:29 +08:00
.env.dev feat: 适配初始菜单 SQL 2025-05-15 22:05:43 +08:00
.env.prod feat: 新增开启水印环境变量 2025-05-09 16:38:29 +08:00
.env.test feat: 新增开启水印环境变量 2025-05-09 16:38:29 +08:00
.gitattributes chore(projects): add .gitattributes 2024-03-28 00:37:58 +08:00
.gitignore feat(projects): 1.0 beta 2023-11-17 10:25:32 +08:00
.npmrc chore(projects): update .npmrc 2024-04-27 13:47:53 +08:00
eslint.config.js fix(projects): fix register name, CodeLogin => Register (#478) 2024-06-06 15:57:58 +08:00
index.html feat: 整合登录 2024-08-16 16:33:11 +08:00
LICENSE update LICENSE. 2025-05-09 05:41:43 +00:00
package.json merge: Merge soybean. 2025-05-16 16:48:05 +08:00
pnpm-lock.yaml merge: Merge soybean. 2025-05-16 16:48:05 +08:00
pnpm-workspace.yaml feat(projects): 1.0 beta 2023-11-17 10:25:32 +08:00
README.md docs: 更改群聊二维码 2025-05-20 10:18:13 +08:00
tsconfig.json chore(projects): update deps & update pnpm version & update eslint config 2024-04-23 11:20:55 +08:00
uno.config.ts chore(projects): update unocss preset (#712) 2025-03-06 18:17:44 +08:00
vite.config.ts chore(projects): update deps & fix vite config 2024-12-16 16:16:08 +08:00

一个基于 RuoYi-Vue-Plus 的后端能力和 Soybean Admin 前端特性的现代化多租户管理系统

Gitee vue typescript vite naive-ui license

📢 重要通知

该项目未首发公测版本,请谨慎在生产环境使用!!!

该项目未首发公测版本,请谨慎在生产环境使用!!!

该项目未首发公测版本,请谨慎在生产环境使用!!!

如果对该项目感兴趣,可以给一个 Star 支持一下,谢谢! 请大家踊跃提交 PR 和 Issue一起完善这个项目

开发前必看

本项目强制使用 pnpm 构建,详细请看 安装步骤及说明

后端需要替换代码生成模板与菜单 SQL详细请看 代码生成与菜单更新

📋 项目概述

RuoYi-Plus-Soybean 是一个现代化的企业级多租户管理系统,它结合了 RuoYi-Vue-Plus 的强大后端功能和 Soybean Admin 的现代化前端特性,为开发者提供了完整的企业管理解决方案。

🌟 项目特点

  • 多租户架构完整支持SaaS多租户模式灵活的租户管理能力
  • 现代前端技术栈基于Vue 3、TypeScript、Vite和Naive UI构建
  • Monorepo工程管理使用pnpm workspaces管理多包结构
  • 丰富的组件库:内置大量业务组件和布局选项
  • 主题定制:支持多种布局模式和主题配色
  • 国际化:内置多语言支持
  • 权限管理:精细的基于角色的权限控制

🛠️ 技术栈

前端

  • 核心框架Vue 3.5.x
  • 开发语言TypeScript 5.8.x
  • 构建工具Vite 6.2.x
  • UI组件库Naive UI 2.41.x
  • 状态管理Pinia 3.0.x
  • 路由Vue Router 4.5.x
  • HTTP客户端Axios/Alova
  • CSSUnoCSS
  • 包管理器pnpm 8.x+

后端与RuoYi-Vue-Plus兼容

  • 核心框架Spring Boot
  • 安全框架Spring Security
  • 权限认证Sa-Token
  • 数据操作MyBatis-Plus
  • 数据库MySQL

🏗️ 项目结构

root
├── build                    # 构建配置和插件
│   ├── config               # 构建配置文件
│   └── plugins              # Vite 插件
├── docs                     # 文档和模板
│   ├── java                 # 代码生成工具类
│   └── template             # 代码生成模板
├── packages                 # Monorepo包
│   ├── alova                # 使用Alova的HTTP客户端实现
│   ├── axios                # 使用Axios的HTTP客户端实现
│   ├── color                # 颜色管理工具
│   ├── hooks                # 可复用的Vue组合函数
│   ├── materials            # UI组件和材料
│   ├── ofetch               # 使用ofetch的HTTP客户端实现
│   ├── scripts              # 构建和开发脚本
│   ├── uno-preset           # UnoCSS预设配置
│   └── utils                # 通用工具函数
├── public                   # 静态资源
├── src                      # 主应用源代码
│   ├── assets               # 静态资源(图片、图标)
│   ├── components           # 可复用的 Vue 组件
│   ├── constants            # 应用常量
│   ├── enum                 # TypeScript 枚举
│   ├── hooks                # Vue 组合函数
│   ├── layouts              # 页面布局
│   ├── locales              # 国际化
│   ├── plugins              # Vue 插件
│   ├── router               # Vue Router 配置
│   ├── service              # API 服务
│   ├── store                # Pinia 存储模块
│   ├── styles               # 全局样式
│   ├── theme                # 主题配置
│   ├── typings              # TypeScript 类型定义
│   ├── utils                # 工具函数
│   └── views                # 页面组件
└── vite.config.ts           # Vite 配置

🚀 环境要求与安装

环境要求

  • Node.js >= 18.20.0
  • pnpm >= 8.7.0
  • Git

安装步骤及说明

  1. 克隆仓库
git clone https://gitee.com/xlsea/ruoyi-plus-soybean.git
cd ruoyi-plus-soybean
  1. 安装 pnpm (如果未安装)
npm install pnpm -g

设置淘宝镜像

pnpm config set registry https://registry.npmmirror.com
  1. 安装依赖
pnpm install
  1. 运行开发服务器
pnpm dev
  1. 构建生产版本
pnpm build

代码生成与菜单更新

项目提供了代码生成工具和菜单SQL更新文件docs 目录下:

  • 代码生成工具

    • 代码生成工具类位于 docs/java 目录如果没有修改过VelocityUtils.java文件直接替换即可
    • 代码生成模板位于 docs/template 目录请在ruoyi-generator模块的resource/vm下新建 soy文件夹,并将所有模板拷贝至soy文件夹中
  • 菜单SQL更新

    • 菜单数据更新SQL文件位于 docs/sql 目录
    • 在系统初始化或更新时需要执行相应的SQL文件来更新菜单数据

📝 开发指南

可用的脚本命令

# 开发环境
pnpm dev

# 测试环境
pnpm dev:test

# 生产环境
pnpm dev:prod

# 构建生产版本
pnpm build

# 构建开发版本
pnpm build:dev

# 构建测试版本
pnpm build:test

# 预览构建
pnpm preview

# 类型检查
pnpm typecheck

# 代码规范检查并修复
pnpm lint

# 路由生成
pnpm gen-route

# 提交代码
pnpm commit

# 中文提交信息
pnpm commit:zh

# 依赖包更新
pnpm update-pkg

# 清理项目
pnpm cleanup

# 发布新版本
pnpm release

代码规范与风格

项目使用ESLint进行代码检查遵循以下规范

  • 命名规范

    • Vue组件: PascalCase (如 UserProfile.vue)
    • TypeScript文件: camelCase (如 userService.ts)
    • CSS/SCSS: kebab-case (如 user-profile.scss)
  • 代码风格

    • 使用Vue 3 Composition API
    • 使用TypeScript类型系统
    • 遵循单一职责原则

核心开发模式

状态管理

使用Pinia进行状态管理模块位于src/store/modules目录:

  • app: 应用全局状态
  • theme: 主题配置
  • route: 路由信息
  • tab: 标签页管理
  • auth: 认证信息
  • dict: 字典管理
  • notice: 通知管理

API交互

项目支持多种HTTP客户端实现

  • Axios:
import { useRequest } from '@/hooks/common/request';

const { data, loading, error } = useRequest(() => api.getData(params));
  • Hooks使用:
// 布尔值管理
import { useBoolean } from '@sa/hooks';
const { bool, setTrue, setFalse } = useBoolean();

// 加载状态管理
import { useLoading } from '@sa/hooks';
const { loading, startLoading, endLoading } = useLoading();

// 表格管理
import { useTable } from '@/hooks/common/table';
const { tableData, loading, getPaginationData } = useTable(fetchTableData);

组件使用

项目包含多种业务组件:

  • 表格组件:支持列设置、搜索区域和高级操作
  • 表单组件:集成验证和表单布局
  • 字典组件:字典选择、标签和单选
  • 布局组件:支持多种布局模式和主题

UnoCSS使用指南

项目优先使用 UnoCSS 来实现样式:

<div class="flex flex-col items-center justify-center p-4 m-2 bg-blue-100 dark:bg-blue-800 rounded-md">
  <span class="text-lg font-bold text-center">内容</span>
</div>

国际化

项目使用vue-i18n实现国际化支持

// 在组件中使用
import { useI18n } from 'vue-i18n';

const { t } = useI18n();
console.log(t('common.confirm'));

💎 特性与功能

前端特性

  • 多种布局模式:支持垂直、水平、混合等多种布局
  • 可配置的主题:明暗模式、主题色定制
  • 标签页管理:多种标签风格、右键菜单
  • 组件封装:进度条、图标、加载动画等
  • 路由生成:基于目录结构的路由生成
  • 权限管理:菜单和按钮级别的权限控制

业务功能

  • 用户管理:用户信息维护、角色分配
  • 角色管理:角色权限配置
  • 菜单管理:系统功能配置
  • 部门管理:组织架构维护
  • 字典管理:数据字典配置
  • 租户管理:多租户配置
  • 系统监控:登录日志、操作日志、在线用户、缓存监控
  • 代码生成:生成前后端代码,提升开发效率

🤝 贡献指南

开发流程

  1. Fork项目
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'feat: add amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 提交Pull Request

提交规范

项目使用约定式提交规范:

  • feat: 新功能
  • fix: 修复Bug
  • docs: 文档更新
  • style: 代码风格调整
  • refactor: 代码重构
  • perf: 性能优化
  • test: 测试代码
  • chore: 构建或工具变动

📄 许可证

MIT License

🔗 相关链接

📮 联系方式

💬 交流群

🧧 捐献作者

作者为兼职做开源,平时还需要工作,如果帮到了您可以请作者吃个盒饭

🫡 捐赠列表

感谢下方各位老板的捐赠 🫡

如果不想出现在下方捐赠列表,请在备注中说明,我会匿名处理

酷酷冬天 20元
Selfish Altruism(JackSue) 200元
匿名用户 50元
匿名用户 10元
DAS 20元