From 945655d9f53293d7da9d2d11363b3230f6e53bbe Mon Sep 17 00:00:00 2001 From: younger_times <841720330@qq.com> Date: 星期三, 26 四月 2023 18:17:28 +0800 Subject: [PATCH] API 接入 --- BrokerDriver/Profile/VC/PersonalWalletVC.swift | 28 + BrokerDriver/Network/NetworkRequest.swift | 336 +++++++++++++++ BrokerDriver/Network/Services.swift | 71 +++ BrokerDriver/Assets.xcassets/Icon/userdefault.imageset/userdefault@3x.png | 0 BrokerDriver/Assets.xcassets/Icon/empty.imageset/empty.png | 0 BrokerDriver/Def.swift | 38 + BrokerDriver/Assets.xcassets/Icon/empty.imageset/Contents.json | 21 BrokerDriver/Profile/VC/CompanyVC.swift | 21 BrokerDriver/ViewModels/OrderViewModel.swift | 22 + BrokerDriver/Profile/VC/PersonalDataVC.swift | 23 + BrokerDriver.xcodeproj/project.pbxproj | 48 ++ BrokerDriver/Assets.xcassets/Icon/userdefault.imageset/Contents.json | 22 + BrokerDriver/ViewModels/UserViewModel.swift | 38 + BrokerDriver/Profile/VC/PersonalDataVC.xib | 338 ++++++++++---- BrokerDriver/Profile/VC/CompanyVC.xib | 18 BrokerDriver/Home/VC/HomePageVC.swift | 39 + BrokerDriver/Profile/TCell/WalletTCell.xib | 5 BrokerDriver/Profile/VC/PersonalCenterVC.swift | 22 + BrokerDriver/Profile/VC/PersonalWalletVC.xib | 5 Podfile | 4 BrokerDriver/Base/BaseViewController.swift | 6 BrokerDriver/Login/VC/LoginVC.swift | 49 + BrokerDriver/Assets.xcassets/Icon/userdefault.imageset/userdefault@2x.png | 0 BrokerDriver/Models/OrderModel.swift | 8 BrokerDriver/Profile/TCell/WalletTCell.swift | 23 + BrokerDriver/Profile/VC/PersonalCenterVC.xib | 7 BrokerDriver/SceneDelegate.swift | 11 BrokerDriver/Models/UserModel.swift | 99 ++++ 28 files changed, 1,162 insertions(+), 140 deletions(-) diff --git a/BrokerDriver.xcodeproj/project.pbxproj b/BrokerDriver.xcodeproj/project.pbxproj index f51bdff..b4002af 100644 --- a/BrokerDriver.xcodeproj/project.pbxproj +++ b/BrokerDriver.xcodeproj/project.pbxproj @@ -60,6 +60,12 @@ 139F0F8529F68B90007D9EA4 /* BaseTCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139F0F8429F68B90007D9EA4 /* BaseTCell.swift */; }; 13F536B229F7D0DF00A7937A /* NoteContentTCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13F536B029F7D0DF00A7937A /* NoteContentTCell.swift */; }; 13F536B329F7D0DF00A7937A /* NoteContentTCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13F536B129F7D0DF00A7937A /* NoteContentTCell.xib */; }; + 13F536B729F7D6CF00A7937A /* Services.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13F536B529F7D6CF00A7937A /* Services.swift */; }; + 13F536B829F7D6CF00A7937A /* NetworkRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13F536B629F7D6CF00A7937A /* NetworkRequest.swift */; }; + 13F536BB29F8CC0500A7937A /* UserModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13F536BA29F8CC0500A7937A /* UserModel.swift */; }; + 13F536BE29F8CECE00A7937A /* UserViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13F536BD29F8CECE00A7937A /* UserViewModel.swift */; }; + 13F536C029F927E900A7937A /* OrderViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13F536BF29F927E900A7937A /* OrderViewModel.swift */; }; + 13F536C229F927FC00A7937A /* OrderModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13F536C129F927FC00A7937A /* OrderModel.swift */; }; 656E15B4DAA88146F5E490CA /* Pods_BrokerDriver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E99D0F4A48F512570D96537 /* Pods_BrokerDriver.framework */; }; /* End PBXBuildFile section */ @@ -119,6 +125,12 @@ 139F0F8429F68B90007D9EA4 /* BaseTCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTCell.swift; sourceTree = "<group>"; }; 13F536B029F7D0DF00A7937A /* NoteContentTCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoteContentTCell.swift; sourceTree = "<group>"; }; 13F536B129F7D0DF00A7937A /* NoteContentTCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NoteContentTCell.xib; sourceTree = "<group>"; }; + 13F536B529F7D6CF00A7937A /* Services.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Services.swift; sourceTree = "<group>"; }; + 13F536B629F7D6CF00A7937A /* NetworkRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkRequest.swift; sourceTree = "<group>"; }; + 13F536BA29F8CC0500A7937A /* UserModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserModel.swift; sourceTree = "<group>"; }; + 13F536BD29F8CECE00A7937A /* UserViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserViewModel.swift; sourceTree = "<group>"; }; + 13F536BF29F927E900A7937A /* OrderViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderViewModel.swift; sourceTree = "<group>"; }; + 13F536C129F927FC00A7937A /* OrderModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderModel.swift; sourceTree = "<group>"; }; 33DCC1D819EF0A04257FB4A8 /* Pods-BrokerDriver.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BrokerDriver.release.xcconfig"; path = "Target Support Files/Pods-BrokerDriver/Pods-BrokerDriver.release.xcconfig"; sourceTree = "<group>"; }; 36C7396011423ADA377B2856 /* Pods-BrokerDriver.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BrokerDriver.debug.xcconfig"; path = "Target Support Files/Pods-BrokerDriver/Pods-BrokerDriver.debug.xcconfig"; sourceTree = "<group>"; }; 8E99D0F4A48F512570D96537 /* Pods_BrokerDriver.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_BrokerDriver.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -185,6 +197,9 @@ 138DA4B629F62F9500A71FE7 /* BrokerDriver */ = { isa = PBXGroup; children = ( + 13F536B929F8CBF400A7937A /* Models */, + 13F536BC29F8CEC100A7937A /* ViewModels */, + 13F536B429F7D6CF00A7937A /* Network */, 1309ADF629F77F5C00F5FA26 /* Resouses */, 13941CE029F7638600AB569F /* Profile */, 138DA4B729F62F9500A71FE7 /* AppDelegate.swift */, @@ -309,6 +324,33 @@ 13F536B129F7D0DF00A7937A /* NoteContentTCell.xib */, ); path = TCell; + sourceTree = "<group>"; + }; + 13F536B429F7D6CF00A7937A /* Network */ = { + isa = PBXGroup; + children = ( + 13F536B529F7D6CF00A7937A /* Services.swift */, + 13F536B629F7D6CF00A7937A /* NetworkRequest.swift */, + ); + path = Network; + sourceTree = "<group>"; + }; + 13F536B929F8CBF400A7937A /* Models */ = { + isa = PBXGroup; + children = ( + 13F536BA29F8CC0500A7937A /* UserModel.swift */, + 13F536C129F927FC00A7937A /* OrderModel.swift */, + ); + path = Models; + sourceTree = "<group>"; + }; + 13F536BC29F8CEC100A7937A /* ViewModels */ = { + isa = PBXGroup; + children = ( + 13F536BD29F8CECE00A7937A /* UserViewModel.swift */, + 13F536BF29F927E900A7937A /* OrderViewModel.swift */, + ); + path = ViewModels; sourceTree = "<group>"; }; 489CFEB74E41CC03BD0818E7 /* Pods */ = { @@ -469,14 +511,19 @@ 138DA4D829F6305600A71FE7 /* Colors+Exception.swift in Sources */, 13941CDF29F6901D00AB569F /* BaseTableView.swift in Sources */, 1309AE0A29F78D9200F5FA26 /* HomeDetailMapVC.swift in Sources */, + 13F536C029F927E900A7937A /* OrderViewModel.swift in Sources */, 139F0F7829F6589F007D9EA4 /* HomeVC.swift in Sources */, 130F4EEC29F7B6C100937687 /* CargoInfoTCell.swift in Sources */, 1309AE1129F7919900F5FA26 /* HomeDetailAttachVC.swift in Sources */, 139F0F7A29F66EB7007D9EA4 /* HomeHeaderVC.swift in Sources */, 138DA4D929F6305600A71FE7 /* LoginVC.swift in Sources */, + 13F536B829F7D6CF00A7937A /* NetworkRequest.swift in Sources */, + 13F536C229F927FC00A7937A /* OrderModel.swift in Sources */, 13F536B229F7D0DF00A7937A /* NoteContentTCell.swift in Sources */, 139F0F8529F68B90007D9EA4 /* BaseTCell.swift in Sources */, 13941CEE29F77A7F00AB569F /* PersonalWalletVC.swift in Sources */, + 13F536BB29F8CC0500A7937A /* UserModel.swift in Sources */, + 13F536B729F7D6CF00A7937A /* Services.swift in Sources */, 138DA4D629F6305600A71FE7 /* BaseViewController.swift in Sources */, 1309AE0329F788D900F5FA26 /* PersonalDataVC.swift in Sources */, 1309ADFB29F7840500F5FA26 /* Currency+Exception.swift in Sources */, @@ -485,6 +532,7 @@ 13045E7C29F7C4D9004E10BE /* AttachTCell.swift in Sources */, 139F0F8229F689F9007D9EA4 /* HomeItemTCell.swift in Sources */, 1309AE1529F791BA00F5FA26 /* HomeDetailNoteVC.swift in Sources */, + 13F536BE29F8CECE00A7937A /* UserViewModel.swift in Sources */, 13941CEB29F7728300AB569F /* TapButton.swift in Sources */, 130F4EF029F7B81A00937687 /* CargoTableHeaderView.swift in Sources */, 138DA4BA29F62F9500A71FE7 /* SceneDelegate.swift in Sources */, diff --git a/BrokerDriver/Assets.xcassets/Icon/empty.imageset/Contents.json b/BrokerDriver/Assets.xcassets/Icon/empty.imageset/Contents.json new file mode 100644 index 0000000..855da83 --- /dev/null +++ b/BrokerDriver/Assets.xcassets/Icon/empty.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "empty.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BrokerDriver/Assets.xcassets/Icon/empty.imageset/empty.png b/BrokerDriver/Assets.xcassets/Icon/empty.imageset/empty.png new file mode 100644 index 0000000..07ce758 --- /dev/null +++ b/BrokerDriver/Assets.xcassets/Icon/empty.imageset/empty.png Binary files differ diff --git a/BrokerDriver/Assets.xcassets/Icon/userdefault.imageset/Contents.json b/BrokerDriver/Assets.xcassets/Icon/userdefault.imageset/Contents.json new file mode 100644 index 0000000..5f43517 --- /dev/null +++ b/BrokerDriver/Assets.xcassets/Icon/userdefault.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "userdefault@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "userdefault@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BrokerDriver/Assets.xcassets/Icon/userdefault.imageset/userdefault@2x.png b/BrokerDriver/Assets.xcassets/Icon/userdefault.imageset/userdefault@2x.png new file mode 100644 index 0000000..18f71e7 --- /dev/null +++ b/BrokerDriver/Assets.xcassets/Icon/userdefault.imageset/userdefault@2x.png Binary files differ diff --git a/BrokerDriver/Assets.xcassets/Icon/userdefault.imageset/userdefault@3x.png b/BrokerDriver/Assets.xcassets/Icon/userdefault.imageset/userdefault@3x.png new file mode 100644 index 0000000..883a9f8 --- /dev/null +++ b/BrokerDriver/Assets.xcassets/Icon/userdefault.imageset/userdefault@3x.png Binary files differ diff --git a/BrokerDriver/Base/BaseViewController.swift b/BrokerDriver/Base/BaseViewController.swift index 16fb1b8..bd7beef 100644 --- a/BrokerDriver/Base/BaseViewController.swift +++ b/BrokerDriver/Base/BaseViewController.swift @@ -76,12 +76,6 @@ } - func addChildViewController(_ child: UIViewController, toContainerView containerView: UIView) { - addChild(child) - containerView.addSubview(child.view) - child.didMove(toParent: self) - } - deinit { LogInfo(String(format: "%@ 已释放", NSStringFromClass(self.classForCoder).components(separatedBy: ".").last!)) } diff --git a/BrokerDriver/Def.swift b/BrokerDriver/Def.swift index a2d15f3..4af840f 100644 --- a/BrokerDriver/Def.swift +++ b/BrokerDriver/Def.swift @@ -7,8 +7,12 @@ import Foundation import UIKit +import MBProgressHUD @_exported import JQTools @_exported import QMUIKit +@_exported import HandyJSON +@_exported import RxSwift + // MARK: -- Shorthand let app = UIApplication.shared.delegate as! AppDelegate @@ -58,3 +62,37 @@ let Def_NavFontColor:UIColor = .color(light: .color("#333333"), dark: .color("#333333")) let Def_backgroundColor:UIColor = .color(light: .white, dark: .white) let Def_ThemeColor:UIColor = .color(light: .color("#FED703"), dark: .color("#FED703")) + + + //提示框 +func alert(msg: String) { + let hud = MBProgressHUD.showAdded(to: screnDelegate!.window!, animated: true) + hud.mode = .text + hud.label.text = msg + // hud.backgroundColor = UIColor.RGBA(r: 228, g: 228, b: 228, a: 1) + hud.label.textColor = UIColor(hexString: "#343434") + hud.label.numberOfLines = 0 + hud.label.font = UIFont.boldSystemFont(ofSize: 14) + hud.hide(animated: true, afterDelay: 1.7) +} + + +//extension UICollectionView{ +// public func jq_setEmptyView( _ noticeStr:String? = nil,image:UIImage? = UIImage(named: "icon_empty"),foregroundColor:UIColor = UIColor.gray,clouse:((EmptyDataSetView)->Void)? = nil) { +// self.emptyDataSetView { (emptyDataSetView) in +// emptyDataSetView.titleLabelString(NSAttributedString.init(string: (noticeStr != nil) ? noticeStr! : Localized("暂无数据"), attributes: [.font:UIFont.systemFont(ofSize: 16,weight: .medium), .foregroundColor:foregroundColor as Any])) +// .image(image) +// .dataSetBackgroundColor(UIColor.white) +// .verticalOffset(-50) +// .verticalSpace(0) +// .shouldDisplay(true) +// .shouldFadeIn(true) +// .isTouchAllowed(true) +// .isScrollAllowed(true) +// .didTapContentView { +// +// } +// clouse?(emptyDataSetView) +// } +// } +//} diff --git a/BrokerDriver/Home/VC/HomePageVC.swift b/BrokerDriver/Home/VC/HomePageVC.swift index 03517eb..5a072d3 100644 --- a/BrokerDriver/Home/VC/HomePageVC.swift +++ b/BrokerDriver/Home/VC/HomePageVC.swift @@ -11,12 +11,15 @@ class HomePageVC: BaseViewController,Refreshable { - enum PageStyle { - case progress,complete + 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]() lazy private var tableView:BaseTableView = { let tableView = BaseTableView(frame: .zero, style: .plain) @@ -41,12 +44,36 @@ super.viewDidLoad() self.refreshStatusBind(to: tableView, header: { [weak self] () in - self?.refreshStatus.onNext(.endHeaderRefresh) + 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) + refreshStatus.onNext(.beingHeaderRefresh) + } -// refreshStatus.onNext(.beingHeaderRefresh) + private func getData(_ isHeader:Bool = true){ + Services.getList(type: style, pageNumber: page).subscribe(onNext: { data in + if let models = data.data{ + if isHeader{ + self.datas.removeAll() + self.page = 1 + 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 + + }.disposed(by: disposeBag) + } override func setUI() { @@ -75,6 +102,6 @@ } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 10 + return datas.count } } diff --git a/BrokerDriver/Login/VC/LoginVC.swift b/BrokerDriver/Login/VC/LoginVC.swift index bb2a08b..4d4cdbd 100644 --- a/BrokerDriver/Login/VC/LoginVC.swift +++ b/BrokerDriver/Login/VC/LoginVC.swift @@ -16,6 +16,13 @@ override func viewDidLoad() { super.viewDidLoad() + +#if DEBUG + tf_email.text = "eeee" + tf_pwd.text = "111111" + +#endif + } @IBAction func forgotAction(_ sender: UIButton) { @@ -25,16 +32,38 @@ @IBAction func loginAction(_ sender: UIButton) { - let snapView = screnDelegate?.window?.snapshotView(afterScreenUpdates: true) - let nav = BaseNavigationController(rootViewController: HomeVC()) - screnDelegate?.window?.rootViewController = nav - screnDelegate?.window?.rootViewController?.view.addSubview(snapView!) - - UIView.animate(withDuration: 1.5) { - snapView?.alpha = 0 - snapView?.transform3D = CATransform3DMakeScale(1.5, 1.5, 1.5) - } completion: { _ in - snapView?.removeFromSuperview() +#if !DEBUG + guard !tf_email.isEmpty else { + alert(msg: "Please input email");return } + + guard tf_email.text!.jq_isEmail else { + alert(msg: "Please enter the correct email");return + } + + guard !tf_pwd.text!.isEmpty else { + alert(msg: "Please enter password");return + } +#endif + + Services.companyLogin(username: tf_email.text!, password: tf_pwd.text!).subscribe(onNext: { data in + if let model = data.data{ + UserViewModel.saveUserInfo(model) + let snapView = screnDelegate?.window?.snapshotView(afterScreenUpdates: true) + let nav = BaseNavigationController(rootViewController: HomeVC()) + screnDelegate?.window?.rootViewController = nav + screnDelegate?.window?.rootViewController?.view.addSubview(snapView!) + + UIView.animate(withDuration: 1.5) { + snapView?.alpha = 0 + snapView?.transform3D = CATransform3DMakeScale(1.5, 1.5, 1.5) + } completion: { _ in + snapView?.removeFromSuperview() + UserViewModel.publishLoginSuccess() + } + } + }) { error in + + }.disposed(by: disposeBag) } } diff --git a/BrokerDriver/Models/OrderModel.swift b/BrokerDriver/Models/OrderModel.swift new file mode 100644 index 0000000..b55dd46 --- /dev/null +++ b/BrokerDriver/Models/OrderModel.swift @@ -0,0 +1,8 @@ +// +// OrderModel.swift +// BrokerDriver +// +// Created by 无故事王国 on 2023/4/26. +// + +import Foundation diff --git a/BrokerDriver/Models/UserModel.swift b/BrokerDriver/Models/UserModel.swift new file mode 100644 index 0000000..6c65292 --- /dev/null +++ b/BrokerDriver/Models/UserModel.swift @@ -0,0 +1,99 @@ + // + // UserInfoModel.swift + // BrokerDriver + // + // Created by 无故事王国 on 2023/4/26. + // + +import Foundation +import HandyJSON + +struct UserInfoModel:HandyJSON { + + var account: String = "" + var headImg:String = "" + var address: String = "" + var applicationDate: String = "" + var bonusEligibilityDate: String = "" + var carriersId: String = "" + var cdlNumber: String = "" + var companyId: String = "" + var contactNumber: String = "" + var createTime: String = "" + var dateOfBrith: String = "" + var dotCardExpirationDate: String = "" + var driverName: String = "" + var driverNumber: String = "" + var driverType: String = "" + var drivingSchool: String = "" + var groupNumber: String = "" + var hazmatExpriationDate: String = "" + var hireDate: String = "" + var id: Int = 0 + var idNumber: String = "" + var insuranceCo: String = "" + var insuranceExpirationDate: String = "" + var isCarriers: Int = 0 //2是承运商 + var lastAlcoholTestDate: String = "" + var lastDrugTestDate: String = "" + var lastRoadTestDate: String = "" + var licenseEndorsements: String = "" + var licenseEndorsementsOne: String = "" + var licenseExpirationDate: String = "" + var licenseType: String = "" + var password: String = "" + var rehirable: String = "" + var remove: Int = 0 + var sinceYear: String = "" + var status: String = "" + var statusRemark: String = "" + var terminationDate: String = "" + var token: String = "" + var twicCardExpirationDate: String = "" + var typeOfExperience: String = "" + + func save(){ + UserDefaults.standard.set(self.toJSONString() ?? "", forKey: "user_info") + UserDefaults.standard.synchronize() + } +} + + +struct UserCompanyModel:HandyJSON { + var address:String = "" + var companyName:String = "" + var contactEmail:String = "" + var contactPhone:String = "" + var scacCode:String = "" + var setUpTheTime: String = "" +} + + +struct UserWalletModel:HandyJSON{ + var allTotal: Double = 0 + var billNumber: String = "" + var list = [UserWalletDataModel]() + var paid: Double = 0 + var unpaid: Double = 0 +} + +struct UserWalletDataModel:HandyJSON{ + var dueDate: String = "" + var invoicesTime: String = "" + var money: Double = 0 + var payStatus: Int = 0 // 1是0否 + var shipmentId: String = "" +} + + +struct UserProfileModel:HandyJSON { + var address: String = "" + var contactNumber: String = "" + var dateOfBrith: String = "" + var driverEmployeeNumber: String = "" + var driverName: String = "" + var driverType: String = "" + var id: Int = 0 + var notes: String = "" + var status: String = "" +} diff --git a/BrokerDriver/Network/NetworkRequest.swift b/BrokerDriver/Network/NetworkRequest.swift new file mode 100644 index 0000000..f1d036a --- /dev/null +++ b/BrokerDriver/Network/NetworkRequest.swift @@ -0,0 +1,336 @@ +// +// NetworkRequest.swift +// HandyJSON +// +// Created by Sweet on 2018/12/25. +// Copyright © 2018 Sweet. All rights reserved. +// + +import Foundation +import SwifterSwift +import Alamofire +import MBProgressHUD + +// 假设这是服务端返回的统一定义的response格式 +struct BaseResponse<T :HandyJSON>: HandyJSON { + var sysTime: Int = 0 + var code: Int = -1 // 服务端返回码 + var data: T? = nil // 具体的data的格式和业务相关,故用泛型定义 + var msg: String = "" +} + +struct BaseData<T: HandyJSON>: HandyJSON { + var records = [T]() +} + +struct SimpleModel: HandyJSON { + +} +struct HtmlModel: HandyJSON { + var content = "" + var content1 = "" + var id = 0 + var type = 0 +} + +extension String: HandyJSON{ + +} +extension Array: HandyJSON{ + +} +extension Bool: HandyJSON{ + +} + +class ParamsAppender: NSObject { + var url: URL + var params:Dictionary = [String: Any]() + + private init(url: String){ + self.url = URL(string: url)! + + } + + func interface(url: String) -> ParamsAppender { + self.url.appendPathComponent(url) + return self + } + + func append(key: String,value: String) -> ParamsAppender { + if value.isEmpty{return self} + params += ["\(key)":"\(value)"] + return self + } + + func append(key: String,value: String?) -> ParamsAppender { +// if value?.isEmpty ?? true || value == "" { return self } + params += ["\(key)":"\(value ?? "")"] + return self + } + + func append(key: String, value: Int?) -> ParamsAppender { +// if value == nil || value == 0 { return self } + params += ["\(key)":"\(value ?? 0)"] + return self + } + func append(key: String, value: Int64) -> ParamsAppender { + params += ["\(key)":"\(value)"] + return self + } + func append(key: String, value: Double) -> ParamsAppender { + params += ["\(key)":"\(value)"] + return self + } + + func append(key: String,data: Data?) -> ParamsAppender { + if data != nil{ + params += ["\(key)": data!] + } + return self + } + + func append(key: String,url: URL) -> ParamsAppender { + params += ["\(key)":"\(url)"] + return self + } + + func append(dic: [String : Any]) -> ParamsAppender { + params += dic + return self + } + + /// 参数加密 + func done() -> Parameters { + return self.params + } + + class func build(url: String) -> ParamsAppender { + return ParamsAppender(url: url) + } + +} +class NetworkRequest { + + static let sharedSessionManager: Alamofire.Session = { + let configuration = URLSessionConfiguration.default + configuration.timeoutIntervalForRequest = 15 + return Alamofire.Session(configuration: configuration) + }() + enum NetRequestError: Error { + case Other + case URLNotFound + case DownloadFailed + } + + class func request<T: HandyJSON>(params: ParamsAppender, method: HTTPMethod, encoding: ParameterEncoding? = nil, progress: Bool = true) -> Observable<BaseResponse<T>>{ + return Observable<BaseResponse<T>>.create{ ob in + var hud: MBProgressHUD? + if progress { + hud = MBProgressHUD.showAdded(to: app.window!, animated: true) + hud?.bezelView.style = .solidColor + hud?.contentColor = .white + hud?.bezelView.backgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.8) + hud?.bezelView.color = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.8) + hud?.removeFromSuperViewOnHide = true + } + + var headers = HTTPHeaders() + if let token = UserViewModel.getUserInfo()?.token { + headers.add(name: "Authorization", value: "Bearer" + " " + token) + LogInfo("USER_token:\(token)") + } + if encoding is JSONEncoding { + headers.add(name: "Content-Type", value: "application/json;charset=UTF-8") + } + + var newEncoding: ParameterEncoding + if encoding != nil { + newEncoding = encoding! + } else { + newEncoding = method == .post ? URLEncoding.httpBody : URLEncoding.queryString + } + + sharedSessionManager.request(params.url.absoluteString, method: method, parameters:params.done(), encoding: newEncoding, headers:headers).validate().responseData{response in + LogInfo("请求地址:\(params.url)") + LogInfo("请求参数:\(params.params)") + hud?.hide(animated: true) + if response.error != nil { + LogError("\(response.error!)") +// alert(msg: "请求失败") + ob.onError(response.error!) + }else if let data = response.data,let jsonString = String(data: data, encoding: String.Encoding.utf8){ + LogInfo("返回数据:\(jsonString)") + if let next = BaseResponse<T>.deserialize(from: jsonString){ + if next.code == 200{ + ob.onNext(next) + }else { + alert(msg: next.msg) + ob.onError(NetRequestError.Other) + } + }else{ +// alert(msg: "请求失败") + ob.onError(NetRequestError.Other) + } + }else{ +// alert(msg: "请求失败") + ob.onError(NetRequestError.Other) + } + ob.onCompleted() + } + return Disposables.create{} + } + } + + class func requestData(params: ParamsAppender, method: HTTPMethod, encoding: ParameterEncoding? = nil, progress: Bool = true) -> Observable<Data>{ + return Observable<Data>.create{ ob in + var hud: MBProgressHUD? + if progress { + hud = MBProgressHUD.showAdded(to: app.window!, animated: true) + hud?.bezelView.style = .solidColor + hud?.contentColor = .white + hud?.bezelView.backgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.8) + hud?.bezelView.color = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.8) + hud?.removeFromSuperViewOnHide = true + } + + var headers = HTTPHeaders() + if let token = UserViewModel.getUserInfo()?.token { + headers.add(name: "Authorization", value: "Bearer" + " " + token) + LogInfo("USER_token:\(token)") + } + if encoding is JSONEncoding { + headers.add(name: "Content-Type", value: "application/json;charset=UTF-8") + } + + var newEncoding: ParameterEncoding + if encoding != nil { + newEncoding = encoding! + } else { + newEncoding = method == .post ? URLEncoding.httpBody : URLEncoding.queryString + } + + sharedSessionManager.request(params.url.absoluteString, method: method, parameters: params.done(), encoding: newEncoding, headers: headers).validate().responseData{response in + LogInfo("请求地址:\(params.url)") + LogInfo("请求参数:\(params.params)") + hud?.hide(animated: true) + if response.error != nil { + LogError("\(response.error!)") + ob.onError(response.error!) + }else if let data = response.data{ + LogInfo("返回数据:\(data)") + ob.onNext(data) + } + ob.onCompleted() + } + return Disposables.create{} + } + } + + /// 带code请求的 + /// - Parameters: + /// - params: <#params description#> + /// - method: <#method description#> + /// - progress: <#progress description#> + /// - Returns: <#description#> + class func requestCode<T: HandyJSON>(params: ParamsAppender,method: HTTPMethod,progress: Bool = true) -> Observable<BaseResponse<T>>{ + return Observable<BaseResponse<T>>.create{ ob in + var hud: MBProgressHUD? + if progress{ + hud = MBProgressHUD.showAdded(to: screnDelegate!.window!, animated: true) + hud?.bezelView.style = .solidColor + hud?.contentColor = .white + hud?.bezelView.backgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.8) + hud?.bezelView.color = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.8) + hud?.removeFromSuperViewOnHide = true + } + sharedSessionManager.request(params.url.absoluteString, method: method, parameters: + params.done(),encoding: URLEncoding.default).validate().responseData{response in + LogInfo("请求地址:\(params.url)") + LogInfo("请求参数:\(params.params)") + if response.error != nil { + hud?.hide(animated: true) +// alert(msg: "请求失败") + LogInfo("\(response.error!)") + ob.onError(response.error!) + }else if let data = response.data,let jsonString = String(data: data, encoding: String.Encoding.utf8){ + + hud?.hide(animated: true) + LogInfo("返回数据:\(jsonString)") + if let next = BaseResponse<T>.deserialize(from: jsonString){ + ob.onNext(next) + }else{ + hud?.hide(animated: true) +// alert(msg: "请求失败") + LogInfo("error") + } + }else{ + hud?.hide(animated: true) +// alert(msg: "请求失败") + LogInfo("Netrequest-Tag:No data") + } + ob.onCompleted() + } + return Disposables.create{} + } + } + /// 上传 + /// - Parameter params: <#params description#> + class func upload<T: HandyJSON>(params: ParamsAppender) -> Observable<BaseResponse<T>> { + return Observable<BaseResponse<T>>.create{ob in + let hud = MBProgressHUD.showAdded(to: app.window!, animated: true) + hud.bezelView.style = .solidColor + hud.contentColor = .white + hud.bezelView.backgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.8) + hud.bezelView.color = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.8) + hud.removeFromSuperViewOnHide = true + + AF.upload(multipartFormData: { data in + let p = params + LogInfo("Netrequest-Upload-Starting.") + for key in p.params{ + if let d = key.value as? Data { + LogInfo("Netrequest-Upload-Appending-Data: Length = \(d.count) bytes") + + data.append(d, withName: key.key, fileName: "\(Date().timeIntervalSince1970).png", mimeType: "image/png") + } else if let url = key.value as? URL { + LogInfo("Netrequest-Upload-Appending-Data: Url = \(url)") + data.append(url, withName: key.key) + } + } + }, to: params.url, method: .post, headers: nil) .uploadProgress(queue: .main, closure: { progress in + print("Upload Progress上传进度: \(progress.fractionCompleted)") + // progressClosure(progress.fractionCompleted) + }).responseJSON(completionHandler: { data in + print("upload finished: \(data)") + + }).response { (response) in + + hud.hide(animated: true) + switch response.result { + case .success(let dataObj): +// alert(msg: "上传成功") + let jsonString = String(data: dataObj ?? Data(), encoding: String.Encoding.utf8) + if let next = BaseResponse<T>.deserialize(from: jsonString){ + ob.onNext(next) + } + case .failure(let err): + alert(msg: "上传失败") + print("upload err: \(err)") + } + + } + return Disposables.create{ + + } + + } + } +} +extension Dictionary { + mutating func append(dict: Dictionary) { + dict.forEach { (key, value) in + self.updateValue(value, forKey: key) + } + } +} diff --git a/BrokerDriver/Network/Services.swift b/BrokerDriver/Network/Services.swift new file mode 100644 index 0000000..7241e0b --- /dev/null +++ b/BrokerDriver/Network/Services.swift @@ -0,0 +1,71 @@ +// +// Services.swift +// YixiuShop +// +// Created by Sweet on 2019/9/30. +// Copyright © 2019 jackLove. All rights reserved. +// + +import UIKit +//import RxRelay +//import RxCocoa +//import RxDataSources +import RxSwift + +//外网测试环境 +let All_Url = "http://192.168.110.22:8040" +//内网测试环境 +//let All_Url = "" + + +class Services: NSObject { + + static let pageSize: Int = 20 + + class func companyLogin(username:String,password:String)->Observable<BaseResponse<UserInfoModel>>{ + let params = ParamsAppender.build(url: All_Url) + .interface(url: "/gunsApi/companyLogin") + .append(key: "username", value: username) + .append(key: "password", value: password) + return NetworkRequest.requestCode(params: params, method: .post, progress: true) + } + + class func getCompanyInfo()->Observable<BaseResponse<UserCompanyModel>>{ + let params = ParamsAppender.build(url: All_Url) + .interface(url: "/api/me/getMeCompanyInfo") + .append(key: "id", value: UserViewModel.getUserInfo()!.id) + return NetworkRequest.request(params: params, method: .get, progress: false) + } + + class func getMeWallet()->Observable<BaseResponse<UserWalletModel>>{ + let params = ParamsAppender.build(url: All_Url) + .interface(url: "/api/me/getMeWallet") + .append(key: "id", value: UserViewModel.getUserInfo()!.id) + return NetworkRequest.request(params: params, method: .get, progress: false) + } + + class func getMeInfo()->Observable<BaseResponse<UserProfileModel>>{ + let params = ParamsAppender.build(url: All_Url) + .interface(url: "/api/me/getMeInfo") + .append(key: "id", value: UserViewModel.getUserInfo()!.id) + return NetworkRequest.request(params: params, method: .get, progress: false) + } + + + /// - Parameters: + /// - type: 1: in progress 2:completed + class func getList(type:HomePageVC.PageStyle,pageNumber:Int,containerNo:String? = nil,date:String? = nil)->Observable<BaseResponse<[OrderModel]>>{ + let params = ParamsAppender.build(url: All_Url) + .interface(url: "/api/index/index") + .append(key: "containerNo", value: containerNo) + .append(key: "date", value: date) + .append(key: "pageNumber", value: pageNumber) + .append(key: "pageSize", value: 20) + .append(key: "type", value:type.rawValue) + .append(key: "id", value: UserViewModel.getUserInfo()!.id) + return NetworkRequest.request(params: params, method: .get, progress: false) + } + + + +} diff --git a/BrokerDriver/Profile/TCell/WalletTCell.swift b/BrokerDriver/Profile/TCell/WalletTCell.swift index e0ad641..9723355 100644 --- a/BrokerDriver/Profile/TCell/WalletTCell.swift +++ b/BrokerDriver/Profile/TCell/WalletTCell.swift @@ -10,6 +10,29 @@ class WalletTCell: UITableViewCell { @IBOutlet weak var view_container: UIView! + @IBOutlet weak var label_shipmentsID: UILabel! + @IBOutlet weak var label_price: UILabel! + @IBOutlet weak var btn_state: UIButton! + @IBOutlet weak var label_invoicesTime: UILabel! + @IBOutlet weak var label_dueDate: UILabel! + + var model:UserWalletDataModel!{ + didSet{ + label_dueDate.text = String(format: "Due date:%@", model.dueDate) + label_invoicesTime.text = String(format: "Invoices time:%@", model.invoicesTime) + label_shipmentsID.text = String(format: "Shipments ID:%@", model.shipmentId) + label_price.text = model.money.currency() + if model.payStatus == 0{ + btn_state.setTitle("Unpaid", for: .normal) + btn_state.backgroundColor = UIColor(hexStr: "#C70B0B") + }else{ + btn_state.setTitle("Paid", for: .normal) + btn_state.backgroundColor = UIColor(hexStr: "#A4A4A4") + } + } + } + + override func awakeFromNib() { super.awakeFromNib() selectionStyle = .none diff --git a/BrokerDriver/Profile/TCell/WalletTCell.xib b/BrokerDriver/Profile/TCell/WalletTCell.xib index 3937576..bd04bd4 100644 --- a/BrokerDriver/Profile/TCell/WalletTCell.xib +++ b/BrokerDriver/Profile/TCell/WalletTCell.xib @@ -112,6 +112,11 @@ </tableViewCellContentView> <viewLayoutGuide key="safeArea" id="njF-e1-oar"/> <connections> + <outlet property="btn_state" destination="BOE-P3-HcU" id="Zcu-CS-1Ug"/> + <outlet property="label_dueDate" destination="fcC-CD-liB" id="Lbm-tg-QEJ"/> + <outlet property="label_invoicesTime" destination="oAm-kA-bZi" id="fDo-Iv-jsb"/> + <outlet property="label_price" destination="WoI-PJ-0sK" id="Zbh-cX-gl5"/> + <outlet property="label_shipmentsID" destination="yFl-NK-kEv" id="06U-ze-8ZE"/> <outlet property="view_container" destination="tvd-re-KSz" id="QWb-b2-jdR"/> </connections> <point key="canvasLocation" x="131.29770992366412" y="49.295774647887328"/> diff --git a/BrokerDriver/Profile/VC/CompanyVC.swift b/BrokerDriver/Profile/VC/CompanyVC.swift index d5d9cb9..dafbcf3 100644 --- a/BrokerDriver/Profile/VC/CompanyVC.swift +++ b/BrokerDriver/Profile/VC/CompanyVC.swift @@ -9,9 +9,30 @@ class CompanyVC: BaseViewController { + @IBOutlet weak var label_companyName: UILabel! + @IBOutlet weak var label_code: UILabel! + @IBOutlet weak var label_address: UILabel! + @IBOutlet weak var label_contactPhone: UILabel! + @IBOutlet weak var label_contactEmail: UILabel! + @IBOutlet weak var label_setupTime: UILabel! + + override func viewDidLoad() { super.viewDidLoad() title = "Company Infomation" view.backgroundColor = UIColor(hexStr: "#F9FAFF") + + Services.getCompanyInfo().subscribe(onNext: {[weak self] data in + if let model = data.data{ + self?.label_companyName.text = model.companyName + self?.label_code.text = model.scacCode + self?.label_address.text = model.address + self?.label_contactPhone.text = model.contactPhone + self?.label_contactEmail.text = model.contactEmail + self?.label_setupTime.text = model.setUpTheTime + } + }) { error in + + }.disposed(by: disposeBag) } } diff --git a/BrokerDriver/Profile/VC/CompanyVC.xib b/BrokerDriver/Profile/VC/CompanyVC.xib index cf988f7..5367b03 100644 --- a/BrokerDriver/Profile/VC/CompanyVC.xib +++ b/BrokerDriver/Profile/VC/CompanyVC.xib @@ -11,6 +11,12 @@ <objects> <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CompanyVC" customModule="BrokerDriver" customModuleProvider="target"> <connections> + <outlet property="label_address" destination="rcc-2G-rhV" id="972-Qs-pDO"/> + <outlet property="label_code" destination="27o-FI-26t" id="K8E-Ek-VW0"/> + <outlet property="label_companyName" destination="DhS-px-eqI" id="Sqj-vd-Xyl"/> + <outlet property="label_contactEmail" destination="d2Y-Go-fPi" id="1Vn-PJ-Ytj"/> + <outlet property="label_contactPhone" destination="Gls-pb-IPA" id="Yqc-KZ-y7e"/> + <outlet property="label_setupTime" destination="e4s-Pq-mjz" id="wY2-W3-Imx"/> <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> </connections> </placeholder> @@ -59,7 +65,7 @@ <color key="textColor" red="0.1803921568627451" green="0.1803921568627451" blue="0.1803921568627451" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="UTL lnc" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DhS-px-eqI"> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DhS-px-eqI"> <rect key="frame" x="171.66666666666663" y="0.0" width="171.33333333333337" height="14.333333333333334"/> <fontDescription key="fontDescription" type="boldSystem" pointSize="12"/> <color key="textColor" red="0.18039215689999999" green="0.18039215689999999" blue="0.18039215689999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> @@ -76,7 +82,7 @@ <color key="textColor" red="0.18039215689999999" green="0.18039215689999999" blue="0.18039215689999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="3900252" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="27o-FI-26t"> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="27o-FI-26t"> <rect key="frame" x="171.66666666666663" y="0.0" width="171.33333333333337" height="14.333333333333334"/> <fontDescription key="fontDescription" type="boldSystem" pointSize="12"/> <color key="textColor" red="0.18039215689999999" green="0.18039215689999999" blue="0.18039215689999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> @@ -93,7 +99,7 @@ <color key="textColor" red="0.18039215689999999" green="0.18039215689999999" blue="0.18039215689999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Ontario,CA 91761" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rcc-2G-rhV"> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rcc-2G-rhV"> <rect key="frame" x="171.66666666666663" y="0.0" width="171.33333333333337" height="14.333333333333334"/> <fontDescription key="fontDescription" type="boldSystem" pointSize="12"/> <color key="textColor" red="0.18039215689999999" green="0.18039215689999999" blue="0.18039215689999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> @@ -110,7 +116,7 @@ <color key="textColor" red="0.18039215689999999" green="0.18039215689999999" blue="0.18039215689999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="+1(626)592-8659" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Gls-pb-IPA"> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Gls-pb-IPA"> <rect key="frame" x="171.66666666666663" y="0.0" width="171.33333333333337" height="14.333333333333334"/> <fontDescription key="fontDescription" type="boldSystem" pointSize="12"/> <color key="textColor" red="0.18039215689999999" green="0.18039215689999999" blue="0.18039215689999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> @@ -127,7 +133,7 @@ <color key="textColor" red="0.18039215689999999" green="0.18039215689999999" blue="0.18039215689999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="info@utlinternationa.com" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="d2Y-Go-fPi"> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="d2Y-Go-fPi"> <rect key="frame" x="171.66666666666663" y="0.0" width="171.33333333333337" height="14.333333333333334"/> <fontDescription key="fontDescription" type="boldSystem" pointSize="12"/> <color key="textColor" red="0.18039215689999999" green="0.18039215689999999" blue="0.18039215689999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> @@ -144,7 +150,7 @@ <color key="textColor" red="0.18039215689999999" green="0.18039215689999999" blue="0.18039215689999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12/5/2022" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="e4s-Pq-mjz"> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="e4s-Pq-mjz"> <rect key="frame" x="171.66666666666663" y="0.0" width="171.33333333333337" height="14.333333333333334"/> <fontDescription key="fontDescription" type="boldSystem" pointSize="12"/> <color key="textColor" red="0.18039215689999999" green="0.18039215689999999" blue="0.18039215689999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> diff --git a/BrokerDriver/Profile/VC/PersonalCenterVC.swift b/BrokerDriver/Profile/VC/PersonalCenterVC.swift index 3543dc0..6bd2e69 100644 --- a/BrokerDriver/Profile/VC/PersonalCenterVC.swift +++ b/BrokerDriver/Profile/VC/PersonalCenterVC.swift @@ -9,9 +9,21 @@ class PersonalCenterVC: BaseViewController { + @IBOutlet weak var userProileImg: UIImageView! + @IBOutlet weak var label_name: UILabel! + @IBOutlet weak var label_email: UILabel! + @IBOutlet weak var view_wallet: TapButton! + override func viewDidLoad() { super.viewDidLoad() title = "Personal Center" + if let userModel = UserViewModel.getUserInfo(){ + label_name.text = userModel.driverName + label_email.text = userModel.account + userProileImg.jq_sdimage(url: userModel.headImg, placeholderImage: UIImage(named: "userdefault")) + + view_wallet.isHidden = userModel.isCarriers != 2 + } } @IBAction func profileAction(_ sender: TapButton) { @@ -28,4 +40,14 @@ let vc = CompanyVC() push(vc: vc) } + + @IBAction func logOutAction(_ sender: UIButton) { + showAlert(title: "Would you like to log out?", message: nil, buttonTitles: ["YES","NO"], highlightedButtonIndex: 0) { index in + if index == 0{ + let nav = BaseNavigationController(rootViewController: LoginVC()) + UserViewModel.clearUserInfo() + screnDelegate?.window?.rootViewController = nav + } + } + } } diff --git a/BrokerDriver/Profile/VC/PersonalCenterVC.xib b/BrokerDriver/Profile/VC/PersonalCenterVC.xib index c4d2316..8c2e605 100644 --- a/BrokerDriver/Profile/VC/PersonalCenterVC.xib +++ b/BrokerDriver/Profile/VC/PersonalCenterVC.xib @@ -11,7 +11,11 @@ <objects> <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="PersonalCenterVC" customModule="BrokerDriver" customModuleProvider="target"> <connections> + <outlet property="label_email" destination="tUH-9Q-ush" id="bZA-CV-sF5"/> + <outlet property="label_name" destination="r6A-Md-BJ9" id="JOd-kb-JqH"/> + <outlet property="userProileImg" destination="4d3-jR-hXM" id="WcA-oK-aTc"/> <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> + <outlet property="view_wallet" destination="kgh-Wr-bnp" id="GyS-9e-G1O"/> </connections> </placeholder> <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> @@ -167,6 +171,9 @@ <state key="normal" title="Log out"> <color key="titleColor" red="0.92941176470588238" green="0.062745098039215685" blue="0.062745098039215685" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> </state> + <connections> + <action selector="logOutAction:" destination="-1" eventType="touchUpInside" id="fzt-FV-Kim"/> + </connections> </button> </subviews> <color key="backgroundColor" systemColor="systemBackgroundColor"/> diff --git a/BrokerDriver/Profile/VC/PersonalDataVC.swift b/BrokerDriver/Profile/VC/PersonalDataVC.swift index 789bcc3..a0b31ef 100644 --- a/BrokerDriver/Profile/VC/PersonalDataVC.swift +++ b/BrokerDriver/Profile/VC/PersonalDataVC.swift @@ -9,9 +9,32 @@ class PersonalDataVC: BaseViewController { + @IBOutlet weak var label_drivername: UILabel! + @IBOutlet weak var label_driverType: UILabel! + @IBOutlet weak var label_contactNumber: UILabel! + @IBOutlet weak var label_status: UILabel! + @IBOutlet weak var label_number: UILabel! + @IBOutlet weak var label_dateOfBirth: UILabel! + @IBOutlet weak var label_address: UILabel! + @IBOutlet weak var label_note: UILabel! + + override func viewDidLoad() { super.viewDidLoad() title = "Personal data" + + Services.getMeInfo().subscribe(onNext: {[weak self] data in + if let model = data.data{ + self?.label_drivername.text = model.driverName + self?.label_driverType.text = model.driverType + self?.label_contactNumber.text = model.contactNumber + self?.label_status.text = model.status + self?.label_number.text = model.contactNumber + self?.label_dateOfBirth.text = model.dateOfBrith + self?.label_address.text = model.address + self?.label_note.text = model.notes + } + }).disposed(by: disposeBag) } diff --git a/BrokerDriver/Profile/VC/PersonalDataVC.xib b/BrokerDriver/Profile/VC/PersonalDataVC.xib index 9bf7cdf..b8d717d 100644 --- a/BrokerDriver/Profile/VC/PersonalDataVC.xib +++ b/BrokerDriver/Profile/VC/PersonalDataVC.xib @@ -11,6 +11,14 @@ <objects> <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="PersonalDataVC" customModule="BrokerDriver" customModuleProvider="target"> <connections> + <outlet property="label_address" destination="2Nh-Ad-bVV" id="hgg-i0-4SP"/> + <outlet property="label_contactNumber" destination="yMs-ZR-EuU" id="OJy-aw-A2b"/> + <outlet property="label_dateOfBirth" destination="x2T-Hc-JgV" id="vxG-ad-JDf"/> + <outlet property="label_driverType" destination="gbv-Zx-Mxl" id="rbQ-Me-hVQ"/> + <outlet property="label_drivername" destination="0xZ-TW-Qu9" id="YGl-Gx-VlC"/> + <outlet property="label_note" destination="qfw-fT-Xkf" id="RRz-eE-2Lp"/> + <outlet property="label_number" destination="vZT-6w-qSb" id="SXJ-A5-wF8"/> + <outlet property="label_status" destination="H0O-Xz-ZaL" id="Aoj-Og-Io2"/> <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> </connections> </placeholder> @@ -20,222 +28,342 @@ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="ptt-Vu-e1w"> - <rect key="frame" x="0.0" y="59" width="393" height="400"/> + <rect key="frame" x="0.0" y="59" width="393" height="584"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xDk-8V-LPQ"> - <rect key="frame" x="0.0" y="0.0" width="393" height="50"/> + <rect key="frame" x="0.0" y="0.0" width="393" height="73"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RUB-1Y-Cfz"> - <rect key="frame" x="15" y="49" width="363" height="0.6666666666666643"/> + <rect key="frame" x="15" y="72" width="363" height="0.6666666666666714"/> <color key="backgroundColor" red="0.84705882352941175" green="0.84705882352941175" blue="0.84705882352941175" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> <constraint firstAttribute="height" constant="0.5" id="R8a-PW-Z2f"/> </constraints> </view> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Driver Name" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ijA-k8-Dln"> - <rect key="frame" x="15" y="16.666666666666671" width="80.333333333333329" height="17"/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> + <rect key="frame" x="15" y="16" width="85.666666666666671" height="17"/> + <constraints> + <constraint firstAttribute="height" constant="17" id="xaw-y2-0i9"/> + </constraints> + <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/> <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0xZ-TW-Qu9"> + <rect key="frame" x="15" y="44" width="363" height="20"/> + <constraints> + <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="20" id="AjI-tT-u1I"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.81000000000000005" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> </subviews> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> - <constraint firstItem="ijA-k8-Dln" firstAttribute="centerY" secondItem="xDk-8V-LPQ" secondAttribute="centerY" id="0k4-J5-rpt"/> <constraint firstAttribute="trailing" secondItem="RUB-1Y-Cfz" secondAttribute="trailing" constant="15" id="7pv-LD-bl6"/> - <constraint firstAttribute="height" constant="50" id="800-ts-vWJ"/> + <constraint firstItem="0xZ-TW-Qu9" firstAttribute="top" secondItem="ijA-k8-Dln" secondAttribute="bottom" constant="11" id="8bs-oa-DeD"/> + <constraint firstItem="ijA-k8-Dln" firstAttribute="top" secondItem="xDk-8V-LPQ" secondAttribute="top" constant="16" id="EHI-qj-tHD"/> + <constraint firstItem="0xZ-TW-Qu9" firstAttribute="leading" secondItem="xDk-8V-LPQ" secondAttribute="leading" constant="15" id="LCl-d4-POr"/> <constraint firstAttribute="bottom" secondItem="RUB-1Y-Cfz" secondAttribute="bottom" constant="0.5" id="Uuz-3x-YVu"/> <constraint firstItem="RUB-1Y-Cfz" firstAttribute="leading" secondItem="xDk-8V-LPQ" secondAttribute="leading" constant="15" id="Wna-6x-uGY"/> + <constraint firstItem="RUB-1Y-Cfz" firstAttribute="top" secondItem="0xZ-TW-Qu9" secondAttribute="bottom" constant="8" id="chB-aw-OjX"/> + <constraint firstAttribute="trailing" secondItem="0xZ-TW-Qu9" secondAttribute="trailing" constant="15" id="g4M-wt-QxS"/> <constraint firstItem="ijA-k8-Dln" firstAttribute="leading" secondItem="xDk-8V-LPQ" secondAttribute="leading" constant="15" id="rkd-O8-ten"/> </constraints> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wcF-Nl-5Sb"> - <rect key="frame" x="0.0" y="50" width="393" height="50"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="m7M-i2-gEF"> + <rect key="frame" x="0.0" y="73" width="393" height="73"/> <subviews> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gEQ-lL-abB"> - <rect key="frame" x="15" y="49" width="363" height="0.6666666666666643"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZJf-d8-tNq"> + <rect key="frame" x="15" y="72" width="363" height="0.6666666666666714"/> <color key="backgroundColor" red="0.84705882349999995" green="0.84705882349999995" blue="0.84705882349999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> - <constraint firstAttribute="height" constant="0.5" id="saT-SX-fqb"/> + <constraint firstAttribute="height" constant="0.5" id="GVE-Ql-bpG"/> </constraints> </view> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Driver Type" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qR3-Gu-oZk"> - <rect key="frame" x="15" y="16.666666666666671" width="74.333333333333329" height="17"/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Driver Type" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Sbw-xZ-Q7K"> + <rect key="frame" x="15" y="16" width="79.666666666666671" height="17"/> + <constraints> + <constraint firstAttribute="height" constant="17" id="Jpf-rS-hGk"/> + </constraints> + <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/> <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gbv-Zx-Mxl"> + <rect key="frame" x="15" y="44" width="363" height="20"/> + <constraints> + <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="20" id="uRm-bw-5hr"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.81000000000000005" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> </subviews> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> - <constraint firstItem="gEQ-lL-abB" firstAttribute="leading" secondItem="wcF-Nl-5Sb" secondAttribute="leading" constant="15" id="60d-n5-kkw"/> - <constraint firstItem="qR3-Gu-oZk" firstAttribute="leading" secondItem="wcF-Nl-5Sb" secondAttribute="leading" constant="15" id="8hW-xK-AYm"/> - <constraint firstAttribute="trailing" secondItem="gEQ-lL-abB" secondAttribute="trailing" constant="15" id="9ki-wJ-gPG"/> - <constraint firstAttribute="height" constant="50" id="Ax4-Zn-qpB"/> - <constraint firstAttribute="bottom" secondItem="gEQ-lL-abB" secondAttribute="bottom" constant="0.5" id="UFo-AY-Sgi"/> - <constraint firstItem="qR3-Gu-oZk" firstAttribute="centerY" secondItem="wcF-Nl-5Sb" secondAttribute="centerY" id="wGL-kO-qVN"/> + <constraint firstAttribute="trailing" secondItem="ZJf-d8-tNq" secondAttribute="trailing" constant="15" id="6ml-FB-xu8"/> + <constraint firstItem="Sbw-xZ-Q7K" firstAttribute="top" secondItem="m7M-i2-gEF" secondAttribute="top" constant="16" id="7Ge-y3-0mg"/> + <constraint firstItem="gbv-Zx-Mxl" firstAttribute="top" secondItem="Sbw-xZ-Q7K" secondAttribute="bottom" constant="11" id="Hir-ZF-enN"/> + <constraint firstItem="ZJf-d8-tNq" firstAttribute="leading" secondItem="m7M-i2-gEF" secondAttribute="leading" constant="15" id="T13-b6-Cfm"/> + <constraint firstAttribute="trailing" secondItem="gbv-Zx-Mxl" secondAttribute="trailing" constant="15" id="TSn-ll-PSa"/> + <constraint firstAttribute="bottom" secondItem="ZJf-d8-tNq" secondAttribute="bottom" constant="0.5" id="gO5-oQ-yyc"/> + <constraint firstItem="gbv-Zx-Mxl" firstAttribute="leading" secondItem="m7M-i2-gEF" secondAttribute="leading" constant="15" id="oGk-fK-3ZT"/> + <constraint firstItem="Sbw-xZ-Q7K" firstAttribute="leading" secondItem="m7M-i2-gEF" secondAttribute="leading" constant="15" id="tgm-62-U4D"/> + <constraint firstItem="ZJf-d8-tNq" firstAttribute="top" secondItem="gbv-Zx-Mxl" secondAttribute="bottom" constant="8" id="y4X-MA-niL"/> </constraints> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Cer-dH-nqO"> - <rect key="frame" x="0.0" y="100" width="393" height="50"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QHj-qB-d7O"> + <rect key="frame" x="0.0" y="146" width="393" height="73"/> <subviews> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="sR1-r0-W6s"> - <rect key="frame" x="15" y="49" width="363" height="0.6666666666666643"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6tC-lo-h9a"> + <rect key="frame" x="15" y="72" width="363" height="0.6666666666666714"/> <color key="backgroundColor" red="0.84705882349999995" green="0.84705882349999995" blue="0.84705882349999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> - <constraint firstAttribute="height" constant="0.5" id="wNS-cw-1Ku"/> + <constraint firstAttribute="height" constant="0.5" id="G3F-Om-JXV"/> </constraints> </view> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Contact Number" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xUZ-63-3oV"> - <rect key="frame" x="15" y="16.666666666666657" width="107" height="17"/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Contact Number" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GoM-v5-93d"> + <rect key="frame" x="15.000000000000007" y="16" width="113.66666666666669" height="17"/> + <constraints> + <constraint firstAttribute="height" constant="17" id="n5d-2r-kGe"/> + </constraints> + <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/> <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yMs-ZR-EuU"> + <rect key="frame" x="15" y="44" width="363" height="20"/> + <constraints> + <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="20" id="6Xr-A9-4MT"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.81000000000000005" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> </subviews> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> - <constraint firstItem="sR1-r0-W6s" firstAttribute="leading" secondItem="Cer-dH-nqO" secondAttribute="leading" constant="15" id="0Jp-ZQ-mTd"/> - <constraint firstItem="xUZ-63-3oV" firstAttribute="leading" secondItem="Cer-dH-nqO" secondAttribute="leading" constant="15" id="3YP-hf-GFK"/> - <constraint firstAttribute="height" constant="50" id="CtH-be-aTC"/> - <constraint firstAttribute="trailing" secondItem="sR1-r0-W6s" secondAttribute="trailing" constant="15" id="Nls-M4-uEq"/> - <constraint firstItem="xUZ-63-3oV" firstAttribute="centerY" secondItem="Cer-dH-nqO" secondAttribute="centerY" id="Y1M-yG-TVH"/> - <constraint firstAttribute="bottom" secondItem="sR1-r0-W6s" secondAttribute="bottom" constant="0.5" id="hVg-ED-fgT"/> + <constraint firstItem="yMs-ZR-EuU" firstAttribute="leading" secondItem="QHj-qB-d7O" secondAttribute="leading" constant="15" id="0vZ-g3-5Jd"/> + <constraint firstItem="6tC-lo-h9a" firstAttribute="leading" secondItem="QHj-qB-d7O" secondAttribute="leading" constant="15" id="4Z3-T5-06A"/> + <constraint firstAttribute="bottom" secondItem="6tC-lo-h9a" secondAttribute="bottom" constant="0.5" id="9BL-c1-6Jt"/> + <constraint firstItem="yMs-ZR-EuU" firstAttribute="top" secondItem="GoM-v5-93d" secondAttribute="bottom" constant="11" id="Ppr-Jr-RU1"/> + <constraint firstItem="6tC-lo-h9a" firstAttribute="top" secondItem="yMs-ZR-EuU" secondAttribute="bottom" constant="8" id="RAJ-v4-S2h"/> + <constraint firstItem="GoM-v5-93d" firstAttribute="top" secondItem="QHj-qB-d7O" secondAttribute="top" constant="16" id="XRN-rG-dW6"/> + <constraint firstAttribute="trailing" secondItem="yMs-ZR-EuU" secondAttribute="trailing" constant="15" id="XTq-hw-po0"/> + <constraint firstAttribute="trailing" secondItem="6tC-lo-h9a" secondAttribute="trailing" constant="15" id="f2g-T4-0Ah"/> + <constraint firstItem="GoM-v5-93d" firstAttribute="leading" secondItem="QHj-qB-d7O" secondAttribute="leading" constant="15" id="gWe-NJ-pV1"/> </constraints> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mLS-cf-mpv"> - <rect key="frame" x="0.0" y="150" width="393" height="50"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3nM-OC-kfM"> + <rect key="frame" x="0.0" y="219" width="393" height="73"/> <subviews> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mQw-dn-Pqk"> - <rect key="frame" x="15" y="49" width="363" height="0.6666666666666643"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qMb-Hd-Qk8"> + <rect key="frame" x="15" y="72" width="363" height="0.6666666666666714"/> <color key="backgroundColor" red="0.84705882349999995" green="0.84705882349999995" blue="0.84705882349999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> - <constraint firstAttribute="height" constant="0.5" id="TZp-sg-YjH"/> + <constraint firstAttribute="height" constant="0.5" id="kFg-ic-s69"/> </constraints> </view> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Status" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TDW-Rf-JRc"> - <rect key="frame" x="14.999999999999996" y="16.666666666666657" width="41.666666666666657" height="17"/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Status" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ACI-RW-DN3"> + <rect key="frame" x="15.000000000000004" y="16" width="45.333333333333343" height="17"/> + <constraints> + <constraint firstAttribute="height" constant="17" id="RYH-ca-BeS"/> + </constraints> + <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/> <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="H0O-Xz-ZaL"> + <rect key="frame" x="15" y="44" width="363" height="20"/> + <constraints> + <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="20" id="3zg-tb-2un"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.81000000000000005" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> </subviews> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> - <constraint firstAttribute="height" constant="50" id="0rY-YY-FQv"/> - <constraint firstAttribute="trailing" secondItem="mQw-dn-Pqk" secondAttribute="trailing" constant="15" id="5a5-V0-eaF"/> - <constraint firstItem="TDW-Rf-JRc" firstAttribute="centerY" secondItem="mLS-cf-mpv" secondAttribute="centerY" id="B95-fX-2in"/> - <constraint firstItem="TDW-Rf-JRc" firstAttribute="leading" secondItem="mLS-cf-mpv" secondAttribute="leading" constant="15" id="IVa-KN-u7b"/> - <constraint firstItem="mQw-dn-Pqk" firstAttribute="leading" secondItem="mLS-cf-mpv" secondAttribute="leading" constant="15" id="Sdj-DT-Bux"/> - <constraint firstAttribute="bottom" secondItem="mQw-dn-Pqk" secondAttribute="bottom" constant="0.5" id="bUT-Hd-JZz"/> + <constraint firstAttribute="bottom" secondItem="qMb-Hd-Qk8" secondAttribute="bottom" constant="0.5" id="60T-We-8qF"/> + <constraint firstItem="qMb-Hd-Qk8" firstAttribute="leading" secondItem="3nM-OC-kfM" secondAttribute="leading" constant="15" id="AiM-nf-8jy"/> + <constraint firstItem="H0O-Xz-ZaL" firstAttribute="top" secondItem="ACI-RW-DN3" secondAttribute="bottom" constant="11" id="GmZ-ul-kbi"/> + <constraint firstItem="ACI-RW-DN3" firstAttribute="leading" secondItem="3nM-OC-kfM" secondAttribute="leading" constant="15" id="RDf-yf-JWe"/> + <constraint firstItem="H0O-Xz-ZaL" firstAttribute="leading" secondItem="3nM-OC-kfM" secondAttribute="leading" constant="15" id="UBZ-CM-qll"/> + <constraint firstItem="ACI-RW-DN3" firstAttribute="top" secondItem="3nM-OC-kfM" secondAttribute="top" constant="16" id="WC0-9g-fQM"/> + <constraint firstAttribute="trailing" secondItem="qMb-Hd-Qk8" secondAttribute="trailing" constant="15" id="XWJ-lg-eqV"/> + <constraint firstAttribute="trailing" secondItem="H0O-Xz-ZaL" secondAttribute="trailing" constant="15" id="gmV-Pi-RQV"/> + <constraint firstItem="qMb-Hd-Qk8" firstAttribute="top" secondItem="H0O-Xz-ZaL" secondAttribute="bottom" constant="8" id="mBD-yh-aeX"/> </constraints> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8L0-Qp-KaE"> - <rect key="frame" x="0.0" y="200" width="393" height="50"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kod-WM-D7m"> + <rect key="frame" x="0.0" y="292" width="393" height="73"/> <subviews> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="XUb-1Y-JfG"> - <rect key="frame" x="15" y="49" width="363" height="0.6666666666666643"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="AXD-vO-d4v"> + <rect key="frame" x="15" y="72" width="363" height="0.6666666666666714"/> <color key="backgroundColor" red="0.84705882349999995" green="0.84705882349999995" blue="0.84705882349999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> - <constraint firstAttribute="height" constant="0.5" id="7KA-HU-h4N"/> + <constraint firstAttribute="height" constant="0.5" id="7Gp-MO-AkW"/> </constraints> </view> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Driver/Employee Number" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="e7r-7m-tyH"> - <rect key="frame" x="15" y="16.666666666666686" width="160.66666666666666" height="17"/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Driver/Employee Number" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zkn-UJ-msx"> + <rect key="frame" x="15" y="16" width="172.33333333333334" height="17"/> + <constraints> + <constraint firstAttribute="height" constant="17" id="EvF-R0-QwB"/> + </constraints> + <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/> <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vZT-6w-qSb"> + <rect key="frame" x="15" y="44" width="363" height="20"/> + <constraints> + <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="20" id="f0R-V8-6F3"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.81000000000000005" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> </subviews> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> - <constraint firstItem="e7r-7m-tyH" firstAttribute="leading" secondItem="8L0-Qp-KaE" secondAttribute="leading" constant="15" id="8Bi-q9-l2y"/> - <constraint firstAttribute="bottom" secondItem="XUb-1Y-JfG" secondAttribute="bottom" constant="0.5" id="LHc-jV-OCp"/> - <constraint firstItem="XUb-1Y-JfG" firstAttribute="leading" secondItem="8L0-Qp-KaE" secondAttribute="leading" constant="15" id="Oho-Cl-E1X"/> - <constraint firstItem="e7r-7m-tyH" firstAttribute="centerY" secondItem="8L0-Qp-KaE" secondAttribute="centerY" id="fEy-q9-Cl3"/> - <constraint firstAttribute="trailing" secondItem="XUb-1Y-JfG" secondAttribute="trailing" constant="15" id="tAo-6x-Vhy"/> - <constraint firstAttribute="height" constant="50" id="v8k-pT-OaQ"/> + <constraint firstItem="vZT-6w-qSb" firstAttribute="leading" secondItem="kod-WM-D7m" secondAttribute="leading" constant="15" id="HCp-9m-dsU"/> + <constraint firstItem="vZT-6w-qSb" firstAttribute="top" secondItem="zkn-UJ-msx" secondAttribute="bottom" constant="11" id="Jco-Ga-jdx"/> + <constraint firstAttribute="trailing" secondItem="AXD-vO-d4v" secondAttribute="trailing" constant="15" id="LHg-h0-HR9"/> + <constraint firstItem="zkn-UJ-msx" firstAttribute="top" secondItem="kod-WM-D7m" secondAttribute="top" constant="16" id="Mkq-sL-pfO"/> + <constraint firstItem="AXD-vO-d4v" firstAttribute="leading" secondItem="kod-WM-D7m" secondAttribute="leading" constant="15" id="P7b-yU-lxB"/> + <constraint firstItem="AXD-vO-d4v" firstAttribute="top" secondItem="vZT-6w-qSb" secondAttribute="bottom" constant="8" id="SfZ-f8-9e0"/> + <constraint firstAttribute="trailing" secondItem="vZT-6w-qSb" secondAttribute="trailing" constant="15" id="kxb-os-Cwv"/> + <constraint firstAttribute="bottom" secondItem="AXD-vO-d4v" secondAttribute="bottom" constant="0.5" id="qvc-hA-hIQ"/> + <constraint firstItem="zkn-UJ-msx" firstAttribute="leading" secondItem="kod-WM-D7m" secondAttribute="leading" constant="15" id="zxf-WI-tnr"/> </constraints> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="AMP-yD-a3f"> - <rect key="frame" x="0.0" y="250" width="393" height="50"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="M9d-ax-pBh"> + <rect key="frame" x="0.0" y="365" width="393" height="73"/> <subviews> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="g3o-tK-9KE"> - <rect key="frame" x="15" y="49" width="363" height="0.6666666666666643"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hQb-kd-0mJ"> + <rect key="frame" x="15" y="72" width="363" height="0.6666666666666714"/> <color key="backgroundColor" red="0.84705882349999995" green="0.84705882349999995" blue="0.84705882349999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> - <constraint firstAttribute="height" constant="0.5" id="hzg-uw-Z8X"/> + <constraint firstAttribute="height" constant="0.5" id="oDK-UG-9LZ"/> </constraints> </view> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Date of Birth" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zsK-9o-M2E"> - <rect key="frame" x="15" y="16.666666666666686" width="81.666666666666671" height="17"/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Date of Birth" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tvO-l4-eOf"> + <rect key="frame" x="15" y="16" width="87.333333333333329" height="17"/> + <constraints> + <constraint firstAttribute="height" constant="17" id="R8l-tr-uvZ"/> + </constraints> + <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/> <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="x2T-Hc-JgV"> + <rect key="frame" x="15" y="44" width="363" height="20"/> + <constraints> + <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="20" id="2mr-SB-9HM"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.81000000000000005" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> </subviews> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> - <constraint firstAttribute="height" constant="50" id="0Tu-U3-whj"/> - <constraint firstItem="g3o-tK-9KE" firstAttribute="leading" secondItem="AMP-yD-a3f" secondAttribute="leading" constant="15" id="74Z-d5-VnS"/> - <constraint firstAttribute="trailing" secondItem="g3o-tK-9KE" secondAttribute="trailing" constant="15" id="D2R-LM-QF3"/> - <constraint firstAttribute="bottom" secondItem="g3o-tK-9KE" secondAttribute="bottom" constant="0.5" id="Leb-V7-6l1"/> - <constraint firstItem="zsK-9o-M2E" firstAttribute="centerY" secondItem="AMP-yD-a3f" secondAttribute="centerY" id="lIq-bM-840"/> - <constraint firstItem="zsK-9o-M2E" firstAttribute="leading" secondItem="AMP-yD-a3f" secondAttribute="leading" constant="15" id="wkA-vQ-Oqq"/> + <constraint firstAttribute="bottom" secondItem="hQb-kd-0mJ" secondAttribute="bottom" constant="0.5" id="0Hl-dU-cda"/> + <constraint firstItem="x2T-Hc-JgV" firstAttribute="leading" secondItem="M9d-ax-pBh" secondAttribute="leading" constant="15" id="1wz-YD-wAY"/> + <constraint firstItem="tvO-l4-eOf" firstAttribute="leading" secondItem="M9d-ax-pBh" secondAttribute="leading" constant="15" id="K4k-oy-Qz1"/> + <constraint firstItem="hQb-kd-0mJ" firstAttribute="leading" secondItem="M9d-ax-pBh" secondAttribute="leading" constant="15" id="LNl-tV-psl"/> + <constraint firstItem="x2T-Hc-JgV" firstAttribute="top" secondItem="tvO-l4-eOf" secondAttribute="bottom" constant="11" id="Rm6-TI-I4J"/> + <constraint firstItem="tvO-l4-eOf" firstAttribute="top" secondItem="M9d-ax-pBh" secondAttribute="top" constant="16" id="WiE-Ke-wv7"/> + <constraint firstItem="hQb-kd-0mJ" firstAttribute="top" secondItem="x2T-Hc-JgV" secondAttribute="bottom" constant="8" id="icg-yo-iMz"/> + <constraint firstAttribute="trailing" secondItem="x2T-Hc-JgV" secondAttribute="trailing" constant="15" id="ih8-Iq-vcB"/> + <constraint firstAttribute="trailing" secondItem="hQb-kd-0mJ" secondAttribute="trailing" constant="15" id="xmY-WZ-eUt"/> </constraints> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="z6i-Tt-u9i"> - <rect key="frame" x="0.0" y="300" width="393" height="50"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Pgi-jj-gEa"> + <rect key="frame" x="0.0" y="438" width="393" height="73"/> <subviews> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Y9m-vF-DLT"> - <rect key="frame" x="15" y="49" width="363" height="0.6666666666666643"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="uu4-e7-sKd"> + <rect key="frame" x="15" y="72" width="363" height="0.6666666666666714"/> <color key="backgroundColor" red="0.84705882349999995" green="0.84705882349999995" blue="0.84705882349999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> - <constraint firstAttribute="height" constant="0.5" id="vgx-oh-7Xw"/> + <constraint firstAttribute="height" constant="0.5" id="md8-Qy-8aU"/> </constraints> </view> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Address" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="x1o-1P-uMc"> - <rect key="frame" x="15" y="16.666666666666686" width="53" height="17"/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Address" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iyx-kz-0XN"> + <rect key="frame" x="15.000000000000004" y="16" width="57.333333333333343" height="17"/> + <constraints> + <constraint firstAttribute="height" constant="17" id="eyi-7h-xI1"/> + </constraints> + <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/> <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2Nh-Ad-bVV"> + <rect key="frame" x="15" y="44" width="363" height="20"/> + <constraints> + <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="20" id="39N-q5-8qz"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.81000000000000005" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> </subviews> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> - <constraint firstItem="x1o-1P-uMc" firstAttribute="leading" secondItem="z6i-Tt-u9i" secondAttribute="leading" constant="15" id="5oG-CJ-1ZK"/> - <constraint firstAttribute="trailing" secondItem="Y9m-vF-DLT" secondAttribute="trailing" constant="15" id="ZFz-cY-lgq"/> - <constraint firstAttribute="height" constant="50" id="fou-68-DX7"/> - <constraint firstAttribute="bottom" secondItem="Y9m-vF-DLT" secondAttribute="bottom" constant="0.5" id="gU8-KU-0Qp"/> - <constraint firstItem="Y9m-vF-DLT" firstAttribute="leading" secondItem="z6i-Tt-u9i" secondAttribute="leading" constant="15" id="qwv-nl-D9M"/> - <constraint firstItem="x1o-1P-uMc" firstAttribute="centerY" secondItem="z6i-Tt-u9i" secondAttribute="centerY" id="u82-rR-YCI"/> + <constraint firstAttribute="bottom" secondItem="uu4-e7-sKd" secondAttribute="bottom" constant="0.5" id="6Ft-Hy-ktW"/> + <constraint firstAttribute="trailing" secondItem="2Nh-Ad-bVV" secondAttribute="trailing" constant="15" id="AYh-H8-AFb"/> + <constraint firstItem="iyx-kz-0XN" firstAttribute="leading" secondItem="Pgi-jj-gEa" secondAttribute="leading" constant="15" id="DIO-NX-h31"/> + <constraint firstItem="2Nh-Ad-bVV" firstAttribute="leading" secondItem="Pgi-jj-gEa" secondAttribute="leading" constant="15" id="Ocn-ux-IGL"/> + <constraint firstItem="uu4-e7-sKd" firstAttribute="top" secondItem="2Nh-Ad-bVV" secondAttribute="bottom" constant="8" id="SJM-Wl-Jxw"/> + <constraint firstItem="iyx-kz-0XN" firstAttribute="top" secondItem="Pgi-jj-gEa" secondAttribute="top" constant="16" id="qsn-ka-sOG"/> + <constraint firstAttribute="trailing" secondItem="uu4-e7-sKd" secondAttribute="trailing" constant="15" id="wYu-FT-X7R"/> + <constraint firstItem="uu4-e7-sKd" firstAttribute="leading" secondItem="Pgi-jj-gEa" secondAttribute="leading" constant="15" id="wtI-sf-b7M"/> + <constraint firstItem="2Nh-Ad-bVV" firstAttribute="top" secondItem="iyx-kz-0XN" secondAttribute="bottom" constant="11" id="xUX-lz-mQC"/> </constraints> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Qo4-7G-Yhg"> - <rect key="frame" x="0.0" y="350" width="393" height="50"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Maq-wu-jvb"> + <rect key="frame" x="0.0" y="511" width="393" height="73"/> <subviews> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NfD-wO-VW7"> - <rect key="frame" x="15" y="49" width="363" height="0.6666666666666643"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TLC-xL-eV9"> + <rect key="frame" x="15" y="72" width="363" height="0.6666666666666714"/> <color key="backgroundColor" red="0.84705882349999995" green="0.84705882349999995" blue="0.84705882349999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> - <constraint firstAttribute="height" constant="0.5" id="z9c-K8-hhp"/> + <constraint firstAttribute="height" constant="0.5" id="Dez-xf-3zS"/> </constraints> </view> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Notes" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wzq-ed-DcU"> - <rect key="frame" x="15.000000000000004" y="16.666666666666686" width="38.333333333333343" height="17"/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Notes" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YBk-w3-sVs"> + <rect key="frame" x="15" y="16" width="41" height="17"/> + <constraints> + <constraint firstAttribute="height" constant="17" id="6Eo-DS-kHd"/> + </constraints> + <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/> <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qfw-fT-Xkf"> + <rect key="frame" x="15" y="44" width="363" height="20"/> + <constraints> + <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="20" id="SN5-n7-FOp"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.81000000000000005" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> </subviews> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> - <constraint firstItem="NfD-wO-VW7" firstAttribute="leading" secondItem="Qo4-7G-Yhg" secondAttribute="leading" constant="15" id="6Jc-ek-Am5"/> - <constraint firstAttribute="trailing" secondItem="NfD-wO-VW7" secondAttribute="trailing" constant="15" id="6oV-fA-jiC"/> - <constraint firstItem="wzq-ed-DcU" firstAttribute="leading" secondItem="Qo4-7G-Yhg" secondAttribute="leading" constant="15" id="D5r-dm-2g3"/> - <constraint firstItem="wzq-ed-DcU" firstAttribute="centerY" secondItem="Qo4-7G-Yhg" secondAttribute="centerY" id="Dhw-Pw-x4l"/> - <constraint firstAttribute="bottom" secondItem="NfD-wO-VW7" secondAttribute="bottom" constant="0.5" id="V65-XK-uxi"/> - <constraint firstAttribute="height" constant="50" id="lyk-19-F28"/> + <constraint firstItem="TLC-xL-eV9" firstAttribute="top" secondItem="qfw-fT-Xkf" secondAttribute="bottom" constant="8" id="HUa-Cg-bYK"/> + <constraint firstItem="qfw-fT-Xkf" firstAttribute="leading" secondItem="Maq-wu-jvb" secondAttribute="leading" constant="15" id="QKl-x4-Bgt"/> + <constraint firstItem="qfw-fT-Xkf" firstAttribute="top" secondItem="YBk-w3-sVs" secondAttribute="bottom" constant="11" id="UQf-YH-4ny"/> + <constraint firstItem="YBk-w3-sVs" firstAttribute="top" secondItem="Maq-wu-jvb" secondAttribute="top" constant="16" id="XN4-2s-gn8"/> + <constraint firstAttribute="trailing" secondItem="TLC-xL-eV9" secondAttribute="trailing" constant="15" id="Yki-IZ-snk"/> + <constraint firstItem="TLC-xL-eV9" firstAttribute="leading" secondItem="Maq-wu-jvb" secondAttribute="leading" constant="15" id="amp-Dl-hKG"/> + <constraint firstItem="YBk-w3-sVs" firstAttribute="leading" secondItem="Maq-wu-jvb" secondAttribute="leading" constant="15" id="dJt-ln-z19"/> + <constraint firstAttribute="bottom" secondItem="TLC-xL-eV9" secondAttribute="bottom" constant="0.5" id="fBv-iP-Vzc"/> + <constraint firstAttribute="trailing" secondItem="qfw-fT-Xkf" secondAttribute="trailing" constant="15" id="nmF-9S-0hG"/> </constraints> </view> </subviews> diff --git a/BrokerDriver/Profile/VC/PersonalWalletVC.swift b/BrokerDriver/Profile/VC/PersonalWalletVC.swift index 3153aa9..372f3d7 100644 --- a/BrokerDriver/Profile/VC/PersonalWalletVC.swift +++ b/BrokerDriver/Profile/VC/PersonalWalletVC.swift @@ -10,11 +10,30 @@ class PersonalWalletVC: BaseViewController { @IBOutlet weak var label_account: UILabel! - @IBOutlet weak var tableView: UITableView! + @IBOutlet weak var label_unpaid: UILabel! + @IBOutlet weak var label_paid: UILabel! + @IBOutlet weak var tableView: BaseTableView! + @IBOutlet weak var label_billNumber: UILabel! + + private var model:UserWalletModel? + + override func viewDidLoad() { super.viewDidLoad() title = "Wallet" + Services.getMeWallet().subscribe(onNext: { [weak self] data in + if let model = data.data{ + self?.model = model + self?.label_account.text = model.allTotal.currency() + self?.label_unpaid.text = String(format: "Total unpaid:%.2lf", model.unpaid) + self?.label_paid.text = String(format: "Total paid:%.2lf", model.unpaid) + self?.label_billNumber.text = String(format: "The bill number:%@ days", model.billNumber) + self?.tableView.reloadData() + } + }) { error in + + }.disposed(by: disposeBag) } override func setUI() { @@ -24,9 +43,9 @@ tableView.dataSource = self tableView.separatorStyle = .none tableView.register(UINib(nibName: "WalletTCell", bundle: nil), forCellReuseIdentifier: "_WalletTCell") - + tableView.jq_setEmptyView("Not data", image: UIImage(named: "empty"), foregroundColor: .gray, clouse: nil) label_account.font = UIFont(name: "Impact", size: 36) - label_account.text = 1.currency() + } } @@ -37,10 +56,11 @@ extension PersonalWalletVC:UITableViewDataSource{ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "_WalletTCell") as! WalletTCell + cell.model = model!.list[indexPath.row] return cell } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 5 + return model?.list.count ?? 0 } } diff --git a/BrokerDriver/Profile/VC/PersonalWalletVC.xib b/BrokerDriver/Profile/VC/PersonalWalletVC.xib index 0faa4d6..4e9da79 100644 --- a/BrokerDriver/Profile/VC/PersonalWalletVC.xib +++ b/BrokerDriver/Profile/VC/PersonalWalletVC.xib @@ -13,6 +13,9 @@ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="PersonalWalletVC" customModule="BrokerDriver" customModuleProvider="target"> <connections> <outlet property="label_account" destination="iCG-Rf-aPw" id="Tp3-HJ-5dc"/> + <outlet property="label_billNumber" destination="zIQ-Gr-hFg" id="Sl9-HS-uwc"/> + <outlet property="label_paid" destination="TFK-w0-C7W" id="G7g-qx-84O"/> + <outlet property="label_unpaid" destination="vqb-fC-SoE" id="n8z-Dj-Aqs"/> <outlet property="tableView" destination="GLv-NR-yay" id="sJZ-fK-K3g"/> <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> </connections> @@ -90,7 +93,7 @@ <color key="textColor" red="0.19215686274509802" green="0.19215686274509802" blue="0.19215686274509802" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="GLv-NR-yay"> + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="GLv-NR-yay" customClass="BaseTableView" customModule="BrokerDriver" customModuleProvider="target"> <rect key="frame" x="0.0" y="299.33333333333331" width="393" height="518.66666666666674"/> <color key="backgroundColor" systemColor="systemBackgroundColor"/> </tableView> diff --git a/BrokerDriver/SceneDelegate.swift b/BrokerDriver/SceneDelegate.swift index f0826f7..9f7ed8f 100644 --- a/BrokerDriver/SceneDelegate.swift +++ b/BrokerDriver/SceneDelegate.swift @@ -17,8 +17,15 @@ window = UIWindow(windowScene: windowScene) window?.frame = windowScene.coordinateSpace.bounds - let nav = BaseNavigationController(rootViewController: LoginVC()) - window?.rootViewController = nav + if UserViewModel.getUserInfo() != nil{ + let nav = BaseNavigationController(rootViewController: HomeVC()) + LogInfo("USER_INFO:\(UserViewModel.getUserInfo()!.toJSONString()!)") + window?.rootViewController = nav + }else{ + let nav = BaseNavigationController(rootViewController: LoginVC()) + window?.rootViewController = nav + } + window?.overrideUserInterfaceStyle = .light window?.makeKeyAndVisible() } diff --git a/BrokerDriver/ViewModels/OrderViewModel.swift b/BrokerDriver/ViewModels/OrderViewModel.swift new file mode 100644 index 0000000..05005d0 --- /dev/null +++ b/BrokerDriver/ViewModels/OrderViewModel.swift @@ -0,0 +1,22 @@ +// +// OrderViewModel.swift +// BrokerDriver +// +// Created by 无故事王国 on 2023/4/26. +// + +import Foundation + + +struct OrderModel:HandyJSON{ + var ccontainerNumber: String = "" + var end: String = "" + var orderId: String = "" + var phone: String = "" + var pickUpTime: String = "" + var portName: String = "" + var start: String = "" + var status: Int = 0 + var type: Int = 0 + +} diff --git a/BrokerDriver/ViewModels/UserViewModel.swift b/BrokerDriver/ViewModels/UserViewModel.swift new file mode 100644 index 0000000..486980e --- /dev/null +++ b/BrokerDriver/ViewModels/UserViewModel.swift @@ -0,0 +1,38 @@ + // + // UserViewModel.swift + // BrokerDriver + // + // Created by 无故事王国 on 2023/4/26. + // + +import Foundation +import HandyJSON + +final class UserViewModel{ + static let UserLoginSuccess_Noti = Notification.Name.init("UserLoginSuccess") + + + static func getUserInfo()->UserInfoModel?{ + if let modelStr = UserDefaults.standard.object(forKey: "_UserInfoModel") as? String,let model = UserInfoModel.deserialize(from: modelStr){ + return model + } + return nil + } + + static func saveUserInfo(_ user:UserInfoModel){ + if let string = user.toJSONString(){ + UserDefaults.standard.set(string, forKey: "_UserInfoModel") + UserDefaults.standard.synchronize() + } + } + + static func clearUserInfo(){ + UserDefaults.standard.set(nil, forKey: "_UserInfoModel") + UserDefaults.standard.synchronize() + } + + + static func publishLoginSuccess(){ + NotificationCenter.default.post(name: UserViewModel.UserLoginSuccess_Noti, object: nil) + } +} diff --git a/Podfile b/Podfile index 3d114d1..a4fbace 100644 --- a/Podfile +++ b/Podfile @@ -9,6 +9,10 @@ pod 'JQTools',:path=> '/Users/yvkd/MyProject/JQTools' pod 'FFPage' pod 'SPPageMenu' + pod 'HandyJSON' + pod 'Alamofire' + pod 'MBProgressHUD' + pod 'SwifterSwift' post_install do |installer| installer.pods_project.targets.each do |target| -- Gitblit v1.7.1