younger_times
2023-05-04 5a30f2d587f7873518f309c8e1c68e644684cd90
BrokerDriver/Home/VC/HomeDetailAttachVC.swift
@@ -6,13 +6,26 @@
//
import UIKit
import RxSwift
import RxRelay
import JQTools
class HomeDetailAttachVC: BaseViewController {
let RefresgDetailAttach_Noti = Notification.Name.init("RefresgDetailAttach_Noti")
    @IBOutlet weak var attachTableView: UITableView!
class HomeDetailAttachVC: BaseViewController,Refreshable {
    @IBOutlet weak var attachTableView: BaseTableView!
    private(set) var orderId:String!
    public let refreshStatus = BehaviorSubject(value: RefreshStatus.others)
    private var page = 1
    private var datas = [AttachmentRecordModel]()
    struct AttachmentType:HandyJSON {
        var orderId = ""
        var file = ""
        var name = ""
        var categroy:RecordEnum = .none
    }
    
    required init(orderId:String) {
        super.init(nibName: nil, bundle: nil)
@@ -22,7 +35,6 @@
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func viewDidLoad() {
        super.viewDidLoad()
@@ -33,10 +45,66 @@
        attachTableView.separatorStyle = .none
        attachTableView.register(UINib(nibName: "AttachHeadView", bundle: nil), forHeaderFooterViewReuseIdentifier: "_AttachHeadView")
        attachTableView.register(UINib(nibName: "AttachTCell", bundle: nil), forCellReuseIdentifier: "_AttachTCell")
        self.refreshStatusBind(to: attachTableView, header: { [weak self] () in
            self?.getData()
        }, footer: {  [weak self] () in
            self?.getData(false)
        }).disposed(by: disposeBag)
        attachTableView.jq_setEmptyView("Not data", image: UIImage(named: "empty"), foregroundColor: .gray, clouse: nil)
        DispatchQueue.main.asyncAfter(deadline: .now()+0.2) {
            self.refreshStatus.onNext(.beingHeaderRefresh)
        }
    }
    override func setRx() {
        NotificationCenter.default.rx.notification(RefresgDetailAttach_Noti, object: nil).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] noti in
            self?.refreshStatus.onNext(.beingHeaderRefresh)
        }) { error in
        }.disposed(by: disposeBag)
    }
    private func getData(_ isHeader:Bool = true){
        if isHeader{
            page = 1
        }else{
            page += 1
        }
        Services.orderAttachment(id: orderId, page: page).subscribe(onNext: { data in
            if let model = data.data{
                if isHeader{
                    self.datas.removeAll()
                    self.refreshStatus.onNext(.endHeaderRefresh)
                    self.refreshStatus.onNext(.resetNoMoreData)
                }else{
                    if model.records.count == 0{
                        self.refreshStatus.onNext(.noMoreData)
                    }else{
                        self.refreshStatus.onNext(.endFooterRefresh)
                    }
                }
                self.datas.append(contentsOf: model.records)
                self.attachTableView.reloadData()
            }
        }) { error in
            alert(msg: error.localizedDescription)
            self.refreshStatus.onNext(.endFooterRefresh)
            self.refreshStatus.onNext(.endHeaderRefresh)
        }.disposed(by: disposeBag)
    }
    @IBAction func addAttachmentAction(_ sender: UIButton) {
        AttachTypeView.show(orderId: orderId) {[weak self] ()in
            self?.refreshStatus.onNext(.beingHeaderRefresh)
        }
    }
}
extension HomeDetailAttachVC:UITableViewDelegate{
@@ -44,7 +112,7 @@
extension HomeDetailAttachVC:UITableViewDataSource{
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 20
        return datas.count
    }
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
@@ -57,7 +125,9 @@
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let data = datas[indexPath.row]
        let cell = tableView.dequeueReusableCell(withIdentifier: "_AttachTCell") as! AttachTCell
        cell.recordModel = data
        return cell
    }