mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-10-29 08:58:22 +08:00
feat(admin-table): 默认形态支持按端配置,layoutDefault 演进对象式并兼容旧写法
This commit is contained in:
@@ -983,19 +983,42 @@
|
||||
layoutByName[entry.name] = entry;
|
||||
});
|
||||
|
||||
// 默认形态解析(任务 15 (a)):优先级 localStorage 按页记忆 >
|
||||
// 显式 layoutDefault / 手机端自动检测 > 'table'。手机端默认
|
||||
// card 仅当 layoutList 含 card 条目;记忆值不在 layoutList 内
|
||||
// 时忽略(防脏数据);未配 layoutList 的页面恒 table,行为
|
||||
// 零变化。layoutDefault=true 旧协议即"自动判断",与新默认
|
||||
// 行为一致,无需单独分支。
|
||||
// 默认形态解析(按端三层链):a.localStorage 按页记忆(最
|
||||
// 高优先)> b.按端显式 layoutDefault > c.端缺省。layoutDefault
|
||||
// 兼容三种写法:对象 {pc, mobile} 按当前端取值(端键缺省视为
|
||||
// 未配置)、字符串旧写法双端同值、true 旧协议即"自动判断"视
|
||||
// 为未配置。b/c 层取到的形态名不在 layoutByName 内一律忽略
|
||||
// (防脏数据,与记忆同规)。端缺省:pc 取 table、无则首条目;
|
||||
// mobile 取 card、无则 table、再无则首条目。外层空清单守卫
|
||||
// 保持:非受控逃生口页或垃圾 layoutList 全无效时 layoutEntries
|
||||
// 为空,恒 'table',任何分支不在空数组上取 [0]。
|
||||
var defaultLayoutName = 'table';
|
||||
if (layoutEntries.length > 0) {
|
||||
if (options.layoutDefault && layoutByName[options.layoutDefault]) {
|
||||
defaultLayoutName = options.layoutDefault;
|
||||
} else if (ua.checkMobile() && layoutByName['card']) {
|
||||
defaultLayoutName = 'card';
|
||||
var device = ua.checkMobile() ? 'mobile' : 'pc';
|
||||
// layoutDefault 规格化为按端对象:字符串双端同值;true
|
||||
// 旧协议与未配置均视为 null(走端缺省)
|
||||
var layoutDefaultByDevice = options.layoutDefault;
|
||||
if (typeof layoutDefaultByDevice === 'string') {
|
||||
layoutDefaultByDevice = {pc: layoutDefaultByDevice, mobile: layoutDefaultByDevice};
|
||||
} else if (layoutDefaultByDevice === null || typeof layoutDefaultByDevice !== 'object') {
|
||||
layoutDefaultByDevice = null;
|
||||
}
|
||||
var configuredLayout = layoutDefaultByDevice ? (layoutDefaultByDevice[device] || null) : null;
|
||||
if (layoutByName[configuredLayout]) {
|
||||
// b 层:按端显式配置生效(脏值已被清单内校验拦截)
|
||||
defaultLayoutName = configuredLayout;
|
||||
} else if (device === 'pc') {
|
||||
// c 层 pc 端缺省:table 优先,无则首条目
|
||||
defaultLayoutName = layoutByName['table'] ? 'table' : layoutEntries[0].name;
|
||||
} else if (layoutByName['card']) {
|
||||
// c 层 mobile 端缺省:card 优先
|
||||
defaultLayoutName = 'card';
|
||||
} else if (layoutByName['table']) {
|
||||
defaultLayoutName = 'table';
|
||||
} else {
|
||||
defaultLayoutName = layoutEntries[0].name;
|
||||
}
|
||||
// a 层:记忆最高优先,值不在清单内忽略(防脏数据)
|
||||
var savedLayout = ua.getPageSetting('table-layout-default', '');
|
||||
if (layoutByName[savedLayout]) {
|
||||
defaultLayoutName = savedLayout;
|
||||
|
||||
Reference in New Issue
Block a user