浏览代码

修改 预报名 + 搜索逻辑 + bug修护

openlockPPP 1 年之前
父节点
当前提交
c800e2879c

+ 2 - 2
JiaPeiManage.xcodeproj/project.pbxproj

@@ -1475,7 +1475,7 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1202023071801;
+				CURRENT_PROJECT_VERSION = 1202023071901;
 				DEVELOPMENT_TEAM = K7T6CU5SW5;
 				GENERATE_INFOPLIST_FILE = YES;
 				INFOPLIST_FILE = JiaPeiManage/Info.plist;
@@ -1515,7 +1515,7 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1202023071801;
+				CURRENT_PROJECT_VERSION = 1202023071901;
 				DEVELOPMENT_TEAM = K7T6CU5SW5;
 				GENERATE_INFOPLIST_FILE = YES;
 				INFOPLIST_FILE = JiaPeiManage/Info.plist;

+ 6 - 1
JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeListViewController.swift

@@ -101,7 +101,6 @@ final class MeTraineeListViewController: BaseViewController {
         
         switch type {
         case .advancet:
-            self.navBar.title_label.text = "我的学员" //"我的学员-预报名"
             self.title = "预报名学员"
             self.tabBarItem.image = NYImage.TabBar.advancet
             self.tabBarItem.selectedImage = NYImage.TabBar.advancet_s?.withRenderingMode(.alwaysOriginal)
@@ -138,6 +137,9 @@ final class MeTraineeListViewController: BaseViewController {
         NotificationCenter.default.addObserver(self, selector: #selector(setTagbadgeIntegerNotification), name: Notification.updateItemTopTotalNameNotification, object: nil)
     }
     func setupUI(){
+        if type == .advancet || type == TraineeType.none {
+            self.navBar.title_label.text = (schoolId > 0 ?"在校学员":"我的学员") //"我的学员-预报名"
+        }
         self.view.backgroundColor = .db_theme
         self.navBar.back_button.addTarget(self, action: #selector(actionBackdo), for: .touchUpInside)
         self.navBar.search_button.addTarget(self, action: #selector(jumpSearchdo), for: .touchUpInside)
@@ -197,6 +199,9 @@ extension MeTraineeListViewController : VTMagicViewDelegate {
         let itemIndex = array[1]
         var menuItem = pageController.magicView.menuItem(at: UInt(itemIndex))
         menuItem?.qmui_badgeInteger = UInt(total)
+        if total>999 {
+            menuItem?.qmui_badgeOffset = CGPoint(x: -40, y: 26)
+        }
         if pageController.currentPage != itemIndex{
             menuItem?.qmui_badgeLabel?.isHidden = true
         }

+ 23 - 3
JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeSearchPageViewController.swift

@@ -17,6 +17,8 @@ final class MeTraineeSearchPageViewController: BaseTableViewController {
     @IBOutlet weak var search_textfield: QMUITextField!
     //搜按钮
     @IBOutlet weak var search_button: UIButton!
+    //title
+    @IBOutlet weak var title_label: UILabel!
     
     let meTraineeSearchViewModel = MeTraineeSearchViewModel()
 
@@ -24,6 +26,7 @@ final class MeTraineeSearchPageViewController: BaseTableViewController {
     var schoolId:Int = 0
     var appCoachId = ""
     var coachId = ""
+    var type:Int = 0
     //重置约束
     override func setupConstraints() {
         self.tableView.snp.remakeConstraints { make in
@@ -45,6 +48,19 @@ final class MeTraineeSearchPageViewController: BaseTableViewController {
     
     // MARK: 私有方法
     func setupUI(){
+        switch type {
+            case 0://我的学员
+            title_label.text = "我的学员"
+            break
+            case 1://在校学员
+            title_label.text = "在校学员"
+            break
+            case 2://绑定学员
+            title_label.text = "绑定学员"
+            break
+        default:
+            title_label.text = "我的学员"
+        }
         if isIphoneX {self.nav_topH_layout.constant = 64.f+24.f}
         self.view.backgroundColor = .db_theme
 //        self.searchView.addSubview(search_bar)
@@ -61,6 +77,10 @@ final class MeTraineeSearchPageViewController: BaseTableViewController {
             }
             NSLog("AAAAAAA")
         }
+        // 设置上拉加载更多
+        tableView.es.addInfiniteScrolling { [unowned self] in
+            self.meTraineeSearchViewModel.getLoadMore(vc: self)
+        }
         self.isEmptyDisplay = false
 
     }
@@ -74,7 +94,7 @@ final class MeTraineeSearchPageViewController: BaseTableViewController {
                 // Handle the updated search text here
                 print("Search text changed: \(searchText)")
 //                self.searchCoachInfoList()
-                self.meTraineeSearchViewModel.searchCoachInfoList(searchPageVC: self)
+                self.meTraineeSearchViewModel.searchCoachInfoList(vc: self)
             })
             .disposed(by: disposeBag)
         
@@ -116,13 +136,13 @@ extension MeTraineeSearchPageViewController:UITableViewDataSource {
     }
 
     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return self.meTraineeSearchViewModel.traineeDataModel?.rows!.count ?? 0
+        return self.meTraineeSearchViewModel.rows.count ?? 0
     }
 
     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
         let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! MeTraineeSubjectCell
         cell.index_button.setTitle("\(indexPath.row+1)", for: .normal)
-        cell.setRowInfo(rowInfo: (self.meTraineeSearchViewModel.traineeDataModel?.rows?[indexPath.row])!)
+        cell.setRowInfo(rowInfo: self.meTraineeSearchViewModel.rows[indexPath.row])
         return cell
     }
 }

+ 1 - 0
JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeSearchPageViewController.xib

@@ -15,6 +15,7 @@
                 <outlet property="searchView" destination="a0a-sl-bPA" id="ZwG-50-IDo"/>
                 <outlet property="search_button" destination="Kuy-oy-vcr" id="NHZ-xx-f80"/>
                 <outlet property="search_textfield" destination="k19-9d-1vC" id="caV-uN-1es"/>
+                <outlet property="title_label" destination="MsS-vL-AJw" id="mEN-Jd-vfV"/>
                 <outlet property="view" destination="iN0-l3-epB" id="uwr-i2-6nI"/>
             </connections>
         </placeholder>

+ 79 - 27
JiaPeiManage/Sources/Modulars/学员/ViewModel/MeTraineeSearchViewModel.swift

@@ -12,68 +12,120 @@ class MeTraineeSearchViewModel: NSObject {
     
     // MARK: 服务属性
     private let cocahService: CoachServiceType = CoachService(networking: CoachNetworking())
+//    @objc weak var vc:StatisticsPageController? = nil
     // MARK: 数据
     var traineeDataModel:TraineeDataModel?
     var page:Int = 1
-    var pageSize:Int = 250
+    var pageSize:Int = 15
     var state = ""
     var schoolId:Int = 0
     var appCoachId = ""
     var coachId = ""
+    var rows:[RowInfo] = []
+    
     private let itemsSubject = BehaviorSubject<[RowInfo]>(value: [])
         
     var items: Observable<[RowInfo]> {
         return itemsSubject.asObservable()
     }
     
+    
     override init() {
         super.init()
 //        searchCoachInfoList()
     }
 
     /// 数据请求
-    func searchCoachInfoList(searchPageVC:MeTraineeSearchPageViewController)
+    func searchCoachInfoList(vc:MeTraineeSearchPageViewController)
     {
         print("网络请求")
-        var keyword:String = searchPageVC.search_textfield.text!.trimmingCharacters(in: .whitespacesAndNewlines)
+        var keyword:String = vc.search_textfield.text!.trimmingCharacters(in: .whitespacesAndNewlines)
         if keyword == "" {
             self.traineeDataModel?.total = 0
             self.traineeDataModel?.rows?.removeAll()
-            searchPageVC.isEmptyDisplay = true
-            searchPageVC.hideLoadAnimation()
-            searchPageVC.stopRefresh()
-            searchPageVC.tableView.reloadData()
+            vc.isEmptyDisplay = true
+            vc.hideLoadAnimation()
+            vc.stopRefresh()
+            vc.tableView.reloadData()
             return
         }
-        //绑定的学员+remark=1+ 走原始api
-        if appCoachId != "" && LocalManager.userInfo.cityPower == "1"{
-            self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: appCoachId, coachId: "", field: keyword, pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
+        
+        //非绑定的学员 并且 是开启预报名地区
+        if appCoachId == "" && LocalManager.userInfo.cityPower == "1"{
+            self.cocahService.allStudentInfoListRequest(city: LocalManager.userInfo.city!, coachId:coachId, field: keyword, pageNum: page, pageSize: pageSize, schoolId: schoolId).subscribe(onSuccess: { [unowned self] traineeDataModel in
+                self.rows.removeAll()
+                self.traineeDataModel = traineeDataModel
+                self.rows += traineeDataModel.rows!
+                print("coachInfoListRequest成功")
+                vc.isEmptyDisplay = true
+                vc.hideLoadAnimation()
+                vc.stopRefresh()
+                vc.tableView.reloadData()
+            }, onError: { error in
+                vc.stopRefresh()
+            })
+            .disposed(by: vc.disposeBag)
+        }else{//绑定的学员+remark=1+ 走原始api
+            let coachIdStr = (appCoachId == "" ? coachId: "")
+            self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: appCoachId, coachId: coachIdStr, field: keyword, pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
                 .subscribe(onSuccess: { [unowned self] traineeDataModel in
+                    self.rows.removeAll()
                     self.traineeDataModel = traineeDataModel
-    //                itemsSubject.onNext(traineeDataModel.rows!)
+                    self.rows += traineeDataModel.rows!
                     print("coachInfoListRequest成功")
-                    searchPageVC.isEmptyDisplay = true
-                    searchPageVC.hideLoadAnimation()
-                    searchPageVC.stopRefresh()
-                    searchPageVC.tableView.reloadData()
+                    vc.isEmptyDisplay = true
+                    vc.hideLoadAnimation()
+                    vc.stopRefresh()
+                    vc.tableView.reloadData()
                 }, onError: { error in
-                    searchPageVC.stopRefresh()
+                    vc.stopRefresh()
                 })
-                .disposed(by: searchPageVC.disposeBag)
-        }else{
+                .disposed(by: vc.disposeBag)
+        }
+        
+    }
+    
+    //更多
+    func getLoadMore(vc:MeTraineeSearchPageViewController){
+        //计算-页数
+        if (traineeDataModel != nil){
+            let total = pageSize*self.page
+            if(total<(traineeDataModel?.total)!){
+                self.page+=1
+            }else{
+                vc.stopLoad()
+                return //已经显示完
+            }
+        }
+        var keyword:String = vc.search_textfield.text!.trimmingCharacters(in: .whitespacesAndNewlines)
+
+        //非绑定的学员 并且 是开启预报名地区
+        if appCoachId == "" && LocalManager.userInfo.cityPower == "1"{
             self.cocahService.allStudentInfoListRequest(city: LocalManager.userInfo.city!, coachId:coachId, field: keyword, pageNum: page, pageSize: pageSize, schoolId: schoolId).subscribe(onSuccess: { [unowned self] traineeDataModel in
                 self.traineeDataModel = traineeDataModel
-//                itemsSubject.onNext(traineeDataModel.rows!)
-                print("coachInfoListRequest成功")
-                searchPageVC.isEmptyDisplay = true
-                searchPageVC.hideLoadAnimation()
-                searchPageVC.stopRefresh()
-                searchPageVC.tableView.reloadData()
+                if(traineeDataModel.rows!.count>0){
+                    self.rows += traineeDataModel.rows!
+                }
+                vc.tableView.reloadData()
+                vc.stopLoad()
             }, onError: { error in
-                searchPageVC.stopRefresh()
+                vc.stopRefresh()
             })
-            .disposed(by: searchPageVC.disposeBag)
+            .disposed(by: vc.disposeBag)
+        }else{//绑定的学员+remark=1+ 走原始api
+            self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: appCoachId, coachId: "", field: keyword, pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
+                .subscribe(onSuccess: { [unowned self] traineeDataModel in
+                    self.traineeDataModel = traineeDataModel
+                    if(traineeDataModel.rows!.count>0){
+                        self.rows += traineeDataModel.rows!
+                    }
+                    vc.tableView.reloadData()
+                    vc.stopLoad()
+                }, onError: { error in
+                    vc.stopRefresh()
+                })
+                .disposed(by: vc.disposeBag)
         }
-        
     }
+    
 }

+ 39 - 20
JiaPeiManage/Sources/Modulars/学员/ViewModel/MeTraineeSubjectViewModel.swift

@@ -36,9 +36,10 @@ class MeTraineeSubjectViewModel: NSObject {
     func getCoachInfoList(vc:MeTraineeSubjectPageViewController)
     {
         page = 1
+        let coachId = schoolId > 0 ? "" : "\(LocalManager.userInfo.id)"
         if (self.type == .advancet){ //预报名
             if state == "0" {
-                self.cocahService.coachTempListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: "\(LocalManager.userInfo.id)", field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
+                self.cocahService.coachTempListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: "")
                     .subscribe(onSuccess: {[unowned self] traineeDataModel in
                         self.rows.removeAll()
                         self.traineeDataModel = traineeDataModel
@@ -55,7 +56,7 @@ class MeTraineeSubjectViewModel: NSObject {
                     })
                     .disposed(by: vc.disposeBag)
             }else {
-                self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: "\(LocalManager.userInfo.id)", field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
+                self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
                     .subscribe(onSuccess: {[unowned self] traineeDataModel in
                         self.rows.removeAll()
                         self.traineeDataModel = traineeDataModel
@@ -76,7 +77,7 @@ class MeTraineeSubjectViewModel: NSObject {
             
             return
         }else if(self.type == .biandstu){ //绑定学员
-            self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: "\(LocalManager.userInfo.id)", coachId: "", field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
+            self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: coachId, coachId: "", field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
                 .subscribe(onSuccess: {[unowned self] traineeDataModel in
                     self.rows.removeAll()
                     self.traineeDataModel = traineeDataModel
@@ -94,7 +95,7 @@ class MeTraineeSubjectViewModel: NSObject {
                 .disposed(by: vc.disposeBag)
             return
         }
-        self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: "\(LocalManager.userInfo.id)", field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
+        self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
             .subscribe(onSuccess: {[unowned self] traineeDataModel in
                 self.rows.removeAll()
                 self.traineeDataModel = traineeDataModel
@@ -125,24 +126,42 @@ class MeTraineeSubjectViewModel: NSObject {
                 return //已经显示完
             }
         }
+        let coachId = schoolId > 0 ? "" : "\(LocalManager.userInfo.id)"
         if (self.type == .advancet){ //预报名
-            self.cocahService.coachTempListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: "\(LocalManager.userInfo.id)", field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
-                .subscribe(onSuccess: {[unowned self]  traineeDataModel in
-                    self.traineeDataModel = traineeDataModel
-                    if(traineeDataModel.rows!.count>0){
-                        self.rows += traineeDataModel.rows!
-                    }
-                    itemsSubject.onNext(self.rows)//消息rx
-                    print("coachInfoListRequest成功")
-//                    vc.tableView.reloadData()
-                    vc.stopLoad()
-                }, onError: { error in
-                    vc.stopLoad()
-                })
-                .disposed(by: vc.disposeBag)
+            if state == "0" {
+                self.cocahService.coachTempListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: "")
+                    .subscribe(onSuccess: {[unowned self] traineeDataModel in
+                        self.traineeDataModel = traineeDataModel
+                        if(traineeDataModel.rows!.count>0){
+                            self.rows += traineeDataModel.rows!
+                        }
+                        itemsSubject.onNext(self.rows)//消息rx
+                        print("coachInfoListRequest成功")
+    //                    vc.tableView.reloadData()
+                        vc.stopLoad()
+                    }, onError: { error in
+                        vc.stopRefresh()
+                    })
+                    .disposed(by: vc.disposeBag)
+            }else {
+                self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
+                    .subscribe(onSuccess: {[unowned self] traineeDataModel in
+                        self.traineeDataModel = traineeDataModel
+                        if(traineeDataModel.rows!.count>0){
+                            self.rows += traineeDataModel.rows!
+                        }
+                        itemsSubject.onNext(self.rows)//消息rx
+                        print("coachInfoListRequest成功")
+        //                vc.tableView.reloadData()
+                        vc.stopLoad()
+                    }, onError: { error in
+                        vc.stopRefresh()
+                    })
+                    .disposed(by: vc.disposeBag)
+            }
             return
         }else if(self.type == .biandstu){ //绑定学员
-            self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: "\(LocalManager.userInfo.id)", coachId: "", field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
+            self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: coachId, coachId: "", field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
                 .subscribe(onSuccess: {[unowned self]  traineeDataModel in
                     self.traineeDataModel = traineeDataModel
                     if(traineeDataModel.rows!.count>0){
@@ -159,7 +178,7 @@ class MeTraineeSubjectViewModel: NSObject {
             return
         }
         //请求网络-加载
-        self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: "\(LocalManager.userInfo.id)", field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
+        self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
             .subscribe(onSuccess: {[unowned self]  traineeDataModel in
                 self.traineeDataModel = traineeDataModel
                 if(traineeDataModel.rows!.count>0){

+ 1 - 0
JiaPeiManage/Sources/Utils/URLNavigationMap.swift

@@ -26,6 +26,7 @@ final class URLNavigationMap {
             else { return nil }
             
             let meTraineeSearchPageViewController = MeTraineeSearchPageViewController(nibName: "MeTraineeSearchPageViewController")
+            meTraineeSearchPageViewController.type = context
             switch context {
                 case 0://我的学员
                 meTraineeSearchPageViewController.coachId = "\(LocalManager.userInfo.id)"