第三天项目需求
进行检查组编写
需求分析
检查组包含多个检查项
t_checkgroup_checkitem中间表进行关联
1.新增检查组
- 前端弹出新增窗口,新增窗口有2个,进行默认设置选择项目组的窗口1,窗口2为检查项 进行回显设置
- 填写数据,点击确认按钮,将检查组数据以及检查项的id数组 异步发送给后端,将数据填入检查组的表,以及中间检查组与检查项的关联表
- 反馈数据,有问题没有问题都要都要给用户提示,且需要调用查询所有的方法
2、查询所有项目组
- 前端根据钩子函数,在页面加载完毕触发查询所有的方法,或者页面发生改变也会触发查询所有的方法
- 将当前页码currentpage,pagesize,querystring封装为json对象,异步传给后端,后端返回总页数以及检查组的集合
3、编辑项目组(修改项目组)
- 前端点击编辑,弹出修改页面,此时页面需要回显检查组内容,以及所有的检查项类容,除此以外,如果检查组具有检查项,那么检查项需要将检查组有用的检查项进行勾选显示,并且位于勾选的最上层
- 利用异步,查询检查组完成以后,成功 异步查询所有的检查项 ,成功 异步查询检查组对应的检查项的id
- 后端进行数据的查询,返回数据,再进行数据的修改,点击保存将数据传入后端
- 后端对数据处理时,需要将检查组的数据存入表中,还需要对中间关联的表进行处理,先删除中间关联表与该检查项有关的数据,再将新的数据填入关联表中
- 成功后返回前端,前端调用查询所有的方法
1 let vue = new Vue({ 2 el: '#app', 3 data: { 4 activeName: 'first',//添加/编辑窗口Tab标签名称 5 pagination: {//分页相关属性 6 currentPage: 1, 7 pageSize: 10, 8 total: 100, 9 queryString: null, 10 }, 11 dataList: [],//列表数据 12 formData: {},//表单数据 13 tableData: [],//新增和编辑表单中对应的检查项列表数据 14 checkitemIds: [],//新增和编辑表单中检查项对应的复选框,基于双向绑定可以进行回显和数据提交 15 dialogFormVisible: false,//控制添加窗口显示/隐藏 16 dialogFormVisible4Edit: false//控制编辑窗口显示/隐藏 17 }, 18 created() {//钩子函数 19 this.findPage(); 20 }, 21 methods: { 22 //编辑 23 handleEdit() { 24 //发送ajax请求,将修改后的表单数据(检查组基本信息、勾选的检查项)提交到后台进行处理 25 axios.post("/checkgroup/edit.do?checkitemIds=" + this.checkitemIds,this.formData).then((res) => { 26 //关闭编辑窗口 27 this.dialogFormVisible4Edit = false; 28 if(res.data.flag){ 29 //操作成功 30 this.$message.success(res.data.message); 31 32 }else{ 33 //操作失败 34 this.$message.error(res.data.message); 35 } 36 }).finally(() =>{ 37 this.findPage(); 38 }); 39 }, 40 //添加 41 handleAdd() { 42 //发送ajax,将数据传递至后端 43 axios.post("/checkgroup/add.do?checkitemIds=" + this.checkitemIds, this.formData).then((res) => { 44 //关闭新增窗口 45 this.dialogFormVisible = false; 46 if (res.data.flag) { 47 this.$message.success(res.data.message); 48 } else { 49 this.$message.error(res.data.message); 50 } 51 }).finally(() => { 52 //清空复选框 53 this.checkitemIds = {}; 54 this.findPage(); 55 }) 56 57 }, 58 //分页查询 59 findPage() { 60 //获取分页参数,分装为jason对象 61 let param = { 62 pageSize: this.pagination.pageSize, 63 currentPage: this.pagination.currentPage, 64 queryString: this.pagination.queryString 65 } 66 //发送ajax请求 67 axios.post("/checkgroup/findPage.do", param).then((res) => { 68 this.pagination.total = res.data.total; 69 this.dataList = res.data.rows; 70 }) 71 }, 72 // 重置表单 73 resetForm() { 74 this.formData = {}; 75 }, 76 // 弹出添加窗口 77 handleCreate() { 78 //点击新建按钮,弹出添加窗口 79 this.resetForm(); 80 this.dialogFormVisible = true; 81 //设置添加框默认是添加查询租的项 82 this.activeName = 'first'; 83 //重置复选框 84 this.checkitemIds = []; 85 //发送异步请求查询所有的检查项目 86 axios.get("/checkitem/findAll.do").then((res) => { 87 if (res.data.flag) { 88 //将正确查询的到的数据回显 89 this.tableData = res.data.data; 90 } else { 91 this.$message.error(res.data.message); 92 } 93 }) 94 95 }, 96 // 弹出编辑窗口 97 handleUpdate(row) { 98 99 //ajax请求查询当前的检查组数据,回显基本数据与检查项数据 100 axios.get("/checkgroup/findById.do?checkgroupId=" + row.id).then((res) => { 101 //弹出编辑窗口 102 this.dialogFormVisible4Edit = true; 103 //将基本信息框默认选中的 104 this.activeName = 'first'; 105 //清空编辑框的值 106 this.formData = {}; 107 if (res.data.flag) { 108 this.formData = res.data.data; 109 //发送异步请求查询所有的检查项,此处上方的检查组拥有的检查项会在最上方 110 axios.get("/checkitem/findAllById.do?checkgroupId=" + row.id).then((res) => { 111 this.tableData = []; 112 if (res.data.flag) { 113 //将正确查询的到的数据回显 114 this.tableData = res.data.data; 115 //回显成功就回显复选框的内容 116 axios.get("/checkgroup/findCheckItemIdsByCheckGroupId.do?checkgroupId=" + row.id).then((res) => { 117 if (res.data.flag) { 118 //将正确查询的到的数据回显 119 this.checkitemIds = res.data.data; 120 } else { 121 this.$message.error(res.data.message); 122 } 123 }) 124 } else { 125 this.$message.error(res.data.message); 126 } 127 }) 128 129 } else { 130 this.$message.error(res.data.message); 131 } 132 }); 133 134 }, 135 //切换页码 136 handleCurrentChange(currentPage) { 137 this.pagination.currentPage = currentPage; 138 this.findPage(); 139 },