//
|
// HomeDetailContentVC.swift
|
// BrokerDriver
|
//
|
// Created by 无故事王国 on 2023/4/25.
|
//
|
|
import UIKit
|
import FFPage
|
|
class HomeDetailContentVC: BaseViewController {
|
|
@IBOutlet weak var scrollView: UIScrollView!
|
@IBOutlet weak var cargoTableview: UITableView!
|
@IBOutlet weak var cargoTableHeiCons: NSLayoutConstraint!
|
@IBOutlet weak var label_type: UILabel!
|
@IBOutlet weak var label_id: UILabel!
|
@IBOutlet weak var icon_id: UIImageView!
|
@IBOutlet weak var contentTableView: UITableView!
|
@IBOutlet weak var contentTableHeiCons: NSLayoutConstraint!
|
@IBOutlet weak var label_BLN: UILabel!
|
@IBOutlet weak var label_status: UILabel!
|
@IBOutlet weak var view_btn: UIView!
|
|
weak var adapterViewController:FFAdapterViewController?
|
|
private(set) var orderId:String!
|
private(set) var type:Int!
|
private var model:OrderDetailModel?{
|
didSet{
|
if let m = model?.data{
|
label_type.text = m.orderType
|
label_id.text = m.orderId
|
icon_id.image = m.status.transImage
|
label_BLN.text = "B/L OR AWB NO.:\(m.tGoods?.containerNumber ?? "")"
|
label_status.text = m.nextStatus.transStr
|
contentTableView.reloadData()
|
cargoTableview.reloadData()
|
view_btn.isHidden = true
|
view_btn.isHidden = m.button == 2
|
}
|
}
|
}
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
|
view.backgroundColor = .color("#F9FAFF")
|
}
|
|
override func setUI() {
|
super.setUI()
|
cargoTableview.delegate = self
|
cargoTableview.dataSource = self
|
contentTableView.delegate = self
|
contentTableView.dataSource = self
|
cargoTableview.isScrollEnabled = false
|
contentTableView.isScrollEnabled = false
|
cargoTableview.separatorStyle = .none
|
contentTableView.separatorStyle = .none
|
scrollView.delegate = self
|
|
contentTableView.register(UINib(nibName: "HomeDetailContentTCell", bundle: nil), forCellReuseIdentifier: "_HomeDetailContentTCell")
|
cargoTableview.register(UINib(nibName: "CargoInfoTCell", bundle: nil), forCellReuseIdentifier: "_CargoInfoTCell")
|
cargoTableview.register(UINib(nibName: "CargoTableHeaderView", bundle: nil), forHeaderFooterViewReuseIdentifier: "_CargoTableHeaderView")
|
cargoTableHeiCons.constant = 55 * 5.0 + 45.0
|
|
// footviewHeiCons.constant = UIDevice.jq_safeEdges.bottom + 44.0
|
|
getData()
|
}
|
|
required init(orderId:String,type:Int) {
|
super.init(nibName: nil, bundle: nil)
|
self.orderId = orderId
|
self.type = type
|
}
|
|
override func setRx() {
|
|
}
|
|
private func getData(_ beginStart:Bool = false){
|
Services.orderInfo(id: orderId).subscribe(onNext: { [weak self] data in
|
if let model = data.data{
|
self?.model = model
|
if beginStart{
|
UserDefaults.standard.set(model.toJSONString(), forKey: "CurrentOrder")
|
UserDefaults.standard.synchronize()
|
}
|
NotificationCenter.default.post(name: UpdateMap_Noti, object: model)
|
}
|
}) { error in
|
|
}.disposed(by: disposeBag)
|
}
|
|
|
override func viewDidLayoutSubviews() {
|
super.viewDidLayoutSubviews()
|
contentTableView.rx.observe(CGSize.self,"contentSize").subscribe(onNext: {[weak self] contentSize in
|
self?.contentTableHeiCons.constant = contentSize?.height ?? 0
|
}).disposed(by: disposeBag)
|
}
|
|
@IBAction func tapAction(_ sender: UIButton) {
|
//到达码头:提示上传
|
//运输中:上传POD
|
//运回码头:提示上传
|
guard let m = model?.data else { return }
|
if m.nextStatus == .ArrivedPort{
|
CommonAlertView.show(title: "Prompt!", content: "You need to upload gate out ticket", bt1: "Not upload yet", bt2: "To upload") { [weak self] in
|
AttachTypeView.show(orderId: m.orderId,recordEnum: .GetOutTicket) {
|
self?.changeStatus(orderId: m.orderId)
|
}
|
}
|
} else if m.nextStatus == .Transiting{
|
CommonAlertView.show(title: "Prompt!", content: "You need to upload POD", bt1: "Not upload yet", bt2: "To upload") { [weak self] in
|
AttachTypeView.show(orderId: m.orderId,recordEnum: .Pod) {
|
self?.changeStatus(orderId: m.orderId)
|
}
|
}
|
}else if m.nextStatus == .BackYard{
|
CommonAlertView.show(title: "Prompt!", content: "You need to upload gate in ticket", bt1: "Not upload yet", bt2: "To upload") { [weak self] in
|
AttachTypeView.show(orderId: m.orderId,recordEnum: .GetInTicket) {
|
self?.changeStatus(orderId: m.orderId)
|
}
|
}
|
}else{
|
changeStatus(orderId: orderId)
|
}
|
}
|
|
private func changeStatus(orderId:String){
|
Services.nextStatus(id: orderId).subscribe(onNext: { data in
|
if data.code == 200{
|
self.getData(true)
|
//Update Home data status.
|
NotificationCenter.default.post(name: RefreshHomePage_Noti, object: true)
|
}else{
|
alert(msg: data.message)
|
}
|
}) { error in
|
alert(msg: error.localizedDescription)
|
}.disposed(by: disposeBag)
|
}
|
|
required init?(coder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
}
|
|
extension HomeDetailContentVC:UIScrollViewDelegate{
|
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
|
}
|
}
|
}
|
}
|
|
extension HomeDetailContentVC:UITableViewDelegate{
|
|
}
|
|
extension HomeDetailContentVC:UITableViewDataSource{
|
|
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
|
if cargoTableview == tableView{
|
let headView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "_CargoTableHeaderView") as? CargoTableHeaderView
|
return headView
|
}
|
return nil
|
}
|
|
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
|
if cargoTableview == tableView{
|
return 45.0
|
}
|
return 0.001
|
}
|
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
if cargoTableview == tableView{
|
return 1
|
}
|
return model?.data?.list.count ?? 0
|
}
|
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
if cargoTableview == tableView{
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_CargoInfoTCell") as! CargoInfoTCell
|
cell.l1.text = model?.data?.tGoods?.containerNumber ?? ""
|
cell.l2.text = "\(model?.data?.tGoods?.weight ?? 0)"
|
cell.l3.text = model?.data?.tGoods?.size ?? ""
|
cell.l4.text = String(format: "%@\n%@", model?.data?.tGoods?.type ?? "" ,model?.data?.tGoods?.typeClass ?? "")
|
return cell
|
}
|
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_HomeDetailContentTCell") as! HomeDetailContentTCell
|
if let dict = model?.data?.list[indexPath.row]{
|
cell.dicts = dict
|
}
|
|
return cell
|
}
|
|
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
|
if cargoTableview == tableView{
|
return 50
|
}
|
return UITableView.automaticDimension
|
}
|
}
|