fix(admin-web): 月度考核按授权ID过滤并显示区域名称

- 改用 authorization_id 匹配考核记录,而非 roleType
- 同类型但已撤销的角色考核不再显示
- 新增"区域"列显示角色对应的区域名称(如胜门、广州)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2026-01-07 23:19:09 -08:00
parent c9626ac82b
commit 6a58a55997
1 changed files with 14 additions and 4 deletions

View File

@ -714,15 +714,21 @@ export default function UserDetailPage() {
<div className={styles.authTab__assessments}>
<h3></h3>
{(() => {
// 只显示用户实际拥有且未撤销角色的考核记录
const activeRoleTypes = new Set(
// 只显示用户实际拥有且未撤销角色的考核记录(按 authorization_id 匹配)
const activeRoleIds = new Set(
authData.roles
.filter(r => r.status !== 'REVOKED')
.map(r => r.roleType)
.map(r => r.id)
);
const filteredAssessments = authData.assessments.filter(
a => activeRoleTypes.has(a.roleType)
a => activeRoleIds.has(a.authorizationId)
);
// 创建角色ID到区域名称的映射用于显示角色的区域信息
const roleIdToRegion = new Map(
authData.roles.map(r => [r.id, r.regionName])
);
return filteredAssessments.length === 0 ? (
<div className={styles.authTab__empty}></div>
) : (
@ -730,6 +736,7 @@ export default function UserDetailPage() {
<div className={styles.ledgerTable__header}>
<div className={styles.ledgerTable__cell}></div>
<div className={styles.ledgerTable__cell}></div>
<div className={styles.ledgerTable__cell}></div>
<div className={styles.ledgerTable__cell}>/</div>
<div className={styles.ledgerTable__cell}>/</div>
<div className={styles.ledgerTable__cell}></div>
@ -741,6 +748,9 @@ export default function UserDetailPage() {
<div className={styles.ledgerTable__cell}>
{roleTypeLabels[assessment.roleType] || assessment.roleType}
</div>
<div className={styles.ledgerTable__cell}>
{roleIdToRegion.get(assessment.authorizationId) || getRegionName(assessment.regionCode)}
</div>
<div className={styles.ledgerTable__cell}>
{formatNumber(assessment.monthlyCompleted)} / {formatNumber(assessment.monthlyTarget)}
</div>