优化 treeTable 内部 `formatNumber` 的实现细节减少一些不必要的调用

pull/1247/head
sunxiaobin89 2 years ago
parent 3709b74bfe
commit 585f1c4301

@ -10,6 +10,7 @@ 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 = {
@ -119,6 +120,19 @@ layui.define(['table'], function (exports) {
var treeOptions = thatOptionsTemp.tree; var treeOptions = thatOptionsTemp.tree;
var childrenKey = treeOptions.customName.children; var childrenKey = treeOptions.customName.children;
// 处理属性 // 处理属性
delete options.hasNumberCol;
delete options.hasChecboxCol;
delete options.hasRadioCol;
table.eachCols(null, function (i1, item1) {
if (item1.type === 'numbers') {
options.hasNumberCol = true;
} else if (item1.type === 'checkbox') {
options.hasChecboxCol = true;
} else if (item1.type === 'radio') {
options.hasRadioCol = true;
}
}, thatOptionsTemp.cols)
var parseData = options.parseData; var parseData = options.parseData;
var done = options.done; var done = options.done;
@ -788,33 +802,31 @@ layui.define(['table'], function (exports) {
expandNode({trElem: trDefaultExpand.first()}, true); expandNode({trElem: trDefaultExpand.first()}, true);
}); });
treeTable.formatNumber(tableId); options.hasNumberCol && that.formatNumber(tableId);
form.render(null, tableFilterId); form.render(null, tableFilterId);
} }
var formatNumber = function (that) {
/**
* 重新编号
* @param {String} id 表格id
* @return {Object} layui.treeTable
* */
treeTable.formatNumber = function (id) {
var that = getThisTable(id);
if(!that) return;
var options = that.getOptions(); var options = that.getOptions();
var tableViewElem = options.elem.next(); var tableViewElem = options.elem.next();
var num = 0; var num = 0;
layui.each(that.treeToFlat(table.cache[id]), function (i1, item1) { layui.each(that.treeToFlat(table.cache[options.id]), function (i1, item1) {
if (layui.isArray(item1)) { if (layui.isArray(item1)) {
return; 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']); tableViewElem.find('tr[lay-data-index="' + item1[LAY_DATA_INDEX] + '"] .laytable-cell-numbers').html(itemData['LAY_NUM']);
}) })
return treeTable; }
Class.prototype.formatNumber = function (id) {
var that = this;
clearTimeout(id);
timer[id] = setTimeout(function () {
formatNumber(that);
}, 10)
} }
// 树表渲染 // 树表渲染
@ -1023,16 +1035,17 @@ layui.define(['table'], function (exports) {
layui.each(table.cache[id], function (i4, item4) { layui.each(table.cache[id], function (i4, item4) {
tableView.find('tr[data-level="0"][lay-data-index="' + item4[LAY_DATA_INDEX] + '"]').attr('data-index', i4); tableView.find('tr[data-level="0"][lay-data-index="' + item4[LAY_DATA_INDEX] + '"]').attr('data-index', i4);
}) })
treeTable.formatNumber(id); options.hasNumberCol && that.formatNumber(id);
} }
/** /**
* 新增数据节点 * 新增数据节点
* @param {String} id 树表id * @param {String} id 树表id
* @param {String|Number} parentIndex 指定的父节点如果增加根节点请设置 parentIndex null 即可 * @param {Object} opts
* @param {Number} index:Number 新节点插入的位置 0 开始index = -1(默认) 插入到最后 * @param {String|Number} opts.parentIndex 指定的父节点如果增加根节点请设置 parentIndex null 即可
* @param {Object|Array} data 新增的节点单个或者多个 * @param {Number} opts.index 新节点插入的位置 0 开始index = -1(默认) 插入到最后
* @param {Boolean} focus 新增的节点单个或者多个 * @param {Object|Array} opts.data 新增的节点单个或者多个
* @param {Boolean} opts.focus 新增的节点单个或者多个
* @return {Array} 新增的节点 * @return {Array} 新增的节点
* */ * */
treeTable.addNodes = function (id, opts) { treeTable.addNodes = function (id, opts) {

Loading…
Cancel
Save