1.会员档案功能实现
1.1 分页显示
前台代码
member.html
<el-table size="small" current-row-key="id" :data="dataList" stripe highlight-current-row>
<el-table-column type="index" align="center" label="序号"></el-table-column>
<el-table-column prop="fileNumber" label="档案号" align="center"></el-table-column>
<el-table-column prop="name" label="姓名" align="center"></el-table-column>
<el-table-column label="性别" align="center">
<template slot-scope="scope">
<span>{{ scope.row.sex == '0' ? '不限' : scope.row.sex == '1' ? '男' : '女'}}</span>
</template>
</el-table-column>
<el-table-column prop="idCard" label="身份证" align="center"></el-table-column>
<el-table-column prop="username" label="健康管理师" align="center"></el-table-column>
<el-table-column prop="phoneNumber" label="手机号码" align="center"></el-table-column>
<el-table-column prop="regTime" label="注册时间" align="center"></el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<!-- 通过scop.row拿取当前这条列的数据,对应与这条列的json对象-->
<el-button type="primary" size="mini" @click="handleUpdate(scope.row)">编辑</el-button>
<el-button size="mini" type="danger" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
//分页查询
findPage() {
//封装请求参数数据(页码、每页显示的条数、查询条件),进行传送queryPageBean
var param = {
currentPage: this.pagination.currentPage,
pageSize: this.pagination.pageSize,
queryString: this.pagination.queryString
};
console.log(param);
//发送ajax请求,提交分页相关请求参数(页码、每页显示的条数、查询条件)
axios.post("/member/findPage.do",param).then((res)=>{
//解析controller响应回的数据,为模型数据赋值
this.pagination.total = res.data.total;//总记录数
this.dataList = res.data.rows;//返回的数据集合
}).catch((r)=>{
this.showMessage(r);
});
},
后台代码
memberController
//会员分页查询功能
// @PreAuthorize("hasAuthority('CHECKITEM_QUERY')")//权限校验
@RequestMapping("/findPage")//使其那个被访问到
public PageResult findPage(@RequestBody QueryPageBean queryPageBean){
PageResult pageResult = memberService.pageQuery(queryPageBean);
System.out.println(pageResult.toString());
System.out.println(queryPageBean.toString());
return pageResult;//框架会将这个对象自动转换为JSON数据,响应回页面
}
memberSeiviceImpl
@Override
//检查项分页查询
public PageResult pageQuery(QueryPageBean queryPageBean) {
Integer currentPage = queryPageBean.getCurrentPage();//获取当前页面
Integer pageSize = queryPageBean.getPageSize();//要查询的数据,每页的记录数
String queryString = queryPageBean.getQueryString();//过滤条件/查询条件
//完成分页查询,基于mybatis框架提供的分页助手插件完成,现在不需要写sql语句(使用limit)
//现在只需要写limit前面的内容就可以了,limit之后的内容会自动追加
PageHelper.startPage(currentPage,pageSize);//不需要返回值,这个原理是使用线程实现的
//调用dao继续数据的操作
Page<Member> page = memberDao.selectByCondition(queryString);
long total = page.getTotal();
List<Member> rows = page.getResult();
return new PageResult(total,rows);
}
1.2 新增会员
前台代码
member.html
<!-- 新增标签弹层 -->
<div class="add-form">
<el-dialog title="新增会员" :visible.sync="dialogFormVisible">
<el-form ref="dataAddForm" :model="formData" label-position="right" label-width="100px">
<el-row>
<el-col :span="12">
<el-form-item label="档案号" prop="code">
<el-input v-model="formData.fileNumber"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="姓名" prop="name">
<el-input v-model="formData.name"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="性别">
<el-select v-model="formData.sex">
<el-option label="男" value="1"></el-option>
<el-option label="女" value="2"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="手机号码">
<el-input v-model="formData.phoneNumber"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="健康管理师">
<el-input v-model="formData.username"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="邮箱">
<el-input v-model="formData.email"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="出生日期">
<el-date-picker type="date" v-model="formData.birthday"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="身份证号">
<el-input v-model="formData.idCard"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注">
<el-input v-model="formData.remark" type="textarea"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取消</el-button>
<el-button type="primary" @click="handleAdd()">确定</el-button>
</div>
</el-dialog>
</div>
/添加
handleAdd () {
//对表单校验
this.$refs['dataAddForm'].validate((valid) => {
if (valid){
//表单校验通过,发送ajax请求,将录入的数据提交给后台controller进行处理
console.log(this.formData);
axios.post("/member/add.do",this.formData).then((res)=>{
//关闭新增窗口,不管成功或者是失败都要将窗口关闭掉
this.dialogFormVisible = false;
if (res.data.flag){//执行成功
console.log(res);
//新增成功后,重新调用分页查询方法。查询出最新的数据
this.findPage();
//弹出提示信息
this.$message({//$message是vue的Element组件Message的 消息提示
message:res.data.message,
type:'success'
});
}else {//执行失败
//弹出提示,$message是vue的Element组件Message的 消息提示
this.$message.error(res.data.message);
}
}).catch((r)=>{
this.showMessage(r);
});
}else {
//校验不通过
this.$message.error("数据校验失败,请检查你输入的信息是否正确!");
//失败了,剩下的代码就没有必要执行了,所以
return false;
}
})
},
// 弹出添加窗口
handleCreate() {
//点击新建后弹出新建窗口
this.dialogFormVisible = true;
this.resetForm();
},
后台代码
memberController
// @PreAuthorize("hasAuthority('CHECKGROUP_ADD')")//权限校验
@RequestMapping("/add")
//新增会员
//因为checkitemIds传递过来的并不是json数据,所以不需要加@RequestBody
public Result add(@RequestBody Member member) {
try {
member.setRegTime(new Date());
memberService.add(member);
}catch (Exception e){
e.printStackTrace();
return new Result(false, MessageConstant.ADD_MEMBER_FAIL);//新增失败
}
return new Result(true,MessageConstant.ADD_MEMBER_SUCCESS);//新增成功
}
memberSeiviceImpl
//保存会员信息
@Override
public void add(Member member) {
// String password = member.getPassword();
// if(password != null){
// //使用md5将明文密码进行加密
// password = MD5Utils.md5(password);
// member.setPassword(password);
// }
memberDao.add(member);
}
1.3 修改会员
前台代码
member.html
<!-- 编辑标签弹层 -->
<div class="add-form">
<el-dialog title="编辑检查项" :visible.sync="dialogFormVisible4Edit">
<el-form ref="dataAddForm" :model="formData" label-position="right" label-width="100px">
<el-row>
<el-col :span="12">
<el-form-item label="档案号" prop="code">
<el-input v-model="formData.fileNumber"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="姓名" prop="name">
<el-input v-model="formData.name"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="性别">
<el-select v-model="formData.sex">
<el-option label="男" value="1"></el-option>
<el-option label="女" value="2"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="手机号码">
<el-input v-model="formData.phoneNumber"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="健康管理师">
<el-input v-model="formData.username"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="邮箱">
<el-input v-model="formData.email"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="出生日期">
<el-date-picker type="date" v-model="formData.birthday"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="身份证号">
<el-input v-model="formData.idCard"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注">
<el-input v-model="formData.remark" type="textarea"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible4Edit = false">取消</el-button>
<el-button type="primary" @click="handleEdit()">确定</el-button>
</div>
</el-dialog>
</div>
// 弹出编辑窗口
handleUpdate(row) {
//弹出编辑窗口
this.dialogFormVisible4Edit = true;
//回显数据,通过发送ajax请求根据id查询当前检查项数据,进行回显
axios.get("/member/findById.do?id="+row.id).then((res)=>{
//判断这个controller是否执行成功
if (res.data.flag){
//进行回显,基于vue的数据绑定实现,可以查看上面的内容可以发现都是双向绑定formData内容的
this.formData = res.data.data;
}else {
//查询失败,弹出提示
this.$message.error(res.data.message);
}
}).catch((r)=>{
this.showMessage(r);
});
},
axios.post("/member/edit.do",this.formData).then((res)=>{
if (res.data.flag){
//controller操作成功
this.$message({
type:'success',
message:res.data.message
});
}else {
//执行失败
this.$message.error(res.data.message);
}
}).finally(()=>{
//finally不管成功还是失败都要调用分页查询方法
this.findPage();
//隐藏编辑窗口
this.dialogFormVisible4Edit = false;
});
后台代码
memberController
//根据id查询检查项
@RequestMapping("/findById")//使其那个被访问到
public Result findById(Integer id){
//使用try。。catch。。进行成功还是失败判断
try{
// System.out.println(checkItem.toString());
Member member = memberService.findById(id);//如果调用失败就进入catch,没有失败就
//证明成功
return new Result(true, MessageConstant.QUERY_MEMBER_SUCCESS,member);
}catch (Exception e){
//证明调用失败
e.printStackTrace();
return new Result(false, MessageConstant.QUERY_MEMBER_FAIL);
}
}
//编辑检查项
// @PreAuthorize("hasAuthority('CHECKITEM_EDIT')")//权限校验
@RequestMapping("/edit")//使其那个被访问到
public Result edit(@RequestBody Member member){
//使用try。。catch。。进行成功还是失败判断
try{
memberService.edit(member);//如果调用失败就进入catch,没有失败就
}catch (Exception e){
//证明调用失败
e.printStackTrace();
return new Result(false, MessageConstant.EDIT_MEMBER_FAIL);
}
//证明成功
return new Result(true, MessageConstant.EDIT_MEMBER_SUCCESS);
}
memberSeiviceImpl
@Override
//通过id查询会员
public Member findById(Integer id) {
return memberDao.findById(id);
}
@Override
public void edit(Member member) {
memberDao.edit(member);
}
1.4 删除会员
前台代码
member.html
// 删除
handleDelete(row) {//row其实是一个json对象,json对象中的数据为{"age":"0-100","attention":"无","code":"0007","id":34,"name":"裸视力(左)","price":5.0,"remark":"裸视力(左)","sex":"0","type":"1"}
console.log(row);
// alert(row.id);
this.$confirm("你确定要删除当前检查项吗?","提示",{
type: 'warning'
}).then(()=>{
// alert("点击了确定按钮");
//用户点击确认按钮,发送ajax请求,将检查项提交到Controller进行处理
axios.get("/member/delete.do?id="+row.id).then((res)=>{
//判断是否执行成功
if (res.data.flag){
//执行成功
//弹出成功提示信息
this.$message({
type:'success',
message:res.data.message
});
//重新进行分页查询
this.findPage();
}else {
//执行失败
this.$message.error(res.data.message);
}
}).catch((r)=>{
this.showMessage(r);
});
}).catch(()=>{
// alert("点击了取消按钮");
this.$message({
type:'info',
message:'操作已取消'
});
});
}
后台代码
memberController
//删除会员
// @PreAuthorize("hasAuthority('CHECKITEM_DELETE')")//权限校验
@RequestMapping("/delete")//使其那个被访问到
public Result delete(Integer id){
//使用try。。catch。。进行成功还是失败判断
try{
System.out.println(id);
memberService.deleteById(id);//如果调用失败就进入catch,没有失败就
}catch (Exception e){
//证明调用失败
e.printStackTrace();
return new Result(false, MessageConstant.DELETE_MEMBER_FAIL);
}
//证明删除成功
return new Result(true, MessageConstant.DELETE_MEMBER_SUCCESS);
}
memberSeiviceImpl
@Override
public void deleteById(Integer id) {
memberDao.deleteById(id);
}
2.用户功能实现
设置健康管理师或系统管理员的设置
2.1 分页显示
前台代码
user.html
<el-table size="small" current-row-key="id" :data="dataList" stripe highlight-current-row>
<el-table-column type="index" align="center" label="序号"></el-table-column>
<el-table-column prop="username" label="姓名" align="center"></el-table-column>
<!-- <div v-for="r in roles">-->
<el-table-column prop="roles" label="角色" align="center">
<template slot-scope="scope">
<span>{{ scope.row.roles[0].name}}</span>
</template>
</el-table-column>
<!-- </div>-->
<el-table-column prop="station" label="状态" align="center"></el-table-column>
<el-table-column label="性别" align="center">
<template slot-scope="scope">
<span>{{ scope.row.gender == '0' ? '不限' : scope.row.gender == '1' ? '男' : '女'}}</span>
</template>
</el-table-column>
<el-table-column prop="telephone" label="联系电话" align="center"></el-table-column>
<el-table-column prop="remark" label="备注" align="center"></el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<!-- 通过scop.row拿取当前这条列的数据,对应与这条列的json对象-->
<el-button type="primary" size="mini" @click="handleUpdate(scope.row)">编辑</el-button>
<el-button size="mini" type="danger" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
//分页查询
findPage() {
//封装请求参数数据(页码、每页显示的条数、查询条件),进行传送queryPageBean
var param = {
currentPage: this.pagination.currentPage,
pageSize: this.pagination.pageSize,
queryString: this.pagination.queryString
};
console.log(param);
//发送ajax请求,提交分页相关请求参数(页码、每页显示的条数、查询条件)
axios.post("/user/findPage.do",param).then((res)=>{
//解析controller响应回的数据,为模型数据赋值
this.pagination.total = res.data.total;//总记录数
this.dataList = res.data.rows;//返回的数据集合
console.log(this.dataList[0]);
}).catch((r)=>{
this.showMessage(r);
});
},
后台代码
UserController
//用户分页查询功能
// @PreAuthorize("hasAuthority('CHECKITEM_QUERY')")//权限校验
@RequestMapping("/findPage")//使其那个被访问到
public PageResult findPage(@RequestBody QueryPageBean queryPageBean){
PageResult pageResult = userService.pageQuery(queryPageBean);
System.out.println(pageResult.toString());
System.out.println(queryPageBean.toString());
return pageResult;//框架会将这个对象自动转换为JSON数据,响应回页面
}
UserService
/**
* 用户分页查询功能
* @param queryPageBean
* @return
*/
public PageResult pageQuery(QueryPageBean queryPageBean);
UserServiceImpl
@Override
public PageResult pageQuery(QueryPageBean queryPageBean) {
Integer currentPage = queryPageBean.getCurrentPage();//获取当前页面
Integer pageSize = queryPageBean.getPageSize();//要查询的数据,每页的记录数
String queryString = queryPageBean.getQueryString();//过滤条件/查询条件
//完成分页查询,基于mybatis框架提供的分页助手插件完成,现在不需要写sql语句(使用limit)
//现在只需要写limit前面的内容就可以了,limit之后的内容会自动追加
PageHelper.startPage(currentPage,pageSize);//不需要返回值,这个原理是使用线程实现的
//调用dao继续数据的操作
Page<User> page = userDao.selectByCondition(queryString);
long total = page.getTotal();
List<User> rows = page.getResult();
for (int i = 0; i < rows.size(); i++) {
User u = rows.get(i);
Integer id = u.getId();
Set<Role> roles = roleDao.findByUserId(id);
u.setRoles(roles);
}
return new PageResult(total,rows);
}
UserDao
public Page<User> selectByCondition(String queryString);
RoleDao
public Set<Role> findByUserId(Integer userId);
2.2 新增用户
user.html
<!-- 新增标签弹层 -->
<div class="add-form">
<el-dialog title="新增用户" :visible.sync="dialogFormVisible">
<el-form ref="dataAddForm" :model="formData" label-position="right" label-width="100px">
<el-row>
<el-col :span="12">
<el-form-item label="用户名" prop="code">
<el-input v-model="formData.username"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="角色">
<el-select v-model="role">
<el-option label="系统管理员" value="1"></el-option>
<el-option label="健康管理师" value="2"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="性别">
<el-select v-model="formData.gender">
<el-option label="男" value="1"></el-option>
<el-option label="女" value="2"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="生日" prop="birthday">
<el-date-picker type="date" v-model="formData.birthday"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="是否启用">
<el-select v-model="formData.station">
<el-option label="是" value="是"></el-option>
<el-option label="否" value="否"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="密码">
<el-input v-model="formData.password"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="联系电话">
<el-input v-model="formData.telephone"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注">
<el-input v-model="formData.remark" type="textarea"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取消</el-button>
<el-button type="primary" @click="handleAdd()">确定</el-button>
</div>
</el-dialog>
</div>
//添加
handleAdd () {
//对表单校验
this.$refs['dataAddForm'].validate((valid) => {
if (valid){
//表单校验通过,发送ajax请求,将录入的数据提交给后台controller进行处理
console.log(this.formData);
axios.post("/user/add.do?role="+this.role,this.formData).then((res)=>{
//关闭新增窗口,不管成功或者是失败都要将窗口关闭掉
this.dialogFormVisible = false;
if (res.data.flag){//执行成功
console.log(res);
//新增成功后,重新调用分页查询方法。查询出最新的数据
this.findPage();
//弹出提示信息
this.$message({//$message是vue的Element组件Message的 消息提示
message:res.data.message,
type:'success'
});
}else {//执行失败
//弹出提示,$message是vue的Element组件Message的 消息提示
this.$message.error(res.data.message);
}
}).catch((r)=>{
this.showMessage(r);
});
}else {
//校验不通过
this.$message.error("数据校验失败,请检查你输入的信息是否正确!");
//失败了,剩下的代码就没有必要执行了,所以
return false;
}
})
},
后台代码
UserController
// @PreAuthorize("hasAuthority('CHECKGROUP_ADD')")//权限校验
@RequestMapping("/add")
//新增检查组
//因为checkitemIds传递过来的并不是json数据,所以不需要加@RequestBody
public Result add(@RequestBody com.yy.pojo.User user, Integer role){
try {
userService.add(user,role);
}catch (Exception e){
e.printStackTrace();
return new Result(false, MessageConstant.ADD_USER_FAIL);//新增失败
}
return new Result(true,MessageConstant.ADD_USER_SUCCESS);//新增成功
}
UserService
/**
* 新增用户
* @param user
* @param role
*/
public void add(User user, Integer role);
UserServiceImpl
@Override
public void add(User user, Integer role) {
//新增检查组,操作t_user表
userDao.add(user);//这里通过MyBatis的selectKey标签将checkGroup里面的id修改为新增后的id
//设置检查组合检查项的多对多关联关系,操作t_user_row表
Integer userId = user.getId();//获取用户的id
this.setUserAndRoles(userId,role);//往t_user_row表插入一条数据
}
//设置用户和角色的多对多的关联关系
public void setUserAndRoles(Integer userId,Integer roleId){
Map<String,Integer> map = new HashMap<>();
map.put("userId",userId);
map.put("roleId",roleId);
userDao.setUserAndRoles(map);
}
UserDao
public void add(User user);
/**
* 往t_user_role表插入一条数据
* @param map
*/
public void setUserAndRoles(Map<String, Integer> map);
2.3 编辑用户
user.html
<div class="add-form">
<el-dialog title="编辑检查项" :visible.sync="dialogFormVisible4Edit">
<el-form ref="dataAddForm" :model="formData" label-position="right" label-width="100px">
<el-row>
<el-col :span="12">
<el-form-item label="用户名" prop="code">
<el-input v-model="formData.username"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="角色">
<el-select v-model="role">
<el-option label="系统管理员" value="1"></el-option>
<el-option label="健康管理师" value="2"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="性别">
<el-select v-model="formData.gender">
<el-option label="男" value="1"></el-option>
<el-option label="女" value="2"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="生日" prop="birthday">
<el-date-picker type="date" v-model="formData.birthday"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="是否启用">
<el-select v-model="formData.station">
<el-option label="是" value="是"></el-option>
<el-option label="否" value="否"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="密码">
<el-input v-model="formData.password"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="联系电话">
<el-input v-model="formData.telephone"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注">
<el-input v-model="formData.remark" type="textarea"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible4Edit = false">取消</el-button>
<el-button type="primary" @click="handleEdit()">确定</el-button>
</div>
</el-dialog>
</div>
//编辑
handleEdit() {
axios.post("/user/edit.do?role="+this.role,this.formData).then((res)=>{
if (res.data.flag){
//controller操作成功
this.$message({
type:'success',
message:res.data.message
});
}else {
//执行失败
this.$message.error(res.data.message);
}
}).catch((r)=>{
this.showMessage(r);
}).finally(()=>{
//finally不管成功还是失败都要调用分页查询方法
this.findPage();
//隐藏编辑窗口
this.dialogFormVisible4Edit = false;
});
},
// 弹出编辑窗口
handleUpdate(row) {
console.log(row);
//弹出编辑窗口
this.dialogFormVisible4Edit = true;
//回显数据,通过发送ajax请求根据id查询当前检查项数据,进行回显
axios.get("/user/findById.do?id="+row.id).then((res)=>{
//判断这个controller是否执行成功
if (res.data.flag){
//进行回显,基于vue的数据绑定实现,可以查看上面的内容可以发现都是双向绑定formData内容的
this.formData = res.data.data;
}else {
//查询失败,弹出提示
this.$message.error(res.data.message);
}
axios.get("/user/findRoleByUserId.do?id="+row.id).then((res)=>{
// alert(res.data.data.name)
if (res.data.flag){
this.role = res.data.data.name;
// if (res.data.data.name == '系统管理员'){
// this.role = 1;
// }
// if (res.data.data.name=='健康管理师'){
// this.role = 2;
// }
}else {
//查询检查项数据失败
this.$message.error(res.data.message);
}
});
}).catch((r)=>{
this.showMessage(r);
});
},
后台代码
UserController
//根据id查询用户
@RequestMapping("/findById")//使其那个被访问到
public Result findById(Integer id){
//使用try。。catch。。进行成功还是失败判断
try{
// System.out.println(checkItem.toString());
com.yy.pojo.User user = userService.findById(id);//如果调用失败就进入catch,没有失败就
//证明成功
return new Result(true, MessageConstant.EDIT_USER_SUCCESS,user);
}catch (Exception e){
//证明调用失败
e.printStackTrace();
return new Result(false, MessageConstant.EDIT_USER_FAIL);
}
}
//根据用户ID查询角色的信息
@RequestMapping("/findRoleByUserId")
public Result findRoleByUserId(Integer id){
try{
Role role = userService.findRoleByUserId(id);
return new Result(true,MessageConstant.QUERY_ROLE_SUCCESS,role);//查询成功
}catch (Exception e){
e.printStackTrace();
return new Result(false, MessageConstant.QUERY_ROLE_FAIL);//查询失败
}
}
//编辑检查组
@RequestMapping("/edit")
// @PreAuthorize("hasAuthority('CHECKGROUP_EDIT')")//权限校验
public Result edit(@RequestBody com.yy.pojo.User user, Integer role){
try{
userService.edit(user,role);
}catch (Exception e){
e.printStackTrace();
return new Result(false, MessageConstant.EDIT_USER_FAIL);//失败
}
return new Result(true,MessageConstant.EDIT_USER_SUCCESS);//成功
}
UserService
/**
* 通过id查询用户
* @param id
* @return
*/
public User findById(Integer id);
/**
* 通过用户id查询角色信息
* @param id
* @return
*/
public Role findRoleByUserId(Integer id);
/**
* 编辑用户
* @param user
* @param role
*/
public void edit(User user, Integer role);
UserServiceImpl
@Override
public User findById(Integer id) {
return userDao.findById(id);
}
@Override
public Role findRoleByUserId(Integer id) {
Integer roleId = userDao.findRoleIdByUserId(id);
return roleDao.findRoleByRoleId(roleId);
}
@Override
public void edit(User user, Integer role) {
//修改用户基本信息,操作检查组t_user表
userDao.edit(user);
//清理当前用户表关联的角色表,操作中间关系表t_user_role表
userDao.deleteAssocication(user.getId());
//重新建立当前检查组和检查项的关联关系
Integer userId = user.getId();
this.setUserAndRoles(userId,role);
}
//设置用户和角色的多对多的关联关系
public void setUserAndRoles(Integer userId,Integer roleId){
Map<String,Integer> map = new HashMap<>();
map.put("userId",userId);
map.put("roleId",roleId);
userDao.setUserAndRoles(map);
}
UserDao
/**
* 通过id查询用户表
* @param id
* @return
*/
public User findById(Integer id);
/**
* 通过用户id查询角色id
* @param id
* @return
*/
public int findRoleIdByUserId(Integer id);
/**
* 修改用户表信息
* @param user
*/
public void edit(User user);
/**
* 清除该该用户id之前关联的角色表信息
* @param id
*/
public void deleteAssocication(Integer id);
RoleDao
/**
* 通过角色id查询角色信息
* @param roleId
* @return
*/
public Role findRoleByRoleId(Integer roleId);
2.4 删除用户
user.html
// 删除
handleDelete(row) {//row其实是一个json对象,json对象中的数据为{"age":"0-100","attention":"无","code":"0007","id":34,"name":"裸视力(左)","price":5.0,"remark":"裸视力(左)","sex":"0","type":"1"}
console.log(row);
// alert(row.id);
this.$confirm("你确定要删除当前用户吗?","提示",{
type: 'warning'
}).then(()=>{
// alert("点击了确定按钮");
//用户点击确认按钮,发送ajax请求,将检查项提交到Controller进行处理
axios.get("/user/delete.do?id="+row.id).then((res)=>{
//判断是否执行成功
if (res.data.flag){
//执行成功
//弹出成功提示信息
this.$message({
type:'success',
message:res.data.message
});
//重新进行分页查询
this.findPage();
}else {
//执行失败
this.$message.error(res.data.message);
}
}).catch((r)=>{
this.showMessage(r);
});
}).catch(()=>{
// alert("点击了取消按钮");
this.$message({
type:'info',
message:'操作已取消'
});
});
}
后台代码
UserController
//删除用户
// @PreAuthorize("hasAuthority('CHECKITEM_DELETE')")//权限校验
@RequestMapping("/delete")//使其那个被访问到
public Result delete(Integer id){
//使用try。。catch。。进行成功还是失败判断
try{
System.out.println(id);
userService.deleteById(id);//如果调用失败就进入catch,没有失败就
}catch (Exception e){
//证明调用失败
e.printStackTrace();
return new Result(false, MessageConstant.DELETE_USER_FAIL);
}
//证明删除成功
return new Result(true, MessageConstant.DELETE_USER_SUCCESS);
}
UserServiceImpl
@Override
public void deleteById(Integer id) {
//判断当前用户是否关联到角色表,关联了就不能删除
// long count = userDao.findCountByUserId(id);
// if (count > 0){
// //当前检查项已经被关联到检查组,不允许被删除
// throw new RuntimeException();
// }else{
//清理当前用户关联的角色,操作中间关系表t_user_role表
userDao.deleteAssocication(id);
userDao.deleteById(id);
// }
}
UserDao
/**
* 清除该该用户id之前关联的角色表信息
* @param id
*/
public void deleteAssocication(Integer id);
/**
* 通过id删除当前用户
* @param id
*/
public void deleteById(Integer id);