//
|
// HomeDetailNoteVC.swift
|
// BrokerDriver
|
//
|
// Created by 无故事王国 on 2023/4/25.
|
//
|
|
import UIKit
|
import FFPage
|
|
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 = [NoteContentModel]()
|
var adapterViewController:FFAdapterViewController!
|
|
struct DetailNotModel:HandyJSON {
|
var category:String?
|
var describe:String?
|
var orderId = ""
|
var type:TextType = .note
|
var driverId:Int? = UserViewModel.getUserInfo()?.id ?? 0
|
}
|
|
|
required init(orderId:String) {
|
super.init(nibName: nil, bundle: nil)
|
self.orderId = orderId
|
}
|
|
required init?(coder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
view.backgroundColor = UIColor.color("#F9FAFF")
|
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).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)
|
}
|
|
func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
let totalHeight = adapterViewController?.headHeight ?? 0
|
let offset = totalHeight - scrollView.contentOffset.y
|
let isTop = (offset - topSafeHeight) < 0
|
if scrollView.contentOffset.y >= 0 {
|
if isTop{
|
adapterViewController?.scrollview.contentOffset = CGPoint(x: 0, y: totalHeight - topSafeHeight)
|
}else if scrollView.contentOffset.y <= 0{
|
adapterViewController?.scrollview.setContentOffset(.zero, animated: true)
|
}else{
|
adapterViewController?.scrollview.contentOffset = scrollView.contentOffset
|
}
|
}
|
}
|
|
@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.message)
|
}
|
}) { error in
|
alert(msg: error.localizedDescription)
|
}.disposed(by: weakSelf.disposeBag)
|
}
|
}
|
}
|
|
extension HomeDetailNoteVC:UITableViewDelegate{
|
|
}
|
|
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 datas.count
|
}
|
}
|