diff --git a/frontend/mining-admin-web/src/features/users/components/contribution-records-list.tsx b/frontend/mining-admin-web/src/features/users/components/contribution-records-list.tsx index c3736035..80738375 100644 --- a/frontend/mining-admin-web/src/features/users/components/contribution-records-list.tsx +++ b/frontend/mining-admin-web/src/features/users/components/contribution-records-list.tsx @@ -3,22 +3,26 @@ import { useState } from 'react'; import { useContributionRecords } from '../hooks/use-users'; import { formatDecimal, formatPercent } from '@/lib/utils/format'; -import { formatDateTime } from '@/lib/utils/date'; +import { formatDateTime, formatDate } from '@/lib/utils/date'; import { Card, CardContent } from '@/components/ui/card'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'; import { Button } from '@/components/ui/button'; import { Skeleton } from '@/components/ui/skeleton'; +import { Badge } from '@/components/ui/badge'; import { ChevronLeft, ChevronRight } from 'lucide-react'; -const contributionTypeLabels: Record = { - PERSONAL: '个人', - SYSTEM_OPERATION: '系统运营', - SYSTEM_PROVINCE: '系统省级', - SYSTEM_CITY: '系统市级', +const sourceTypeLabels: Record = { + PERSONAL: '个人认种', TEAM_LEVEL: '团队层级', TEAM_BONUS: '团队奖励', }; +const sourceTypeBadgeVariant: Record = { + PERSONAL: 'default', + TEAM_LEVEL: 'secondary', + TEAM_BONUS: 'outline', +}; + interface ContributionRecordsListProps { accountSequence: string; } @@ -35,20 +39,22 @@ export function ContributionRecordsList({ accountSequence }: ContributionRecords - 来源账户 - 类型 - 分配类型 - 比例 - 算力值 + 来源 + 来源用户 + 棵数 + 基础算力 + 分配比例 + 获得算力 层级/等级 - 时间 + 生效日期 + 状态 {isLoading ? ( [...Array(5)].map((_, i) => ( - {[...Array(7)].map((_, j) => ( + {[...Array(9)].map((_, j) => ( @@ -57,18 +63,34 @@ export function ContributionRecordsList({ accountSequence }: ContributionRecords )) ) : data?.items.length === 0 ? ( - - 暂无记录 + + 暂无算力记录 ) : ( data?.items.map((record) => ( - - {record.sourceAccountSequence} - {contributionTypeLabels[record.contributionType] || record.contributionType} - {record.distributionType === 'UPSTREAM' ? '上游' : '下游'} - {formatPercent(record.rate)} - {formatDecimal(record.amount, 4)} + + + + {sourceTypeLabels[record.sourceType] || record.sourceType} + + + + {record.sourceType === 'PERSONAL' ? ( + 本人 + ) : record.sourceUserInfo ? ( +
+ {record.sourceUserInfo.nickname || record.sourceUserInfo.phone} + {record.sourceAccountSequence} +
+ ) : ( + {record.sourceAccountSequence} + )} +
+ {record.treeCount} + {formatDecimal(record.baseContribution, 2)} + {formatPercent(record.distributionRate)} + {formatDecimal(record.amount, 4)} {record.levelDepth !== null ? `L${record.levelDepth}` @@ -76,7 +98,14 @@ export function ContributionRecordsList({ accountSequence }: ContributionRecords ? `T${record.bonusTier}` : '-'} - {formatDateTime(record.createdAt)} + {formatDate(record.effectiveDate)} + + {record.isExpired ? ( + 已过期 + ) : ( + 有效 + )} +
)) )} diff --git a/frontend/mining-admin-web/src/types/user.ts b/frontend/mining-admin-web/src/types/user.ts index ba224a74..e96ae300 100644 --- a/frontend/mining-admin-web/src/types/user.ts +++ b/frontend/mining-admin-web/src/types/user.ts @@ -65,15 +65,21 @@ export interface ContributionBreakdown { export interface ContributionRecord { id: string; - accountSequence: number; - sourceAccountSequence: number; - adoptionId: string; - contributionType: string; - distributionType: string; - amount: string; - rate: string; + sourceType: string; // PERSONAL, TEAM_LEVEL, TEAM_BONUS + sourceAccountSequence: string; + sourceUserInfo?: { + nickname: string | null; + phone: string; + } | null; + treeCount: number; + baseContribution: string; + distributionRate: string; levelDepth: number | null; bonusTier: number | null; + amount: string; + effectiveDate: string; + expireDate: string; + isExpired: boolean; createdAt: string; }