面对疫情防控的严峻形势和经济下行的压力,许多企业纷纷向数字化转型,在内部启用各类信息系统,工作模式也逐渐从线下转到线上,以期维持正常的工作秩序,提升办公效率。因此,基于企业普遍的工作要求,本文主要研究后疫情时代的背景下企业在线办公系统的设计与开发。
-
总体设计
-
数据库设计
-
登录安全设计
非授权访问是黑客常用的手段,黑客通过这种方式攻击系统的目的有两种:一是获取并更改系统数据,二是远程控制计算机来下载病毒。为防止非授权访问,前端通过Axios技术设置拦截器,当用户登录成功后,系统会将账号保存在sessionStorage中。而当非授权访问时,前端通过路由导航守卫判断sessionStorage中是否存储了账号,若未存储,则默认跳转到登录界面。
设置拦截器的代码如下:
axios.interceptors.request.use(config=>{
if(window.sessionStorage.getItem('username')){
config.headers['Authorization']=window.sessionStorage.getItem('username')
}
return config;
},error=>{
console.log(error);
})
路由导航守卫的代码如下:
router.beforeEach((to,from,next)=>{
if(window.sessionStorage.getItem("username")){
// 跳转到主页
next();
}else{//当用户在登录界面时,允许用户进入登录界面
if(to.path=='/')
next();
else{//对用户进行拦截,重定向到登录界面
next('/?redirect='+to.path);
}
}
-
前后端交互设计
前端利用Axios技术发送请求,通过跨域代理的方式,将发送的请求地址统一进行转换并将数据以JSON格式传给后端,后端调用方法获取参数并处理,再用renderJson()传回数据。具体的跨域代理配置如下:
proxyObj['/work']={
ws:false,
// 目标地址
target:'http://localhost:8082',
changeOrigin:true,
// 不重写请求地址
pathReWrite:{
'^/work':'/'
}
}
//前端请求地址是http://localhost:8082/work/
-
系统详细设计
-
入职办理
人力专员把入职办理的人员信息进行汇总后,交由人力主管,再由人力主管在系统中录入入职人员的信息。在录入时,系统需要判断身份证号是否重复,如果不重复,系统会添加该人员的信息,并自动添加合同签订的记录;如果重复,系统会判断该人员是否是再次入职。如果是再次入职, 当人力主管同意该人员入职时,系统会添加该人员的信息,并自动添加合同签订的记录;如果不是再次入职,则提示“员工信息错误”。
-
调动办理
部门主管统计部门内员工的调动情况,在系统中进行申请,再由人力主管进行审核。当审核通过后,由调入部门的主管修改调动人员的工资账套,员工即可调入到新部门,而离职人员需要办理合同解除业务,与公司解除劳动关系;如果审核不通过,则该员工仍在原部门工作。
-
请假管理
员工在系统中填写请假单并提交后,系统根据岗位名称判断是否是部门主管,如果是,则由总经理进行审核,否则由部门主管进行审核。
-
考勤管理
员工在系统点击签到时,系统会从是否工作日、是否请假、签到时间和地点是否正确上进行判断,确定是否计入考勤。
-
薪资管理
用户在填写并提交员工信息后,如果该人员未分配工资账套,需要先分配账套,然后继续填写员工信息;如果分配了工资账套,系统会判断该员工本月的工资信息是否存在,如果已经存在,则不需要添加,否则系统会查询员工的考勤、奖惩信息,计算并添加员工的工资信息。