Commit a91fb738589961efa81e5766c851ce3e3d348e7a
1 parent
595ab157
保存位置 省市区
Showing
7 changed files
with
669 additions
and
176 deletions
metaCode.xcodeproj/project.pbxproj
| ... | ... | @@ -73,6 +73,8 @@ |
| 73 | 73 | 192336EB2AD9224300D47CD4 /* CNUpSlideViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 192336EA2AD9224300D47CD4 /* CNUpSlideViewController.swift */; }; |
| 74 | 74 | 1926C28F2AE0D76C00C71DC3 /* CNLiveDownSlideViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1926C28E2AE0D76C00C71DC3 /* CNLiveDownSlideViewModel.swift */; }; |
| 75 | 75 | 1926C2912AE0FD4500C71DC3 /* CNLiveDownSlideModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1926C2902AE0FD4500C71DC3 /* CNLiveDownSlideModel.swift */; }; |
| 76 | + 192ED4632C4A642F0057244C /* CNLiveAddrAreaModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 192ED4622C4A642F0057244C /* CNLiveAddrAreaModel.swift */; }; | |
| 77 | + 192ED4652C4DF6340057244C /* CNLiveDigitalResumeInfoSelectAddressController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 192ED4642C4DF6340057244C /* CNLiveDigitalResumeInfoSelectAddressController.swift */; }; | |
| 76 | 78 | 1938BD172B3D6C7F00390A34 /* CNLiveAuthViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1938BD162B3D6C7F00390A34 /* CNLiveAuthViewController.swift */; }; |
| 77 | 79 | 1938BD202B46799A00390A34 /* CNLivePlayletHomePageController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1938BD1F2B46799A00390A34 /* CNLivePlayletHomePageController.swift */; }; |
| 78 | 80 | 1938BD222B467C1700390A34 /* CNLivePlayletHomePageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1938BD212B467C1700390A34 /* CNLivePlayletHomePageCell.swift */; }; |
| ... | ... | @@ -388,6 +390,8 @@ |
| 388 | 390 | 192336EA2AD9224300D47CD4 /* CNUpSlideViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNUpSlideViewController.swift; sourceTree = "<group>"; }; |
| 389 | 391 | 1926C28E2AE0D76C00C71DC3 /* CNLiveDownSlideViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveDownSlideViewModel.swift; sourceTree = "<group>"; }; |
| 390 | 392 | 1926C2902AE0FD4500C71DC3 /* CNLiveDownSlideModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveDownSlideModel.swift; sourceTree = "<group>"; }; |
| 393 | + 192ED4622C4A642F0057244C /* CNLiveAddrAreaModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveAddrAreaModel.swift; sourceTree = "<group>"; }; | |
| 394 | + 192ED4642C4DF6340057244C /* CNLiveDigitalResumeInfoSelectAddressController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveDigitalResumeInfoSelectAddressController.swift; sourceTree = "<group>"; }; | |
| 391 | 395 | 1938BD162B3D6C7F00390A34 /* CNLiveAuthViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveAuthViewController.swift; sourceTree = "<group>"; }; |
| 392 | 396 | 1938BD1F2B46799A00390A34 /* CNLivePlayletHomePageController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLivePlayletHomePageController.swift; sourceTree = "<group>"; }; |
| 393 | 397 | 1938BD212B467C1700390A34 /* CNLivePlayletHomePageCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLivePlayletHomePageCell.swift; sourceTree = "<group>"; }; |
| ... | ... | @@ -1133,6 +1137,7 @@ |
| 1133 | 1137 | 194134972C292199004FC047 /* CNLiveIdentityRepositoryController.swift */, |
| 1134 | 1138 | 19DFE63F2C3FC5F400E428AE /* CNLiveDigitalResumeController.swift */, |
| 1135 | 1139 | 19DFE64C2C4792C500E428AE /* CNLiveDigitalResumeInfoController.swift */, |
| 1140 | + 192ED4642C4DF6340057244C /* CNLiveDigitalResumeInfoSelectAddressController.swift */, | |
| 1136 | 1141 | ); |
| 1137 | 1142 | path = DigitalAuth; |
| 1138 | 1143 | sourceTree = "<group>"; |
| ... | ... | @@ -1190,6 +1195,7 @@ |
| 1190 | 1195 | isa = PBXGroup; |
| 1191 | 1196 | children = ( |
| 1192 | 1197 | 19DFE6452C41099900E428AE /* CNLiveVitaeModel.swift */, |
| 1198 | + 192ED4622C4A642F0057244C /* CNLiveAddrAreaModel.swift */, | |
| 1193 | 1199 | ); |
| 1194 | 1200 | path = Vitae; |
| 1195 | 1201 | sourceTree = "<group>"; |
| ... | ... | @@ -2026,6 +2032,7 @@ |
| 2026 | 2032 | 19123FC12ABC11170075C883 /* CNWebViewController.swift in Sources */, |
| 2027 | 2033 | 1926C28F2AE0D76C00C71DC3 /* CNLiveDownSlideViewModel.swift in Sources */, |
| 2028 | 2034 | 790D019D2A2DCBD000C5978D /* UIView+CNLiveExtensions.swift in Sources */, |
| 2035 | + 192ED4652C4DF6340057244C /* CNLiveDigitalResumeInfoSelectAddressController.swift in Sources */, | |
| 2029 | 2036 | 19B153CF2BC540FF0018906C /* CNLivePayOrderInfoModel.swift in Sources */, |
| 2030 | 2037 | 7C7C62F62A4D72E9007A912E /* CNLiveIdentityDB.swift in Sources */, |
| 2031 | 2038 | 191732E52B05FFE8007BCC04 /* CNLiveModalPresentationViewController.swift in Sources */, |
| ... | ... | @@ -2188,6 +2195,7 @@ |
| 2188 | 2195 | 194134882C1FE4E7004FC047 /* CNLiveDigitalAssetsController.swift in Sources */, |
| 2189 | 2196 | 7CD6753F2A2740B0008354C1 /* CNDownSlideViewRemindView.swift in Sources */, |
| 2190 | 2197 | 19565ECF2AF8D8F6007D6727 /* CNLiveShopGoodsListCell.swift in Sources */, |
| 2198 | + 192ED4632C4A642F0057244C /* CNLiveAddrAreaModel.swift in Sources */, | |
| 2191 | 2199 | 1965FA3E2AFB176E00F0F435 /* CNLiveShopAddGoodsSingleView.swift in Sources */, |
| 2192 | 2200 | 7CD6753C2A2740B0008354C1 /* CNUpSlideViewRemindView.swift in Sources */, |
| 2193 | 2201 | 7939B0772B47F88A005AE981 /* CNLiveShortVideoControlView.swift in Sources */, | ... | ... |
metaCode/Classes/Main/HomePage/Controller/DigitalAuth/CNLiveDigitalResumeInfoController.swift
| ... | ... | @@ -11,6 +11,9 @@ import CoreLocation |
| 11 | 11 | |
| 12 | 12 | |
| 13 | 13 | class CNLiveDigitalResumeInfoController:CNLiveBaseViewController, UITextFieldDelegate,CLLocationManagerDelegate{ |
| 14 | + | |
| 15 | + var selectAreaVC:CNLiveDigitalResumeInfoSelectAddressController? | |
| 16 | + | |
| 14 | 17 | let locationManager = CLLocationManager() |
| 15 | 18 | |
| 16 | 19 | lazy var topWhiteView :UIView = { |
| ... | ... | @@ -461,8 +464,26 @@ class CNLiveDigitalResumeInfoController:CNLiveBaseViewController, UITextFieldDel |
| 461 | 464 | |
| 462 | 465 | // MARK: - ButtonAction |
| 463 | 466 | @objc func weiZhiTapAction(){ |
| 464 | - self.getPlacemarkAddress() | |
| 467 | + self.displaySelectAreaVC() | |
| 468 | + | |
| 469 | +// self.getPlacemarkAddress() | |
| 470 | + } | |
| 471 | + func displaySelectAreaVC(){ | |
| 472 | + if self.selectAreaVC == nil{ | |
| 473 | + let vc = CNLiveDigitalResumeInfoSelectAddressController() | |
| 474 | + vc.finishSelectAreaCallBack = { [weak self] in | |
| 475 | + self?.weizhiRightTitleLabel.text = String(format: "%@%@%@",self?.selectAreaVC?.province ?? "",self?.selectAreaVC?.city ?? "",self?.selectAreaVC?.area ?? "" ) | |
| 476 | + self?.saveWeiZhi(cityStreet: self?.weizhiRightTitleLabel.text ?? "") | |
| 477 | + } | |
| 478 | + self.addChild(vc) | |
| 479 | + vc.view.frame = CGRect(x: 0, y: 0, width: self.view.width, height: self.view.height) | |
| 480 | + self.view.addSubview(vc.view) | |
| 481 | + vc.didMove(toParent: self) | |
| 482 | + self.selectAreaVC = vc | |
| 483 | + } | |
| 484 | + self.selectAreaVC?.display() | |
| 465 | 485 | } |
| 486 | + | |
| 466 | 487 | func saveWeiZhi(cityStreet:String){ |
| 467 | 488 | if var userDic = UserDefaults.standard.dictionary(forKey: UserInfoManager.shared.userInfo.uid){ |
| 468 | 489 | userDic.updateValue(cityStreet, forKey: "cityStreet") |
| ... | ... | @@ -474,60 +495,6 @@ class CNLiveDigitalResumeInfoController:CNLiveBaseViewController, UITextFieldDel |
| 474 | 495 | UserDefaults.standard.synchronize() |
| 475 | 496 | } |
| 476 | 497 | } |
| 477 | - // 代理方法:当定位权限被确定时调用 | |
| 478 | - func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) { | |
| 479 | - if status == .authorizedWhenInUse || status == .authorizedAlways { | |
| 480 | - // 权限已授权,可以开始获取位置信息 | |
| 481 | - locationManager.startUpdatingLocation() | |
| 482 | - } | |
| 483 | - } | |
| 484 | - | |
| 485 | - // 代理方法:当位置更新时调用 | |
| 486 | - func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { | |
| 487 | - guard let location = locations.last else { return } | |
| 488 | - | |
| 489 | - // 停止更新位置以节省资源 | |
| 490 | - locationManager.stopUpdatingLocation() | |
| 491 | - | |
| 492 | - // 反向地理编码位置以获取地址信息 | |
| 493 | - let geocoder = CLGeocoder() | |
| 494 | - geocoder.reverseGeocodeLocation(location, completionHandler: { (placemarks, error) in | |
| 495 | - if let error = error { | |
| 496 | - print("Geocoding failed with error: \(error.localizedDescription)") | |
| 497 | - return | |
| 498 | - } | |
| 499 | - | |
| 500 | - if let placemark = placemarks?.first { | |
| 501 | - print("市区:\(placemark.locality ?? "")") | |
| 502 | - print("街道:\(placemark.thoroughfare ?? "")") | |
| 503 | - // 你可以根据需要进一步处理placemark对象 | |
| 504 | - let cityStreet = (placemark.locality ?? "") + (placemark.thoroughfare ?? "") | |
| 505 | - self.saveWeiZhi(cityStreet:cityStreet) | |
| 506 | - self.weizhiRightTitleLabel.text = cityStreet | |
| 507 | - } | |
| 508 | - }) | |
| 509 | - } | |
| 510 | - | |
| 511 | - // 代理方法:处理定位错误(可选) | |
| 512 | - func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { | |
| 513 | - print("Location manager failed with error: \(error.localizedDescription)") | |
| 514 | - } | |
| 515 | - func getPlacemarkAddress() { | |
| 516 | - // 检查定位服务是否可用 | |
| 517 | - if CLLocationManager.locationServicesEnabled() { | |
| 518 | - // 设置定位管理器的代理 | |
| 519 | - locationManager.delegate = self | |
| 520 | - // 请求前台使用时的定位权限 | |
| 521 | - locationManager.requestWhenInUseAuthorization() | |
| 522 | - // 配置定位管理器 | |
| 523 | - locationManager.desiredAccuracy = kCLLocationAccuracyBest | |
| 524 | - locationManager.startUpdatingLocation() | |
| 525 | - } else { | |
| 526 | - // 定位服务不可用 | |
| 527 | - print("Location services are not enabled") | |
| 528 | - } | |
| 529 | - | |
| 530 | - } | |
| 531 | 498 | |
| 532 | 499 | @objc func canJiaTapAction(){ |
| 533 | 500 | MineInfoAlertView.showSelectView(showType: .selectDay) { [weak self] text in | ... | ... |
metaCode/Classes/Main/HomePage/Controller/DigitalAuth/CNLiveDigitalResumeInfoSelectAddressController.swift
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveDigitalResumeInfoSelectAddressController.swift | |
| 3 | +// metaCode | |
| 4 | +// | |
| 5 | +// Created by zx on 2024/7/22. | |
| 6 | +// 数字简历信息-选择地址页面 | |
| 7 | + | |
| 8 | +import Foundation | |
| 9 | + | |
| 10 | +typealias FinishSelectAreaBlock = () -> Void | |
| 11 | + | |
| 12 | +class CNLiveDigitalResumeInfoSelectAddressController:CNLiveBaseViewController,UITableViewDelegate, UITableViewDataSource{ | |
| 13 | + | |
| 14 | + var provinceId:String = "" | |
| 15 | + var province:String = "" | |
| 16 | + var cityId:String = "" | |
| 17 | + var city:String = "" | |
| 18 | + var areaId:String = "" | |
| 19 | + var area:String = "" | |
| 20 | + | |
| 21 | + var finishSelectAreaCallBack:FinishSelectAreaBlock? | |
| 22 | + var shadowView:UIView? | |
| 23 | + var contentView:UIView? | |
| 24 | + var line:UIImageView? | |
| 25 | + var provinceBtn:UIButton? | |
| 26 | + var cityBtn:UIButton? | |
| 27 | + var areaBtn:UIButton? | |
| 28 | + var selectImageView:UIImageView? | |
| 29 | + | |
| 30 | + lazy var tableView : UITableView = { | |
| 31 | + let tableView = UITableView(frame: CGRect(x: 0, y: self.line!.bottom, width: self.contentView!.width, height: self.contentView!.height-self.line!.bottom), style: .plain) | |
| 32 | + tableView.dataSource = self | |
| 33 | + tableView.delegate = self | |
| 34 | + tableView.rowHeight = adapt_length(length: 40) | |
| 35 | + tableView.showsVerticalScrollIndicator = false | |
| 36 | + tableView.backgroundColor = .white | |
| 37 | + tableView.separatorStyle = .none | |
| 38 | + let headerView = UIView(frame: CGRect(x: 0, y: 0, width: self.contentView!.width, height: adapt_length(length: 5))) | |
| 39 | + tableView.tableHeaderView = headerView | |
| 40 | + return tableView | |
| 41 | + }() | |
| 42 | + | |
| 43 | + var provinceDataArr:Array<CNLiveAddrAreaModel>? | |
| 44 | + var cityDataArr:Array<CNLiveAddrAreaModel>? | |
| 45 | + var areaDataArr:Array<CNLiveAddrAreaModel>? | |
| 46 | + // MARK: - setter | |
| 47 | + var _displayLevel:NSInteger? | |
| 48 | + var displayLevel:NSInteger?{ | |
| 49 | + get{ | |
| 50 | + _displayLevel | |
| 51 | + } | |
| 52 | + set{ | |
| 53 | + _displayLevel = newValue | |
| 54 | + UIView.animate(withDuration: 0.2) { | |
| 55 | + if (self.displayLevel == 2) { | |
| 56 | + self.selectImageView!.centerX = self.cityBtn!.centerX | |
| 57 | + self.cityBtn?.setTitleColor(HexColor("#333333"), for: .normal) | |
| 58 | + }else if (self.displayLevel == 3) { | |
| 59 | + self.selectImageView!.centerX = self.areaBtn!.centerX | |
| 60 | + self.areaBtn?.setTitleColor(HexColor("#333333"), for: .normal) | |
| 61 | + }else { | |
| 62 | + self.selectImageView!.centerX = self.provinceBtn!.centerX | |
| 63 | + } | |
| 64 | + } | |
| 65 | + } | |
| 66 | + } | |
| 67 | + //临时选中省 | |
| 68 | + var _temp_selectProvinceModel:CNLiveAddrAreaModel? | |
| 69 | + var temp_selectProvinceModel:CNLiveAddrAreaModel?{ | |
| 70 | + get{ | |
| 71 | + _temp_selectProvinceModel | |
| 72 | + } | |
| 73 | + set{ | |
| 74 | + _temp_selectProvinceModel = newValue | |
| 75 | + if ((_temp_selectProvinceModel) != nil) { | |
| 76 | + self.provinceBtn?.setTitle(_temp_selectProvinceModel?.name, for: .normal) | |
| 77 | + }else { | |
| 78 | + self.provinceBtn?.setTitle("请选择", for: .normal) | |
| 79 | + } | |
| 80 | + } | |
| 81 | + } | |
| 82 | + //临时选中市 | |
| 83 | + var _temp_selectCityModel:CNLiveAddrAreaModel? | |
| 84 | + var temp_selectCityModel:CNLiveAddrAreaModel?{ | |
| 85 | + get{ | |
| 86 | + _temp_selectCityModel | |
| 87 | + } | |
| 88 | + set{ | |
| 89 | + _temp_selectCityModel = newValue | |
| 90 | + if ((_temp_selectCityModel) != nil) { | |
| 91 | + self.cityBtn?.setTitle(_temp_selectCityModel?.name, for: .normal) | |
| 92 | + self.cityBtn?.setTitleColor(HexColor("#333333"), for: .normal) | |
| 93 | + }else { | |
| 94 | + self.cityBtn?.setTitle("城市", for: .normal) | |
| 95 | + if (self.displayLevel == 2) { | |
| 96 | + self.cityBtn?.setTitleColor(HexColor("#333333"), for: .normal) | |
| 97 | + }else { | |
| 98 | + self.cityBtn?.setTitleColor(HexColor("#999999"), for: .normal) | |
| 99 | + } | |
| 100 | + } | |
| 101 | + } | |
| 102 | + } | |
| 103 | + //临时选中区(县) | |
| 104 | + var _temp_selectAreaModel:CNLiveAddrAreaModel? | |
| 105 | + var temp_selectAreaModel:CNLiveAddrAreaModel?{ | |
| 106 | + get{ | |
| 107 | + _temp_selectAreaModel | |
| 108 | + } | |
| 109 | + set{ | |
| 110 | + _temp_selectAreaModel = newValue | |
| 111 | + if ((_temp_selectAreaModel) != nil) { | |
| 112 | + self.areaBtn?.setTitle(_temp_selectAreaModel?.name, for: .normal) | |
| 113 | + self.areaBtn?.setTitleColor(HexColor("#333333"), for: .normal) | |
| 114 | + }else { | |
| 115 | + self.areaBtn?.setTitle("区县", for: .normal) | |
| 116 | + if (self.displayLevel == 3) { | |
| 117 | + self.areaBtn?.setTitleColor(HexColor("#333333"), for: .normal) | |
| 118 | + }else { | |
| 119 | + self.areaBtn?.setTitleColor(HexColor("#999999"), for: .normal) | |
| 120 | + } | |
| 121 | + } | |
| 122 | + } | |
| 123 | + } | |
| 124 | + | |
| 125 | + | |
| 126 | + // MARK: - 显示/隐藏 | |
| 127 | + func display(){ | |
| 128 | + self.view.isUserInteractionEnabled = true | |
| 129 | + UIView.animate(withDuration: 0.2) { | |
| 130 | + self.shadowView?.alpha = 1 | |
| 131 | + self.contentView?.y = self.view.height - adapt_length(length: 400) | |
| 132 | + } | |
| 133 | + } | |
| 134 | + func hide(){ | |
| 135 | + UIView.animate(withDuration: 0.2) { | |
| 136 | + self.shadowView?.alpha = 0 | |
| 137 | + self.contentView?.y = self.view.height | |
| 138 | + }completion: { finished in | |
| 139 | + self.view.isUserInteractionEnabled = false | |
| 140 | + } | |
| 141 | + } | |
| 142 | + | |
| 143 | + // MARK: - 数据请求 | |
| 144 | + /** | |
| 145 | + 数据请求 | |
| 146 | + | |
| 147 | + @param pid 父级id | |
| 148 | + @param level 第几级 | |
| 149 | + */ | |
| 150 | + func postDataWithPid(pid:String,level:NSInteger,resultBlock: @escaping downSlideResultBlock){ | |
| 151 | + showLoading(message: "") | |
| 152 | + CNLiveVitaeViewModel.getCityListWithId(id: pid) { result, status in | |
| 153 | + hiddenLoading() | |
| 154 | + if status == .success{ | |
| 155 | + self.displayLevel = level | |
| 156 | + let model = result as! CNLiveAddrAreaListModel | |
| 157 | + if level == 1{ | |
| 158 | + self.provinceDataArr = model.list | |
| 159 | + self.temp_selectCityModel = nil | |
| 160 | + self.temp_selectAreaModel = nil | |
| 161 | + self.cityDataArr = nil | |
| 162 | + self.areaDataArr = nil | |
| 163 | + if self.provinceId.count > 0 && self.provinceId != "0"{ | |
| 164 | + for (_,obj) in self.provinceDataArr!.enumerated(){ | |
| 165 | + if obj.id == self.provinceId{ | |
| 166 | + self.temp_selectProvinceModel = obj | |
| 167 | + break | |
| 168 | + } | |
| 169 | + } | |
| 170 | + | |
| 171 | + } | |
| 172 | + }else if level == 2{ | |
| 173 | + self.cityDataArr = model.list | |
| 174 | + self.temp_selectCityModel = nil | |
| 175 | + self.temp_selectAreaModel = nil | |
| 176 | + self.areaDataArr = nil | |
| 177 | + if self.cityId.count > 0 && self.cityId != "0"{ | |
| 178 | + for (_,obj) in self.cityDataArr!.enumerated(){ | |
| 179 | + if obj.id == self.cityId{ | |
| 180 | + self.temp_selectCityModel = obj | |
| 181 | + break | |
| 182 | + } | |
| 183 | + } | |
| 184 | + }else{ | |
| 185 | + self.cityBtn?.setTitle("城市", for: .normal) | |
| 186 | + } | |
| 187 | + }else if level == 3{ | |
| 188 | + self.areaDataArr = model.list | |
| 189 | + self.temp_selectAreaModel = nil | |
| 190 | + if self.areaId.count > 0 && self.areaId != "0"{ | |
| 191 | + for (_,obj) in self.areaDataArr!.enumerated(){ | |
| 192 | + if obj.id == self.areaId{ | |
| 193 | + self.temp_selectAreaModel = obj | |
| 194 | + break | |
| 195 | + } | |
| 196 | + } | |
| 197 | + }else{ | |
| 198 | + self.areaBtn?.setTitle("区县", for: .normal) | |
| 199 | + } | |
| 200 | + } | |
| 201 | + self.tableView.reloadData() | |
| 202 | + self.tableView.setContentOffset(CGPointZero, animated: true) | |
| 203 | + resultBlock(true, .success) | |
| 204 | + } | |
| 205 | + | |
| 206 | + } | |
| 207 | + } | |
| 208 | + | |
| 209 | + // MARK: - viewDidLoad | |
| 210 | + override func viewDidLoad() { | |
| 211 | + super.viewDidLoad() | |
| 212 | + self.view.backgroundColor = .clear | |
| 213 | + self.topNavView.removeFromSuperview() | |
| 214 | + self.initUI() | |
| 215 | + if self.provinceId == "0" || self.provinceId.count == 0{ | |
| 216 | + self.cityId = "0" | |
| 217 | + self.areaId = "0" | |
| 218 | + }else if self.cityId == "0" || self.cityId.count == 0{ | |
| 219 | + self.areaId = "0" | |
| 220 | + } | |
| 221 | + self.postDataWithPid(pid: "0", level: 1) { result, status in | |
| 222 | + if status == .success{ | |
| 223 | + if self.cityId.count > 0 && self.cityId != "0"{ | |
| 224 | + self.postDataWithPid(pid: self.provinceId, level: 2){ result, status in | |
| 225 | + if self.areaId.count > 0 && self.areaId != "0"{ | |
| 226 | + self.postDataWithPid(pid: self.cityId, level: 3) { result, status in | |
| 227 | + } | |
| 228 | + } | |
| 229 | + } | |
| 230 | + | |
| 231 | + } | |
| 232 | + } | |
| 233 | + } | |
| 234 | + | |
| 235 | + } | |
| 236 | + | |
| 237 | + func scrollViewWithProvinceId(provinceId:String,cityId:String,areaId:String){ | |
| 238 | + if provinceId == "0"{ | |
| 239 | + self.postDataWithPid(pid: provinceId, level: 1){ result, status in | |
| 240 | + if areaId.count > 0 && areaId != "0"{ | |
| 241 | + self.postDataWithPid(pid: cityId, level: 2) { result, status in | |
| 242 | + } | |
| 243 | + } | |
| 244 | + } | |
| 245 | + }else{ | |
| 246 | + self.postDataWithPid(pid: provinceId, level: 2){ result, status in | |
| 247 | + if areaId.count > 0 && areaId != "0"{ | |
| 248 | + self.postDataWithPid(pid: cityId, level: 3) { result, status in | |
| 249 | + } | |
| 250 | + } | |
| 251 | + } | |
| 252 | + } | |
| 253 | + } | |
| 254 | + | |
| 255 | + // MARK: - initUI | |
| 256 | + func initUI(){ | |
| 257 | + self.shadowView = UIView(frame: self.view.bounds) | |
| 258 | + self.shadowView?.backgroundColor = UIColor(white: 0, alpha: 0.26) | |
| 259 | + self.shadowView?.alpha = 0 | |
| 260 | + self.view.addSubview(self.shadowView!) | |
| 261 | + let shadowViewTap = UITapGestureRecognizer(target: self, action: #selector(shadowViewTap)) | |
| 262 | + self.shadowView?.addGestureRecognizer(shadowViewTap) | |
| 263 | + self.contentView = UIView(frame: CGRectMake(0, self.view.height, self.view.width, adapt_length(length: 400))) | |
| 264 | + self.contentView?.backgroundColor = .white | |
| 265 | + self.view.addSubview(self.contentView!) | |
| 266 | + | |
| 267 | + self.line = UIImageView(frame: CGRect(x: 0, y: adapt_length(length: 49)-DS_RRV_ONE_PIXEL, width: self.view.width, height: DS_RRV_ONE_PIXEL)) | |
| 268 | + self.line?.backgroundColor = HexColor("#EBE9EA") | |
| 269 | + self.contentView?.addSubview(self.line!) | |
| 270 | + | |
| 271 | + self.provinceBtn = UIButton(type: .custom) | |
| 272 | + self.provinceBtn?.frame = CGRect(x: adapt_length(length: 5), y: 0, width: adapt_length(length: 59), height: adapt_length(length: 49)) | |
| 273 | + self.provinceBtn?.setTitle("请选择", for: .normal) | |
| 274 | + self.provinceBtn?.setTitleColor(HexColor("#333333"), for: .normal) | |
| 275 | + self.provinceBtn?.clipsToBounds = true | |
| 276 | + self.provinceBtn?.titleLabel?.font = Font_13 | |
| 277 | + self.provinceBtn?.titleLabel?.lineBreakMode = .byTruncatingTail | |
| 278 | + self.provinceBtn?.addTarget(self, action: #selector(provinceBtnClick), for: .touchUpInside) | |
| 279 | + self.contentView?.addSubview(self.provinceBtn!) | |
| 280 | + | |
| 281 | + self.cityBtn = UIButton(type: .custom) | |
| 282 | + self.cityBtn?.frame = CGRect(x: self.provinceBtn!.right+adapt_length(length: 5), y: 0, width: adapt_length(length: 59), height: adapt_length(length: 49)) | |
| 283 | + self.cityBtn?.setTitle("城市", for: .normal) | |
| 284 | + self.cityBtn?.setTitleColor(HexColor("#999999"), for: .normal) | |
| 285 | + self.cityBtn?.clipsToBounds = true | |
| 286 | + self.cityBtn?.titleLabel?.font = Font_13 | |
| 287 | + self.cityBtn?.titleLabel?.lineBreakMode = .byTruncatingTail | |
| 288 | + self.cityBtn?.addTarget(self, action: #selector(cityBtnClick), for: .touchUpInside) | |
| 289 | + self.contentView?.addSubview(self.cityBtn!) | |
| 290 | + | |
| 291 | + self.areaBtn = UIButton(type: .custom) | |
| 292 | + self.areaBtn?.frame = CGRect(x: self.cityBtn!.right+adapt_length(length: 5), y: 0, width: adapt_length(length: 59), height: adapt_length(length: 49)) | |
| 293 | + self.areaBtn?.setTitle("区县", for: .normal) | |
| 294 | + self.areaBtn?.setTitleColor(HexColor("#999999"), for: .normal) | |
| 295 | + self.areaBtn?.clipsToBounds = true | |
| 296 | + self.areaBtn?.titleLabel?.font = Font_13 | |
| 297 | + self.areaBtn?.titleLabel?.lineBreakMode = .byTruncatingTail | |
| 298 | + self.areaBtn?.addTarget(self, action: #selector(areaBtnClick), for: .touchUpInside) | |
| 299 | + self.contentView?.addSubview(self.areaBtn!) | |
| 300 | + | |
| 301 | + self.selectImageView = UIImageView(frame: CGRect(x: 0, y: self.line!.bottom-2, width: adapt_length(length: 39), height: 2)) | |
| 302 | + self.selectImageView?.backgroundColor = HexColor("#1961FE") | |
| 303 | + self.contentView?.addSubview(self.selectImageView!) | |
| 304 | + self.selectImageView!.centerX = self.provinceBtn!.centerX | |
| 305 | + | |
| 306 | + let confirmBtn = UIButton(type: .custom) | |
| 307 | + confirmBtn.frame = CGRect(x: self.contentView!.width-adapt_length(length: 49), y: 0, width: adapt_length(length: 49), height: adapt_length(length: 49)) | |
| 308 | + confirmBtn.setTitle("确定", for: .normal) | |
| 309 | + confirmBtn.setTitleColor(HexColor("#333333"), for: .normal) | |
| 310 | + confirmBtn.clipsToBounds = true | |
| 311 | + confirmBtn.titleLabel?.font = Font_13 | |
| 312 | + confirmBtn.addTarget(self, action: #selector(confirmBtnClick), for: .touchUpInside) | |
| 313 | + self.contentView?.addSubview(confirmBtn) | |
| 314 | + self.contentView?.addSubview(self.tableView) | |
| 315 | + | |
| 316 | + } | |
| 317 | + | |
| 318 | + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | |
| 319 | + if self.displayLevel == 1{ | |
| 320 | + return self.provinceDataArr!.count | |
| 321 | + }else if self.displayLevel == 2{ | |
| 322 | + return self.cityDataArr!.count | |
| 323 | + }else if self.displayLevel == 3{ | |
| 324 | + return self.areaDataArr!.count | |
| 325 | + }else{ | |
| 326 | + return 0 | |
| 327 | + } | |
| 328 | + } | |
| 329 | + | |
| 330 | + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | |
| 331 | + let identifier = "CNLiveAddrSelectAreaTableViewCellID" | |
| 332 | + var cell = tableView.dequeueReusableCell(withIdentifier: identifier) | |
| 333 | + if cell == nil{ | |
| 334 | + cell = UITableViewCell(style: .default, reuseIdentifier: identifier) | |
| 335 | + cell?.selectionStyle = .none | |
| 336 | + | |
| 337 | + let titleLab = UILabel(frame: CGRect(x: adapt_length(length: 15), y: 0, width: self.view.width-adapt_length(length: 15)*2, height: adapt_length(length: 40))) | |
| 338 | + titleLab.font = Font_14 | |
| 339 | + titleLab.textColor = HexColor("#666666") | |
| 340 | + titleLab.lineBreakMode = .byTruncatingTail | |
| 341 | + titleLab.tag = 1 | |
| 342 | + cell?.addSubview(titleLab) | |
| 343 | + } | |
| 344 | + let titleLab = cell?.viewWithTag(1) as! UILabel | |
| 345 | + if self.displayLevel == 1{ | |
| 346 | + let model = self.provinceDataArr![indexPath.row] | |
| 347 | + titleLab.text = model.name | |
| 348 | + if model.id == self.temp_selectProvinceModel?.id{ | |
| 349 | + titleLab.textColor = HexColor("#1961FE") | |
| 350 | + }else{ | |
| 351 | + titleLab.textColor = HexColor("#666666") | |
| 352 | + } | |
| 353 | + }else if self.displayLevel == 2{ | |
| 354 | + let model = self.cityDataArr![indexPath.row] | |
| 355 | + titleLab.text = model.name | |
| 356 | + if model.id == self.temp_selectCityModel?.id{ | |
| 357 | + titleLab.textColor = HexColor("#1961FE") | |
| 358 | + }else{ | |
| 359 | + titleLab.textColor = HexColor("#666666") | |
| 360 | + } | |
| 361 | + }else if self.displayLevel == 3{ | |
| 362 | + let model = self.areaDataArr![indexPath.row] | |
| 363 | + titleLab.text = model.name | |
| 364 | + if model.id == self.temp_selectAreaModel?.id{ | |
| 365 | + titleLab.textColor = HexColor("#1961FE") | |
| 366 | + }else{ | |
| 367 | + titleLab.textColor = HexColor("#666666") | |
| 368 | + } | |
| 369 | + }else{ | |
| 370 | + titleLab.text = "" | |
| 371 | + } | |
| 372 | + return cell! | |
| 373 | + } | |
| 374 | + | |
| 375 | + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | |
| 376 | + if self.displayLevel == 1{ | |
| 377 | + let model = self.provinceDataArr![indexPath.row] | |
| 378 | + self.postDataWithPid(pid: model.id, level: 2){result, status in | |
| 379 | + self.temp_selectProvinceModel = model | |
| 380 | + self.temp_selectCityModel = nil | |
| 381 | + self.temp_selectAreaModel = nil | |
| 382 | + } | |
| 383 | + }else if self.displayLevel == 2{ | |
| 384 | + let model = self.cityDataArr![indexPath.row] | |
| 385 | + self.postDataWithPid(pid: model.id, level: 3){result, status in | |
| 386 | + self.temp_selectCityModel = model | |
| 387 | + self.temp_selectAreaModel = nil | |
| 388 | + } | |
| 389 | + }else if self.displayLevel == 3{ | |
| 390 | + let model = self.areaDataArr![indexPath.row] | |
| 391 | + self.temp_selectAreaModel = model | |
| 392 | + self.tableView.reloadData() | |
| 393 | + } | |
| 394 | + } | |
| 395 | + | |
| 396 | + // MARK: - 触发事件 | |
| 397 | + @objc func shadowViewTap(){ | |
| 398 | + self.hide() | |
| 399 | + } | |
| 400 | + | |
| 401 | + @objc func confirmBtnClick(){ | |
| 402 | + if (self.temp_selectProvinceModel == nil) || (self.temp_selectCityModel == nil) || (self.temp_selectAreaModel == nil){ | |
| 403 | + showMessage(message: "省市区未选择完成") | |
| 404 | + return | |
| 405 | + } | |
| 406 | + self.provinceId = self.temp_selectProvinceModel!.id | |
| 407 | + self.province = self.temp_selectProvinceModel!.name | |
| 408 | + self.cityId = self.temp_selectCityModel!.id | |
| 409 | + self.city = self.temp_selectCityModel!.name | |
| 410 | + self.areaId = self.temp_selectAreaModel!.id | |
| 411 | + self.area = self.temp_selectAreaModel!.name | |
| 412 | + self.finishSelectAreaCallBack?() | |
| 413 | + self.hide() | |
| 414 | + } | |
| 415 | + | |
| 416 | + @objc func provinceBtnClick(){ | |
| 417 | + self.displayLevel = 1 | |
| 418 | + self.tableView.reloadData() | |
| 419 | + self.tableView.setContentOffset(CGPointZero, animated: true) | |
| 420 | + if self.temp_selectCityModel != nil{ | |
| 421 | + self.cityBtn?.setTitleColor(HexColor("#333333"), for: .normal) | |
| 422 | + if self.temp_selectAreaModel != nil{ | |
| 423 | + self.areaBtn?.setTitleColor(HexColor("#333333"), for: .normal) | |
| 424 | + }else{ | |
| 425 | + self.areaBtn?.setTitleColor(HexColor("#999999"), for: .normal) | |
| 426 | + } | |
| 427 | + }else{ | |
| 428 | + self.cityBtn?.setTitleColor(HexColor("#999999"), for: .normal) | |
| 429 | + self.areaBtn?.setTitleColor(HexColor("#999999"), for: .normal) | |
| 430 | + } | |
| 431 | + } | |
| 432 | + | |
| 433 | + @objc func cityBtnClick(){ | |
| 434 | + if self.temp_selectProvinceModel == nil{ | |
| 435 | + return | |
| 436 | + } | |
| 437 | + self.displayLevel = 2 | |
| 438 | + self.tableView.reloadData() | |
| 439 | + self.tableView.setContentOffset(CGPointZero, animated: true) | |
| 440 | + if self.temp_selectAreaModel != nil{ | |
| 441 | + self.areaBtn?.setTitleColor(HexColor("#333333"), for: .normal) | |
| 442 | + }else{ | |
| 443 | + self.areaBtn?.setTitleColor(HexColor("#999999"), for: .normal) | |
| 444 | + } | |
| 445 | + } | |
| 446 | + @objc func areaBtnClick(){ | |
| 447 | + if self.temp_selectCityModel == nil{ | |
| 448 | + return | |
| 449 | + } | |
| 450 | + self.displayLevel = 3 | |
| 451 | + self.tableView.reloadData() | |
| 452 | + self.tableView.setContentOffset(CGPointZero, animated: true) | |
| 453 | + } | |
| 454 | + | |
| 455 | +} | |
| 456 | + | ... | ... |
metaCode/Classes/Main/HomePage/Controller/DigitalAuth/CNLiveFaceAuthController.swift
| ... | ... | @@ -15,6 +15,7 @@ import Vision |
| 15 | 15 | class CNLiveFaceAuthController:CNLiveBaseViewController{ |
| 16 | 16 | |
| 17 | 17 | var channelId:String = "0" |
| 18 | + var isResume:Bool = false//是否跳转到数字简历页面 | |
| 18 | 19 | |
| 19 | 20 | lazy var previewView :CNLiveAuthPreviewView = { |
| 20 | 21 | let previewView = CNLiveAuthPreviewView(frame: CGRect(x: 0, y: KNavigationHeight, width: KSreenWidth, height: KSreenHeight-KNavigationHeight)) |
| ... | ... | @@ -379,11 +380,132 @@ class CNLiveFaceAuthController:CNLiveBaseViewController{ |
| 379 | 380 | userInfo.userMsgUsers = res |
| 380 | 381 | userInfo.currentUser = res.verifyUsers.first |
| 381 | 382 | UserInfoManager.cacheUserInfo(userInfo: userInfo) |
| 383 | + if res.verifyUsers.count > 0{ | |
| 384 | + if self.isResume == true{ | |
| 385 | + //进入数字简历页面 | |
| 386 | + let is_agree = UserDefaults.standard.bool(forKey: "is_agree_shuzijianlixieyi") | |
| 387 | + if is_agree{ | |
| 388 | + //跳转数字简历页面 | |
| 389 | + let vc = CNLiveDigitalResumeController() | |
| 390 | + self.navigationController?.pushViewController(vc, animated: true) | |
| 391 | + }else{ | |
| 392 | + self.showXieyiAlert() | |
| 393 | + } | |
| 394 | + }else{ | |
| 395 | + //跳转到身份认证页面 | |
| 396 | + let listModel = StandListModel() | |
| 397 | + listModel.id = Int(self.channelId) ?? 0 | |
| 398 | + self.navigationController?.pushViewController(CNLiveMineInputViewController.init(listModel: listModel, authType: .person), animated: pushAnimated) | |
| 399 | + } | |
| 400 | + }else{ | |
| 401 | + //实名认证失败 | |
| 402 | + showMessage(message: "实名认证失败") | |
| 403 | + self.navigationController?.popViewController(animated: true) | |
| 404 | + } | |
| 382 | 405 | } |
| 383 | 406 | } |
| 384 | 407 | } |
| 385 | 408 | |
| 386 | 409 | } |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + // MARK: - 数字简历协议 | |
| 414 | + let delegate = UIApplication.shared.delegate as! AppDelegate | |
| 415 | + /// 未认证-inputType17时弹窗背景图 | |
| 416 | + lazy var alertBgImgView:UIImageView = { | |
| 417 | + let alertBgImgView:UIImageView = UIImageView() | |
| 418 | + alertBgImgView.tag = 20001 | |
| 419 | + alertBgImgView.isUserInteractionEnabled = true | |
| 420 | + alertBgImgView.contentMode = .scaleAspectFit | |
| 421 | + alertBgImgView.backgroundColor = .white | |
| 422 | + return alertBgImgView | |
| 423 | + }() | |
| 424 | + lazy var agreeBtn: UIButton = { | |
| 425 | + let nextBtn = UIButton(type: .custom) | |
| 426 | + nextBtn.width = 285 | |
| 427 | + nextBtn.height = 44 | |
| 428 | + nextBtn.setTitle("同意协议 领取一下", for: .normal) | |
| 429 | + nextBtn.setTitleColor(.white, for: .normal) | |
| 430 | + nextBtn.layer.cornerRadius = 22 | |
| 431 | + nextBtn.clipsToBounds = true | |
| 432 | + nextBtn.addTarget(self, action: #selector(agreeBtnAction), for: .touchUpInside) | |
| 433 | + nextBtn.backgroundColor = HexColor("#8E8BFB") | |
| 434 | + // fillCode | |
| 435 | + let bgLayer1 = CAGradientLayer() | |
| 436 | + bgLayer1.colors = [UIColor(red: 0.1, green: 0.38, blue: 1, alpha: 1).cgColor, UIColor(red: 0.56, green: 0.55, blue: 0.98, alpha: 1).cgColor] | |
| 437 | + bgLayer1.locations = [0, 1] | |
| 438 | + bgLayer1.frame = nextBtn.bounds | |
| 439 | + bgLayer1.startPoint = CGPoint(x: 0.5, y: 1) | |
| 440 | + bgLayer1.endPoint = CGPoint(x: 0, y: 0) | |
| 441 | + nextBtn.layer.addSublayer(bgLayer1) | |
| 442 | + return nextBtn | |
| 443 | + }() | |
| 444 | + lazy var jianlixieyiLabel: UILabel = { | |
| 445 | + let label = UILabel() | |
| 446 | + let attrString = NSMutableAttributedString(string: "查看《元码数字简历服务协议》") | |
| 447 | + label.frame = CGRect(x: 0, y: 0, width: KSreenWidth, height: 20) | |
| 448 | + let attr1: [NSAttributedString.Key : Any] = [.font: Font_14,.foregroundColor: HexColor("#20252A")!] | |
| 449 | + attrString.addAttributes(attr1, range: NSRange(location: 0, length: 2)) | |
| 450 | + let attr: [NSAttributedString.Key : Any] = [.font: Font_14,.foregroundColor: HexColor("#1961FE")!] | |
| 451 | + attrString.addAttributes(attr, range: NSRange(location: 2, length: attrString.length-2)) | |
| 452 | + label.attributedText = attrString | |
| 453 | + label.textAlignment = .center | |
| 454 | + label.isUserInteractionEnabled = true | |
| 455 | + label.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(jianlixieyiAction))) | |
| 456 | + return label | |
| 457 | + }() | |
| 458 | + //弹出数字简历协议alert | |
| 459 | + func showXieyiAlert(){ | |
| 460 | + delegate.window?.addSubview(self.alertBgImgView) | |
| 461 | + alertBgImgView.snp.makeConstraints { make in | |
| 462 | + make.centerX.equalToSuperview() | |
| 463 | + make.centerY.equalToSuperview() | |
| 464 | + make.width.equalToSuperview() | |
| 465 | + make.height.equalToSuperview() | |
| 466 | + } | |
| 467 | + self.alertBgImgView.image = UIImage(named: "mine_jianli_xieyiBg") | |
| 468 | + alertBgImgView.addSubview(self.agreeBtn) | |
| 469 | + self.agreeBtn.snp.makeConstraints { make in | |
| 470 | + make.bottom.equalToSuperview().offset(-50) | |
| 471 | + make.width.equalTo(285) | |
| 472 | + make.centerX.equalToSuperview() | |
| 473 | + make.height.equalTo(44) | |
| 474 | + } | |
| 475 | + alertBgImgView.addSubview(self.jianlixieyiLabel) | |
| 476 | + self.jianlixieyiLabel.snp.makeConstraints { make in | |
| 477 | + make.bottom.equalTo(self.agreeBtn.snp.top).offset(-10) | |
| 478 | + make.left.right.equalToSuperview() | |
| 479 | + make.height.equalTo(20) | |
| 480 | + } | |
| 481 | + } | |
| 482 | + @objc func jianlixieyiAction(){ | |
| 483 | + //查看数字简历协议 | |
| 484 | + let webVC = CNWebViewController() | |
| 485 | + webVC.url = URL(string: "https://wjj.ys1.cnliveimg.com/term/ymRlsbyhxxcjxy.html") | |
| 486 | + self.navigationController?.pushViewController(webVC, animated: true) | |
| 487 | + | |
| 488 | + delegate.window?.subviews.forEach({ view in | |
| 489 | + if view.tag >= 20000{ | |
| 490 | + view.isHidden = true | |
| 491 | + } | |
| 492 | + }) | |
| 493 | + } | |
| 494 | + @objc func agreeBtnAction(){ | |
| 495 | + //同意协议按钮 | |
| 496 | + delegate.window?.subviews.forEach({ view in | |
| 497 | + if view.tag >= 20000{ | |
| 498 | + view.removeFromSuperview() | |
| 499 | + } | |
| 500 | + }) | |
| 501 | + //本地存储已同意 | |
| 502 | + UserDefaults.standard.set(true,forKey: "is_agree_shuzijianlixieyi") | |
| 503 | + | |
| 504 | + //跳转数字简历页面 | |
| 505 | + let vc = CNLiveDigitalResumeController() | |
| 506 | + self.navigationController?.pushViewController(vc, animated: true) | |
| 507 | + } | |
| 508 | + | |
| 387 | 509 | } |
| 388 | 510 | |
| 389 | 511 | // Video Sessions |
| ... | ... | @@ -670,10 +792,7 @@ extension CNLiveFaceAuthController { |
| 670 | 792 | if status == .success{ |
| 671 | 793 | //保存最新实名身份数据 |
| 672 | 794 | self.saveRealData() |
| 673 | - //跳转到身份认证页面 | |
| 674 | - let listModel = StandListModel() | |
| 675 | - listModel.id = Int(self.channelId) ?? 0 | |
| 676 | - self.navigationController?.pushViewController(CNLiveMineInputViewController.init(listModel: listModel, authType: .person), animated: pushAnimated) | |
| 795 | + | |
| 677 | 796 | }else{ |
| 678 | 797 | //提示认证失败 |
| 679 | 798 | CNLiveAuthTool.shared.showAuthFailAlert() |
| ... | ... | @@ -745,6 +864,7 @@ extension CNLiveFaceAuthController { |
| 745 | 864 | |
| 746 | 865 | } |
| 747 | 866 | } |
| 867 | + | |
| 748 | 868 | } |
| 749 | 869 | |
| 750 | 870 | // Camera Settings & Orientation |
| ... | ... | @@ -825,6 +945,8 @@ extension CNLiveFaceAuthController: AVCaptureVideoDataOutputSampleBufferDelegate |
| 825 | 945 | print(error) |
| 826 | 946 | } |
| 827 | 947 | } |
| 948 | + | |
| 949 | + | |
| 828 | 950 | } |
| 829 | 951 | |
| 830 | 952 | ... | ... |
metaCode/Classes/Main/HomePage/Controller/DigitalAuth/CNLiveRealNameAuthController.swift
| ... | ... | @@ -214,24 +214,14 @@ class CNLiveRealNameAuthController:CNLiveBaseViewController,UITableViewDataSourc |
| 214 | 214 | showMessage(message: "请输入证件号码") |
| 215 | 215 | return |
| 216 | 216 | } |
| 217 | - if self.isResume == true{ | |
| 218 | - //进入数字简历页面 | |
| 219 | - let is_agree = UserDefaults.standard.bool(forKey: "is_agree_shuzijianlixieyi") | |
| 220 | - if is_agree{ | |
| 221 | - //跳转数字简历页面 | |
| 222 | - let vc = CNLiveDigitalResumeController() | |
| 223 | - self.navigationController?.pushViewController(vc, animated: true) | |
| 224 | - }else{ | |
| 225 | - self.showXieyiAlert() | |
| 226 | - } | |
| 227 | - }else{ | |
| 228 | - //进入人脸识别页面 | |
| 229 | - let vc = CNLiveFaceAuthController() | |
| 230 | - vc.realName = self.nameTextStr | |
| 231 | - vc.realNumber = self.numberTextStr | |
| 232 | - vc.channelId = self.channelId | |
| 233 | - self.navigationController?.pushViewController(vc, animated: true) | |
| 234 | - } | |
| 217 | + //进入人脸识别页面 | |
| 218 | + let vc = CNLiveFaceAuthController() | |
| 219 | + vc.realName = self.nameTextStr | |
| 220 | + vc.realNumber = self.numberTextStr | |
| 221 | + vc.channelId = self.channelId | |
| 222 | + vc.isResume = self.isResume | |
| 223 | + self.navigationController?.pushViewController(vc, animated: true) | |
| 224 | + | |
| 235 | 225 | } |
| 236 | 226 | |
| 237 | 227 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { |
| ... | ... | @@ -267,103 +257,5 @@ class CNLiveRealNameAuthController:CNLiveBaseViewController,UITableViewDataSourc |
| 267 | 257 | func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { |
| 268 | 258 | return 122 |
| 269 | 259 | } |
| 270 | - | |
| 271 | - | |
| 272 | - | |
| 273 | - // MARK: - 数字简历协议 | |
| 274 | - let delegate = UIApplication.shared.delegate as! AppDelegate | |
| 275 | - /// 未认证-inputType17时弹窗背景图 | |
| 276 | - lazy var alertBgImgView:UIImageView = { | |
| 277 | - let alertBgImgView:UIImageView = UIImageView() | |
| 278 | - alertBgImgView.tag = 20001 | |
| 279 | - alertBgImgView.isUserInteractionEnabled = true | |
| 280 | - alertBgImgView.contentMode = .scaleAspectFit | |
| 281 | - alertBgImgView.backgroundColor = .white | |
| 282 | - return alertBgImgView | |
| 283 | - }() | |
| 284 | - lazy var agreeBtn: UIButton = { | |
| 285 | - let nextBtn = UIButton(type: .custom) | |
| 286 | - nextBtn.width = 285 | |
| 287 | - nextBtn.height = 44 | |
| 288 | - nextBtn.setTitle("同意协议 领取一下", for: .normal) | |
| 289 | - nextBtn.setTitleColor(.white, for: .normal) | |
| 290 | - nextBtn.layer.cornerRadius = 22 | |
| 291 | - nextBtn.clipsToBounds = true | |
| 292 | - nextBtn.addTarget(self, action: #selector(agreeBtnAction), for: .touchUpInside) | |
| 293 | - nextBtn.backgroundColor = HexColor("#8E8BFB") | |
| 294 | - // fillCode | |
| 295 | - let bgLayer1 = CAGradientLayer() | |
| 296 | - bgLayer1.colors = [UIColor(red: 0.1, green: 0.38, blue: 1, alpha: 1).cgColor, UIColor(red: 0.56, green: 0.55, blue: 0.98, alpha: 1).cgColor] | |
| 297 | - bgLayer1.locations = [0, 1] | |
| 298 | - bgLayer1.frame = nextBtn.bounds | |
| 299 | - bgLayer1.startPoint = CGPoint(x: 0.5, y: 1) | |
| 300 | - bgLayer1.endPoint = CGPoint(x: 0, y: 0) | |
| 301 | - nextBtn.layer.addSublayer(bgLayer1) | |
| 302 | - return nextBtn | |
| 303 | - }() | |
| 304 | - lazy var xieyiLabel: UILabel = { | |
| 305 | - let label = UILabel() | |
| 306 | - let attrString = NSMutableAttributedString(string: "查看《元码数字简历服务协议》") | |
| 307 | - label.frame = CGRect(x: 0, y: 0, width: KSreenWidth, height: 20) | |
| 308 | - let attr1: [NSAttributedString.Key : Any] = [.font: Font_14,.foregroundColor: HexColor("#20252A")!] | |
| 309 | - attrString.addAttributes(attr1, range: NSRange(location: 0, length: 2)) | |
| 310 | - let attr: [NSAttributedString.Key : Any] = [.font: Font_14,.foregroundColor: HexColor("#1961FE")!] | |
| 311 | - attrString.addAttributes(attr, range: NSRange(location: 2, length: attrString.length-2)) | |
| 312 | - label.attributedText = attrString | |
| 313 | - label.textAlignment = .center | |
| 314 | - label.isUserInteractionEnabled = true | |
| 315 | - label.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(xieyiAction))) | |
| 316 | - return label | |
| 317 | - }() | |
| 318 | - //弹出数字简历协议alert | |
| 319 | - func showXieyiAlert(){ | |
| 320 | - delegate.window?.addSubview(self.alertBgImgView) | |
| 321 | - alertBgImgView.snp.makeConstraints { make in | |
| 322 | - make.centerX.equalToSuperview() | |
| 323 | - make.centerY.equalToSuperview() | |
| 324 | - make.width.equalToSuperview() | |
| 325 | - make.height.equalToSuperview() | |
| 326 | - } | |
| 327 | - self.alertBgImgView.image = UIImage(named: "mine_jianli_xieyiBg") | |
| 328 | - alertBgImgView.addSubview(self.agreeBtn) | |
| 329 | - self.agreeBtn.snp.makeConstraints { make in | |
| 330 | - make.bottom.equalToSuperview().offset(-50) | |
| 331 | - make.width.equalTo(285) | |
| 332 | - make.centerX.equalToSuperview() | |
| 333 | - make.height.equalTo(44) | |
| 334 | - } | |
| 335 | - alertBgImgView.addSubview(self.xieyiLabel) | |
| 336 | - self.xieyiLabel.snp.makeConstraints { make in | |
| 337 | - make.bottom.equalTo(self.agreeBtn.snp.top).offset(-10) | |
| 338 | - make.left.right.equalToSuperview() | |
| 339 | - make.height.equalTo(20) | |
| 340 | - } | |
| 341 | - } | |
| 342 | - @objc func xieyiAction(){ | |
| 343 | - //查看数字简历协议 | |
| 344 | - let webVC = CNWebViewController() | |
| 345 | - webVC.url = URL(string: "https://wjj.ys1.cnliveimg.com/term/ymRlsbyhxxcjxy.html") | |
| 346 | - self.navigationController?.pushViewController(webVC, animated: true) | |
| 347 | - | |
| 348 | - delegate.window?.subviews.forEach({ view in | |
| 349 | - if view.tag >= 20000{ | |
| 350 | - view.isHidden = true | |
| 351 | - } | |
| 352 | - }) | |
| 353 | - } | |
| 354 | - @objc func agreeBtnAction(){ | |
| 355 | - //同意协议按钮 | |
| 356 | - delegate.window?.subviews.forEach({ view in | |
| 357 | - if view.tag >= 20000{ | |
| 358 | - view.removeFromSuperview() | |
| 359 | - } | |
| 360 | - }) | |
| 361 | - //本地存储已同意 | |
| 362 | - UserDefaults.standard.set(true,forKey: "is_agree_shuzijianlixieyi") | |
| 363 | - | |
| 364 | - //跳转数字简历页面 | |
| 365 | - let vc = CNLiveDigitalResumeController() | |
| 366 | - self.navigationController?.pushViewController(vc, animated: true) | |
| 367 | - } | |
| 368 | - | |
| 260 | + | |
| 369 | 261 | } | ... | ... |
metaCode/Classes/Main/HomePage/ViewModel/Vitae/CNLiveVitaeViewModel.swift
| ... | ... | @@ -110,6 +110,32 @@ class CNLiveVitaeViewModel:NSObject{ |
| 110 | 110 | |
| 111 | 111 | } |
| 112 | 112 | |
| 113 | + | |
| 114 | + /// 获取省市区县列表 | |
| 115 | + /// @param id | |
| 116 | + static func getCityListWithId(id:String,resultBlock: @escaping downSlideResultBlock){ | |
| 117 | + let param = NSMutableDictionary() | |
| 118 | + param.setValue(id, forKey: "id") | |
| 119 | + | |
| 120 | + CNLiveNetworking.setAllowRequestDefaultArgument(true) | |
| 121 | + CNLiveNetworking.setupShowDataResult(false) | |
| 122 | + CNLiveNetworking.setupDSRequest(true) | |
| 123 | + let custom_param = NSMutableDictionary() | |
| 124 | + custom_param.setValue(CNLiveMCEnvironmentManager.shared.appId_wjj, forKey: "appId") | |
| 125 | + custom_param.setValue(CNLiveMCEnvironmentManager.shared.appKey_wjj, forKey: "appKey") | |
| 126 | + CNLiveNetworking.setupCustomParam(custom_param as? [String : String]) | |
| 127 | + | |
| 128 | + CNLiveNetworking.requestNetwork(with: .POST, urlString: "https://managemall.cnlive.com"+"/Api/Index3/getCityList", param: param as! [String : String], cacheType: .networkOnly) { task, result, error in | |
| 129 | + hiddenLoading() | |
| 130 | + if (error == nil) { | |
| 131 | + let res = (result as! Dictionary<String, Any>)["data"] as! Dictionary<String, Any> | |
| 132 | + let listModel = newDictionaryToModel(res, CNLiveAddrAreaListModel.self) | |
| 133 | + resultBlock(listModel as Any,.success) | |
| 134 | + }else{ | |
| 135 | + resultBlock(NSNull(),.failed) | |
| 136 | + } | |
| 137 | + } | |
| 138 | + } | |
| 113 | 139 | } |
| 114 | 140 | |
| 115 | 141 | ... | ... |
metaCode/Classes/Main/Model/Vitae/CNLiveAddrAreaModel.swift
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveAddrAreaModel.swift | |
| 3 | +// metaCode | |
| 4 | +// | |
| 5 | +// Created by zx on 2024/7/19. | |
| 6 | +// 数字简历位置model 省市区 | |
| 7 | + | |
| 8 | +import Foundation | |
| 9 | + | |
| 10 | +class CNLiveAddrAreaListModel:BaseModel{ | |
| 11 | + var list:[CNLiveAddrAreaModel]? | |
| 12 | +} | |
| 13 | +class CNLiveAddrAreaModel:BaseModel{ | |
| 14 | + ///id | |
| 15 | + var id:String = "" | |
| 16 | + ///名称 | |
| 17 | + var name:String = "" | |
| 18 | + ///父级id(最上级为0) | |
| 19 | + var pid:String = "" | |
| 20 | + ///1省 2市 3区(县) | |
| 21 | + var level:String = "" | |
| 22 | +} | ... | ... |