/** * @Name: 基于layui的tree重写 * @Author: 李祥 * @License:MIT * 最近修改时间: 2019/05/20 * https://layuiextend.hsianglee.cn/eletree/ */ layui.define(["jquery", "laytpl"], function (exports) { var $ = layui.jquery; var laytpl = layui.laytpl; var hint = layui.hint(); var MOD_NAME = "eleTree"; //外部接口 var eleTree = { //事件监听 on: function (events, callback) { return layui.onevent.call(this, MOD_NAME, events, callback); }, render: function (options) { var inst = new Class(options); return thisTree.call(inst); } } var thisTree = function () { var _self = this; var options = _self.config; // 暴漏外面的方法 return { // 接收两个参数,1. 节点 key 2. 节点数据的数组 updateKeyChildren: function (key, data) { if (options.data.length === 0) return; return _self.updateKeyChildren.call(_self, key, data); }, updateKeySelf: function (key, data) { if (options.data.length === 0) return; return _self.updateKeySelf.call(_self, key, data); }, remove: function (key) { if (options.data.length === 0) return; return _self.remove.call(_self, key); }, append: function (key, data) { if (options.data.length === 0) return; return _self.append.call(_self, key, data); }, insertBefore: function (key, data) { if (options.data.length === 0) return; return _self.insertBefore.call(_self, key, data); }, insertAfter: function (key, data) { if (options.data.length === 0) return; return _self.insertAfter.call(_self, key, data); }, // 接收两个 boolean 类型的参数,1. 是否只是叶子节点,默认值为 false 2. 是否包含半选节点,默认值为 false getChecked: function (leafOnly, includeHalfChecked) { if (options.data.length === 0) return; return _self.getChecked.call(_self, leafOnly, includeHalfChecked); }, // 接收勾选节点数据的数组 setChecked: function (data, isReset) { if (options.data.length === 0) return; return _self.setChecked.call(_self, data, isReset); }, // 取消选中 unCheckNodes: function () { if (options.data.length === 0) return; return _self.unCheckNodes.call(_self); }, unCheckArrNodes: function (data) { if (options.data.length === 0) return; return _self.unCheckArrNodes.call(_self, data); }, expandAll: function () { options.elem.children(".eleTree-node").children(".eleTree-node-group").empty(); _self.expandAll.call(_self, options.data, [], 1, true); _self.unCheckNodes(true); _self.defaultChecked(); _self.checkboxInit(); }, unExpandAll: function () { return _self.unExpandAll.call(_self); }, reload: function (options) { return _self.reload.call(_self, options); }, search: function (value) { return _self.search.call(_self, value); } } } // 模板渲染 var TPL_ELEM = function (options, floor, parentStatus) { return [ '{{# for(var i=0;i