基于springboot+vue的员工绩效考核与激励系统
博主主页:
博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战
主要内容:毕业设计(|等)、、学习资料、面试题库、技术咨询
文末联系获取
项目介绍:
本系统适合选题:员工绩效、绩效管理、考核、激励、绩效考核等。系统采用springboot+vue整合开发,前端框架主要使用了element-ui框架、数据层采用mybatis,功能齐全,界面美观。
古往今来,对于企业员工绩效考核的管理一直存在,主要的管理方式就是人工加计算机结合进行管理。在签到中采用签到机进行,在数据统计中采用人工进行。这种方式的缺点就是不能用于中大型规模的公司,而且对于效益好的企业来说这种管理方式也非常的浪费时间和人力。对于每次的统计都需要多人参与和多次核对,出错率较高。在科技发展的今天,这些不同分类的信息完全可以交由计算机来进行处理,不会出错,效率还很高,计算机与网络结合的月度员工绩效考核管理系统的优点非常明显。
现在很多的企业也都引入了计算机的员工绩效考核管理系统,这些现有的员工绩效考核管理系统的优缺点非常明显。通过本人调查发现,现有的员工绩效考核管理系统的优点有:
(1)大多数的员工绩效考核管理系统采用的是c/s结构模式,对于数据的安全非常可靠;
(2)大多数的员工绩效考核管理系统采用的是关系型的数据库进行企业数据的管理,性能非常高;
(3)大多数的员工绩效考核管理系统对于信息的更新方面,界面的设计方面都非常的成熟和完善。
缺点有:
(1)系统稳定性不高,因为采用了c/s结构进行开发,所以当依靠的计算机一旦崩溃,企业中的所有信息数据都不复存在,并且c/s结构的并发性操作非常严重,如果在代码编写中不注意将会影响系统的稳定,编码人员为了满足用户的要求需要进行代码的多次改写,c/s结构的系统在经过多次修改后,容易有并发症,造成系统不稳定;
(2)系统安全性不高,因为系统非常依赖客户机,所以在系统设计中大多采用的是脚本模式,这种模式对于安全性不可靠。
功能介绍:
本系统的功能分为管理员和员工两个角色,管理员的功能有:
(1)个人中心管理功能,添加管理员账号和修改登录密码;
(2)部门信息管理功能,对企业中的部门进行合理安排;
(3)员工信息管理功能,对企业中的员工的基本资料进行维护;
(4)绩效考核管理功能,发布员工的绩效考核,修改和删除不正确的绩效考核;
(5)岗位信息管理功能,对员工的岗位进行分配;
(6)公告信息管理功能,发布公告和管理公告;
(7)绩效绩效指标管理功能,需要考核的指标进行设置。
员工的功能有:
(1)个人资料管理功能,对本人基本信息进行维护;
(2)公告信息管理功能,实现在线查询公告;
(3)绩效考核管理功能,查询自己的考核信息;
(4)绩效指标管理功能,查询考核的指标。
系统包含技术:
后端:springboot, 前端:element-ui、layui、js、css等 开发工具:idea/vscode 数据库:mysql 5.7 JDK版本:jdk1.8
部分截图说明:
下面是登录
部门管理
公告管理
员工管理
绩效指标
绩效考核
统计
部分代码:
@RequestMapping("/location")
public R location(String lng,String lat) {
if(BAIDU_DITU_AK==null) {
BAIDU_DITU_AK = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "baidu_ditu_ak")).getValue();
if(BAIDU_DITU_AK==null) {
return R.error("请在配置管理中正确配置baidu_ditu_ak");
}
}
Map<String, String> map = BaiduUtil.getCityByLonLat(BAIDU_DITU_AK, lng, lat);
return R.ok().put("data", map);
}
/**
* 人脸比对
*
* @param face1 人脸1
* @param face2 人脸2
* @return
*/
@RequestMapping("/matchFace")
public R matchFace(String face1, String face2) {
if(client==null) {
/*String AppID = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "AppID")).getValue();*/
String APIKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "APIKey")).getValue();
String SecretKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "SecretKey")).getValue();
String token = BaiduUtil.getAuth(APIKey, SecretKey);
if(token==null) {
return R.error("请在配置管理中正确配置APIKey和SecretKey");
}
client = new AipFace(null, APIKey, SecretKey);
client.setConnectionTimeoutInMillis(2000);
client.setSocketTimeoutInMillis(60000);
}
JSONObject res = null;
try {
File file1 = new File(ResourceUtils.getFile("classpath:static/upload").getAbsolutePath()+"/"+face1);
File file2 = new File(ResourceUtils.getFile("classpath:static/upload").getAbsolutePath()+"/"+face2);
String img1 = Base64Util.encode(FileUtil.FileToByte(file1));
String img2 = Base64Util.encode(FileUtil.FileToByte(file2));
MatchRequest req1 = new MatchRequest(img1, "BASE64");
MatchRequest req2 = new MatchRequest(img2, "BASE64");
ArrayList<MatchRequest> requests = new ArrayList<MatchRequest>();
requests.add(req1);
requests.add(req2);
res = client.match(requests);
System.out.println(res.get("result"));
} catch (FileNotFoundException e) {
e.printStackTrace();
return R.error("文件不存在");
} catch (IOException e) {
e.printStackTrace();
}
return R.ok().put("data", com.alibaba.fastjson.JSONObject.parse(res.get("result").toString()));
}
/**
* 获取table表中的column列表(联动接口)
* @param table
* @param column
* @return
*/
@IgnoreAuth
@RequestMapping("/option/{tableName}/{columnName}")
public R getOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName,String level,String parent) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("table", tableName);
params.put("column", columnName);
if(StringUtils.isNotBlank(level)) {
params.put("level", level);
}
if(StringUtils.isNotBlank(parent)) {
params.put("parent", parent);
}
List<String> data = commonService.getOption(params);
return R.ok().put("data", data);
}
/**
* 根据table中的column获取单条记录
* @param table
* @param column
* @return
*/
@IgnoreAuth
@RequestMapping("/follow/{tableName}/{columnName}")
public R getFollowByOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, @RequestParam String columnValue) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("table", tableName);
params.put("column", columnName);
params.put("columnValue", columnValue);
Map<String, Object> result = commonService.getFollowByOption(params);
return R.ok().put("data", result);
}
以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~
原文链接:https://www.mtycode.com/1057.html,转载请注明出处,更多项目请进入官网:www.maotouyingcc.com。
请先
!