Jelajahi Sumber

登录-地区选择

openlockPPP 2 tahun lalu
induk
melakukan
c5d2a4a6e4

+ 4 - 0
JiaPeiManage.xcodeproj/project.pbxproj

@@ -11,6 +11,7 @@
 		9076C5DC2A386B2F00E5E33F /* MineViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9076C5DB2A386B2F00E5E33F /* MineViewController.xib */; };
 		9076C5DF2A387CBC00E5E33F /* MeTraineeListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9076C5DE2A387CBC00E5E33F /* MeTraineeListViewController.swift */; };
 		909DA5C12A3999B30034501F /* NYTips.swift in Sources */ = {isa = PBXBuildFile; fileRef = 909DA5C02A3999B30034501F /* NYTips.swift */; };
+		909DA5C32A3A01220034501F /* CoachcityModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 909DA5C22A3A01220034501F /* CoachcityModel.swift */; };
 		90CE52192A36C0710033BD06 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90CE52182A36C0710033BD06 /* AppDelegate.swift */; };
 		90CE521D2A36C0710033BD06 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90CE521C2A36C0710033BD06 /* ViewController.swift */; };
 		90CE52202A36C0710033BD06 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 90CE521E2A36C0710033BD06 /* Main.storyboard */; };
@@ -115,6 +116,7 @@
 		9076C5DB2A386B2F00E5E33F /* MineViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MineViewController.xib; sourceTree = "<group>"; };
 		9076C5DE2A387CBC00E5E33F /* MeTraineeListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeTraineeListViewController.swift; sourceTree = "<group>"; };
 		909DA5C02A3999B30034501F /* NYTips.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTips.swift; sourceTree = "<group>"; };
+		909DA5C22A3A01220034501F /* CoachcityModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoachcityModel.swift; sourceTree = "<group>"; };
 		90CE52152A36C0700033BD06 /* JiaPeiManage.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = JiaPeiManage.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		90CE52182A36C0710033BD06 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
 		90CE521C2A36C0710033BD06 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
@@ -373,6 +375,7 @@
 			isa = PBXGroup;
 			children = (
 				90CE52EC2A36EBE70033BD06 /* UserInfoModel.swift */,
+				909DA5C22A3A01220034501F /* CoachcityModel.swift */,
 			);
 			path = Models;
 			sourceTree = "<group>";
@@ -875,6 +878,7 @@
 				90CE52732A36E5460033BD06 /* LWPlayerView.swift in Sources */,
 				90CE52442A36E5170033BD06 /* NYMacros.swift in Sources */,
 				90CE52192A36C0710033BD06 /* AppDelegate.swift in Sources */,
+				909DA5C32A3A01220034501F /* CoachcityModel.swift in Sources */,
 				909DA5C12A3999B30034501F /* NYTips.swift in Sources */,
 				90CE52432A36E5170033BD06 /* NYFont.swift in Sources */,
 				90CE52ED2A36EBE80033BD06 /* UserInfoModel.swift in Sources */,

+ 60 - 0
JiaPeiManage/Sources/Models/CoachcityModel.swift

@@ -0,0 +1,60 @@
+//
+//  CoachcityModel.swift
+//  JiaPeiManage
+//
+//  Created by Ning.ge on 2023/6/14.
+//
+import ObjectMapper
+import SwiftyUserDefaults
+
+struct CityItem :ImmutableMappable{
+
+    var searchValue:String  = ""
+    var createBy:String  = ""
+    var createTime:String  = ""
+    var updateTime:String  = ""
+    var updateBy:String  = ""
+    var remark:String  = ""
+//    var params:[Any]?
+    var dictCode:Int  = 0
+    var dictSort:Int  = 0
+    var dictLabel:String  = ""
+    var dictValue:String  = ""
+    var dictType:String  = ""
+    var cssClass:String  = ""
+    var listClass:String  = ""
+    var isDefault:String  = ""
+    var status:String  = ""
+    var _default:Bool  = false
+    
+    init(map: Map) throws {
+        searchValue = try map.value("searchValue") ?? ""
+        createBy = try map.value("createBy") ?? ""
+        createTime = try map.value("createTime") ?? ""
+        updateTime = try map.value("updateTime") ?? ""
+        updateBy = try map.value("updateBy") ?? ""
+        remark = try map.value("remark") ?? ""
+//        params = try map.value("params") ?? [""]
+        dictCode = try map.value("dictCode")
+        dictSort = try map.value("dictSort")
+        dictLabel = try map.value("dictLabel") ?? ""
+        dictValue = try map.value("dictValue") ?? ""
+        dictType = try map.value("dictType") ?? ""
+        cssClass = try map.value("cssClass") ?? ""
+        listClass = try map.value("listClass") ?? ""
+        isDefault = try map.value("isDefault") ?? ""
+        status = try map.value("status") ?? ""
+        _default = try map.value("default")
+    }
+    
+}
+
+struct Coachcitys :ImmutableMappable{
+    
+    var data:[CityItem]  = []
+    
+    init(map: Map) throws {
+        data = try map.value("data") ?? []
+    }
+    
+}

