/** * guy * 二级树 * @class BI.PlatformLevelTree * @extends BI.Select */ BI.PlatformLevelTree = BI.inherit(BI.Widget, { props: { baseCls: "platform-level-tree", itemsCreator: BI.emptyFn }, render: function () { var self = this, o = this.options; this.tree = BI.createWidget({ type: "bi.custom_tree", element: this, expander: { type: "bi.select_tree_expander", isDefaultInit: false, el: {}, popup: { type: "bi.custom_tree" } }, itemsCreator: function (op, callback) { o.itemsCreator(op, function (items) { callback(self._formatItems(items)) }) }, el: { type: "bi.loader", next: false, el: { type: "bi.button_tree", chooseType: 0, layouts: [{ type: "bi.vertical" }] } } }); this.tree.on(BI.CustomTree.EVENT_CHANGE, function () { self.fireEvent(BI.PlatformLevelTree.EVENT_CHANGE, arguments); }) }, _formatItems: function (nodes) { var self = this; BI.each(nodes, function (i, node) { var extend = {}; if (node.isParent === true || BI.isNotEmptyArray(node.children)) { switch (i) { case 0 : extend.type = "bi.multilayer_select_tree_first_plus_group_node"; break; case nodes.length - 1 : extend.type = "bi.multilayer_select_tree_last_plus_group_node"; break; default : extend.type = "bi.multilayer_select_tree_mid_plus_group_node"; break; } BI.defaults(node, extend); } else { switch (i) { case nodes.length - 1: extend.type = "bi.multilayer_single_tree_last_tree_leaf_item"; break; default : extend.type = "bi.multilayer_single_tree_mid_tree_leaf_item"; } BI.defaults(node, extend); } }); return nodes; }, populate: function () { this.tree.populate(); }, getValue: function () { return this.tree.getValue(); } }); BI.PlatformLevelTree.EVENT_CHANGE = "EVENT_CHANGE"; BI.shortcut("bi.platform_level_tree", BI.PlatformLevelTree); BI.DemoLevelTree = BI.inherit(BI.Widget, { render: function () { var self = this; return { type: "bi.vtape", items: [{ el: { type: "bi.platform_level_tree", ref: function () { self.tree = this; }, itemsCreator: function (op, callback) { if (!op.node) {//根节点 callback([{ "id": 1, "pId": 0, text: "A", value: 1, isParent: true }, { "id": 2, "pId": 0, "text": "B", value: 2, isParent: true, open: true }]) } else { if (op.node.id == 1) { callback([ { "id": 11, "pId": 1, "text": "test11", value: 11, layer: 1, isParent: true }, { "id": 12, "pId": 1, "text": "test12", value: 12, layer: 1 }, { "id": 13, "pId": 1, "text": "test13", value: 13, layer: 1 }, { "id": 14, "pId": 1, "text": "test14", value: 14, layer: 1, height: 35 }, { "id": 15, "pId": 1, "text": "test15", value: 15, layer: 1 }, { "id": 16, "pId": 1, "text": "test16", value: 16, layer: 1 }, {"id": 17, "pId": 1, "text": "test17", layer: 1, value: 17} ]) } else if (op.node.id == 2) { callback([{ "id": 21, "pId": 2, "text": "test21", value: 21, layer: 1 }, { "id": 22, "pId": 2, "text": "test22", value: 22, layer: 1 }]) } else if (op.node.id == 11) { callback([{ "id": 111, "pId": 11, "text": "test111", value: 111, layer: 2 }]) } } } } }, { el: { type: "bi.button", text: "确定", handler: function () { BI.Msg.toast(JSON.stringify(self.tree.getValue())); } }, height: 25 }] } }, mounted: function () { } }); BI.shortcut("demo.platform_level_tree", BI.DemoLevelTree);