1、前端根据某个属性判断某一段代码是否显示(使用css来做判定)
代码如下,这里非常热衷于在前端定义一个hidden的input框,用来获取从后台传过来的 model.addAttribute()的字段,然后再使用var 去获得这个 字段的名称,来实现获取值,至于 前端是否显示,是通过 控制 .css属性来的,其实 同理的,当你想控制高度的时候使用 .style属性也能控制高度,后者经常被拿来作为 高度自动化调整。
例如说你定义了两个div,然后分别叫做 isSelectAppr 和 isSelectAppr1。
//合同信息fieldset高度自适应
$(function(){
//如果合同状态为退回后呈核,不允许提交
if(yfPublicNet_status == "0"){
$("#isSelectAppr").css("display", "block");
$("#isSelectAppr1").remove();
}else{
$("#isSelectAppr").remove();
$("#isSelectAppr1").css("display", "block");
}
})
2、model.addAttribute 如果你想要的话,它可以一直赋值赋很多
@Controller
@RequestMapping("/web/member")
public class MerchantWebController {
@RequestMapping(value = "/update")
public String update(Model model, Integer id) {
Merchant merchant = new Merchant();
merchant.setId(1);
merchant.setMerchantAccount("2222");
model.addAttribute(merchant); //直接设置dto
model.addAttribute("id",id); //设置单个值
return "web/member/update";
}
}
3、怎么样去做一个审批流
审批流顾名思义,就是当用户提出一个请求的时候,并不能马上到达对应的管理员那边去,它需要 上级不断地审核和通过,通过到了最后的一层的时候,才可以到 管理员那边去,因此在做审批流的时候,需要多两个表格。
其核心思想是,当定义一个 审批流当前到达节点 和 审批流下一个指向节点,当本地的用户等于下一个指向节点的时候,它就会显示在用户的待处理消息上。
加入说现在我们 要做公网端口映射的申请,用户新建审批流的时候,指定了所有的审核信息直到管理员前的最后一位,那此时就会有两个表格,一个表格记录的是 这整个的流程,包括第一位审批的人是谁,第二位是谁,表结构如下,默认的是最多只能添加六位审批人
第二个表格就是用来记录所有的审批信息,这里包括类
申请的公网端口的那条数据的id(不是端口号而是那条数据的主键)
申请人姓名
申请人部门
申请人的职务
申请人意见
该条申请的状态
下一个呈交人是谁
是否可用、是否删除、创建人id和时间、更新人的id和更新时间 ,以及公司的id。
怎么样将传递到自己的审核显示出来,也就是我的待处理信息,sql是这么写的。
<!--查询当前登录人的待处理分配情况-->
<select id="findSelfDictionary" resultType="map" parameterType="map">
select
.....
left join do_department B
on A.strDept=B.ID
left join pm_project C
on A.strOriginId=C.ID
left join du_user D
on A.updateUserId=D.ID
<where>
<if test="currentCompany != null and currentCompany != ''">
AND A.companyId = #{currentCompany}
</if>
<if test="strName != null and strName != ''">
AND A.strName like '%${strName}%'
</if>
<if test="flag == null or flag == ''">
AND A.id in (SELECT DISTINCT E.publicNetId FROM public_net_approve E where E.apprNext = #{apprNext})
</if>
<if test="flag != null and flag != ''">
AND A.id in (SELECT DISTINCT E.publicNetId FROM public_net_approve E where E.apprNext = #{apprNext} and E.createDateTime >= A.updateDateTime)
</if>
</where>
ORDER BY A.CREATEDATETIME DESC
</select>
其中flag为空的时候表示显示所有的数据,flag有值的时候表示只显示当前需要处理的数据。
因为我们在提交的时候,每提交一次就会在approve的表格中留下一栏数据,所以使用distinct 可以保证你。同样的一段申请,它只会显示一次,那怎么样让它知道这段申请是你当前需要处理的呢,其实我想过说,记录一下当前的用户和最后一个更新的用户指向的下一个用户是否 相等,结果发现它其实没有这个方法好用。
它是这样写的。
AND A.id in (SELECT DISTINCT E.publicNetId FROM public_net_approve E
where E.apprNext = #{apprNext} and E.createDateTime >= A.updateDateTime)
每次我们都是先更新端口表(info 表),再更新申请通过表(approve表),有那么多条针对同一条申请的数据的话,只有当前最新一条交到你手上的申请(approve)是需要处理的,其他的申请产生时间都会比你那个要旧,因此通过时间比较就可以得到你想要的结果。
审批流之所以你觉得不会还因为它的前端你看不懂。
刚好今天也要改这个方面的bug,下次来一起说