+ 1 - 1
JiaPeiManage/Sources/Models/UserInfoModel.swift

@@ -231,7 +231,7 @@ struct UserInfo :ImmutableMappable{
         coachNum = try map.value("coachNum")
         recordDate = try map.value("recordDate")
         schoolId = try map.value("schoolId")
-        schoolName = try map.value("schoolName")
+        schoolName = try map.value("schoolName") ?? ""
         name = try map.value("name")
         sex = try map.value("sex")
         idcard = try map.value("idcard")

+ 44 - 30
JiaPeiManage/Sources/Modulars/Login/Controllers/LoginViewController.swift

@@ -25,6 +25,7 @@ final class LoginViewController: BaseViewController {
     @IBOutlet weak var pwdshow_button: QMUIButton!
     //定位arrow
     @IBOutlet weak var location_button: QMUIButton!
+    @IBOutlet weak var location_button_btn: UIButton!
     //区域
     @IBOutlet weak var userlocation_textField: QMUITextField!
     //登录按钮
@@ -36,14 +37,23 @@ final class LoginViewController: BaseViewController {
     //隐私政策
     @IBOutlet weak var userprivacy_button: UIButton!
     
-    let city = "3501"
-    
-    
+    var city:String = ""
+    var cityItems:[CityItem] = []
+    var citys: [String:String] = [:]
+    var selectedItemIndex = 0
     override func viewDidLoad() {
         super.viewDidLoad()
         setupUI()
         //biand绑定
         biandView()
+        //获取字典数据
+        loginService.dictRequest(dictType: "coach_city").subscribe(onSuccess: { [unowned self] cityItems in
+            self.cityItems = cityItems
+            for cityItem in cityItems {
+                self.citys[cityItem.dictLabel] = cityItem.dictValue
+            }
+        },onError: { Error in
+        }).disposed(by: disposeBag)
     }
     // MARK: 私有方法
     func setupUI(){
@@ -108,32 +118,10 @@ final class LoginViewController: BaseViewController {
         //选择区域
         location_button.rx.tap.subscribe ({ [unowned self] (_)  in
             NSLog("点击了:选择区域- \(Thread.isMainThread)")
-//            //登录api RX 订阅 观察 销毁 三部曲
-//            self.loginService.loginRequest(user_name: "350102199001182416", user_password: "123456",city: "3501")
-//                .subscribe(onSuccess: { userinfo in
-//                    print("登录成功:%@", userinfo)
-//                    self.navigationController?.popViewController(animated: true)
-//                }, onError: { error in
-//                    print("%@",error)
-//                })
-//                .disposed(by: disposeBag)
-//            self.loginService.updateRequest(user_name: "350102199001182416", user_password: "1234567", new_password: "123456", city: "3501")
-//                .subscribe(onSuccess: { userinfo in
-//                    print("修改成功  \(userinfo)")
-//                }, onError: { error in
-//                    print("%@",error.localizedDescription)
-//                }).disposed(by: disposeBag)
-//            self.loginService.dictRequest(dictType: "coach_city")
-//                .subscribe(onSuccess: { userinfo in
-//                    print("%@",userinfo)
-//                }, onError: { error in
-//                    print("%@",error)
-//                }).disposed(by: disposeBag)
-            
-//            self.cocahService.coachInfoRequest(id: "3501033735", city: "3501").subscribe(onSuccess: { userinfo in
-//                
-//            },onError: { error in }).disposed(by: disposeBag)
-            
+            self.showDialog()
+        }).disposed(by: disposeBag)
+        location_button_btn.rx.tap.subscribe ({ [unowned self] (_)  in
+            self.showDialog()
         }).disposed(by: disposeBag)
         //登录
         login_button.rx.tap
@@ -149,6 +137,10 @@ final class LoginViewController: BaseViewController {
                         //保存用户信息
                         var account:String = self.username_textField.text!
                         var password:String = self.userpassword_textField.text!
+                        if city=="" {
+                            NYTips.showMsg(txt: "请选择地区!")
+                            return
+                        }
                         LocalManager.userInfo.userAccount = account
                         LocalManager.userInfo.password = password
                         self.login_button.isEnabled = true
@@ -181,7 +173,29 @@ final class LoginViewController: BaseViewController {
     }
     
     
-    
+    func showDialog(){
+        
+        let dialogViewController = QMUIDialogSelectionViewController()
+        dialogViewController.title = "请选择地区"
+        dialogViewController.items = Array(citys.keys)
+        dialogViewController.selectedItemIndex = selectedItemIndex
+        dialogViewController.addCancelButton(withText: "取消", block: nil)
+        dialogViewController.addSubmitButton(withText: "确定") { [weak self] dialogViewController in
+            guard let dialogViewController:QMUIDialogSelectionViewController = dialogViewController as? QMUIDialogSelectionViewController else { return }
+            if dialogViewController.selectedItemIndex == QMUIDialogSelectionViewControllerSelectedItemIndexNone {
+                NYTips.showErr(txt: "请至少选一个")
+                return
+            }
+            self?.selectedItemIndex = dialogViewController.selectedItemIndex
+            let item = self!.cityItems[dialogViewController.selectedItemIndex]
+            self?.city = item.dictValue //编码
+            self?.userlocation_textField.text = item.dictLabel
+            dialogViewController.hide()
+        }
+        dialogViewController.show()
+
+    }
+
     
     
 }

+ 9 - 0
JiaPeiManage/Sources/Modulars/Login/Controllers/LoginViewController.xib

@@ -12,6 +12,7 @@
             <connections>
                 <outlet property="agree_button" destination="e49-95-2qF" id="5SE-bN-Bmh"/>
                 <outlet property="location_button" destination="rMA-Qb-CEp" id="WXC-en-KxG"/>
+                <outlet property="location_button_btn" destination="eI9-bt-Px4" id="Qwx-V0-xZw"/>
                 <outlet property="login_button" destination="QFo-KM-CGQ" id="LO1-nE-eDa"/>
                 <outlet property="pwdshow_button" destination="q0m-zw-jQ3" id="wsc-au-CR1"/>
                 <outlet property="userlocation_textField" destination="Srz-3V-PhW" id="OuB-AQ-K2t"/>
@@ -160,15 +161,23 @@
                                     <state key="normal" image="login_arrow"/>
                                     <state key="selected" image="login_arrow"/>
                                 </button>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="eI9-bt-Px4">
+                                    <rect key="frame" x="64" y="5.6666666666666856" width="137" height="34"/>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                </button>
                             </subviews>
                             <color key="backgroundColor" red="0.14901960780000001" green="0.28235294119999998" blue="0.41960784309999999" alpha="1" colorSpace="calibratedRGB"/>
                             <constraints>
                                 <constraint firstItem="Srz-3V-PhW" firstAttribute="leading" secondItem="AVr-H3-2zM" secondAttribute="trailing" constant="18" id="AUn-S9-0Cq"/>
                                 <constraint firstAttribute="trailing" secondItem="rMA-Qb-CEp" secondAttribute="trailing" constant="29" id="CMD-VI-Qbt"/>
                                 <constraint firstAttribute="height" constant="45" id="Jqv-Vx-K4D"/>
+                                <constraint firstItem="eI9-bt-Px4" firstAttribute="top" secondItem="Srz-3V-PhW" secondAttribute="top" id="Kq2-Fp-Ni2"/>
                                 <constraint firstItem="rMA-Qb-CEp" firstAttribute="centerY" secondItem="V1H-73-kgk" secondAttribute="centerY" id="QCi-Nw-Vxi"/>
                                 <constraint firstItem="AVr-H3-2zM" firstAttribute="leading" secondItem="V1H-73-kgk" secondAttribute="leading" constant="25" id="UXc-mw-nRd"/>
+                                <constraint firstItem="eI9-bt-Px4" firstAttribute="leading" secondItem="Srz-3V-PhW" secondAttribute="leading" id="c5a-3x-eJW"/>
+                                <constraint firstItem="eI9-bt-Px4" firstAttribute="trailing" secondItem="Srz-3V-PhW" secondAttribute="trailing" id="e9a-j6-v1L"/>
                                 <constraint firstItem="AVr-H3-2zM" firstAttribute="centerY" secondItem="V1H-73-kgk" secondAttribute="centerY" id="sed-vG-4R8"/>
+                                <constraint firstItem="eI9-bt-Px4" firstAttribute="bottom" secondItem="Srz-3V-PhW" secondAttribute="bottom" id="tLQ-LP-3Xc"/>
                                 <constraint firstItem="Srz-3V-PhW" firstAttribute="centerY" secondItem="V1H-73-kgk" secondAttribute="centerY" id="yL5-Fs-7Ue"/>
                             </constraints>
                             <userDefinedRuntimeAttributes>

+ 3 - 3
JiaPeiManage/Sources/Services/LoginService.swift

@@ -15,7 +15,7 @@ protocol LoginServiceType {
     
     func updateRequest(user_name: String, user_password: String,new_password: String, city:String) -> Single<UserInfo>
     
-    func dictRequest(dictType:String) -> Single<UserInfo>
+    func dictRequest(dictType:String) -> Single<[CityItem]>
     
 }
 
@@ -41,8 +41,8 @@ final class LoginService: LoginServiceType {
     }
     
     //获取地区字典
-    func dictRequest(dictType: String) -> RxSwift.Single<UserInfo> {
+    func dictRequest(dictType: String) -> RxSwift.Single<[CityItem]> {
         let api = LoginAPI.dictUser(dictType: dictType)
-        return networking.request(api).map(UserInfo.self)
+        return networking.request(api).map(CityItem.self)
     }
 }

+ 5 - 0
JiaPeiManage/Sources/Utils/NYTips.swift

@@ -22,6 +22,11 @@ class NYTips {
         QMUITips.showLoading(txt, in: curController.view, hideAfterDelay: 2)
     }
     
+    static func showMsg(txt:String){
+        guard let curController = UIViewController.topMost else { return }
+        QMUITips.showInfo(txt, in: curController.view, hideAfterDelay: 1.5)
+    }
+    
     static func show(view:UIView){
         QMUITips.showLoading(in: view)
     }