fix(table): 卡片形态实时跟随筛选列字段显隐(pro#3)

两处收集过滤 + colToggled 防抖重渲
This commit is contained in:
augushong
2026-10-03 11:32:53 +00:00
parent 0cc01810f4
commit 20a5470a4a

View File

@@ -8,6 +8,7 @@
util = window.UA_CORE.util;
var lastTableWhere = {};
var colToggledTimers = {};
var selectMode, selectConfirmCallback;
// reloadData 引擎接线(加载期执行一次):受控表(UA_TABLE_STORE 已注册)的数据
@@ -86,7 +87,9 @@
// controlledLayouts 的 cols(本闭包内),无任何业务字段硬编码。
//
// 【与 buildLayoutContext 同规则的单元格列筛选】操作列无 field,须先于
// field 判定识别;checkbox/radio 等无字段列跳过(勾选语义由勾位图标承接)
// field 判定识别;checkbox/radio 等无字段列跳过(勾选语义由勾位图标承接);
// 隐藏列(col.hide)跳过——不进卡片行、不产 _cells,与表格"隐藏列不渲染
// 单元格"语义一致
var builtinCardCellCols = function (tableId) {
var cols = (controlledLayouts[tableId] && controlledLayouts[tableId].cols[0]) || [];
var cellCols = [];
@@ -100,6 +103,9 @@
if (!col.field) {
return;
}
if (col.hide) {
return;
}
cellCols.push(col);
});
return cellCols;
@@ -400,6 +406,8 @@
// 读列配置);_operatHtml 走既有 ua.table.tool(按钮权限 data-* 属性原样输出,
// 事件靠页面级委托天然覆盖,无旧的"暂时隐藏按钮"逻辑);_checked/_disabled
// 数据源为 store 选中集合(selectedIds)与行 LAY_DISABLED 标记。
// 隐藏列(col.hide)跳过——不产 _cells、不进卡片行,与表格"隐藏列不渲染
// 单元格"语义一致。
buildLayoutContext: function (tableId) {
var layout = controlledLayouts[tableId];
var state = window.UA_TABLE_STORE.dataProvider.getState(tableId);
@@ -422,6 +430,9 @@
// checkbox/radio 等无字段列:勾选语义由 _checked/_disabled 与模板作者承接
return;
}
if (col.hide) {
return;
}
cellCols.push(col);
});
@@ -1060,6 +1071,19 @@
window.UA_TABLE_STORE.selection.set(options.id, obj.data);
});
// 列筛选勾选 → 卡片实时重渲:表格形态短路(列筛选行为完全
// 不变),卡片形态 debounce 100ms 后从 store 当页数据重渲
//(renderLayoutForm 零网络请求,连点不抖动)
table.on('colToggled(' + options.layFilter + ')', function (obj) {
if (resolveCurrentLayout(options.id).kind === 'table') {
return;
}
clearTimeout(colToggledTimers[options.id]);
colToggledTimers[options.id] = setTimeout(function () {
ua.table.renderLayoutForm(options.id);
}, 100);
});
// 初始形态可见性:layoutDefault 非 table 时先隐引擎空视图(避免
// 空表头闪烁),首个 reload 完成后 wrapper 再次同步
syncLayoutVisibility(options.id);