fix: 排序别名存储问题

This commit is contained in:
hzm
2026-03-16 19:28:24 +08:00
parent 5d97f8f83e
commit a7eb537e67
2 changed files with 39 additions and 5 deletions

View File

@@ -2093,10 +2093,12 @@ input[type="number"] {
flex-shrink: 0;
}
/* 亮色主题下PC 右侧抽屉里的 Switch 拇指使用浅色,以保证对比度 */
[data-theme="light"] .pc-table-setting-drawer .dca-toggle-thumb {
background: #fff;
}
/* 移动端表格设置底部抽屉 */
.mobile-setting-overlay {
position: fixed;
@@ -2538,6 +2540,13 @@ input[type="number"] {
transition: left 0.2s;
}
/* 亮色主题下:所有使用 dca-toggle 的拇指在浅底上统一用白色,保证对比度
- PC 右侧排序设置抽屉
- 移动端排序个性化设置 Drawer以及其它区域 */
[data-theme="light"] .dca-toggle-thumb {
background: #ffffff;
}
.dca-option-group {
background: rgba(0, 0, 0, 0.2);
border-radius: 8px;

View File

@@ -217,12 +217,37 @@ export default function HomePage() {
}
if (rulesFromSettings && rulesFromSettings.length) {
const merged = DEFAULT_SORT_RULES.map((rule) => {
const found = rulesFromSettings.find((r) => r.id === rule.id);
return found
? { ...rule, enabled: found.enabled !== false }
: rule;
// 1先按本地存储的顺序还原包含 alias、enabled 等字段)
const defaultMap = new Map(
DEFAULT_SORT_RULES.map((rule) => [rule.id, rule])
);
const merged = [];
// 先遍历本地配置,保持用户自定义的顺序和别名/开关
for (const stored of rulesFromSettings) {
const base = defaultMap.get(stored.id);
if (!base) continue;
merged.push({
...base,
// 只用本地的 enabled / alias 等个性化字段,基础 label 仍以内置为准
enabled:
typeof stored.enabled === "boolean"
? stored.enabled
: base.enabled,
alias:
typeof stored.alias === "string" && stored.alias.trim()
? stored.alias.trim()
: base.alias,
});
}
// 再把本次版本新增、但本地还没记录过的规则追加到末尾
DEFAULT_SORT_RULES.forEach((rule) => {
if (!merged.some((r) => r.id === rule.id)) {
merged.push(rule);
}
});
setSortRules(merged);
}