//
|
// HomePageVC.swift
|
// BrokerDriver
|
//
|
// Created by 无故事王国 on 2023/4/24.
|
//
|
|
import UIKit
|
import RxSwift
|
import RxRelay
|
import FFPage
|
|
let RefreshHomePage_Noti = Notification.Name(rawValue: "RefreshHomePage_Noti")
|
|
class HomePageVC: BaseViewController,Refreshable {
|
|
enum PageStyle:Int{
|
case progress = 1
|
case complete = 2
|
}
|
|
private var style:PageStyle!
|
public let refreshStatus = BehaviorSubject(value: RefreshStatus.others)
|
private var page = 1
|
private var datas = [OrderModel]()
|
|
var box:JQBox<(String?,Date?)>?
|
private var containerNo:String?
|
private var date:String?
|
var adapterViewController:FFAdapterViewController!
|
private var needRefresh:Bool = false // Refresh data when didLoad
|
|
lazy private var tableView:BaseTableView = {
|
let tableView = BaseTableView(frame: .zero, style: .plain)
|
tableView.delegate = self
|
tableView.dataSource = self
|
tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 100, right: 0)
|
tableView.separatorStyle = .none
|
tableView.backgroundColor = .clear
|
tableView.register(UINib(nibName: "HomeItemTCell", bundle: nil), forCellReuseIdentifier: "_HomeItemTCell")
|
return tableView
|
}()
|
|
init(style:HomePageVC.PageStyle) {
|
super.init(nibName: nil, bundle: nil)
|
self.style = style
|
}
|
|
required init?(coder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
|
override func viewDidAppear(_ animated: Bool) {
|
super.viewDidAppear(animated)
|
if needRefresh{
|
self.refreshStatus.onNext(.beingHeaderRefresh)
|
}
|
}
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
|
self.refreshStatusBind(to: tableView, header: { [weak self] () in
|
self?.getData()
|
}, footer: { [weak self] () in
|
self?.getData(false)
|
}).disposed(by: disposeBag)
|
tableView.jq_setEmptyView("Not data", image: UIImage(named: "empty"), foregroundColor: .gray, clouse: nil)
|
DispatchQueue.main.asyncAfter(deadline: .now()+0.2) {
|
self.refreshStatus.onNext(.beingHeaderRefresh)
|
}
|
|
box?.bind { [weak self] str,date in
|
self?.containerNo = str
|
self?.date = date?.jq_format("yyyy-MM-dd")
|
self?.refreshStatus.onNext(.beingHeaderRefresh)
|
}
|
}
|
|
override func setRx() {
|
NotificationCenter.default.rx.notification(RefreshHomePage_Noti).take(until: self.rx.deallocated).subscribe(onNext: { noti in
|
if let status = noti.object as? Bool{
|
self.needRefresh = status
|
}
|
}).disposed(by: disposeBag)
|
}
|
|
private func getData(_ isHeader:Bool = true){
|
|
if isHeader{
|
page = 1
|
}else{
|
page += 1
|
}
|
needRefresh = false
|
Services.getList(type: style, pageNumber: page,containerNo: containerNo,date: date).subscribe(onNext: { data in
|
if let models = data.data{
|
if isHeader{
|
self.datas.removeAll()
|
self.refreshStatus.onNext(.endHeaderRefresh)
|
self.refreshStatus.onNext(.resetNoMoreData)
|
}else{
|
if models.count == 0{
|
self.refreshStatus.onNext(.noMoreData)
|
}else{
|
self.refreshStatus.onNext(.endFooterRefresh)
|
}
|
}
|
self.datas.append(contentsOf: models)
|
self.tableView.reloadData()
|
}
|
}) { error in
|
alert(msg: error.localizedDescription)
|
self.refreshStatus.onNext(.endFooterRefresh)
|
self.refreshStatus.onNext(.endHeaderRefresh)
|
}.disposed(by: disposeBag)
|
|
}
|
|
// func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
// if scrollView.contentOffset.y >= 0{
|
// adapterViewController.scrollview.contentOffset = scrollView.contentOffset
|
// }
|
// }
|
|
override func setUI() {
|
super.setUI()
|
view.backgroundColor = UIColor(hexStr: "#F9FAFF")
|
view.addSubview(tableView)
|
tableView.snp.makeConstraints { make in
|
make.edges.equalToSuperview()
|
}
|
}
|
}
|
|
extension HomePageVC:UITableViewDelegate{
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
let data = datas[indexPath.row]
|
let vc = HomeDetailVC(orderId: data.orderId, type: data.type)
|
push(vc: vc)
|
}
|
}
|
|
extension HomePageVC:UITableViewDataSource{
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_HomeItemTCell") as! HomeItemTCell
|
cell.backgroundColor = .clear
|
cell.orderModel = datas[indexPath.row]
|
return cell
|
}
|
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
return datas.count
|
}
|
}
|