您的位置:首页 > 其它

(DataTable_checkbox复选框)批量审核全流程(前台到服务器)

2017-11-09 15:34 218 查看
整理思路:1.首先画页面,将批量审核的模态框做出来,基本上包含审核状态,审核意见两部分,审核状态采用radio,审核意见采用textarea,最后在模态框内添加submit“确认”按钮,以及“取消”按钮。2.页面完成之后,在js中画dataTable表格,添加checkbox,在checkbox上点击onclick事件,带出数据的id3.拿到数据的id之后,对数据进行保存,在js中写save方法,通过jquery.ajax方法url链接到后台4.后台写controller,service,dao,serviceImpl5.最后写mapper,用<foreach collection="xx" item="xx" separator="," index="index" open="(" close=")"></foreach>进行批量插入数据或者更新数据代码实现:1.<button class='btn green' type="button" onclick="batchApplyModal()">批量审核</button>2.//checkbox复选框"aoColumns": [{"data" : null,"sTitle": '<label class="mt-checkbox mt-checkbox-single mt-checkbox-outline"><input type="checkbox" id="checkAll"onclick="siteChooseOrNoChoose(this)" /><span></span></label>',"class": "text-center","render": function(nTd, sData, oData, iRow, iCol) {return '<label class="mt-checkbox mt-checkbox-single mt-checkbox-outline"><input type="checkbox" class="checkbox" value="' + oData.graduatedCheckId + '" /><span></span></label>';}//复选框全选功能function siteChooseOrNOChoose(obj){if($(obj).is(":checked",true)){$(".checkbox").prop("checked",true);}else {$(".checkbox").prop("checked",false);}}//小知识jQuery取值:1.$("#xx") 2.$(".xx") 3.$(":xx") 第一种"#"代表id选择器 第二种"."代表类选择器 第三种":"代表属性选择器2.2 //定义批量审核的onclick()var rowdatas=[];function batchApplyModal(){var ids = [];$(".checkbox:checked").each(function(){var datas = graduatedApplyManageTable.row( this.parentNode.parentNode.parentNode ).data();vs=datas.graduatedApplyId+"-"+datas.graduatedBatchId;//[123456-789654,123456-789654,123456-789654]ids.push(vs);$("#applyStatus").val(datas.applyStatus);});if(ids.length<1){showInfoModal("请选择您要审核的信息!");return false;}$("#graduatedMode_verify").modal("show");}
3.当填写好审核意见以及审核状态后,点击submit确认按钮,触发表单自动提交功能function saveGraduatedBatch(flag) {var graduatedCheckId = $("#graduatedCheckId_verify").val();var status=$("input[name=status]:checked").val();$.ajax({url:"manage/graduatedCheck/saveGraduatedBatch.do",type:"post",data:$("#graduatedModeForm_" + flag).serialize(),dataType:"json",success:function(data) {if(data.status=="success") {showSuccessOrErrorModal(data.msg,"success");graduatedCheckManageTable.draw(); //刷新表格$("#graduatedModeForm_" + flag)[0].reset();$("#graduatedMode_" + flag).modal("hide");} else {showSuccessOrErrorModal(data.msg,"error");}},error:function(e) {showSuccessOrErrorModal("请求出错了","error");}});}}}4.//controller
//controller(要求获取两个id,更新状态的同时向另外一张表中插入新的数据)
@RequestMapping(value="/saveGraduatedBatch",method=RequestMethod.POST)
@ResponseBody//POST模式下,使用@RequestBody绑定请求对象,Spring会帮你进行协议转换,将Json、Xml协议转换成你需要的对象。public Object saveGraduatedBatch(HttpServletRequest request,HttpServletResponse response){Map<String,Object>resultMap=new HashMap<String,Object>();Map<String,Object>ParamMap=new HashMap<String,Object>();String ids=request.getParameter("ids");//ids=[123xx-123,123xx-123,123xx-123]String[] split=ids.spit(",");String[] graduatedApplyIds=null;List<String>list=new ArraryList<>();for(String id:split){graduatedApplyIds=id.split("-");paramMap.put.put("graduatedApplyId",graduatedApplyIds[0]);list.add(graduatedApplyIds[0]);//第一个参数graduatedApplyIdparamMap.put("graduatedBatchId",graduatedApplyIds[1]);//第二个参数graduatedBatchIdparamMap.put("remark",request.getParameter("remark"));paramMap.put("applyStatus",request.getParameter("applyStatus"));paramMap.put("graduatedApplyIds",list);}try {graduatedApplyManageService.saveGraduatedBatch(paramMap);resultMap.put("status", "success");resultMap.put("msg", "毕业批次信息保存成功!");} catch (DuplicateKeyException e) {resultMap.put("status", "error");resultMap.put("msg", "该毕业批次代码已存在!");logger.error("[保存招生批次信息-ErrorMsg:]", e);} catch (Exception e) {resultMap.put("status", "error");resultMap.put("msg", "毕业批次信息保存失败!");logger.error("[保存毕业批次信息-ErrorMsg:]", e);}return resultMap;}
//serviceImpl
public void saveGraduatedBatch(Map<String,Object>paramMap){if(paramMap.get("graduatedApplyIds")!=null&¶mMap.get("graduatedApplyIds")!=""){List<Map<String,Object>>graduatedModeList=graduatedApplyManageMapper.queryGraduatedBatchInfo(paramMap);// 更新考核指标审核状态graduatedApplyManageMapper.updateGraduatedBatch(paramMap);//更新并插入到毕业申请表中graduatedApplyManageMapper.addGraduatedBatch(paramMap);}else{//存放idList<String>graduatedApplyIds=new ArrayList<String>();List<Map<String,Object>>resultMap=graduatedApplyManageMapper.getAllApplyInfo(paramMap);for(Map<String,Object>map:resultMap){graduatedApplyIds.add((String)map.get("graduatedApplyId"));paramMap.put("graduatedApplyIds",graduatedApplyIds);}graduatedApplyManageMapper.updateGraduatedBatch(paramMap);graduatedApplyManageMapper.addGraduatedBatch(paramMap);}}

foreach属性item 循环体中的具体对象。支持属性的点路径访问,如item.age,item.info.details.具体说明:在list和数组中是其中的对象,在map中是value.该参数为必选。collection 要做foreach的对象,作为入参时,List<?>对象默认用list代替作为键,数组对象有array代替作为键,Map对象用map代替作为键。当然在作为入参时可以使用@Param("keyName")来设置键,设置keyName后,list,array,map将会失效。 除了入参这种情况外,还有一种作为参数对象的某个字段的时候。举个例子:如果User有属性List ids。入参是User对象,那么这个collection = "ids"如果User有属性Ids ids;其中Ids是个对象,Ids有个属性List id;入参是User对象,那么collection = "ids.id"上面只是举例,具体collection等于什么,就看你想对那个元素做循环。该参数为必选。separator 元素之间的分隔符,例如在in()的时候,separator=","会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。该参数可选。open foreach代码的开始符号,一般是(和close=")"合用。常用在in(),values()时。该参数可选。close foreach代码的关闭符号,一般是)和open="("合用。常用在in(),values()时。该参数可选。index 在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选。<!-- 更新毕业申请表毕业批次 --><update id="updateGraduatedApply" parameterType="java.util.Map">UPDATE roll_graduation_applySETremark = #{remark}WHERE  schoolroll_id in<foreach collection="graduatedApplyIds" separator="," item="graduatedApplyId" open="(" close=")">#{graduatedApplyId}</foreach></update><!-- 添加毕业批次 --><insert id="addGraduatedBatch" parameterType="java.util.Map">INSERT roll_graduation_apply (id,schoolroll_id,graduation_batch_id,verify_status,remark,create_time,create_by)VALUES<foreach collection="graduatedApplyIds" index="index" separator="," item="graduatedApplyId">(REPLACE(UUID(), '-', ''),#{graduatedApplyId},#{graduatedBatchId},"0",#{remark},NOW(),#{userId})</foreach></insert>

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息