let dtree, util, tree, layer; let type = ""; let nodeIndex = [] let data = []; let nodeList; function setForm() { layui.extend({ dtree: '../../../../js/layui_dtree/dtree/dtree' }).use(['util', 'dtree', 'layer'], function () { util = layui.util; dtree = layui.dtree; layer = layui.layer; util.event('lay-active', { query: function () { }, reset: function () { }, }); getGroupNode("all"); tree = dtree.render({ elem: "#tree", initLevel: 2, data: [], toolbar: true, toolbarWay: "follow", // "contextmenu":右键菜单(默认),"fixed":"固定在节点后","follow":"跟随节点动态呈现" toolbarFun: { loadToolbarBefore: function (buttons, param, $div) { if (parseInt(param.level) > 2) { // 如果是叶子节点 buttons.addToolbar = ""; // 取消新增功能 } if (parseInt(param.level) === 1) { // 如果是叶子节点 buttons.editToolbar = ""; // // 取消新增功能 buttons.delToolbar = ""; // 取消新增功能 } return buttons; }, addTreeNode: function (treeNode, $div) { addNode(treeNode); }, editTreeNode: function (treeNode, $div) { editNode(treeNode); }, delTreeNode: function (treeNode, $div) { delNode(treeNode); } }, done: function (res, $ul, first) { $('li[data-index="1"] div:first').addClass('top'); } }); }); } function addNode(treeNode) { Ajax().post({ headers: { "encrypt": sm3(JSON.stringify(treeNode)) }, url: dataUrl + 'proteam/pot/deviceMachine/nodeAdd', data: treeNode, async: true, success: function (data) { msg(data); } }); } function editNode(treeNode) { Ajax().post({ headers: { "encrypt": sm3(JSON.stringify(treeNode)) }, url: dataUrl + 'proteam/pot/deviceMachine/nodeSet', data: treeNode, async: true, success: function (data) { msg(data); } }); } function delNode(treeNode) { Ajax().post({ headers: { "encrypt": sm3(JSON.stringify(treeNode)) }, url: dataUrl + 'proteam/pot/deviceMachine/nodeRemove', data: treeNode, async: true, success: function (data) { msg(data); } }); } function msg(data) { if (data.code === 200) { parent.layer.msg(data.msg, {icon: 1, scrollbar: false, time: 2000,}, function () { getGroupNode("all"); }); } else { parent.layer.msg(data.msg, {icon: 0, scrollbar: false, time: 2000,}); } } /** * 树单选框监听事件 * @type {{chooseDone: checkBarFun.chooseDone}} */ let checkBarFun = { chooseDone: function (obj) { let span = $('li[value=' + obj[0].parentId + '] span'); span.text("(" + obj[0].context + ")"); span.attr("value", obj[0].nodeId); } } /** *获取分组节点 */ function getGroupNode(type) { let loadingMsg = layer.msg("数据加载中,请稍候...", {icon: 16, scrollbar: false, time: 0,}); Ajax().post({ headers: { "encrypt": sm3(JSON.stringify({ "type": type })) }, url: dataUrl + 'proteam/pot/deviceMachine/groupNode', data: { "type": type }, async: true, success: function (data) { layer.close(loadingMsg); if (data.code === 200) { traversalData(data.data); } else { } }, error: function () { layer.close(loadingMsg); } }); } /*** * 转换数据 * @param data */ function traversalData(data) { let treeType = []; let treeData = []; $.each(data, function (index, item) { let obj = { id: item.index, title: item.name, parentId: item.parentIndex, children: [] } if (obj.parentId === "0") { treeType.push(obj); } else { treeData.push(obj); } }); itemList(treeType, treeData); } /** * 树类型 * @param treeType * @param treeData */ function itemList(treeType, treeData) { $.each(treeType, function (index, item) { $.each(treeData, function (indexData, itemData) { if (item.id === itemData.parentId) { item.children.push(itemData) } }) }); dtree.reload(tree, { data: [{ id: "0", title: '设备分组', parentId: "-1", children: treeType, spread: true, }], }); } /** * 遍历数据 * @param treeType * @param treeData */ function treeMenuList(treeType, treeData) { $.each(treeType, function (indexType, itemType) { let children = []; $.each(treeData, function (indexData, itemData) { if (itemType.id === itemData.parentId) { children.push(itemData); treeMenuList(itemData, treeData) } }); itemType.children = children; }); data = treeType; } /** * 关闭页面 */ function closePage() { let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引 parent.layer.close(index); //再执行关闭 }