Ztree生成目录

145 篇文章 4 订阅

1.生成目录如图所示:

2.前端引用Ztree:

官方demo:

把zTreeStyle这个目录复制到自己项目的css目录中,复制jquery.ztree.all.min.js文件到自己项目的js目录中:

 

html文件中引用:

<link rel="stylesheet" href="../../css/zTreeStyle/zTreeStyle.css" />

<script type="text/javascript" src="../../js/jquery.ztree.all.min.js" ></script>

内容部分:

<ul id="treeDemo" class="ztree"></ul>

js部分:
            var setting = {
                check: {
                    enable: true,
                    chkboxType: { "Y": "ps", "N": "ps" }
                },
                data: {
                    simpleData: {
                        enable: true
                    }
                }
            };
        function mennunetWorking () {
            $.ajax({
                type:"post",    
                url:menuneturl, 
                data:{ 
                     token:"15eecbddea044c67b93f40b56fe3882e"
                }, 
                success: function(res) {
                  //console.log("菜单树数据.:"+res);

                  $.fn.zTree.init($("#treeDemo"), setting, res);
                },
                error:function() { 
                    alert("失败");
               } 
            });        
        }

3.后台(java):

目录表数据:

 

后台返回的数据:

[{
        "id": 1,
        "pId": 0,
        "name": "系统管理",
        "open": true,
        "checked": null,
        "isOpen": true
    },
    {
        "id": 106,
        "pId": 1,
        "name": "用户管理",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 107,
        "pId": 106,
        "name": "添加用户",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 108,
        "pId": 106,
        "name": "修改用户",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 109,
        "pId": 106,
        "name": "删除用户",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 110,
        "pId": 106,
        "name": "重置密码",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 111,
        "pId": 106,
        "name": "冻结用户",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 112,
        "pId": 106,
        "name": "解除冻结用户",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 113,
        "pId": 106,
        "name": "分配角色",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 114,
        "pId": 1,
        "name": "角色管理",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 115,
        "pId": 114,
        "name": "添加角色",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 116,
        "pId": 114,
        "name": "修改角色",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 117,
        "pId": 114,
        "name": "删除角色",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 118,
        "pId": 114,
        "name": "配置权限",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 119,
        "pId": 1,
        "name": "菜单管理",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 120,
        "pId": 119,
        "name": "添加菜单",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 121,
        "pId": 119,
        "name": "修改菜单",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 122,
        "pId": 119,
        "name": "删除菜单",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 128,
        "pId": 1,
        "name": "业务日志",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 130,
        "pId": 1,
        "name": "监控管理",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 131,
        "pId": 1,
        "name": "部门管理",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 132,
        "pId": 1,
        "name": "字典管理",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 133,
        "pId": 1,
        "name": "登录日志",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 134,
        "pId": 128,
        "name": "清空日志",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 135,
        "pId": 131,
        "name": "添加部门",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 136,
        "pId": 131,
        "name": "修改部门",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 137,
        "pId": 131,
        "name": "删除部门",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 138,
        "pId": 132,
        "name": "添加字典",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 139,
        "pId": 132,
        "name": "修改字典",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 140,
        "pId": 132,
        "name": "删除字典",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 141,
        "pId": 1,
        "name": "通知管理",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 142,
        "pId": 141,
        "name": "添加通知",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 143,
        "pId": 141,
        "name": "修改通知",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 144,
        "pId": 141,
        "name": "删除通知",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 145,
        "pId": 0,
        "name": "通知",
        "open": true,
        "checked": null,
        "isOpen": true
    },
    {
        "id": 148,
        "pId": 0,
        "name": "代码生成",
        "open": true,
        "checked": null,
        "isOpen": true
    },
    {
        "id": 149,
        "pId": 0,
        "name": "接口文档",
        "open": true,
        "checked": null,
        "isOpen": true
    },
    {
        "id": 150,
        "pId": 119,
        "name": "菜单编辑跳转",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 151,
        "pId": 119,
        "name": "菜单列表",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 152,
        "pId": 131,
        "name": "修改部门跳转",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 153,
        "pId": 131,
        "name": "部门列表",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 154,
        "pId": 131,
        "name": "部门详情",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 155,
        "pId": 132,
        "name": "修改菜单跳转",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 156,
        "pId": 132,
        "name": "字典列表",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 157,
        "pId": 132,
        "name": "字典详情",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 158,
        "pId": 128,
        "name": "日志列表",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 159,
        "pId": 128,
        "name": "日志详情",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 160,
        "pId": 133,
        "name": "清空登录日志",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 161,
        "pId": 133,
        "name": "登录日志列表",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 162,
        "pId": 114,
        "name": "修改角色跳转",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 163,
        "pId": 114,
        "name": "角色分配跳转",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 164,
        "pId": 114,
        "name": "角色列表",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 165,
        "pId": 106,
        "name": "分配角色跳转",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 166,
        "pId": 106,
        "name": "编辑用户跳转",
        "open": false,
        "checked": null,
        "isOpen": false
    },
    {
        "id": 167,
        "pId": 106,
        "name": "用户列表",
        "open": false,
        "checked": null,
        "isOpen": false
    }
]

3.1实体类:

