his项目
his项目第一天
后端
用mybatis逆向工程,自动生成实体类,mapper文件
https://www.jianshu.com/p/c89a888a53e3 这是网址,有详细配置
配置了security
security小总结
算上user表一共5张表就可以解决权限问题,user_role规定了一个用户有哪些角色,menu_role规定了这个访问路径哪些角色可以访问
user和menu都要加一个private List<Role> roles;泛型为角色的集合。user实现UserDetails,重写5个方法,其中一个返回集合的方法是用户的角色。userservice实现UserDetailsService,里面有查找用户和通过用户id查找这个人角色的方法
两个配置类,一个查找所有路径和角色的关系,里面通过比较当前访问路径,获得访问这个路径需要的角色,另一个用当前登录的角色和需要的角色做对比。
前端
安装elementui npm i element-ui -S ,在main.js入口文件中引入
<pre class="md-fences md-end-block" lang="" contenteditable="false" cid="n28" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9rem; white-space: pre; line-height: 1.71429em; text-align: left; break-inside: avoid; display: block; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(218, 218, 218); position: relative !important; margin-bottom: 3em; padding-left: 1ch; padding-right: 1ch; margin-left: 2em; width: inherit;">import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);</pre>制作了登录页面
npm i axios 在api里import axios from 'axios';import {Message} from "element-ui";
然后f封装api,有响应拦截器和五种请求,在main.js导入,并且注册成插件
在项目下建一个node.config.js 处理假跨域
制作路由,用作遍历侧边栏,普通路由加上hidden:true,让他遍历时不遍历,其它设成home的子路由,
his项目第三天
制作了前端home页的卡片项
制作了前端的ConstantManage组件
后端写了接口,运用了分页
先引依赖,
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.10</version></dependency>
然后就可以用了,多加一个pageSize,和一个pageNum参数
排班管理
表
rule排班规则表 有外键userid和deptid,还有一个字段week,存一个14位的非1即0的字符串,分别对应一个礼拜的上下午,1代表可以排班,0代表不能排班
scheduling 排班表,有外键userid和deptid和ruleid,有一个字段noon不是上午就是下午,date字段是日期
新增排班规则做的是先查询user表,在后端返回集合的泛型的实体类中,加入14个boolean值,对应 14个上午下午,然后给前端数据后,把这些boolean值分别跟前端的14个checkbox进行绑定,选中就是true,不选中就是false,做保存规则的时候,用number判断,遍历把boolean值分别变成0,或1,拼接成一个字符串。
生成排班计划,利用指定的规则,选中哪个就对哪个进行排版,主要的地方是在后端处理,前端定义成一个对象,然后除了开始和结束时间定义成字符串,其它都是数组,因为可以多选排班规则进行排班,传到后端,后端写一个实体类接收数据,在service处理,先取到这个对象里的所有值,先将时间字符串转成Calendar类型对象,判如如果开始时间比结束时间晚,返回一个错误,当开始时间和结束时间正常的时候,进行循环,循环是每次循环添加规则里面所有人一天的排班计划,里面需要判断当前日期是星期几,写一个方法,参数是Calendar类型,用他的get
Calendar.Day-of -week方法,如果是1,返回7,因为星期日是第一天,
其他是-1,判断之前0,1d的字符串,用charat方法,参数放处理过的当前是星期几的参数*2-2,如果等于1,表里的上下午字段就填上午,然后判断下午也有类似的方法,里层循环之后就把一天选中的规则排班都拍完了,然后外层继续循环下一天,别忘了外层结束天数加一,要不少一轮,循环完事,添加成功