编辑检查组
完善页面
用户点击编辑按钮时,需要弹出编辑窗口并且将当前记录的数据进行回显,用户修改完成后点击确定按钮将修改后的数据提交到后台进行数据库操作。此处进行数据回显的时候,除了需要检查组基本信息的回显之外,还需要回显当前检查组包含的检查项(以复选框勾选的形式回显)。
绑定单击事件
需要为编辑按钮绑定单击事件,并且将当前行数据作为参数传递给处理函数
<el-button type="primary" size="mini" @click="handleUpdate(scope.row)">编辑</el-button>
handleUpdate(row) {
alert(row);
}
弹出编辑窗口回显数据
当前页面的编辑窗口已经提供好了,默认处于隐藏状态。在handleUpdate方法中需要将编辑窗口展示出来,并且需要发送多个ajax请求分别查询当前检查组数据、所有检查项数据、当前检查组包含的检查项id用于基本数据回显
handleUpdate(row) { //发送ajax请求根据id查询检查组信息,用于基本信息回显 axios.get("/checkgroup/findById.do?id=" + row.id).then((res)=>{ if(res.data.flag){ //弹出编辑窗口 this.dialogFormVisible4Edit = true; //默认选中第一个标签页 this.activeName='first'; //为模型数据赋值,通过VUE数据双向绑定进行信息的回显 this.formData = res.data.data; //发送ajax请求查询所有的检查项信息,用于检查项表格展示 axios.get("/checkitem/findAll.do").then((res)=> { if(res.data.flag){ //为模型数据赋值,通过VUE数据双向绑定进行信息的回显 this.tableData = res.data.data; //查询当前检查组包含的所有检查项id,用于页面回显 axios.get("/checkgroup/findCheckItemIdsByCheckGroupId.do?id=" + row.id).then((res)=> { //为模型数据赋值,通过VUE数据双向绑定进行信息的回显 if(res.data.flag){ this.checkitemIds = res.data.data; }else{ this.$message.error(res.data.message); } }); }else{ this.$message.error(res.data.message); } }); }else{ this.$message.error("获取数据失败,请刷新当前页面"); } }); }
发送请求
在编辑窗口中修改完成后,点击确定按钮需要提交请求,所以需要为确定按钮绑定事件并提供处理函数handleEdit
<el-button type="primary" @click="handleEdit()">确定</el-button>
//编辑 handleEdit() { //发送ajax请求,提交模型数据 axios.post("/checkgroup/edit.do?checkitemIds="+this.checkitemIds,this.formData). then((response)=> { //隐藏编辑窗口 this.dialogFormVisible4Edit = false; if(response.data.flag){ this.$message({ message: response.data.message, type: 'success' }); }else{ this.$message.error(response.data.message); } }).finally(()=> { this.findPage(); }); }
后台代码
Controller
在CheckGroupController中增加方法
//根据id查询 @RequestMapping("/findById") public Result findById(Integer id){ CheckGroup checkGroup = checkGroupService.findById(id); if(checkGroup != null){ Result result = new Result(true, MessageConstant.QUERY_CHECKGROUP_SUCCESS); result.setData(checkGroup); return result; } return new Result(false,MessageConstant.QUERY_CHECKGROUP_FAIL); } //根据检查组合id查询对应的所有检查项id @RequestMapping("/findCheckItemIdsByCheckGroupId") public Result findCheckItemIdsByCheckGroupId(Integer id){ try{ List<Integer> checkitemIds = checkGroupService.findCheckItemIdsByCheckGroupId(id); return new Result(true,MessageConstant.QUERY_CHECKITEM_SUCCESS,checkitemIds); }catch (Exception e){ e.printStackTrace(); return new Result(false, MessageConstant.QUERY_CHECKITEM_FAIL); } } //编辑 @RequestMapping("/edit") public Result edit(@RequestBody CheckGroup checkGroup,Integer[] checkitemIds){ try { checkGroupService.edit(checkGroup,checkitemIds); }catch (Exception e){ return new Result(false,MessageConstant.EDIT_CHECKGROUP_FAIL); } return new Result(true,MessageConstant.EDIT_CHECKGROUP_SUCCESS); }
服务接口
在CheckGroupService服务接口中扩展方法
CheckGroup findById(Integer id); List<Integer> findCheckItemIdsByCheckGroupId(Integer id); public void edit(CheckGroup checkGroup,Integer[] checkitemIds);
服务实现类
在CheckGroupServiceImpl实现类中实现编辑方法
public CheckGroup findById(Integer id) { return checkGroupDao.findById(id); } public List<Integer> findCheckItemIdsByCheckGroupId(Integer id) { return checkGroupDao.findCheckItemIdsByCheckGroupId(id); } //编辑检查组,同时需要更新和检查项的关联关系 public void edit(CheckGroup checkGroup, Integer[] checkitemIds) { //根据检查组id删除中间表数据(清理原有关联关系) checkGroupDao.deleteAssociation(checkGroup.getId()); //向中间表(t_checkgroup_checkitem)插入数据(建立检查组和检查项关联关系) setCheckGroupAndCheckItem(checkGroup.getId(),checkitemIds); //更新检查组基本信息 checkGroupDao.edit(checkGroup); } //向中间表(t_checkgroup_checkitem)插入数据(建立检查组和检查项关联关系) public void setCheckGroupAndCheckItem(Integer checkGroupId,Integer[] checkitemIds){ if(checkitemIds != null && checkitemIds.length > 0){ for (Integer checkitemId : checkitemIds) { Map<String,Integer> map = new HashMap<>(); map.put("checkgroup_id",checkGroupId); map.put("checkitem_id",checkitemId); checkGroupDao.setCheckGroupAndCheckItem(map); } } }
Dao接口
在CheckGroupDao接口中扩展方法
CheckGroup findById(Integer id); List<Integer> findCheckItemIdsByCheckGroupId(Integer id); void setCheckGroupAndCheckItem(Map map); void deleteAssociation(Integer id); void edit(CheckGroup checkGroup);
Mapper映射文件
在CheckGroupDao.xml中扩展SQL语句
<select id="findById" parameterType="int" resultType="com.itheima.pojo.CheckGroup"> select * from t_checkgroup where id = #{id} </select> <select id="findCheckItemIdsByCheckGroupId" parameterType="int" resultType="int"> select checkitem_id from t_checkgroup_checkitem where checkgroup_id = #{id} </select> <!--向中间表插入数据(建立检查组和检查项关联关系)--> <insert id="setCheckGroupAndCheckItem" parameterType="hashmap"> insert into t_checkgroup_checkitem(checkgroup_id,checkitem_id) values (#{checkgroup_id},#{checkitem_id}) </insert> <!--根据检查组id删除中间表数据(清理原有关联关系)--> <delete id="deleteAssociation" parameterType="int"> delete from t_checkgroup_checkitem where checkgroup_id = #{id} </delete> <!--编辑--> <update id="edit" parameterType="com.itheima.pojo.CheckGroup"> update t_checkgroup <set> <if test="name != null"> name = #{name}, </if> <if test="sex != null"> sex = #{sex}, </if> <if test="code != null"> code = #{code}, </if> <if test="helpCode != null"> helpCode = #{helpCode}, </if> <if test="attention != null"> attention = #{attention}, </if> <if test="remark != null"> remark = #{remark}, </if> </set> where id = #{id} </update>