refactor(admin-web): 用户详情页术语统一为"引荐"

- "直推" → "引荐"
- "推荐人" → "引荐人"
- "推荐关系" → "引荐关系"

涉及修改:
- 统计卡片:直推人数 → 引荐人数,活跃直推 → 活跃引荐
- 引荐人信息区域标签
- Tab 标签名称
- 引荐关系树标题和节点标签
- 空状态提示文案

🤖 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 20:56:32 -08:00
parent 5f6ecf9670
commit 59469055c7
1 changed files with 15 additions and 15 deletions

View File

@ -32,7 +32,7 @@ import styles from './user-detail.module.scss';
type TabType = 'referral' | 'planting' | 'wallet' | 'authorization'; type TabType = 'referral' | 'planting' | 'wallet' | 'authorization';
const tabs: { key: TabType; label: string }[] = [ const tabs: { key: TabType; label: string }[] = [
{ key: 'referral', label: '荐关系' }, { key: 'referral', label: '荐关系' },
{ key: 'planting', label: '认种信息' }, { key: 'planting', label: '认种信息' },
{ key: 'wallet', label: '钱包信息' }, { key: 'wallet', label: '钱包信息' },
{ key: 'authorization', label: '授权信息' }, { key: 'authorization', label: '授权信息' },
@ -248,23 +248,23 @@ export default function UserDetailPage() {
</span> </span>
</div> </div>
<div className={styles.userDetail__statCard}> <div className={styles.userDetail__statCard}>
<span className={styles.userDetail__statLabel}></span> <span className={styles.userDetail__statLabel}></span>
<span className={styles.userDetail__statValue}> <span className={styles.userDetail__statValue}>
{formatNumber(userDetail.referralInfo.directReferralCount)} {formatNumber(userDetail.referralInfo.directReferralCount)}
</span> </span>
</div> </div>
<div className={styles.userDetail__statCard}> <div className={styles.userDetail__statCard}>
<span className={styles.userDetail__statLabel}></span> <span className={styles.userDetail__statLabel}></span>
<span className={styles.userDetail__statValue}> <span className={styles.userDetail__statValue}>
{formatNumber(userDetail.referralInfo.activeDirectCount)} {formatNumber(userDetail.referralInfo.activeDirectCount)}
</span> </span>
</div> </div>
</div> </div>
{/* 荐人信息 */} {/* 荐人信息 */}
{userDetail.referralInfo.referrerSequence && ( {userDetail.referralInfo.referrerSequence && (
<div className={styles.userDetail__referrerInfo}> <div className={styles.userDetail__referrerInfo}>
<span className={styles.userDetail__referrerLabel}>:</span> <span className={styles.userDetail__referrerLabel}>:</span>
<Link <Link
href={`/users/${userDetail.referralInfo.referrerSequence}`} href={`/users/${userDetail.referralInfo.referrerSequence}`}
className={styles.userDetail__referrerLink} className={styles.userDetail__referrerLink}
@ -300,11 +300,11 @@ export default function UserDetailPage() {
{/* Tab 内容 */} {/* Tab 内容 */}
<div className={styles.userDetail__tabContent}> <div className={styles.userDetail__tabContent}>
{/* 荐关系 Tab */} {/* 荐关系 Tab */}
{activeTab === 'referral' && ( {activeTab === 'referral' && (
<div className={styles.referralTab}> <div className={styles.referralTab}>
<div className={styles.referralTab__header}> <div className={styles.referralTab__header}>
<h3></h3> <h3></h3>
{treeRootUser !== accountSequence && ( {treeRootUser !== accountSequence && (
<Button <Button
variant="outline" variant="outline"
@ -320,10 +320,10 @@ export default function UserDetailPage() {
<div className={styles.referralTab__loading}>...</div> <div className={styles.referralTab__loading}>...</div>
) : referralTree ? ( ) : referralTree ? (
<div className={styles.referralTree}> <div className={styles.referralTree}>
{/* 向上的荐人链 */} {/* 向上的荐人链 */}
{referralTree.ancestors.length > 0 && ( {referralTree.ancestors.length > 0 && (
<div className={styles.referralTree__ancestors}> <div className={styles.referralTree__ancestors}>
<div className={styles.referralTree__label}> ()</div> <div className={styles.referralTree__label}> ()</div>
<div className={styles.referralTree__nodeList}> <div className={styles.referralTree__nodeList}>
{referralTree.ancestors.map((ancestor, index) => ( {referralTree.ancestors.map((ancestor, index) => (
<div key={ancestor.accountSequence} className={styles.referralTree__nodeWrapper}> <div key={ancestor.accountSequence} className={styles.referralTree__nodeWrapper}>
@ -369,17 +369,17 @@ export default function UserDetailPage() {
: {formatNumber(referralTree.currentUser.personalAdoptions)} : {formatNumber(referralTree.currentUser.personalAdoptions)}
</span> </span>
<span className={styles.referralTree__nodeCount}> <span className={styles.referralTree__nodeCount}>
: {formatNumber(referralTree.currentUser.directReferralCount)} : {formatNumber(referralTree.currentUser.directReferralCount)}
</span> </span>
</div> </div>
</div> </div>
{/* 直推用户 */} {/* 引荐用户 */}
{referralTree.directReferrals.length > 0 && ( {referralTree.directReferrals.length > 0 && (
<div className={styles.referralTree__directReferrals}> <div className={styles.referralTree__directReferrals}>
<div className={styles.referralTree__connector}></div> <div className={styles.referralTree__connector}></div>
<div className={styles.referralTree__label}> <div className={styles.referralTree__label}>
({referralTree.directReferrals.length}) ({referralTree.directReferrals.length})
</div> </div>
<div className={styles.referralTree__nodeGrid}> <div className={styles.referralTree__nodeGrid}>
{referralTree.directReferrals.map((referral) => ( {referralTree.directReferrals.map((referral) => (
@ -397,7 +397,7 @@ export default function UserDetailPage() {
</span> </span>
{referral.directReferralCount > 0 && ( {referral.directReferralCount > 0 && (
<span className={styles.referralTree__nodeCount}> <span className={styles.referralTree__nodeCount}>
: {formatNumber(referral.directReferralCount)} : {formatNumber(referral.directReferralCount)}
</span> </span>
)} )}
</button> </button>
@ -407,11 +407,11 @@ export default function UserDetailPage() {
)} )}
{referralTree.directReferrals.length === 0 && referralTree.ancestors.length === 0 && ( {referralTree.directReferrals.length === 0 && referralTree.ancestors.length === 0 && (
<div className={styles.referralTree__empty}></div> <div className={styles.referralTree__empty}></div>
)} )}
</div> </div>
) : ( ) : (
<div className={styles.referralTab__empty}></div> <div className={styles.referralTab__empty}></div>
)} )}
</div> </div>
)} )}