完善钱包提现状态展示与举报摄影师列表交互。
对齐 Android 提现进度与时间线映射,优化钱包与积分兑换页刷新逻辑,并补充相关单元测试与真机测试说明。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -173,6 +173,16 @@ final class WalletViewModel {
|
||||
await loadWithdraw(api: api, refresh: true)
|
||||
}
|
||||
|
||||
/// 仅刷新当前选中的钱包 Tab。
|
||||
func refreshSelectedTab(api: any WalletPageServing) async {
|
||||
switch selectedTab {
|
||||
case .withdraw:
|
||||
await refreshWithdraw(api: api)
|
||||
case .transaction:
|
||||
await refreshTransaction(api: api)
|
||||
}
|
||||
}
|
||||
|
||||
/// 滚动到底部时加载更多提现记录。
|
||||
func loadMoreWithdrawIfNeeded(currentIndex: Int, api: any WalletPageServing) async {
|
||||
guard currentIndex >= withdrawRecords.count - 2, withdrawCanLoadMore, !withdrawLoading else { return }
|
||||
@ -336,6 +346,85 @@ enum WalletTransactionEntry: Hashable {
|
||||
case item(EarningDetailItem)
|
||||
}
|
||||
|
||||
/// 钱包记录状态的语义色调,由页面映射为模块内固定色值。
|
||||
enum WalletStatusTone: Equatable {
|
||||
case info
|
||||
case success
|
||||
case warning
|
||||
case danger
|
||||
}
|
||||
|
||||
/// 银行卡提现记录的状态展示映射,对齐 Android 结算进度和时间线可见性。
|
||||
struct WalletWithdrawStatusDisplay: Equatable {
|
||||
let tone: WalletStatusTone
|
||||
let progress: Int
|
||||
let showsTimeline: Bool
|
||||
|
||||
/// 根据后端结算状态创建展示数据。
|
||||
init(status: Int) {
|
||||
switch status {
|
||||
case 20:
|
||||
tone = .success
|
||||
progress = 80
|
||||
showsTimeline = true
|
||||
case 30:
|
||||
tone = .danger
|
||||
progress = 100
|
||||
showsTimeline = true
|
||||
case 40:
|
||||
tone = .warning
|
||||
progress = 40
|
||||
showsTimeline = true
|
||||
case 50:
|
||||
tone = .success
|
||||
progress = 100
|
||||
showsTimeline = false
|
||||
case 60:
|
||||
tone = .danger
|
||||
progress = 0
|
||||
showsTimeline = true
|
||||
default:
|
||||
tone = .info
|
||||
progress = status == 10 ? 10 : 100
|
||||
showsTimeline = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// 积分兑现记录的状态文案、进度与时间字段映射。
|
||||
struct PointWithdrawStatusDisplay: Equatable {
|
||||
let title: String
|
||||
let tone: WalletStatusTone
|
||||
let progress: Int
|
||||
let timeTitle: String
|
||||
|
||||
/// 根据后端积分提现状态创建展示数据。
|
||||
init(status: Int) {
|
||||
switch status {
|
||||
case 1:
|
||||
title = "提现中"
|
||||
tone = .warning
|
||||
progress = 40
|
||||
timeTitle = "预计到账时间:"
|
||||
case 2:
|
||||
title = "提现成功"
|
||||
tone = .success
|
||||
progress = 0
|
||||
timeTitle = "到账时间:"
|
||||
case 3:
|
||||
title = "提现失败"
|
||||
tone = .danger
|
||||
progress = 100
|
||||
timeTitle = "审核时间:"
|
||||
default:
|
||||
title = "未知"
|
||||
tone = .info
|
||||
progress = 0
|
||||
timeTitle = "预计到账时间:"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// 提现申请 ViewModel,管理金额、短信验证码、倒计时和提交状态。
|
||||
final class WithdrawViewModel {
|
||||
private(set) var withdrawInfo: WithdrawInfoResponse?
|
||||
|
||||
Reference in New Issue
Block a user