一个基于 Spring Boot + Vue 3 的现代化人力资源管理系统,提供员工管理、考勤管理、薪资管理、公告管理等功能。
进入Github文件中可以看到以下文件
hrms-back //前端项目文件
hrms-frontend //后端项目文件
.gitignore
hrms-database-init
LICENSE
-
后端
- Java 17+
- MySQL 8.0+
- Maven 3.6+
-
前端
- Node.js 18+
- npm 或 yarn
创建数据库:
📌 重要说明:项目提供两个数据库脚本
hrms-database-basic.sql- 推荐使用,包含基础表结构和少量测试数据hrms-database-init.sql- 完整版本,包含大量测试数据(不建议新用户使用)
方式一:使用 MySQL 命令行
# 登录 MySQL
mysql -u root -p
# 创建数据库
CREATE DATABASE hrms_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 使用数据库
USE hrms_db;
# 导入数据库结构和基础数据(推荐)
SOURCE /path/to/hrms-database-basic.sql;方式二:使用 Navicat 等图形化工具
- 打开 Navicat,连接到 MySQL 数据库
- 右键点击连接 → 新建数据库 → 数据库名:
hrms_db,字符集:utf8mb4 - 双击进入
hrms_db数据库 - 点击"查询" → "新建查询"
- 打开项目根目录下的
hrms-database-basic.sql文件,复制内容到查询窗口 - 点击"运行"执行 SQL 脚本
方式三:使用其他 MySQL 客户端
- MySQL Workbench: File → Open SQL Script → 选择
hrms-database-basic.sql→ 执行 - phpMyAdmin: 导入 → 选择文件 → 执行
- DBeaver: 连接数据库 → 新建数据库 → 执行 SQL 脚本
cd hrms-back
# 修改数据库配置
# 编辑 src/main/resources/application.yml
# 更新以下配置:
# - spring.datasource.username (数据库用户名)
# - spring.datasource.password (数据库密码)
# - jwt.secret (建议使用256位随机字符串)
# 启动后端服务
./mvnw spring-boot:runcd hrms-frontend
# 安装依赖
npm install
# 修改API地址
# 编辑 src/utils/request.js
# 更新 baseURL 为你的后端服务地址
# 启动开发服务器
npm run dev管理员账号:
- 用户名:
admin - 密码:
123456 - 权限:系统管理员,可访问所有功能
员工测试账号:
- 用户名:
E001(工号),密码:123456,姓名:张三,技术部 Java开发工程师 - 用户名:
E002(工号),密码:123456,姓名:李四,人事部 人事专员
重要提醒:以上是预设的测试账号,生产环境中请务必修改默认密码!
- 📊 仪表板 - 系统概览和统计数据
- 👥 员工管理 - 员工信息的增删改查
- 💰 薪资管理 - 薪资标准设置、薪资发放管理
- 📝 请假审批 - 员工请假申请的审批流程
- 📢 公告管理 - 系统公告的发布和管理
- 📈 报表分析 - 各类数据报表和统计分析
- 📊 个人面板 - 个人信息和工作概览
- 👤 个人资料 - 查看和修改个人信息
- 📝 请假申请 - 提交和查看请假申请状态
- 💰 薪资查询 - 查看个人薪资记录
- 📢 公告查看 - 浏览系统公告
- 删除限制: 只有状态为"离职"的员工才能被删除,在职员工无法直接删除
- 状态管理: 员工状态包括:在职、试用期、离职,需要先修改状态为"离职"才能执行删除操作
- 工号唯一性: 员工工号(emp_id)在系统中必须唯一,不能重复
- 密码策略: 员工初始密码为
123456,建议首次登录后立即修改
- 状态流转: 薪资记录状态:草稿 → 已确认 → 已发放,状态只能单向流转
- 月份唯一性: 每个员工每月只能有一条薪资记录,不允许重复
- 计算逻辑: 总工资 = 基本工资 + 津贴 + 奖金 - 扣款
- 删除限制: 已发放的薪资记录不能删除,只能查看
- 审批流程: 员工提交 → 待审批 → 已批准/已拒绝,已审批的申请不能修改
- 日期验证: 请假开始日期不能早于当前日期,结束日期不能早于开始日期
- 天数计算: 系统自动计算请假天数,包含开始和结束日期
- 状态限制: 只有"待审批"状态的申请可以撤销或修改
- 状态控制: 公告状态包括"草稿"和"已发布",只有已发布的公告员工才能看到
- 权限限制: 只有管理员可以创建、编辑和删除公告
- 发布日期: 公告发布日期不能早于当前日期
- 角色分离: 管理员(ADMIN)和员工(EMPLOYEE)角色严格分离,功能权限不同
- 登录验证: 使用JWT进行身份验证,token有效期24小时
- 操作限制: 员工只能查看和修改自己的信息,不能访问其他员工数据
- 密码加密: 所有密码使用BCrypt加密存储,不可逆
- 软删除: 某些关键数据采用软删除策略,不会真正从数据库中删除
- 外键约束: 数据库设置了外键约束,确保数据完整性
以下问题欢迎社区贡献者协助修复:
- 薪资管理模块: 管理员薪资管理页面中,员工姓名列可能显示为空或无法正确关联员工信息
我们欢迎并感谢所有形式的贡献!
- 🐛 Bug 修复 - 修复上述已知问题或其他发现的问题
- ✨ 新功能 - 添加新的功能模块
- 📝 文档改进 - 完善文档和注释
- 🎨 UI/UX 优化 - 改进用户界面和体验
- ⚡ 性能优化 - 提升系统性能
- 🧹 代码重构 - 优化代码结构和质量
- 保持代码风格一致
- 添加适当的注释和文档
- 确保新功能有相应的测试
- 遵循现有的项目结构
hrms/
├── hrms-back/ # 后端 Spring Boot 项目
│ ├── src/main/java/com/a0615/
│ │ ├── controller/ # 控制器层
│ │ ├── service/ # 服务层
│ │ ├── entity/ # 实体类
│ │ ├── mapper/ # MyBatis 映射器
│ │ └── util/ # 工具类
│ └── src/main/resources/
│ └── application.yml # 配置文件
├── hrms-frontend/ # 前端 Vue 3 项目
│ ├── src/
│ │ ├── views/ # 页面组件
│ │ ├── components/ # 公共组件
│ │ ├── api/ # API 接口
│ │ └── utils/ # 工具函数
│ └── package.json
└── hrms-database-init.sql # 数据库初始化脚本
- Spring Boot 3.x - 主框架
- Spring Security - 安全认证
- MyBatis-Plus - ORM 框架
- MySQL - 数据库
- JWT - 身份验证
- Maven - 依赖管理
- Vue 3 - 前端框架
- Element Plus - UI 组件库
- Vue Router - 路由管理
- Pinia - 状态管理
- Axios - HTTP 客户端
- ECharts - 图表库
- Vite - 构建工具
本项目采用 MIT 许可证。
- 新用户推荐: 使用
hrms-database-basic.sql,包含基础功能演示数据 - 开发测试: 如需大量测试数据,可自行生成
在部署前,请务必检查并修改以下配置: 数据库连接信息(用户名、密码)
- JWT 密钥配置
- 前端 API 地址配置
- 所有默认账号密码
后端配置文件 hrms-back/src/main/resources/application.yml:
spring:
datasource:
username: your_database_username # 修改数据库用户名
password: your_database_password # 修改数据库密码
jwt:
secret: your_jwt_secret_key_must_be_at_least_256_bits_long # 修改JWT密钥前端配置文件 hrms-frontend/src/utils/request.js:
const request = axios.create({
baseURL: 'http://your-server:8080/api', // 修改为实际的后端地址
timeout: 30000,
// ...
});默认账号密码(生产环境必须修改):
- 管理员:admin / 123456
- 员工:E001, E002, E003 / 123456
- 使用环境变量管理敏感配置
- 启用 HTTPS 协议
- 配置防火墙和访问控制
- 定期备份数据库
- 监控系统运行状态
注意: 本项目不一定再进行定期更新。我们鼓励社区成员积极自己改进和维护!
