From 42c8240dc7ae265d99d75dab40465bcaf901d069 Mon Sep 17 00:00:00 2001 From: claude_dev Date: Tue, 8 Sep 2026 09:30:14 +0800 Subject: [PATCH] =?UTF-8?q?fix(factor):=20=E8=AF=A6=E6=83=85=E9=A1=B5/?= =?UTF-8?q?=E5=9B=A0=E5=AD=90=E9=80=89=E6=8B=A9=E5=99=A8=E8=A1=A5=20fundam?= =?UTF-8?q?ental=20teal=20=E7=B1=BB=E5=88=AB=E6=A0=B7=E5=BC=8F=20[nas]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - LeaderboardDetail.vue categoryClass 映射+cat-fundamental chip 样式 - FactorPicker.vue cat-fundamental chip+sel-fundamental 选中态 (该页无裸 .fxp.sel 兜底,不补则选中财务因子无高亮) - npm run build(vue-tsc -b && vite build)全绿 Co-Authored-By: Claude Code --- frontend/src/views/factor/FactorPicker.vue | 2 ++ frontend/src/views/factor/LeaderboardDetail.vue | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/frontend/src/views/factor/FactorPicker.vue b/frontend/src/views/factor/FactorPicker.vue index c07b0bf..5b39bfe 100644 --- a/frontend/src/views/factor/FactorPicker.vue +++ b/frontend/src/views/factor/FactorPicker.vue @@ -166,6 +166,7 @@ defineExpose({ hydrate }) .cat-alpha158 { color: var(--purple-dim); background: rgba(180,140,255,.1); border-color: rgba(180,140,255,.3); } .cat-builtin { color: var(--amber); background: rgba(255,176,0,.1); border-color: rgba(255,176,0,.3); } .cat-custom { color: var(--text-2); background: rgba(122,138,154,.1); border-color: rgba(122,138,154,.3); } +.cat-fundamental { color: var(--teal); background: rgba(45,212,191,.1); border-color: rgba(45,212,191,.3); } .grid { display: flex; flex-wrap: wrap; gap: 5px; } .fxp { font-family: var(--mono); font-size: 11px; padding: 2px 9px; border-radius: var(--r-sm); border: 1px solid var(--border); background: var(--panel); color: var(--text-2); cursor: pointer; transition: all .12s ease; user-select: none; } .fxp:hover { color: var(--text); border-color: var(--text-3); } @@ -173,6 +174,7 @@ defineExpose({ hydrate }) .fxp.sel.sel-alpha158 { color: var(--purple-dim); border-color: rgba(180,140,255,.45); background: rgba(180,140,255,.12); } .fxp.sel.sel-builtin { color: var(--amber); border-color: rgba(255,176,0,.45); background: var(--amber-soft); } .fxp.sel.sel-custom { color: var(--text); border-color: var(--text-3); background: var(--bg-hover); } +.fxp.sel.sel-fundamental { color: var(--teal); border-color: rgba(45,212,191,.45); background: rgba(45,212,191,.12); } .picked { display: flex; align-items: center; gap: 8px; margin-top: 12px; border: 1px dashed rgba(0,229,255,.3); background: rgba(0,229,255,.04); border-radius: var(--r-md); padding: 8px 12px; flex-wrap: wrap; min-height: 38px; } .pk { font-family: var(--mono); font-size: 10.5px; color: var(--brand); letter-spacing: .1em; white-space: nowrap; } .chips { display: flex; gap: 5px; flex-wrap: wrap; flex: 1; } diff --git a/frontend/src/views/factor/LeaderboardDetail.vue b/frontend/src/views/factor/LeaderboardDetail.vue index c57f40e..7ad579d 100644 --- a/frontend/src/views/factor/LeaderboardDetail.vue +++ b/frontend/src/views/factor/LeaderboardDetail.vue @@ -326,6 +326,7 @@ const categoryClass = computed(() => { alpha101: 'cat-alpha101', alpha158: 'cat-alpha158', builtin: 'cat-builtin', + fundamental: 'cat-fundamental', } return map[detail.value.category] || 'cat-builtin' }) @@ -750,6 +751,12 @@ function pct(val: number | null | undefined): string { border-color: rgba(255, 176, 0, 0.3); } +.cat-fundamental { + color: var(--teal); + background: rgba(45, 212, 191, 0.1); + border-color: rgba(45, 212, 191, 0.3); +} + .st { display: inline-flex; align-items: center;