From 871d4095b07cedacb7fbef4c38d64982f539c404 Mon Sep 17 00:00:00 2001 From: fei.wang <wf18701153496@163.com> Date: 星期四, 09 五月 2024 15:40:15 +0800 Subject: [PATCH] 测试提交 --- src/webapp/js/lay-module/treetable-lay/treetable.js | 206 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 206 insertions(+), 0 deletions(-) diff --git a/src/webapp/js/lay-module/treetable-lay/treetable.js b/src/webapp/js/lay-module/treetable-lay/treetable.js new file mode 100644 index 0000000..e38a5e1 --- /dev/null +++ b/src/webapp/js/lay-module/treetable-lay/treetable.js @@ -0,0 +1,206 @@ +layui.define(['layer', 'table'], function (exports) { + var $ = layui.jquery; + var layer = layui.layer; + var table = layui.table; + + var treetable = { + // 娓叉煋鏍戝舰琛ㄦ牸 + render: function (param) { + // 妫�鏌ュ弬鏁� + if (!treetable.checkParam(param)) { + return; + } + // 鑾峰彇鏁版嵁 + if (param.data) { + treetable.init(param, param.data); + } else { + $.getJSON(param.url, param.where, function (res) { + treetable.init(param, res.data); + }); + } + }, + // 娓叉煋琛ㄦ牸 + init: function (param, data) { + var mData = []; + var doneCallback = param.done; + var tNodes = data; + // 琛ヤ笂id鍜宲id瀛楁 + for (var i = 0; i < tNodes.length; i++) { + var tt = tNodes[i]; + if (!tt.id) { + if (!param.treeIdName) { + layer.msg('鍙傛暟treeIdName涓嶈兘涓虹┖', {icon: 5}); + return; + } + tt.id = tt[param.treeIdName]; + } + if (!tt.pid) { + if (!param.treePidName) { + layer.msg('鍙傛暟treePidName涓嶈兘涓虹┖', {icon: 5}); + return; + } + tt.pid = tt[param.treePidName]; + } + } + + // 瀵规暟鎹繘琛屾帓搴� + var sort = function (s_pid, data) { + for (var i = 0; i < data.length; i++) { + if (data[i].pid == s_pid) { + var len = mData.length; + if (len > 0 && mData[len - 1].id == s_pid) { + mData[len - 1].isParent = true; + } + mData.push(data[i]); + sort(data[i].id, data); + } + } + }; + sort(param.treeSpid, tNodes); + + // 閲嶅啓鍙傛暟 + param.url = undefined; + param.data = mData; + param.page = { + count: param.data.length, + limit: param.data.length + }; + param.cols[0][param.treeColIndex].templet = function (d) { + var mId = d.id; + var mPid = d.pid; + var isDir = d.isParent; + var emptyNum = treetable.getEmptyNum(mPid, mData); + var iconHtml = ''; + for (var i = 0; i < emptyNum; i++) { + iconHtml += '<span class="treeTable-empty"></span>'; + } + if (isDir) { + iconHtml += '<i class="layui-icon layui-icon-triangle-d"></i> <i class="layui-icon layui-icon-layer"></i>'; + } else { + iconHtml += '<i class="layui-icon layui-icon-file"></i>'; + } + iconHtml += ' '; + var ttype = isDir ? 'dir' : 'file'; + var vg = '<span class="treeTable-icon open" lay-tid="' + mId + '" lay-tpid="' + mPid + '" lay-ttype="' + ttype + '">'; + return vg + iconHtml + d[param.cols[0][param.treeColIndex].field] + '</span>' + }; + + param.done = function (res, curr, count) { + $(param.elem).next().addClass('treeTable'); + $('.treeTable .layui-table-page').css('display', 'none'); + $(param.elem).next().attr('treeLinkage', param.treeLinkage); + // 缁戝畾浜嬩欢鎹㈡垚瀵筨ody缁戝畾 + /*$('.treeTable .treeTable-icon').click(function () { + treetable.toggleRows($(this), param.treeLinkage); + });*/ + if (param.treeDefaultClose) { + treetable.foldAll(param.elem); + } + if (doneCallback) { + doneCallback(res, curr, count); + } + }; + + // 娓叉煋琛ㄦ牸 + table.render(param); + }, + // 璁$畻缂╄繘鐨勬暟閲� + getEmptyNum: function (pid, data) { + var num = 0; + if (!pid) { + return num; + } + var tPid; + for (var i = 0; i < data.length; i++) { + if (pid == data[i].id) { + num += 1; + tPid = data[i].pid; + break; + } + } + return num + treetable.getEmptyNum(tPid, data); + }, + // 灞曞紑/鎶樺彔琛� + toggleRows: function ($dom, linkage) { + var type = $dom.attr('lay-ttype'); + if ('file' == type) { + return; + } + var mId = $dom.attr('lay-tid'); + var isOpen = $dom.hasClass('open'); + if (isOpen) { + $dom.removeClass('open'); + } else { + $dom.addClass('open'); + } + $dom.closest('tbody').find('tr').each(function () { + var $ti = $(this).find('.treeTable-icon'); + var pid = $ti.attr('lay-tpid'); + var ttype = $ti.attr('lay-ttype'); + var tOpen = $ti.hasClass('open'); + if (mId == pid) { + if (isOpen) { + $(this).hide(); + if ('dir' == ttype && tOpen == isOpen) { + $ti.trigger('click'); + } + } else { + $(this).show(); + if (linkage && 'dir' == ttype && tOpen == isOpen) { + $ti.trigger('click'); + } + } + } + }); + }, + // 妫�鏌ュ弬鏁� + checkParam: function (param) { + if (!param.treeSpid && param.treeSpid != 0) { + layer.msg('鍙傛暟treeSpid涓嶈兘涓虹┖', {icon: 5}); + return false; + } + + if (!param.treeColIndex && param.treeColIndex != 0) { + layer.msg('鍙傛暟treeColIndex涓嶈兘涓虹┖', {icon: 5}); + return false; + } + return true; + }, + // 灞曞紑鎵�鏈� + expandAll: function (dom) { + $(dom).next('.treeTable').find('.layui-table-body tbody tr').each(function () { + var $ti = $(this).find('.treeTable-icon'); + var ttype = $ti.attr('lay-ttype'); + var tOpen = $ti.hasClass('open'); + if ('dir' == ttype && !tOpen) { + $ti.trigger('click'); + } + }); + }, + // 鎶樺彔鎵�鏈� + foldAll: function (dom) { + $(dom).next('.treeTable').find('.layui-table-body tbody tr').each(function () { + var $ti = $(this).find('.treeTable-icon'); + var ttype = $ti.attr('lay-ttype'); + var tOpen = $ti.hasClass('open'); + if ('dir' == ttype && tOpen) { + $ti.trigger('click'); + } + }); + } + }; + + layui.link(layui.cache.base + 'treetable-lay/treetable.css'); + + // 缁欏浘鏍囧垪缁戝畾浜嬩欢 + $('body').on('click', '.treeTable .treeTable-icon', function () { + var treeLinkage = $(this).parents('.treeTable').attr('treeLinkage'); + if ('true' == treeLinkage) { + treetable.toggleRows($(this), true); + } else { + treetable.toggleRows($(this), false); + } + }); + + exports('treetable', treetable); +}); -- Gitblit v1.9.3