From 20a5470a4a49ca0820338b8fc71238feecfefe52 Mon Sep 17 00:00:00 2001 From: augushong Date: Sat, 3 Oct 2026 11:32:53 +0000 Subject: [PATCH] =?UTF-8?q?fix(table):=20=E5=8D=A1=E7=89=87=E5=BD=A2?= =?UTF-8?q?=E6=80=81=E5=AE=9E=E6=97=B6=E8=B7=9F=E9=9A=8F=E7=AD=9B=E9=80=89?= =?UTF-8?q?=E5=88=97=E5=AD=97=E6=AE=B5=E6=98=BE=E9=9A=90=EF=BC=88pro#3?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 两处收集过滤 + colToggled 防抖重渲 --- .../static/plugs/ulthon-admin/admin-table.js | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/public/static/plugs/ulthon-admin/admin-table.js b/public/static/plugs/ulthon-admin/admin-table.js index 767c36d..aa749b3 100644 --- a/public/static/plugs/ulthon-admin/admin-table.js +++ b/public/static/plugs/ulthon-admin/admin-table.js @@ -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);