feat(partner): let sub-accounts view team leaderboard
CI / verify (pull_request) Has been cancelled

Expose same-primary ranking on home/me for all staff including warehouse roles, and open the leaderboard API without business permission gates.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-17 10:02:42 +08:00
parent 972bdde650
commit 04253b9120
6 changed files with 26 additions and 14 deletions
+11 -10
View File
@@ -96,7 +96,7 @@ function LeaderboardPreview({ entries }: { entries: PartnerLeaderboardEntry[] })
<div className="partner-leaderboard-header">
<h3 className="headline-md" style={{ display: 'flex', alignItems: 'center', gap: 8 }}>
<span className="material-symbols-outlined text-primary" style={{ fontSize: 20 }}>emoji_events</span>
</h3>
<Link to="/leaderboard" className="label-md text-primary" style={{ display: 'flex', alignItems: 'center', gap: 2 }}>
<span className="material-symbols-outlined" style={{ fontSize: 14 }}>chevron_right</span>
@@ -158,16 +158,17 @@ export default function HomePage() {
if (!isWarehouse) {
request<Record<string, unknown>>('PARTNER_H5', '/partner/dashboard').then(setDash).catch(() => {});
request<Array<Record<string, unknown>>>('PARTNER_H5', '/partner/stores').then(setStores).catch(() => []);
fetchPartnerLeaderboard('month')
.then((data) => {
setLeaderboardEntries(data.list.slice(0, LEADERBOARD_PREVIEW_LIMIT));
})
.catch(() => {
setLeaderboardEntries([]);
});
} else {
request<Record<string, unknown>>('PARTNER_H5', '/partner/dashboard').then(setDash).catch(() => {});
}
// 主账号与全部子账号均可查看同团队贡献榜
fetchPartnerLeaderboard('month')
.then((data) => {
setLeaderboardEntries(data.list.slice(0, LEADERBOARD_PREVIEW_LIMIT));
})
.catch(() => {
setLeaderboardEntries([]);
});
}, [navigate, isWarehouse, isPrimary, warehouseOk]);
const storeCount = Number(dash?.storeCount || stores.length || 0);
@@ -317,10 +318,10 @@ export default function HomePage() {
</div>
</div>
</section>
<LeaderboardPreview entries={leaderboardEntries} />
</>
)}
<LeaderboardPreview entries={leaderboardEntries} />
</main>
</div>
);