layui实现树形下拉列表

核心JS代码,条用后台返回数据以tree显示,10037 10038 10039 对应我上图中的按钮编号。我通过字典表获取。如果没有对应的按钮编号会显示没有执行没有操作的按钮JS

//有操作按钮
var layoutHasOperation = [
    { name: '部门名称', treeNodes: true, headerClass: 'value_col', colClass: 'value_col', style: 'width: 60%' },
    {
        name: '操作',
        headerClass: 'value_col',
        colClass: 'value_col',
        render: function(row) {
            return '<privilege:operation operationId="10037" clazz="layui-btn layui-btn-xs"  onClick="updateMenu(' + row.id + ')" name="修改"  iconCls="" layEvent="edit"></privilege:operation><privilege:operation operationId="10036" clazz="layui-btn layui-btn-xs"  onClick="addMenu(' + row.id + ')" name="新增"  iconCls="" layEvent="add"></privilege:operation><privilege:operation operationId="10038" clazz="layui-btn layui-btn-danger layui-btn-xs"  onClick="delMenu(' + row.id + ')" name="删除"  iconCls="" layEvent="del"></privilege:operation>'; //列渲染
        }
    },
];
//没有操作的按钮
var layoutNoOperation = [
    { name: '部门名称', treeNodes: true, headerClass: 'value_col', colClass: 'value_col', style: 'width: 95%' },
];

/**
 * 渲染tree-table数据
 */
layui.use(['form', 'tree', 'layer'], function() {
    var layer = layui.layer, tree = layui.tree, form = layui.form;
    //请求menu树数据
    $.ajax({
        type:'POST',
        dataType:'text',
        url: "${pageContext.request.contextPath}/department/getDeparentTreeList",
        data:{"parentId":-1},
        success:function(result){
            var myobj = eval("["+result+"]");
            var thisPageOperationIds=new Array();
            thisPageOperationIds[0]="10037";
            thisPageOperationIds[1]="10036";
            thisPageOperationIds[2]="10038";
            var allOperationIds = '${sessionScope.currentOperationIds}'; 
            var result = judgePageOperationArea(allOperationIds, thisPageOperationIds); 

            if(result){
              layui.treeGird({
                  elem: '#menuTree'
                  ,spreadable:true//设置是否全部展开
                  ,nodes: myobj[0]
                    ,layout: layoutHasOperation
                });
              form.render;
                  }else{
                    layui.treeGird({
                      elem: '#menuTree'
                      ,spreadable:true//设置是否全部展开
                      ,nodes: myobj[0]
                ,layout: layoutNoOperation
                    });
                form.render;
                        }
           }
        });
    });

java代码:

@RequestMapping("getDeparentTreeList")
    public ModelAndView getDeparentTreeList(String parentId){
        ModelAndView mv=new ModelAndView();
        mv.setView(Jackson2Util.jsonView());
        try {
            JSONArray jsonArray = getListByParentId(parentId);
            mv.addObject(jsonArray);
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("菜单展示错误",e);
        }
        
        return mv;
    }
    
    private JSONArray getListByParentId(String parentId)throws Exception{
        JSONArray jsonArray=this.getDeparentList(parentId);
        for(int i=0;i<jsonArray.size();i++){
            JSONObject jsonObject=jsonArray.getJSONObject(i);
            if("open".equals(jsonObject.getString("state"))){
                continue;                                                 
            }else{
                jsonObject.put("children", getListByParentId(jsonObject.getString("id")));
            }
        }
        return jsonArray;
    }
    
    private JSONArray getDeparentList(String parentId)throws Exception {
        JSONArray jsonArray=new JSONArray();
        department = new Department();
        department.setParentid(Long.parseLong(parentId));
        List<Department> list = departmentService.selectAllParentList(department);
        for(Department department : list){
            JSONObject jsonObject = new JSONObject();
            Long departmentId = department.getId();
            jsonObject.put("id", departmentId);
            jsonObject.put("name", department.getName());
            jsonObject.put("spread", true);
            // 加上该页面菜单下面的按钮
            operation = new Operation();
            operation.setMenuId(departmentId);
            List<Operation> operaList = operationService.findOperation(operation);
            if (operaList!=null && operaList.size()>0) {
                String string = "";
                for (Operation o : operaList) {
                    string += o.getOperationName() + ",";
                }
                jsonObject.put("operationNames", string.substring(0,string.length()-1));
            } else {
                jsonObject.put("operationNames", "");
            }
            jsonArray.add(jsonObject);
        }
        return jsonArray;
    }

首先我先向数据库脚本SQL中存入了一个固定栏就是第一张图的部门信息如下图

然后不断地通过parentId这个字段进行循环遍历获取关联数据。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值