jsdw_ios/QuickLocation/Section/Group/ReviewMemberList/ReviewMemberListVC.swift

95 lines
3.0 KiB
Swift

//
// ReviewMemberListVC.swift
// QuickLocation
//
// Created by on 2026/6/10.
//
import UIKit
import RxSwift
import RxCocoa
import RxDataSources
import ObjectMapper
class ReviewMemberListVC: BaseViewController {
fileprivate var rootView: ReviewMemberListView!
override func loadView() {
rootView = ReviewMemberListView(frame: UIScreen.main.bounds)
view = rootView
}
private var viewModel: ReviewMemberListViewModel
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
bindViewModel()
requestReviewlist()
}
private func bindViewModel() {
viewModel.output.sectionedItems
.bind(to: rootView.tableView.rx.items(dataSource: dataSource))
.disposed(by: disposeBag)
viewModel.output.sectionedItems
.subscribe(onNext: { [weak self] sections in
let count = sections.first?.items.count ?? 0
self?.rootView.updateHeight(itemCount: count)
})
.disposed(by: disposeBag)
}
// MARK: - UITableViewDataSource
lazy private var dataSource: RxTableViewSectionedReloadDataSource<ReviewMemberListSectionModel> = {
return RxTableViewSectionedReloadDataSource<ReviewMemberListSectionModel>(
configureCell: { (_, tableView, indexPath, model) in
let cell: ReviewMemberCell = tableView.dequeueReusableCell(for: indexPath)
cell.configure(model)
cell.agreeBtn.rx.tap.subscribe(onNext: { _ in
self.requestReviewMember(type: 1, userId: model.user_id)
}).disposed(by: cell.disposeBag)
cell.refuseBtn.rx.tap.subscribe(onNext: { _ in
self.requestReviewMember(type: 2, userId: model.user_id)
}).disposed(by: cell.disposeBag)
return cell
})
}()
// MARK: - API
private func requestReviewlist() {
DLToast.showLoading()
GroupService.reviewlist(requestData: ["group_key": viewModel.groupId]).subscribe { response in
DLToast.dismiss()
self.viewModel.loadData(response.list)
}.disposed(by: disposeBag)
}
private func requestReviewMember(type: Int, userId: String) {
DLToast.showLoading()
GroupService.reviewMember(requestData: ["group_key": viewModel.groupId,
"review_op": type,
"review_userid": userId]).subscribe { response in
DLToast.dismiss()
self.requestReviewlist()
}.disposed(by: disposeBag)
}
// MARK: - Init
init(groupId: String) {
self.viewModel = ReviewMemberListViewModel(groupId: groupId)
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}