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);