| | |
| | | |
| | | 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) { |
| | |
| | | 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) |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | 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 |
| | | } |
| | | } |