表单页的树控件


创建数据传输对象

package com.ooqiu.gaming.server.web.admin.dto;

import lombok.Data;

import java.io.Serializable;

/**
 * 前端树控件
 * <p>Title: TreeView</p>
 * <p>Description: </p>
 *
 * @author Lusifer
 * @version 1.0.0
 * @date 2018/3/2 3:48
 */
@Data
public class TreeView implements Serializable {
    private String id;
    private String icon;
    private String text;
    private boolean children;
}

定义数据查询接口

/**
 * 根据父 ID 查询子类目
 * @param pid
 * @return
 */
public List<Channel> selectByPid(Long pid);

实现数据查询接口

@Override
public List<Channel> selectByPid(Long pid) {
    if (pid == null) {
        pid = 0L;
    }

    Example example = new Example(Channel.class);
    example.createCriteria().andEqualTo("pid", pid);

    return channelMapper.selectByExample(example);
}

控制器代码

/**
 * 获取频道树结构
 *
 * @param pid
 * @return
 */
@ResponseBody
@RequestMapping(value = "tree", method = RequestMethod.GET)
public List<TreeView> tree(String pid) {
    List<TreeView> list = Lists.newArrayList();

    if (StringUtils.isBlank(pid) || "#".equals(pid)) {
        pid = "0";
    }

    List<Channel> channels = channelService.selectByPid(Long.parseLong(pid));
    for (Channel channel : channels) {
        TreeView treeView = new TreeView();
        treeView.setId(String.valueOf(channel.getId()));
        treeView.setIcon("");
        treeView.setText(channel.getName());
        treeView.setChildren(channel.getIsParent().equals("0"));
        list.add(treeView);
    }

    return list;
}

JS 代码

var TreeView = function () {

    /**
     * 初始化树
     * @param id 树节点 ID
     * @param url 远程树结构请求地址
     */
    var handlerInitTree = function (id, url) {
        $("#" + id).jstree({
            "core": {
                "themes": {
                    "responsive": false
                },
                "check_callback": true,
                'data': {
                    'url': function (node) {
                        return url;
                    },
                    'data': function (node) {
                        return {"pid" : node.id};
                    }
                }
            },
            "types": {
                "default": {
                    "icon": "fa fa-folder m--font-brand"
                },
                "file": {
                    "icon": "fa fa-file  m--font-brand"
                }
            },
            "plugins": ["dnd", "state", "types"]
        });

        $('#' + id).bind("activate_node.jstree", function (obj, e) {
            var currentNode = e.node;

            $("#pid").val(currentNode.id);
            $("#pidText").val(currentNode.text);
        });
    };

    return {
        init: function (id, url) {
            handlerInitTree(id, url);
        }
    }
}();

JS 调用

<script>
    $(function () {
       TreeView.init("m_tree_1", "/channel/tree");
    });
</script>

对应的 HTML 节点

<div id="m_tree_1" class="tree-demo"></div>

效果图

results matching ""

    No results matching ""