Visual_Novel_iOS/crush/Crush/Src/Modules/Wallet/CoinsIncomeTableController....

125 lines
3.6 KiB
Swift

//
// CoinsIncomeTableController.swift
// Crush
//
// Created by Leon on 2025/9/15.
//
import UIKit
import JXPagingView
class CoinsIncomeTableController: CLBaseTableController {
var header: CoinsIncomeHeadView!
var data: BillListResponse?
var bills = [BillListInfo]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
setupViews()
setupDatas()
setupEvents()
}
private func setupViews() {
header = {
let v = CoinsIncomeHeadView(frame: CGRect(x: 0, y: 0, width: UIScreen.width, height: CoinsIncomeHeadView.heightOfHeader))
return v
}()
tableView.tableHeaderView = header
tableView.register(BillListCell.self, forCellReuseIdentifier: "BillListCell")
addRefreshHeaderFooter()
}
private func setupDatas(){
tableView.mj_header?.beginRefreshing()
}
override func loadData() {
var request = BillListRequest()
request.page = RequestPageData()
request.page?.ps = 20
request.type = "INCOME"
let thePage = page
request.page?.pn = thePage
let dict = request.toNonNilDictionary()
WalletProvider.request(.billList(params: dict), modelType: BillListResponse.self) {[weak self] result in
self?.tableView.mj_header?.endRefreshing()
self?.tableView.mj_footer?.endRefreshing()
switch result {
case .success(let model):
self?.data = model
let theBills = model?.pageList?.datas ?? []
if thePage == 1{
self?.bills = theBills
self?.tableView.reloadData()
self?.view.setupEmpty(empty: theBills.count <= 0, msg: "暂无流水明细")
self?.tableView.mj_footer?.resetNoMoreData()
}else{
self?.bills.append(contentsOf: theBills)
if theBills.count <= 0 {
self?.tableView.mj_footer?.endRefreshingWithNoMoreData()
}
}
case .failure:
break
}
}
}
private func handleBillResponse(_ model: BillListResponse?){
}
private func setupEvents(){
header.billListEntryButton.addTarget(self, action: #selector(tapBillDetailEntry), for: .touchUpInside)
}
// MARK: - Action
@objc private func tapBillDetailEntry(){
let v = BillDetailListController()
navigationController?.pushViewController(v, animated: true)
}
// MARK: - TableView
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return bills.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "BillListCell", for: indexPath) as! BillListCell
let data = bills[indexPath.row]
cell.config(data)
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("didSelectRowAt \(indexPath.row)")
}
}
extension CoinsIncomeTableController:JXPagingViewListViewDelegate {
func listView() -> UIView {
return view
}
func listScrollView() -> UIScrollView {
return tableView
}
func listViewDidScrollCallback(callback: @escaping (UIScrollView) -> Void) {
listViewDidScrollCallback = callback
}
}