通过控制按钮跳转两个大同小异的画面

相同的画面信息,只有个别按钮不同时,通过拼接参数进行控制按钮的显示

由以上画面可以看到,通知书列印和通知书补印的区别是一个画面有批量下载按钮,而另一个无此按钮,这时如果不想写两个相同的画面增加劳动力,则可以通过以下方式来实现一个页面实现两个页面的效果。

第一步:在进行数据库菜单配置时,给两个画面的地址后拼接参数prtflag,其值为0或1.

第二步:input.jsp页面里面在html标签外部引入参数prtflag。

<%String prtflag = request.getParameter("prtflag");
%>

第三步:input.jsp页面给批量下载按钮添加id作为标志。

第四步:input.jsp页面引入隐藏标签prtflag。

<%--打印標誌--%>

第五步:在init.jsp页面进行初始化页面的时候进行控制,如果参数为0则是列印画面,如果参数为1则是补印画面,补印画面需要对批量下载的按钮进行隐藏。

//初始化页面
function initForm(){try {//获取prtflag参数,如果他为0的话,则是列印,为1则为补印,需要隐藏批量下载按钮if($("#prtflag").val()==1){//此处使用的是jQuery的隐藏元素的方法:$("#test").hide() - 隐藏所有 id="test" 的元素,即这里指的是隐藏所有id="download"的元素$("#download").hide();}initPhysicalhealthGrid();}catch (ex){alert("界面初始化失敗")}
}

第六步:针对两个不同画面进行值的查询时将标志作为参数传入:

function queryPhysicalhealthGrid(){var date = document.getElementById('startDate').value;var date1= document.getElementById('enddate').value;if((date == "" && date1 != "" ) ||(date != "" && date1 == "")){alert("日期輸入不完整,請重新輸入。")return;}if(date > date1){alert("日期區間起期大於迄期,請重新輸入。");return;}var tcodeno = fm.contno.value;var tinsureid = fm.insureid.value;var tstartDate = fm.startDate.value;var tenddate = fm.enddate.value;var mySql=new SqlClass();mySql.setModule("ind_print_pa"); mySql.setResourceName("bq.PhysicalHealthSql"); mySql.setSqlId("PhysicalHealthSql1");mySql.addPara(tcodeno);mySql.addPara(tinsureid);mySql.addPara(tstartDate);mySql.addPara(tenddate);//此处将打印标志作为参数传入mySql.addPara($("#prtflag").val()); turnPageGrid.queryModal(mySql.getString(),PhysicalhealthGrid);
}

第七步:进入到controller层,执行查询方法,调用查询的sql,将查到的值返回到前端页面。

controller层
@ApiOperation("綜合列印-->保全列印-->身體健康檢查通知書列印-->查詢")@ResponseBody@PostMapping(value = "/bq/PhysicalHealthSql/Query/PhysicalHealthSql1")public String query(@RequestBody RequestInfo requestInfo, HttpSession session, HttpServletRequest request) {return super.query(requestInfo, session, request);}
sql层
@SQL(value = "select (select c.PRTSEQ from LIS.LOPRTMANAGER c where c.OTHERNO=b.EDORACCEPTNO and c.CODE='BQ105'),a.CONTNO,b.RISKNAME," +"    floor(months_between(b.MAKEDATE,a.CVALIDATE)/12) + 1 interval, (select ldcontstate.MAINSTATENAME from ldcontstate where ldcontstate.MAINSTATE=b.state) contstate," +"       b.appntname,b.INSUREDNAME,a.STARTCONTDATE,b.MAKEDATE from lcpol a ,lpchangePoltypedetail b where a.CONTNO=b.CONTNO and a.POLNO=b.POLNO and b.DEALFLAG is null" +"    @{0} @{1} @{2} @{3} @{4} order by a.CONTNO asc,b.MAKEDATE desc", clauses = {@Clause(key = 0, clause = "and a.contno='#{para0}'", expression = "#{para0} != empty"),@Clause(key = 1, clause = "and exists(select 1 from lcinsured d where d.CONTNO=a.contno and a.INSUREDNO=d.INSUREDNO and d.IDNO='#{para1}')", expression = "#{para1} != empty"),@Clause(key = 2, clause = "and b.MAKEDATE>= '#{para2}'", expression = "#{para2} != empty"),@Clause(key = 3, clause = "and b.MAKEDATE <='#{para3}'", expression = "#{para3} != empty"),@Clause(key = 4, clause = "and exists (select 1 from LIS.LOPRTMANAGER c where c.OTHERNO=b.EDORNO and c.CODE='BQ105' and nvl(PatchFlag,'0')='#{para4}')", expression = "${para4} != empty")})SSRS PhysicalHealthSql1(@Param("para0") String para0, @Param("para1") String para1, @Param("para2") String para2, @Param("para3") String para3, @Param("para4") String para4);

注意:

  • 其中查询的controller层的查询方法上面的@PostMapping里的值是sql类的存放路径,最后一个值是引用的sql名。如:/bq/PhysicalHealthSql/Query/PhysicalHealthSql1,其中PhysicalHealthSql1是sql类里面的查询方法名字。
  • nvl(ex1,ex2)函数,当ex1为空的时候,选择ex2作为值返回。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部