Initial commit: suixinkan_ios UIKit rewrite project.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-26 14:33:31 +08:00
commit 9edf993432
297 changed files with 47151 additions and 0 deletions

View File

@ -0,0 +1,60 @@
//
// WithdrawalAuditViewController.swift
// suixinkan
//
// Created by Codex on 2026/6/26.
//
import UIKit
///
final class WithdrawalAuditViewController: ModuleTableViewController {
private let viewModel = WithdrawalAuditViewModel()
override func viewDidLoad() {
title = "提现审核"
navigationItem.rightBarButtonItem = UIBarButtonItem(
title: "全部",
style: .plain,
target: self,
action: #selector(cycleFilter)
)
super.viewDidLoad()
wireViewModel(viewModel) { [weak self] in self?.updateFilterTitle() }
}
override func tableRowCount() -> Int {
viewModel.filteredRecords.count
}
override func configureCell(_ cell: TitleSubtitleTableViewCell, at indexPath: IndexPath) {
let record = viewModel.filteredRecords[indexPath.row]
cell.configure(title: "¥\(record.amount)", subtitle: record.statusLabel, detail: record.createdAt)
}
override func reloadContent() async {
await viewModel.reload(api: services.walletAPI)
updateFilterTitle()
}
override func willDisplayTableRow(at indexPath: IndexPath) {
guard indexPath.row >= viewModel.filteredRecords.count - 2 else { return }
Task { await viewModel.loadMore(api: services.walletAPI) }
}
@objc private func cycleFilter() {
let filters = WithdrawalAuditFilter.allCases
guard let index = filters.firstIndex(of: viewModel.selectedFilter) else { return }
let next = filters[(index + 1) % filters.count]
Task {
viewModel.selectFilter(next)
reloadTable()
}
}
private func updateFilterTitle() {
navigationItem.rightBarButtonItem?.title = viewModel.selectedFilter.title
}
}
extension WithdrawalAuditViewModel: ViewModelBindable {}