fix(ledger): REWARD_EXPIRED条目显示权益类型+已过期标签
- 奖励过期条目显示具体权益名(分享权益/省团队权益等)+ 红色"已过期"标签 - 图标改为灰色 timer_off,金额文字改为灰色,背景微灰 - 与正常权益收入条目有明显视觉区分 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
724fb08be4
commit
4bd40970d0
|
|
@ -940,21 +940,36 @@ class _LedgerDetailPageState extends ConsumerState<LedgerDetailPage>
|
|||
/// 构建流水项
|
||||
Widget _buildLedgerItem(LedgerEntry entry) {
|
||||
final isIncome = entry.isIncome;
|
||||
final bool isExpiredReward = entry.entryType == 'REWARD_EXPIRED';
|
||||
// 可点击查看详情的类型:认种支付、权益分配、结算、提现、转入、转出
|
||||
final bool isPlantPayment = entry.entryType == 'PLANT_PAYMENT' && entry.refOrderId != null;
|
||||
final bool isRewardEntry = entry.allocationType != null;
|
||||
final bool isRewardEntry = entry.allocationType != null && !isExpiredReward;
|
||||
final bool isSettlementEntry = entry.entryType == 'REWARD_SETTLED';
|
||||
final bool isWithdrawalEntry = entry.entryType == 'WITHDRAWAL';
|
||||
final bool isTransferEntry = entry.entryType == 'TRANSFER_IN' || entry.entryType == 'TRANSFER_OUT';
|
||||
final bool isClickable = isPlantPayment || isRewardEntry || isSettlementEntry || isWithdrawalEntry || isTransferEntry;
|
||||
|
||||
// 奖励过期条目:图标用灰色 timer_off,标题显示权益类型 + "已过期"标签
|
||||
final Color iconBgColor = isExpiredReward
|
||||
? const Color(0x1A9E9E9E)
|
||||
: (isIncome ? const Color(0x1A4CAF50) : const Color(0x1AE53935));
|
||||
final Color iconColor = isExpiredReward
|
||||
? const Color(0xFF9E9E9E)
|
||||
: (isIncome ? const Color(0xFF4CAF50) : const Color(0xFFE53935));
|
||||
final IconData iconData = isExpiredReward
|
||||
? Icons.timer_off_outlined
|
||||
: (isIncome ? Icons.arrow_downward : Icons.arrow_upward);
|
||||
|
||||
// 过期条目标题:优先显示权益类型名(如"分享权益"),无则显示"奖励"
|
||||
final String expiredTitle = entry.allocationTypeName ?? '奖励';
|
||||
|
||||
return GestureDetector(
|
||||
onTap: isClickable ? () => _showEntryDetail(entry) : null,
|
||||
child: Container(
|
||||
margin: const EdgeInsets.only(bottom: 8),
|
||||
padding: const EdgeInsets.all(16),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
color: isExpiredReward ? const Color(0xFFFAFAFA) : Colors.white,
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
|
|
@ -971,16 +986,10 @@ class _LedgerDetailPageState extends ConsumerState<LedgerDetailPage>
|
|||
width: 40,
|
||||
height: 40,
|
||||
decoration: BoxDecoration(
|
||||
color: isIncome
|
||||
? const Color(0x1A4CAF50)
|
||||
: const Color(0x1AE53935),
|
||||
color: iconBgColor,
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
),
|
||||
child: Icon(
|
||||
isIncome ? Icons.arrow_downward : Icons.arrow_upward,
|
||||
size: 20,
|
||||
color: isIncome ? const Color(0xFF4CAF50) : const Color(0xFFE53935),
|
||||
),
|
||||
child: Icon(iconData, size: 20, color: iconColor),
|
||||
),
|
||||
const SizedBox(width: 12),
|
||||
// 类型和时间
|
||||
|
|
@ -988,6 +997,32 @@ class _LedgerDetailPageState extends ConsumerState<LedgerDetailPage>
|
|||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
if (isExpiredReward) ...[
|
||||
Row(
|
||||
children: [
|
||||
Text(
|
||||
expiredTitle,
|
||||
style: const TextStyle(
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF9E9E9E),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 6),
|
||||
Container(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 5, vertical: 1),
|
||||
decoration: BoxDecoration(
|
||||
color: const Color(0x1AE53935),
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
),
|
||||
child: const Text(
|
||||
'已过期',
|
||||
style: TextStyle(fontSize: 10, color: Color(0xFFE53935)),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
] else ...[
|
||||
Text(
|
||||
entry.displayName,
|
||||
style: const TextStyle(
|
||||
|
|
@ -996,6 +1031,7 @@ class _LedgerDetailPageState extends ConsumerState<LedgerDetailPage>
|
|||
color: Color(0xFF5D4037),
|
||||
),
|
||||
),
|
||||
],
|
||||
const SizedBox(height: 4),
|
||||
Text(
|
||||
_formatDate(entry.createdAt),
|
||||
|
|
@ -1021,7 +1057,9 @@ class _LedgerDetailPageState extends ConsumerState<LedgerDetailPage>
|
|||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w700,
|
||||
color: isIncome ? const Color(0xFF4CAF50) : const Color(0xFFE53935),
|
||||
color: isExpiredReward
|
||||
? const Color(0xFF9E9E9E)
|
||||
: (isIncome ? const Color(0xFF4CAF50) : const Color(0xFFE53935)),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
|||
Loading…
Reference in New Issue