diff --git a/frontend/mobile-app/lib/core/services/wallet_service.dart b/frontend/mobile-app/lib/core/services/wallet_service.dart index 115fb992..ee87072f 100644 --- a/frontend/mobile-app/lib/core/services/wallet_service.dart +++ b/frontend/mobile-app/lib/core/services/wallet_service.dart @@ -1507,6 +1507,18 @@ class LedgerEntry { return allocationTypeName ?? entryTypeName; } + /// [2026-03-01] 获取带状态标注的显示名称 + /// 当用户已无待领取奖励时,REWARD_PENDING 流水追加"(已转可结算)"标注 + String displayNameWithStatus({bool userHasNoPending = false}) { + final baseName = allocationTypeName ?? entryTypeName; + + if (entryType == 'REWARD_PENDING' && userHasNoPending) { + return '$baseName (已转可结算)'; + } + + return baseName; + } + /// 是否为收入 bool get isIncome => amount > 0; } diff --git a/frontend/mobile-app/lib/features/trading/presentation/pages/ledger_detail_page.dart b/frontend/mobile-app/lib/features/trading/presentation/pages/ledger_detail_page.dart index ecb3439e..c185b033 100644 --- a/frontend/mobile-app/lib/features/trading/presentation/pages/ledger_detail_page.dart +++ b/frontend/mobile-app/lib/features/trading/presentation/pages/ledger_detail_page.dart @@ -37,6 +37,9 @@ class _LedgerDetailPageState extends ConsumerState int _currentPage = 1; static const int _pageSize = 20; + // [2026-03-01] 用户是否已无待领取奖励(用于标注 REWARD_PENDING 流水) + bool _userHasNoPending = false; + // 流水类型选项 final List> _entryTypes = [ {'value': '', 'label': '全部'}, @@ -76,7 +79,7 @@ class _LedgerDetailPageState extends ConsumerState try { final walletService = ref.read(walletServiceProvider); - // 并行加载统计和趋势 + // 并行加载统计、趋势和钱包信息 final results = await Future.wait([ walletService.getLedgerStatistics(), walletService.getLedgerTrend(days: 30), @@ -85,10 +88,12 @@ class _LedgerDetailPageState extends ConsumerState pageSize: _pageSize, entryType: _selectedEntryType, ), + walletService.getMyWallet(), // [2026-03-01] 获取 pendingUsdt 判断是否还有待领取 ]); if (mounted) { final ledgerData = results[2] as PaginatedLedger; + final walletInfo = results[3] as WalletResponse; // 调试:打印加载的流水数据 debugPrint('[LedgerDetailPage] ======== 加载流水数据 ========'); @@ -103,6 +108,7 @@ class _LedgerDetailPageState extends ConsumerState _statistics = results[0] as LedgerStatistics; _trend = results[1] as LedgerTrend; _ledger = ledgerData; + _userHasNoPending = walletInfo.rewards.pendingUsdt <= 0; _isLoading = false; }); } @@ -989,7 +995,7 @@ class _LedgerDetailPageState extends ConsumerState crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - entry.displayName, + entry.displayNameWithStatus(userHasNoPending: _userHasNoPending), style: const TextStyle( fontSize: 14, fontWeight: FontWeight.w500,