public class Menu {

    private Long id;

    /**
     * 菜单编号
     */
    private String code;
    /**
     * 菜单父编号
     */
    private String pcode;
    /**
     * 当前菜单的所有父菜单编号
     */
    private String pcodes;
    /**
     * 菜单名称
     */
    private String name;
    /**
     * 菜单图标
     */
    private String icon;
    /**
     * url地址
     */
    private String url;
    /**
     * 菜单排序号
     */
    private Integer num;
    /**
     * 菜单层级
     */
    private Integer levels;
    /**
     * 是否是菜单(1:是  0:不是)
     */
    private Integer ismenu;
    /**
     * 备注
     */
    private String tips;
    /**
     * 菜单状态 :  1:启用   0:不启用
     */
    private Integer status;
    /**
     * 是否打开:    1:打开   0:不打开
     */
    private Integer isopen;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getPcode() {
        return pcode;
    }

    public void setPcode(String pcode) {
        this.pcode = pcode;
    }

    public String getPcodes() {
        return pcodes;
    }

    public void setPcodes(String pcodes) {
        this.pcodes = pcodes;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getIcon() {
        return icon;
    }

    public void setIcon(String icon) {
        this.icon = icon;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public Integer getNum() {
        return num;
    }

    public void setNum(Integer num) {
        this.num = num;
    }

    public Integer getLevels() {
        return levels;
    }

    public void setLevels(Integer levels) {
        this.levels = levels;
    }

    public Integer getIsmenu() {
        return ismenu;
    }

    public void setIsmenu(Integer ismenu) {
        this.ismenu = ismenu;
    }

    public String getTips() {
        return tips;
    }

    public void setTips(String tips) {
        this.tips = tips;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getIsopen() {
        return isopen;
    }

    public void setIsopen(Integer isopen) {
        this.isopen = isopen;
    }

}

3.2dao层:

import com.sqxinxibu.neikanhoutai.node.ZTreeNode;

import java.util.List;

public interface MenuMapper {
    /**
     * 获取菜单列表树
     */
    List<ZTreeNode> menuTreeList();
}

3.3dao层对应的mapper:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sqxinxibu.neikanhoutai.dao.MenuMapper">

   <!-- 通用查询映射结果 -->
   <resultMap id="BaseResultMap" type="com.sqxinxibu.neikanhoutai.entity.Menu">
      <id column="id" property="id" />
      <result column="code" property="code" />
      <result column="pcode" property="pcode" />
      <result column="pcodes" property="pcodes" />
      <result column="name" property="name" />
      <result column="icon" property="icon" />
      <result column="url" property="url" />
      <result column="num" property="num" />
      <result column="levels" property="levels" />
      <result column="ismenu" property="ismenu" />
      <result column="tips" property="tips" />
      <result column="status" property="status" />
      <result column="isopen" property="isopen" />
   </resultMap>

    <sql id="Base_Column_List">
        id, code, pcode, name, icon, url, num, levels,pcodes,
        tips, status,isopen,ismenu
    </sql>

    <!--查询菜单树-->
    <select id="menuTreeList" resultType="com.sqxinxibu.neikanhoutai.node.ZTreeNode">
        SELECT
        m1.id AS id,
        (
        CASE
        WHEN (m2.id = 0 OR m2.id IS NULL) THEN
        0
        ELSE
        m2.id
        END
        ) AS pId,
        m1. NAME
        AS NAME,
        (
        CASE
        WHEN (m2.id = 0 OR m2.id IS NULL) THEN
        'true'
        ELSE
        'false'
        END
        ) as isOpen
        FROM
        sys_menu m1
        LEFT join sys_menu m2 ON m1.pcode = m2. CODE
        ORDER BY
        m1.id ASC
    </select>
</mapper>

3.4service层:
 

package com.sqxinxibu.neikanhoutai.service.Impl;

import com.alibaba.fastjson.JSON;
import com.sqxinxibu.neikanhoutai.dao.MenuDao;
import com.sqxinxibu.neikanhoutai.dao.MenuMapper;
import com.sqxinxibu.neikanhoutai.entity.Menu;
import com.sqxinxibu.neikanhoutai.entity.MenuData;
import com.sqxinxibu.neikanhoutai.node.ZTreeNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
@Component
public class MenuService {
    @Resource
    private MenuMapper menuMapper;//获取菜单列表树

    //查询菜单树
    public List<ZTreeNode> menuTreeList(){
        List<ZTreeNode> zTreeNodeList=menuMapper.menuTreeList();
        System.out.println("获取菜单列表树:"+JSON.toJSONString(zTreeNodeList));
        return  zTreeNodeList;
    }
}

3.5controller层:
 

import com.sqxinxibu.neikanhoutai.entity.MenuData;
import com.sqxinxibu.neikanhoutai.node.ZTreeNode;
import com.sqxinxibu.neikanhoutai.service.Impl.MenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

//菜单控制器
@RestController
@RequestMapping("/menu")
public class MenuController {

    @Autowired
    private MenuService menuService;

    //获取菜单列表树
    @RequestMapping("/menuTreelist")
    public List<ZTreeNode> menuTreeList(){
          return menuService.menuTreeList();
    }


}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值