fix: 三个必修 bug——Dashboard 颜色判反+legend 错+SideNav zhipianren 用户管理漏显

This commit is contained in:
simonkoson
2026-05-21 20:45:48 +08:00
parent 247268a60e
commit 24b9bb2d08
2 changed files with 18 additions and 9 deletions
+6 -2
View File
@@ -26,13 +26,17 @@ function SideNav() {
] ]
// 按角色过滤菜单项 // 按角色过滤菜单项
// user.role 值来自后端 /api/auth/me,应为字符串 'zhipianren' / 'zebian' / 'biandao'
const visibleItems = allMenuItems.filter(item => { const visibleItems = allMenuItems.filter(item => {
// /dashboard 三角色都可见 // /dashboard 三角色都可见
if (item.key === '/dashboard') return true if (item.key === '/dashboard') return true
// /users 仅 zhipianren // /users 仅 zhipianren
if (item.key === '/users') return user?.role === 'zhipianren' if (item.key === '/users') return String(user?.role) === 'zhipianren'
// /editor-desk 仅 zhipianren + zebian // /editor-desk 仅 zhipianren + zebian
if (item.key === '/editor-desk') return user?.role === 'zhipianren' || user?.role === 'zebian' if (item.key === '/editor-desk') {
const role = String(user?.role)
return role === 'zhipianren' || role === 'zebian'
}
// 其余三角色都可见(保留后期 Phase 入口) // 其余三角色都可见(保留后期 Phase 入口)
return true return true
}) })
+12 -7
View File
@@ -20,11 +20,16 @@ import './Dashboard.css'
* 判色取该期 air_date 所属年份的 yearly_targets 行(不是当前年)。 * 判色取该期 air_date 所属年份的 yearly_targets 行(不是当前年)。
*/ */
function getShareColor(share, targets, airYear) { function getShareColor(share, targets, airYear) {
const target = targets.find(t => t.year === airYear) // 强制转数值,避免后端返回字符串导致数值比较失败
const n = Number(share)
const target = targets.find(t => Number(t.year) === Number(airYear))
if (!target) return '#999' if (!target) return '#999'
if (share > target.stretch_target) return '#cf1322' // 红=优秀 if (isNaN(n)) return '#999'
if (share >= target.base_target) return '#6b8e6b' // 蓝=达标 const stretch = Number(target.stretch_target)
return '#d4a017' // 绿=待提升 const base = Number(target.base_target)
if (n > stretch) return '#cf1322' // 红=超过摸高目标(优秀)
if (n >= base) return '#6b8e6b' // 蓝=未达摸高目标(达标)
return '#d4a017' // 绿=未达基础目标(待提升)
} }
function getBarHeight(share) { function getBarHeight(share) {
@@ -181,9 +186,9 @@ function Dashboard() {
})} })}
</div> </div>
<div className="chart-legend"> <div className="chart-legend">
<span className="legend-item"><span className="dot" style={{ background: '#cf1322' }}></span>=优秀</span> <span className="legend-item"><span className="dot" style={{ background: '#d4a017' }}></span>绿=未达基础目标待提升</span>
<span className="legend-item"><span className="dot" style={{ background: '#6b8e6b' }}></span>=达标</span> <span className="legend-item"><span className="dot" style={{ background: '#6b8e6b' }}></span>=未达摸高目标达标</span>
<span className="legend-item"><span className="dot" style={{ background: '#d4a017' }}></span>绿=待提升</span> <span className="legend-item"><span className="dot" style={{ background: '#cf1322' }}></span>=超过摸高目标优秀</span>
</div> </div>
</div> </div>
</Card> </Card>