//
|
// WelfareBillListVC.swift
|
// WanPai
|
//
|
// Created by 无故事王国 on 2023/6/28.
|
//
|
|
import UIKit
|
import JQTools
|
import QMUIKit
|
import RxSwift
|
import RxRelay
|
|
class BillViewModel:RefreshModel<BillingModel>{
|
var type = BehaviorRelay<Int?>(value: nil)
|
var yearMonth = BehaviorRelay<String>(value: "")
|
override func api() -> (Observable<BaseResponse<[BillingModel]>>)? {
|
return Services.billingList(recordType: type.value, yearMonth: yearMonth.value)
|
}
|
}
|
|
class WelfareBillListVC: BaseVC {
|
|
lazy private var tableView:BaseTableView = {
|
let table = BaseTableView(frame: .zero, style: .plain)
|
table.separatorStyle = .none
|
table.delegate = self
|
table.dataSource = self
|
if #available(iOS 15.0, *) {
|
table.sectionHeaderTopPadding = 0
|
}
|
table.register(UINib(nibName: "BillInfoTCell", bundle: nil), forCellReuseIdentifier: "_BillInfoTCell")
|
return table
|
}()
|
|
private let viewModel = BillViewModel()
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
title = "账单"
|
viewModel.configure(tableView,needMore: false)
|
viewModel.yearMonth.accept(Date().jq_format("yyyy-MM"))
|
viewModel.beginRefresh()
|
}
|
|
override func setUI() {
|
// tableView.jq_setEmptyView()
|
view.addSubview(tableView)
|
tableView.snp.makeConstraints { make in
|
make.edges.equalToSuperview()
|
}
|
}
|
}
|
|
extension WelfareBillListVC:UITableViewDelegate{
|
|
}
|
|
extension WelfareBillListVC:UITableViewDataSource{
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
let model = viewModel.dataSource.value[indexPath.row]
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_BillInfoTCell") as! BillInfoTCell
|
cell.billingModel = model
|
return cell
|
}
|
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
return viewModel.dataSource.value.count
|
}
|
|
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
|
return 67
|
}
|
|
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
|
let v = HeaderInSectionView()
|
v.viewModel = viewModel
|
return v
|
}
|
}
|
|
private class HeaderInSectionView:UIView{
|
|
fileprivate var viewModel:BillViewModel?{
|
didSet{
|
if let m = viewModel{
|
let year = m.yearMonth.value.components(separatedBy: "-").first ?? ""
|
let month = m.yearMonth.value.components(separatedBy: "-").last ?? ""
|
|
btn_datetime.setTitle("\(year)年\(month)月>", for: .normal)
|
if let type = m.type.value{
|
btn_filter.setTitle(type == 1 ? "充值":"扣除", for: .normal)
|
}else{
|
btn_filter.setTitle("全部记录", for: .normal)
|
}
|
}
|
}
|
}
|
|
private lazy var btn_datetime:QMUIButton = {
|
let btn = QMUIButton(type: .custom)
|
btn.setTitle(Date().jq_format("yyyy年M月>"), for: .normal)
|
btn.setTitleColor(UIColor.black, for: .normal)
|
btn.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .medium)
|
return btn
|
}()
|
|
private lazy var btn_filter:QMUIButton = {
|
let btn = QMUIButton(type: .custom)
|
btn.setTitleColor(UIColor(hexStr: "#414141"), for: .normal)
|
btn.titleLabel?.font = UIFont.systemFont(ofSize: 16)
|
btn.jq_borderWidth = 1
|
btn.jq_borderColor = UIColor(hexStr: "#D5D1D1")
|
btn.jq_cornerRadius = 4
|
btn.setTitle("全部记录", for: .normal)
|
btn.setImage(UIImage(named: "icon_down_arrow"), for: .normal)
|
btn.imagePosition = .right
|
btn.spacingBetweenImageAndTitle = 5
|
return btn
|
}()
|
|
private lazy var view_line:UIView = {
|
let lineView = UIView()
|
lineView.backgroundColor = UIColor(hexStr: "#DEDEDE")
|
return lineView
|
}()
|
|
override init(frame: CGRect) {
|
super.init(frame: frame)
|
|
backgroundColor = .white
|
|
addSubview(btn_datetime)
|
addSubview(btn_filter)
|
addSubview(view_line)
|
|
btn_filter.snp.makeConstraints { make in
|
make.right.equalTo(-14)
|
make.height.equalTo(38)
|
make.width.equalTo(100)
|
make.bottom.equalTo(-16)
|
}
|
|
btn_datetime.snp.makeConstraints { make in
|
make.left.equalTo(14)
|
make.height.equalTo(22)
|
make.centerY.equalTo(btn_filter)
|
}
|
|
view_line.snp.makeConstraints { make in
|
make.left.equalTo(14)
|
make.right.equalTo(14)
|
make.height.equalTo(0.4)
|
make.bottom.equalToSuperview()
|
}
|
|
btn_filter.addTarget(self, action: #selector(fliterAction), for: .touchUpInside)
|
btn_datetime.addTarget(self, action: #selector(datetimePickerAction), for: .touchUpInside)
|
}
|
|
@objc func fliterAction(){
|
JQ_MenuView().show(self, tapView: btn_filter, items: ["全部记录","增加","扣除"],tableHei: 140) { [weak self] index, str in
|
self?.btn_filter.setTitle(str, for: .normal)
|
if index == 0{
|
self?.viewModel?.type.accept(nil)
|
}else{
|
self?.viewModel?.type.accept(index)
|
}
|
self?.viewModel?.beginRefresh()
|
}
|
}
|
|
@objc func datetimePickerAction(){
|
CommonDatePickerView.show(before: 2, after: 0, type: .YM) {[weak self] year, month,_,_,_ in
|
|
self?.viewModel?.yearMonth.accept(String(format: "%ld-%02ld", year!,month!))
|
self?.viewModel?.beginRefresh()
|
}
|
}
|
|
required init?(coder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
}
|