【毕业设计】基于SpringBoot+Vue+ElementUI的人力资源管理系统源码

1、前言介绍

在如今这个人才需求量大的时代,各方企业为了永葆企业的活力与生机,在不断开 拓进取的同时,又广泛纳用人才,为企业的长久发展奠定了基础。于是,各个企业与部 门机构,都不可避免地会接触到人力资源管理的问题。

Hrm 是一款人力资源管理系统,其主要功能模块有员工个人信息修改、请假、员工 的薪资管理、考勤管理、社保管理。其中考勤管理实现了员工考勤状态的修改与员工考 勤月报表的导出,以及通过员工考勤记录的导入来实现员工考勤状态的判断。社保管理, 主要实现了员工社保的计算以及明细的修改。薪资管理,实现了员工工资的调整,以及 员工月工资报表的导出。 本项目采用了前后端分离的技术,前端是基于 Vue+ElementUI+Axios 开发的,后端 则是基于 Spring Boot+MyBatis Plus+ Jwt+Mysql。本项目实现了权限菜单管理,通过员 工的权限动态渲染菜单,并动态生成路由。通过 Jwt token 来判断当前登录的员工以及 员工的登录状态。

2、主要技术

技术名 作用
SpringBoot 后端框架
Vue 前端框架
MySQL 数据库

3、系统设计

3.1、功能结构设计

本系统主要分四个模块,分别是系统管理和权限管理、薪资管理、考勤管理,系统 管理主要用于日常事务管理管理,权限管理,用于控制员工的访问权限,薪资管理主要 是对员工的五险一金以及社保数据的修改和添加,考勤管理主要是对员工的日常打卡进 行记录和统计。

3.2、前端设计

3.2.1、前端接口封装

本项目对 Axios 进行了全局的封装,对前端请求和后端响应进行了统一的拦截,并人力资源管理系统进行相应的处理。前端调用的 Api 都封装在 src/api 模块下,进行统一的管理。

3.2.2、组件封装

为了解决代码复用的问题,通过结合 Element UI。本项目对 form 表单和 table 数据 表进行了进一步的组件封装。

3.2.3、动态路由

本项目采用了基于后端权限菜单的来实现动态路由,为了保证菜单数据的全局共享, 菜单数据使用 vuex 来保存。当员工访路由时,通过全局路由守卫进行拦截,并向后端 请求该员工的菜单数据。

3.3、后端设计

3.3.1、全局异常处理

为 了 高 效 地 处 理 异 常 , 本 项 目 对 异 常 进 行 了 全 局 的 统 一 处 理 , 使 用

@ControllerAdvice 声明一个全局异常处理器,并通过继承 RuntimeException 实现一个异 常类,在需要异常处理的地方抛出自定义的异常。

3.3.2、数据传输对象

本项目中,后端响应给前端的数据都统一封装在 ResponseDTO 中,然后前端通过 解析得到 ResponseDTO 的 json 对象。通过定义全局的业务状态码枚举类。前端通过后 端响应数据的状态码来判断业务处理是否异常。

3.4、数据库设计

根据《阿里开发手册》,本项目的每张表都包含 id、create_time、update_time 三个 字段。项目统一采用逻辑删除,每张表都包括 is_deleted 字段。根据实际业务需求,项 目分为系统管理、权限管理、薪资管理、考勤管理四大模块。表前缀 sys_(系统管理)、

per_(权限管理)、att_(考勤管理)、sal_(工资管理)、soc_(五险一金)。

3.4.1、系统管理模块

系统管理模块主要涉及 3 张表,负责对员工、部门、以及被上传文件的数据信息进人力资源管理系统行保存。

3.4.2、权限管理模块

权限管理模块主要涉及 5 张表,主要对菜单数据、角色数据进行保存。

3.4.3、考勤管理模块

员工考勤模块主要涉及 9 张表,主要对员工的考勤数据,以及各部门的考勤规则、 加班、请假、工作时间等规则信息的保存。

3.4.4、薪资管理模块 

薪资管理模块主要涉及 7 张表,用于保存参保城市社保信息、员工每个的工资明细、 以及考勤扣款情况。

4、系统实现

4.1、登录

此模块完成了员工的登录功能,员工通过工号和密码进行登录。若员工状态异常则 无法登录。

登录接口:

@PostMapping("/login") public ResponseDTO login(@RequestBody Staff staff)

接口说明: 当员工填写好登录账号和密码之后,前端会提交登录表单。后端接收到数据之后, 会进行数据库查询,并将最终的查询结果以状态码的形式封装在 ResponseDTO 之中, 并返回到前端。

核心代码:

public ResponseDTO login(Staff staff) { 
    String password = MD5Util.MD55(staff.getPassword()); 
    StaffDeptVO staffDeptVO = this.staffMapper.findStaffInfo(staff.getCode(), password); 
    if (staffDeptVO != null) { // 验证用户状态
        if (staffDeptVO.getStatus() == 1) { 
            String token = JWTUtil.generateToken(staffDeptVO.getId(),password); 
            return Response.success(staffDeptVO, token); // 返回员工信息和 token 
        } 
        return Response.error(BusinessStatusEnum.STAFF_STATUS_ERROR); 
    } 
    return Response.error("用户名或密码错误!"); 
}

登录流程: 首先通过前端传递的账号和密码进行员工查询,之后对查询到的员工进行状态判断, 如果状态正常,则将用户的信息和生成的 token 返回给前端,前端将 token 保存在

localstorage 中。

4.2、个人信息编辑

此模块实现了员工个人信息的查看与修改,员工可以进行个人头像的修改。

编辑接口:

@PutMapping public ResponseDTO edit(@RequestBody Staff staff)

接口说明:

员工填写的信息会通过 el-form 组件的 data 属性,将数据绑定到一个 json 对象中, 并通过 put 提交,最后后端接收数据,并完成相应员工信息的更新。 核心代码:

public ResponseDTO edit(Staff staff) { 
    if (updateById(staff)) { 
        return Response.success(); 
    } 
    return Response.error(); 
}

流程: 员工填写的信

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端筱悦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值