zoukankan      html  css  js  c++  java
  • 使用ztree展示树形菜单结构

    官网:http://www.treejs.cn/v3/main.php#_zTreeInfo

    一、功能简介

    在权限系统中,实现给角色指定菜单权限的功能。主要包括以下几点:

    读取全部菜单项,并以树形结构展现;

    勾选角色拥有的菜单权限,保存入库;

    重新编辑角色权限时,默认选中角色已有的菜单权限。

    二、界面

    Image

    三、实现过程

    1.在服务端获取全部菜单资源,并转换为json字符串。

    @RequestMapping("/edit")

        public String edit(Integer roleId, Model model) {

            ……

            //树形菜单资源

            List<Map<String, Object>> allResources = resourceService.getTreeMap();

            //当前角色已有资源,设置checked和open属性

            if (roleId != null) {

                Set<CmsResource> roleResources = resourceService.findByRoleId(roleId);

                if (roleResources != null && !roleResources.isEmpty()) {

                    for (Map<String, Object> resource : allResources) {

                        Integer id =(Integer)resource.get("id");

                        for (CmsResource roleResource : roleResources) {

                            if (roleResource.getResourceId().equals(id)) {

                                resource.put("checked", true);

                                resource.put("open", true);

                                break;

                            }

                        }

                    }

                }

            }

            //转换为json字符串

            String resourceJson = new Gson().toJson(allResources);

            model.addAttribute("resourceJson", resourceJson);

            return "/role/edit";

        }

    其中resourceService.getTreeMap()方法用来获取全部菜单资源,主要包括这几个字段:id,name,pId,open。

    2.在view页面引入tree控件,并初始化设置。

    <link rel="stylesheet" th:href="@{/static/zTree_v3/css/zTreeStyle/zTreeStyle.css}”>

    <script th:src="@{/static/js/jquery/jquery.min.js}"></script>

    <script type="text/javascript" th:src="@{/static/zTree_v3/js/jquery.ztree.core.js}"></script>

    <script type="text/javascript" th:src="@{/static/zTree_v3/js/jquery.ztree.excheck.js}"></script>

    3.在view页面中读取服务端传过来的resourceJson字符串,并使用ztree控件加载树形结构。

    <script th:inline="javascript">

            /*<![CDATA[*/

            var zTreeObj;

            var setting = {

                data: {

                    simpleData: {

                        enable: true

                    }

                },

                check: {

                    enable: true,

                    chkStyle: "checkbox",

                    chkboxType: {"Y": "ps", "N": "ps"}

                }

            };

            //加载菜单

            $().ready(function () {

                var zNodes = eval(/*[[${resourceJson}]]*/);

                zTreeObj = $.fn.zTree.init($("#ztree"), setting, zNodes);

            });

          //保存之前调用该方法,获取菜单当前选中项

            function fillResourceIds(){

                var resourceIds=new Array();

                var treeObj = $.fn.zTree.getZTreeObj("ztree");

                var nodes = treeObj.getCheckedNodes(true);

                if(nodes){

                    for(var i in nodes){

                        resourceIds.push(nodes[i].id);

                    }

                }

                return resourceIds;

            }

            /*]]>*/

        </script>

  • 相关阅读:
    10 shell test命令
    9 shell 退出状态
    8 shell if else
    7 shell 数学运算
    6-x3 declare和typeset命令:设置变量属性
    6-x1 read命令:从键盘读取数据
    Bootstrap 有一个 class 属性叫做 well,它的作用是为设定的列创造出一种视觉上的深度感
    form-control给input添加这个class类后就会使用bootstrap自带的input框
    bootstrap文字居中!
    img-responsive class图片响应式
  • 原文地址:https://www.cnblogs.com/janes/p/7567300.html
Copyright © 2011-2022 走看看