ztree二级菜单有查询条件,ztree一级菜单没有查询条件

今天碰到一个需求,ztree二级菜单有查询条件,ztree一级菜单没有查询条件,一般情况下查询条件都是先取一级菜单,再取二级菜单,但是一级菜单没有查询条件,会多取了一些不应该有的记录,所以这种情况下,只能实行倒推查询,先查二级菜单,得到的结果作为条件去查一级菜单,代码如下:


/***
 * 获取模型树
 * @param id
 * @return
 */
public List<ZTreeNode> getModelTree(String id, String userId) {

    StringBuffer sql1 = new StringBuffer();

    sql1.append(" select ")
            .append("  a.tplakey,")
            .append("  a.tplaname,")
            .append("  a.tplacatecd,")
            .append("  a.DISPSEQ as seq")
            .append(" from PISS_tp_bas_inf as a")
            .append(" where a.tplastat = '1' and modeltype = 1");
    sql1.append(" order by seq");

    List<ZTreeNode> zTreeNodes1 = jdbcTemplate.query(sql1.toString(),  new RowMapper<ZTreeNode>(){
        public ZTreeNode mapRow(ResultSet rs, int rowNum)throws SQLException{
            String tplacatecd = rs.getString("tplacatecd");
            Integer seq=rs.getInt("seq");
            ZTreeNode zTreeNode1 = new ZTreeNode();
            zTreeNode1.setId(rs.getString("tplakey"));
            zTreeNode1.setName(rs.getString("tplaname"));
            zTreeNode1.setIsParent(false);
            zTreeNode1.setParentId("F_"+(StringUtil.isNull(tplacatecd) ? "1":tplacatecd));
            zTreeNode1.setIndex(seq);
            zTreeNode1.settId(tplacatecd);
            return zTreeNode1;
        }
    });

    String ids = "";
    if(!zTreeNodes1.isEmpty()){
        for(int i=0; i<zTreeNodes1.size();  i++){
            String tplacatecd = zTreeNodes1.get(i).gettId();
            ids += "'"+tplacatecd+"'"+",";
        }
        ids = ids.substring(0, ids.length()-1);
    }else{
        ids = "''";
    }

    StringBuffer sql = new StringBuffer();
    sql.append(" select ")
            .append("  b.id as flodid,")
            .append("  b.name as flodname,")
            .append("  b.p_folder_id as pid,")
            .append("  b.seq as seq")
            .append(" from PISS_tp_folder as b " +
                    " where ISENABLE='1' and id in (" +ids+")"+
                    " order by seq");

    List<ZTreeNode> zTreeNodes = jdbcTemplate.query(sql.toString(),  new RowMapper<ZTreeNode>(){
        public ZTreeNode mapRow(ResultSet rs, int rowNum)
                throws SQLException {
            String flodid = rs.getString("flodid");
            String flodname = rs.getString("flodname");
            Integer seq=rs.getInt("seq");
            ZTreeNode zTreeNode=new ZTreeNode();
            zTreeNode.setId("F_"+flodid);
            zTreeNode.setName(flodname);
            zTreeNode.setIsParent(true);
            zTreeNode.setParentId("F_"+rs.getString("pid"));
            zTreeNode.setIndex(seq);
            return zTreeNode;
        }
    });

    List<ZTreeNode> nodes = new ArrayList<ZTreeNode>();
    nodes.addAll(zTreeNodes);
    nodes.addAll(zTreeNodes1);
    return nodes;
}

页面的代码如下:


var rule_tree = new FAPUI.Tree({
    border:false,
    tbar:false,
    ttbar:false,
    filterAble:false,
    setting : {
        async : {
            enable: true,//设置 zTree 是否开启异步加载模式
            url: path+'/emphasisCompanyController/getModelTree',
            autoParam : ['id']//异步加载时需要自动提交父节点属性的参数。[setting.async.enable = true 时生效]
        },
        data:{
            key: {
                name: "name"   //设置树节点的name,节点参数name必须和它匹配
            },
            simpleData: {
                enable: true,  //开启树的层级结构
                idKey: "id",   //设置树节点id,节点参数id必须与之匹配  节点数据中保存唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效]
                pIdKey: "parentId" //设置pid,节电参数pid必须与之匹配  节点数据中保存其父节点唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效]
            }
        },
        check : {
            enable : true,//设置 zTree 的节点上是否显示 checkbox / radio
            chkStyle : "checkbox",//勾选框类型(checkbox  radio[setting.check.enable = true 时生效]
            chkboxType: { "Y": "ps", "N": "ps" }//勾选 checkbox 对于父子节点的关联关系。
        },
        callback: {
            beforeCheck: function(treeId, treeNode) {
                return !isTreeCheckDisable;
            }
        }
    }
});

这样就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值