younger_times
2023-05-04 5a30f2d587f7873518f309c8e1c68e644684cd90
BrokerDriver/Home/VC/HomeDetailNoteVC.swift
@@ -7,10 +7,23 @@
import UIKit
class HomeDetailNoteVC: BaseViewController {
    @IBOutlet weak var noteTableView: UITableView!
let DetailNote_Noti = Notification.Name.init("DetailNote_Noti")
class HomeDetailNoteVC: BaseViewController,Refreshable {
    @IBOutlet weak var noteTableView: BaseTableView!
    private(set) var orderId:String!
    public let refreshStatus = BehaviorSubject(value: RefreshStatus.others)
    private var page = 1
    private var datas = [NoteOrTroubleContentModel]()
    struct DetailNotModel:HandyJSON {
        var category:String?
        var describe = ""
        var orderId = ""
        var type:TextType = .note
        var driverId:Int? = UserViewModel.getUserInfo()?.id ?? 0
    }
    required init(orderId:String) {
@@ -29,6 +42,84 @@
        noteTableView.delegate = self
        noteTableView.dataSource = self
        noteTableView.register(UINib(nibName: "NoteContentTCell", bundle: nil), forCellReuseIdentifier: "_NoteContentTCell")
        noteTableView.backgroundColor = UIColor(hexStr: "#F9FAFF")
        self.refreshStatusBind(to: noteTableView, header: { [weak self] () in
            self?.getData()
        }, footer: {  [weak self] () in
            self?.getData(false)
        }).disposed(by: disposeBag)
        noteTableView.jq_setEmptyView("Not data", image: UIImage(named: "empty"), foregroundColor: .gray, clouse: nil)
        DispatchQueue.main.asyncAfter(deadline: .now()+0.2) {
            self.refreshStatus.onNext(.beingHeaderRefresh)
        }
    }
    private func getData(_ isHeader:Bool = true){
        if isHeader{
            page = 1
        }else{
            page += 1
        }
        Services.orderNote(id: orderId, page: page, type: .note).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.noteTableView.reloadData()
            }
        }) { error in
            alert(msg: error.localizedDescription)
            self.refreshStatus.onNext(.endFooterRefresh)
            self.refreshStatus.onNext(.endHeaderRefresh)
        }.disposed(by: disposeBag)
    }
    override func setRx() {
        NotificationCenter.default.rx.notification(DetailNote_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] noti in
            if let index = noti.object as? IndexPath{
                self?.datas.remove(at: index.row)
                self?.noteTableView.beginUpdates()
                self?.noteTableView.deleteRows(at: [index], with: .automatic)
                self?.noteTableView.endUpdates()
                self?.noteTableView.reloadData()
            }else{
                self?.refreshStatus.onNext(.beingHeaderRefresh)
            }
        }).disposed(by: disposeBag)
    }
    @IBAction func addNoteAction(_ sender: UIButton) {
        AddTextView.show(type: .note) { [weak self] text in
            guard let weakSelf = self else { return }
            var model = DetailNotModel()
            model.describe = text
            model.type = .note
            model.orderId = weakSelf.orderId
            Services.addOrderNote(model: model).subscribe(onNext: {[weak self] data in
                if data.code == 200{
                    self?.refreshStatus.onNext(.beingHeaderRefresh)
                    alert(msg: "Add note successed")
                }else{
                    alert(msg: data.msg)
                }
            }) { error in
                alert(msg: error.localizedDescription)
            }.disposed(by: weakSelf.disposeBag)
        }
    }
}
@@ -39,10 +130,12 @@
extension HomeDetailNoteVC:UITableViewDataSource{
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "_NoteContentTCell") as! NoteContentTCell
        cell.indexPath = indexPath
        cell.contentModel = datas[indexPath.row]
        return cell
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
        return datas.count
    }
}