//
|
// InvoiceViewController.swift
|
// OKProject
|
//
|
// Created by 无故事王国 on 2022/5/30.
|
// Copyright © 2022 yangwang. All rights reserved.
|
//
|
|
import UIKit
|
import QMUIKit
|
import NSObject_Rx
|
import RxRelay
|
|
|
let RefreshInvoice_Noti = Notification.Name.init(rawValue: "refreshInvoice_Noti")
|
/// 开发票
|
class InvoiceViewController: YYViewController {
|
|
@IBOutlet weak var optionBtn: QMUIButton!
|
@IBOutlet weak var filterBtn: QMUIButton!
|
@IBOutlet weak var tableView: UITableView!
|
@IBOutlet weak var selectAllBtn: QMUIButton!
|
@IBOutlet weak var selectInfoL: UILabel!
|
@IBOutlet weak var nextStepBtn: UIButton!
|
|
private var invoiceTypeView:CarBrandListView?
|
private var moreVC:InvoiceMoreViewController?
|
private var selectItems:Set = Set<InvoiceModel>()
|
private var selectInvoiceIndex:Int = 0
|
|
private var viewMoel = InvoiceOrderViewModel()
|
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
title = "开发票"
|
|
//73989 【开发票】 其他订单不显示。
|
optionBtn.isHidden = true
|
}
|
|
override func setupViews() {
|
super.setupViews()
|
|
viewMoel.configure(tableView: tableView)
|
optionBtn.imagePosition = .right
|
optionBtn.spacingBetweenImageAndTitle = 3
|
tableView.register(UINib(nibName: "InvoiceTCell", bundle: nil), forCellReuseIdentifier: "_InvoiceTCell")
|
tableView.delegate = self
|
tableView.dataSource = self
|
tableView.separatorStyle = .none
|
|
let rightBtn = UIBarButtonItem(title: "历史开票", style: .plain, target: self, action: #selector(historyAction))
|
rightBtn.tintColor = UIColor(hexString: "#666666")
|
navigationItem.rightBarButtonItem = rightBtn
|
|
tableView.beginRefreshing()
|
}
|
|
override func bindRx() {
|
NotificationCenter.default.rx.notification(RefreshInvoice_Noti).takeUntil(self.rx.deallocated).subscribe(onNext: {noti in
|
self.tableView.beginRefreshing()
|
self.selectItems = Set<InvoiceModel>()
|
self.calcularPrice()
|
}).disposed(by: disposeBag)
|
}
|
|
@IBAction func invoiceTypeAction(_ sender: UIButton) {
|
sender.isEnabled = false
|
invoiceTypeView = CarBrandListView.show(self, offsetTop: 30, items: ["可开票订单","其它订单"], selectIndex: selectInvoiceIndex) { [weak self]index in
|
guard let weakSelf = self else { return }
|
weakSelf.selectInvoiceIndex = index
|
weakSelf.optionBtn.isSelected = false
|
weakSelf.invoiceTypeView = nil
|
weakSelf.optionBtn.isEnabled = true
|
switch index{
|
case 0:
|
weakSelf.optionBtn.setTitle("可开票订单", for: .normal)
|
weakSelf.viewMoel.type.accept(1)
|
case 1:
|
weakSelf.optionBtn.setTitle("其它订单", for: .normal)
|
weakSelf.viewMoel.type.accept(2)
|
default:break
|
}
|
weakSelf.tableView.beginRefreshing()
|
weakSelf.selectItems.removeAll()
|
weakSelf.calcularPrice()
|
} hiddenClouse: { [weak self] () in
|
guard let weakSelf = self else { return }
|
weakSelf.optionBtn.isSelected = false
|
weakSelf.optionBtn.isEnabled = true
|
weakSelf.invoiceTypeView = nil
|
}
|
}
|
|
@objc func historyAction(){
|
let vc = InvoiceHistoryViewController()
|
yy_push(vc: vc)
|
}
|
|
private func calcularPrice(){
|
var price:Double = 0
|
var num:Int = 0
|
selectItems.forEach { v in
|
price += v.payMoney
|
num += 1
|
}
|
|
selectInfoL.text = String(format: "共%ld笔订单,合计%.2lf元", num,price)
|
}
|
|
@IBAction func orderFilterAction(_ sender: UIButton) {
|
|
if moreVC == nil{
|
let vc = InvoiceMoreViewController()
|
vc.viewMoel = viewMoel
|
addChild(vc)
|
vc.view.frame = CGRect(x: 0, y:0, width: ScreenWidth, height: self.view.height)
|
self.view.addSubview(vc.view)
|
vc.completeClouse = { [weak self] () in
|
self?.selectItems.removeAll()
|
self?.tableView.beginRefreshing()
|
self?.calcularPrice()
|
}
|
}
|
}
|
|
@IBAction func selectAllAction(_ sender: UIButton) {
|
sender.isSelected = !sender.isSelected
|
if sender.isSelected{
|
for item in viewMoel.dataSource.value {
|
selectItems.insert(item)
|
}
|
}else{
|
selectItems.removeAll()
|
}
|
tableView.reloadData()
|
calcularPrice()
|
}
|
|
@IBAction func nextStepAction(_ sender: UIButton) {
|
|
guard selectItems.count != 0 else {
|
alert(text: "请选择开票栏目");return
|
}
|
|
let inputVC = InvoiceInputViewController()
|
inputVC.selectItems = selectItems
|
yy_push(vc: inputVC)
|
}
|
}
|
|
extension InvoiceViewController:UITableViewDelegate{
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
let model = viewMoel.dataSource.value[indexPath.row]
|
if selectItems.contains(model){
|
selectItems.remove(model)
|
}else{
|
selectItems.insert(model)
|
}
|
tableView.reloadRows(at: [indexPath], with: .none)
|
|
selectAllBtn.isSelected = viewMoel.dataSource.value.count == selectItems.count
|
calcularPrice()
|
}
|
}
|
|
extension InvoiceViewController:UITableViewDataSource{
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
let model = viewMoel.dataSource.value[indexPath.row]
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_InvoiceTCell") as! InvoiceTCell
|
cell.setInvoiceModel(model)
|
if selectItems.contains(model){
|
cell.selectIcon.image = UIImage(named: "icon_select")
|
}else{
|
cell.selectIcon.image = UIImage(named: "icon_unselect")
|
}
|
return cell
|
}
|
|
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
return viewMoel.dataSource.value.count
|
}
|
}
|