优化 treeTable 重新排序和视图内表单初始化的调用逻辑

pull/1260/head
sunxiaobin89 2023-05-24 14:52:47 +08:00
parent 5d34c6f523
commit 1b31ba87fc
1 changed files with 26 additions and 25 deletions

View File

@ -10,7 +10,6 @@ layui.define(['table'], function (exports) {
var form = layui.form; var form = layui.form;
var table = layui.table; var table = layui.table;
var hint = layui.hint(); var hint = layui.hint();
var timer = {}; // 记录定时器 index
// api // api
var treeTable = { var treeTable = {
@ -427,7 +426,9 @@ layui.define(['table'], function (exports) {
var debounceFn = (function () { var debounceFn = (function () {
var fn = {}; var fn = {};
return function (tableId, func, wait) { return function (tableId, func, wait) {
fn[tableId] = fn[tableId] || layui.debounce(func, wait); if (!fn[tableId]) {
fn[tableId] = layui.debounce(func, wait);
}
return fn[tableId]; return fn[tableId];
} }
})() })()
@ -667,13 +668,15 @@ layui.define(['table'], function (exports) {
}).join(',')).addClass(HIDE); }).join(',')).addClass(HIDE);
} }
} }
debounceFn(tableId, function () {
debounceFn('resize-' + tableId, function () {
treeTable.resize(tableId); treeTable.resize(tableId);
}, 25)(); }, 0)();
if (callbackFlag && trData[LAY_ASYNC_STATUS] !== 'loading') { if (callbackFlag && trData[LAY_ASYNC_STATUS] !== 'loading') {
var onExpand = treeOptions.callback.onExpand; var onExpand = treeOptions.callback.onExpand;
layui.type(onExpand) === 'function' && onExpand(tableId, trData, expandFlag); layui.type(onExpand) === 'function' && onExpand(tableId, trData, trExpand);
} }
return retValue; return retValue;
@ -908,14 +911,18 @@ layui.define(['table'], function (exports) {
}); });
// 当前层的数据看看是否需要展开 // 当前层的数据看看是否需要展开
sonSign !== false && layui.each(dataExpand, function (index, item) { if (sonSign !== false && dataExpand) {
var trDefaultExpand = tableViewElem.find('tr[lay-data-index="' + index + '"]'); layui.each(dataExpand, function (index, item) {
trDefaultExpand.find('.layui-table-tree-flexIcon').html(treeOptionsView.flexIconOpen); var trDefaultExpand = tableViewElem.find('tr[lay-data-index="' + index + '"]');
expandNode({trElem: trDefaultExpand.first()}, true); trDefaultExpand.find('.layui-table-tree-flexIcon').html(treeOptionsView.flexIconOpen);
}); expandNode({trElem: trDefaultExpand.first()}, true);
});
options.hasNumberCol && that.formatNumber(tableId); } else {
form.render(null, tableFilterId); debounceFn('renderTreeTable-' + tableId, function () {
options.hasNumberCol && formatNumber(that);
form.render(null, tableFilterId);
}, 0)();
}
} }
var formatNumber = function (that) { var formatNumber = function (that) {
@ -923,24 +930,18 @@ layui.define(['table'], function (exports) {
var tableViewElem = options.elem.next(); var tableViewElem = options.elem.next();
var num = 0; var num = 0;
var trMain = tableViewElem.find('.layui-table-main tbody tr');
var trFixedL = tableViewElem.find('.layui-table-fixed-l tbody tr');
var trFixedR = tableViewElem.find('.layui-table-fixed-r tbody tr');
layui.each(that.treeToFlat(table.cache[options.id]), function (i1, item1) { layui.each(that.treeToFlat(table.cache[options.id]), function (i1, item1) {
if (layui.isArray(item1)) {
return;
}
var itemData = that.getNodeDataByIndex(item1[LAY_DATA_INDEX]); var itemData = that.getNodeDataByIndex(item1[LAY_DATA_INDEX]);
itemData['LAY_NUM'] = ++num; itemData['LAY_NUM'] = ++num;
tableViewElem.find('tr[lay-data-index="' + item1[LAY_DATA_INDEX] + '"] .laytable-cell-numbers').html(itemData['LAY_NUM']); trMain.eq(i1).find('.laytable-cell-numbers').html(num);
trFixedL.eq(i1).find('.laytable-cell-numbers').html(num);
trFixedR.eq(i1).find('.laytable-cell-numbers').html(num);
}) })
} }
Class.prototype.formatNumber = function (id) {
var that = this;
clearTimeout(id);
timer[id] = setTimeout(function () {
formatNumber(that);
}, 10)
}
// 树表渲染 // 树表渲染
Class.prototype.render = function (type) { Class.prototype.render = function (type) {
var that = this; var that = this;