//
|
// HomeVC.swift
|
// BrokerDriver
|
//
|
// Created by 无故事王国 on 2023/4/24.
|
//
|
|
import UIKit
|
import FFPage
|
import SPPageMenu
|
import CoreLocation
|
|
class HomeVC: BaseViewController {
|
|
lazy var adapterViewController:FFAdapterViewController = {
|
let adapterViewController = FFAdapterViewController()
|
adapterViewController.headHeight = JQ_ScreenW * 0.50
|
adapterViewController.menuHeight = 108
|
adapterViewController.style = .headEnlarge
|
adapterViewController.ignoreTopSpeace = topSafeHeight
|
adapterViewController.headViewController = headerViewController
|
adapterViewController.menuViewController = menuViewController
|
adapterViewController.pageViewController = pageViewController
|
return adapterViewController
|
}()
|
|
lazy var pageViewController:FFPageViewController = {
|
let pageViewController = FFPageViewController()
|
pageViewController.delegate = self
|
return pageViewController
|
}()
|
|
lazy var headerViewController:HomeHeaderVC = {
|
let vc = HomeHeaderVC()
|
return vc
|
}()
|
|
lazy var menuViewController:HomeMenuVC = {
|
let vc = HomeMenuVC()
|
return vc
|
}()
|
|
private lazy var mananger:CLLocationManager = {
|
let manan = CLLocationManager()
|
manan.delegate = self
|
manan.requestWhenInUseAuthorization()
|
manan.requestAlwaysAuthorization()
|
manan.distanceFilter = 10
|
manan.allowsBackgroundLocationUpdates = true
|
manan.pausesLocationUpdatesAutomatically = false
|
manan.desiredAccuracy = kCLLocationAccuracyBestForNavigation
|
return manan
|
}()
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
uploadLocation()
|
}
|
|
private func uploadLocation(){
|
if let str = UserDefaults.standard.object(forKey: "CurrentOrder") as? String,let model = OrderDetailModel.deserialize(from: str){
|
switch model.data?.status{
|
case .PendingPickupDeparture,.ArrivedPort,.SendTOCheckPoint,.Checking,.PendingPickupInCheckPoint,.InTransitInYard,.InYard,.Transiting,.InWarehouse,.PendingUnload,.Unloaded,.TransitingToYard,.InYardByEmpty,.BackYard:
|
mananger.startUpdatingLocation()
|
default:
|
mananger.stopUpdatingLocation()
|
}
|
}
|
}
|
|
override func setUI() {
|
super.setUI()
|
navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "icon_profile")!.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(profileAction))
|
|
addChild(adapterViewController)
|
view.insertSubview(adapterViewController.view, at: 0)
|
adapterViewController.didMove(toParent: self)
|
adapterViewController.view.frame = view.frame
|
menuViewController.pageMenu.delegate = self
|
menuViewController.pageMenu.bridgeScrollView = pageViewController.scrollview
|
}
|
|
@objc func profileAction(){
|
let vc = PersonalCenterVC()
|
push(vc: vc)
|
}
|
}
|
|
|
extension HomeVC:SPPageMenuDelegate{
|
func pageMenu(_ pageMenu: SPPageMenu, itemSelectedAt index: Int) {
|
self.pageViewController.scroll(toPage: index, animation: true)
|
}
|
}
|
|
extension HomeVC:FFPageViewControllerDelegate {
|
|
func pageViewController(_ pageViewController: FFPageViewController, currentPageChanged currentPage: Int) {
|
menuViewController.pageMenu.selectedItemIndex = currentPage
|
if currentPage == 0{
|
adapterViewController.menuHeight = 108
|
}else{
|
adapterViewController.menuHeight = 47
|
}
|
adapterViewController.updateHeight(withAnimation: true)
|
}
|
|
func totalPagesOfpageViewController(_ pageViewConteoller: FFPageViewController) -> UInt {
|
return 2
|
}
|
|
func pageViewController(_ pageViewConteoller: FFPageViewController, controllerForPage page: Int) -> UIViewController {
|
if page == 0{
|
let vc = HomePageVC(style: .progress)
|
vc.box = menuViewController.box
|
vc.adapterViewController = adapterViewController
|
return vc
|
}
|
|
if page == 1{
|
let vc = HomePageVC(style: .complete)
|
vc.adapterViewController = adapterViewController
|
return vc
|
}
|
return UIViewController()
|
|
}
|
}
|
|
extension HomeVC:CLLocationManagerDelegate{
|
func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) {
|
|
}
|
|
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
|
if let location = locations.last{
|
var type:Int = 2
|
if let previousLocation = UserDefaults.standard.object(forKey: "PreviousLocation") as? String{
|
let lat = previousLocation.components(separatedBy: ",").first?.toDouble ?? 0
|
let lon = previousLocation.components(separatedBy: ",").last?.toDouble ?? 0
|
let distance = location.distance(from: CLLocation(latitude: lat, longitude: lon))
|
|
if var dis = UserDefaults.standard.object(forKey: "filterDistance") as? Double{
|
dis += distance
|
if dis >= 3000{
|
dis = 0;type = 1
|
}
|
UserDefaults.standard.set(dis, forKey: "filterDistance")
|
UserDefaults.standard.synchronize()
|
}else{
|
UserDefaults.standard.set(distance, forKey: "filterDistance")
|
UserDefaults.standard.synchronize()
|
}
|
}else{
|
type = 1
|
}
|
print("---->\(type)")
|
Services.uploadLocation(coordinate: location.coordinate,type: type).subscribe(onNext: {data in
|
UserDefaults.standard.set("\(location.coordinate.latitude),\(location.coordinate.longitude)", forKey: "PreviousLocation")
|
UserDefaults.standard.synchronize()
|
}).disposed(by: disposeBag)
|
}
|
}
|
}
|