Browse Source

y 统计 基本完成 top num total up

openlockPPP 1 year ago
parent
commit
3d7da7d0a6
39 changed files with 3017 additions and 2124 deletions
  1. 8 0
      JiaPeiManage.xcodeproj/project.pbxproj
  2. 1 1
      JiaPeiManage.xcodeproj/xcuserdata/mimasigeling.xcuserdatad/xcschemes/xcschememanagement.plist
  3. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_down.imageset/Contents.json
  4. BIN
      JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_down.imageset/升降序.png
  5. BIN
      JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_down.imageset/升降序@2x.png
  6. BIN
      JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_down.imageset/升降序@3x.png
  7. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_up.imageset/Contents.json
  8. BIN
      JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_up.imageset/升降序(1).png
  9. BIN
      JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_up.imageset/升降序@2x(1).png
  10. BIN
      JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_up.imageset/升降序@3x(1).png
  11. 12 0
      JiaPeiManage/Sources/Constants/NYMacros.swift
  12. 14 0
      JiaPeiManage/Sources/Extensions/Notification+NY.swift
  13. 1 1
      JiaPeiManage/Sources/Extensions/UIColor+NY.swift
  14. 1 0
      JiaPeiManage/Sources/Main/Base/BaseViewController.swift
  15. 1 0
      JiaPeiManage/Sources/Modulars/Home/Controllers/HomeViewController.swift
  16. 327 0
      JiaPeiManage/Sources/Modulars/Statistics/Controllers/StatisticsOfficialPageController.swift
  17. 223 43
      JiaPeiManage/Sources/Modulars/Statistics/Controllers/StatisticsPageController.swift
  18. 33 4
      JiaPeiManage/Sources/Modulars/Statistics/Views/StatisticsPageHeaderView.swift
  19. 17 13
      JiaPeiManage/Sources/Modulars/Statistics/Views/StatisticsPageHeaderView.xib
  20. 23 4
      JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeListViewController.swift
  21. 1 0
      JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeSubjectPageViewController.swift
  22. 42 40
      JiaPeiManage/Sources/Services/StatisticsAPI.swift
  23. 9 9
      JiaPeiManage/Sources/Services/StatisticsService.swift
  24. 3 0
      JiaPeiManage/Sources/Utils/NYSwRouter.swift
  25. 5 0
      JiaPeiManage/Sources/Utils/URLNavigationMap.swift
  26. 1 0
      Podfile
  27. 9 1
      Podfile.lock
  28. 9 1
      Pods/Manifest.lock
  29. 2059 1973
      Pods/Pods.xcodeproj/project.pbxproj
  30. 48 34
      Pods/Pods.xcodeproj/xcuserdata/mimasigeling.xcuserdatad/xcschemes/xcschememanagement.plist
  31. 50 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-acknowledgements.markdown
  32. 62 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-acknowledgements.plist
  33. 2 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks-Debug-input-files.xcfilelist
  34. 2 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks-Debug-output-files.xcfilelist
  35. 2 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks-Release-input-files.xcfilelist
  36. 2 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks-Release-output-files.xcfilelist
  37. 4 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks.sh
  38. 0 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage.debug.xcconfig
  39. 0 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage.release.xcconfig

+ 8 - 0
JiaPeiManage.xcodeproj/project.pbxproj

@@ -67,6 +67,8 @@
 		90BC4BE02A3C46C4006FD683 /* MeTraineeDetailsPageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90BC4BDF2A3C46C4006FD683 /* MeTraineeDetailsPageViewController.xib */; };
 		90BC4BE52A3DDF33006FD683 /* MeTraineeSubjectHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90BC4BE42A3DDF33006FD683 /* MeTraineeSubjectHeaderView.swift */; };
 		90BC4BE72A3DDF44006FD683 /* MeTraineeSubjectHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90BC4BE62A3DDF44006FD683 /* MeTraineeSubjectHeaderView.xib */; };
+		90C9C5552A4C7189006D3921 /* StatisticsOfficialPageController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90C9C5542A4C7189006D3921 /* StatisticsOfficialPageController.swift */; };
+		90C9C5592A4C7B45006D3921 /* Notification+NY.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90C9C5582A4C7B45006D3921 /* Notification+NY.swift */; };
 		90CE52192A36C0710033BD06 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90CE52182A36C0710033BD06 /* AppDelegate.swift */; };
 		90CE52222A36C0720033BD06 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 90CE52212A36C0720033BD06 /* Assets.xcassets */; };
 		90CE52252A36C0720033BD06 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 90CE52232A36C0720033BD06 /* LaunchScreen.storyboard */; };
@@ -229,6 +231,8 @@
 		90BC4BDF2A3C46C4006FD683 /* MeTraineeDetailsPageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MeTraineeDetailsPageViewController.xib; sourceTree = "<group>"; };
 		90BC4BE42A3DDF33006FD683 /* MeTraineeSubjectHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeTraineeSubjectHeaderView.swift; sourceTree = "<group>"; };
 		90BC4BE62A3DDF44006FD683 /* MeTraineeSubjectHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MeTraineeSubjectHeaderView.xib; sourceTree = "<group>"; };
+		90C9C5542A4C7189006D3921 /* StatisticsOfficialPageController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatisticsOfficialPageController.swift; sourceTree = "<group>"; };
+		90C9C5582A4C7B45006D3921 /* Notification+NY.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Notification+NY.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>"; };
 		90CE52212A36C0720033BD06 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
@@ -463,6 +467,7 @@
 			isa = PBXGroup;
 			children = (
 				90971E732A498C4C00267B7F /* StatisticsPageController.swift */,
+				90C9C5542A4C7189006D3921 /* StatisticsOfficialPageController.swift */,
 			);
 			path = Controllers;
 			sourceTree = "<group>";
@@ -780,6 +785,7 @@
 				90CE529C2A36E5990033BD06 /* UIScrollView+ScrollToBottom.swift */,
 				90CE529D2A36E5990033BD06 /* UIColor+NY.swift */,
 				90CE529E2A36E5990033BD06 /* NSAttributedString+BoundingRect.swift */,
+				90C9C5582A4C7B45006D3921 /* Notification+NY.swift */,
 				90CE529F2A36E5990033BD06 /* VTContentView+Gesture.swift */,
 			);
 			path = Extensions;
@@ -1139,6 +1145,7 @@
 				90BC4BDE2A3C4691006FD683 /* MeTraineeDetailsPageViewController.swift in Sources */,
 				90CE52CB2A36E5EC0033BD06 /* UILabel+Rx.swift in Sources */,
 				90CE52E12A36E73A0033BD06 /* SplashModel.swift in Sources */,
+				90C9C5592A4C7B45006D3921 /* Notification+NY.swift in Sources */,
 				908FEEAF2A42FA4F00BEB81C /* StuLogFacDataModel.swift in Sources */,
 				90CE52862A36E5460033BD06 /* EmptyView.swift in Sources */,
 				90971E802A4A7F4900267B7F /* ViewController.swift in Sources */,
@@ -1190,6 +1197,7 @@
 				908FEEA32A42D35000BEB81C /* BaseGroupTableViewController.swift in Sources */,
 				90CE527E2A36E5460033BD06 /* NetAnimationLoadable.swift in Sources */,
 				90CE52D62A36E6000033BD06 /* NYSwRouter.swift in Sources */,
+				90C9C5552A4C7189006D3921 /* StatisticsOfficialPageController.swift in Sources */,
 				90CE52AB2A36E59A0033BD06 /* UIViewController+NetAnimation.swift in Sources */,
 				90CE527A2A36E5460033BD06 /* LWPlayerDelegate.swift in Sources */,
 				90CE52CC2A36E5EC0033BD06 /* NotificationCenter+Rx.swift in Sources */,

+ 1 - 1
JiaPeiManage.xcodeproj/xcuserdata/mimasigeling.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -7,7 +7,7 @@
 		<key>JiaPeiManage.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>50</integer>
+			<integer>52</integer>
 		</dict>
 	</dict>
 </dict>

+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_down.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "升降序.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "升降序@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "升降序@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_down.imageset/升降序.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_down.imageset/升降序@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_down.imageset/升降序@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_up.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "升降序(1).png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "升降序@2x(1).png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "升降序@3x(1).png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_up.imageset/升降序(1).png


BIN
JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_up.imageset/升降序@2x(1).png


BIN
JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_up.imageset/升降序@3x(1).png


+ 12 - 0
JiaPeiManage/Sources/Constants/NYMacros.swift

@@ -51,4 +51,16 @@ struct NYMacros {
 struct NYSource {
     
     static let statedicts:[String:String] = ["1":"一","2":"二","3":"三","4":"四","5":"五"]
+    
+
+}
+
+struct NYDate {
+    //获取当前时间
+    static func getThisDate()->String {
+        let currentDate = Date()
+        let dateFormatter = DateFormatter()
+        dateFormatter.dateFormat = "YYYY-MM-dd"
+        return  dateFormatter.string(from: currentDate)
+    }
 }

+ 14 - 0
JiaPeiManage/Sources/Extensions/Notification+NY.swift

@@ -0,0 +1,14 @@
+//
+//  File.swift
+//  SwiftBilibili
+//
+//  Created by Ning.ge on 2023/6/28.
+//  Copyright © 2023 罗文. All rights reserved.
+//
+
+import UIKit
+
+extension Notification {
+    
+    public static let updateItemTopTotalNameNotification = Notification.Name(rawValue: "APPp.notification.name.updateItem.total")
+}

+ 1 - 1
JiaPeiManage/Sources/Extensions/UIColor+NY.swift

@@ -27,7 +27,7 @@ extension UIColor {
     class var db_fontGray: UIColor { return UIColor("#899199")! }
     class var db_fontSelColor: UIColor { return UIColor("#D4DDE6")! }
     class var db_sliderColor: UIColor { return UIColor("#30B05C")! }
-    
+    class var db_green: UIColor { return UIColor("#35BF5E")! }
     //字体色
     class var db_fontDefRegular: UIColor { return UIColor("#B6C1CC")! }
     class var db_fontDef: UIColor { return UIColor("#B6C1CC")! }

+ 1 - 0
JiaPeiManage/Sources/Main/Base/BaseViewController.swift

@@ -57,6 +57,7 @@ class BaseViewController: UIViewController, NetAnimationLoadable {
     }
     
     deinit {
+        NotificationCenter.default.removeObserver(self)
         log.verbose("DEINIT: \(self.className)")
     }
     

+ 1 - 0
JiaPeiManage/Sources/Modulars/Home/Controllers/HomeViewController.swift

@@ -76,6 +76,7 @@ final class HomeViewController: BaseViewController {
             if !LocalManager.isOpenLogin() { return}
             print("统计-action")
             NYSwRouter.push(NYSwPushType.trainee_statistics.path)
+//            NYSwRouter.push(NYSwPushType.trainee_statistics_official.path)
         }).disposed(by: disposeBag)
         //个人中心-action
         self.mineAction_button.rx.tap.subscribe ({ [unowned self] (_)  in

+ 327 - 0
JiaPeiManage/Sources/Modulars/Statistics/Controllers/StatisticsOfficialPageController.swift

@@ -0,0 +1,327 @@
+//
+//  StatisticsOfficialPageController.swift
+//  JiaPeiManage
+//
+//  Created by Ning.ge on 2023/6/28.
+//
+
+import UIKit
+import RxSwift
+import RxCocoa
+import PGDatePicker
+
+final class StatisticsOfficialPageController: BaseGroupTableViewController {
+
+    let cellIdentifier:String = "_StatisticsOfficialPageCell"
+    // MARK: 服务属性
+    private let statisticsService: StatisticsServiceType = StatisticsService(networking: StatisticsNetworking())
+    // MARK: UI let
+    let statusBar = UIView().then {
+        $0.backgroundColor = UIColor.db_theme
+    }
+    
+    let navBar = MeTraineeNavBar.loadFromNib().then {
+        $0.title_label.text = "全部报名统计"
+    }
+    
+    let headerView = StatisticsPageHeaderView.loadFromNib().then {
+        $0.backgroundColor = .db_theme
+    }
+    // MARK: 数据
+    var stuTotalCountDataModel:StuTotalCountDataModel?
+    var stuCountDataModel:StuCountDataModel?
+    var dateType:DateType = .day
+    var startDate:String = ""
+    var endDate:String = ""
+    var fieldType:Int = 1 //1:时间 2:学员数
+    var sortType:Int = 2 //1:正序 2:倒序
+    
+    var datePicCount = 0 //选择器 -日期end 2
+    
+    override func setupConstraints() {
+        
+        statusBar.snp.makeConstraints { (make) in
+            make.left.right.top.equalToSuperview()
+            make.height.equalTo(Metric.statusBarHeight)
+        }
+        
+        navBar.snp.remakeConstraints { (make) in
+            make.left.right.equalToSuperview()
+            make.height.equalTo(Metric.navBarHeight)
+            make.top.equalTo(statusBar.snp.bottom)
+        }
+        
+        tableView.snp.remakeConstraints { make in
+            make.top.equalTo(navBar.snp.bottom)
+            make.left.right.bottom.equalToSuperview()
+        }
+        
+    }
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        setupUI()
+        biandView()
+        getStatisticsList(isLoading: true)
+    }
+    
+    // MARK: 私有方法
+    //显示时间选择器
+    func showPGDatePickManager(){
+        self.datePicCount+=1
+        switch dateType {
+        case .day:
+            let datePickerManager = PGDatePickManager()
+            datePickerManager.headerViewBackgroundColor = UIColor("#031223")
+            datePickerManager.titleLabel.text = "选择年月日"
+            datePickerManager.titleLabel.textColor = UIColor.white
+            datePickerManager.cancelButtonTextColor = .db_fontGray
+            datePickerManager.confirmButtonTextColor = .db_green
+            let datePicker = datePickerManager.datePicker!
+            datePicker.lineBackgroundColor = .db_green
+            datePicker.textColorOfSelectedRow = .db_green
+            datePicker.backgroundColor = UIColor("#031223")
+            datePicker.delegate = self
+            datePicker.isHiddenMiddleText = false;
+            datePicker.datePickerType = .segment;
+            datePicker.datePickerMode = .date
+            self.present(datePickerManager, animated: false, completion: nil)
+        case .month:
+            let datePickerManager = PGDatePickManager()
+            datePickerManager.headerViewBackgroundColor = UIColor("#031223")
+            datePickerManager.titleLabel.text = "选择年月"
+            datePickerManager.titleLabel.textColor = UIColor.white
+            datePickerManager.cancelButtonTextColor = .db_fontGray
+            datePickerManager.confirmButtonTextColor = .db_green
+            let datePicker = datePickerManager.datePicker!
+            datePicker.lineBackgroundColor = .db_green
+            datePicker.textColorOfSelectedRow = .db_green
+            datePicker.backgroundColor = UIColor("#031223")
+            datePicker.delegate = self
+            datePicker.isHiddenMiddleText = false;
+            datePicker.datePickerType = .segment
+            datePicker.datePickerMode = .yearAndMonth
+            self.present(datePickerManager, animated: false, completion: nil)
+        case .year:
+            let datePickerManager = PGDatePickManager()
+            datePickerManager.headerViewBackgroundColor = UIColor("#031223")
+            datePickerManager.titleLabel.text = "选择年"
+            datePickerManager.titleLabel.textColor = UIColor.white
+            datePickerManager.cancelButtonTextColor = .db_fontGray
+            datePickerManager.confirmButtonTextColor = .db_green
+            let datePicker = datePickerManager.datePicker!
+            datePicker.lineBackgroundColor = .db_green
+            datePicker.textColorOfSelectedRow = .db_green
+            datePicker.backgroundColor = UIColor("#031223")
+            datePicker.delegate = self
+            datePicker.isHiddenMiddleText = false;
+            datePicker.datePickerType = .segment
+            datePicker.datePickerMode = .year
+            self.present(datePickerManager, animated: false, completion: nil)
+        }
+    }
+    //配置显示时间
+    func configUIdata(){
+        
+        // 根据不同的 dateType 进行相应的数据请求
+        var starttime = ""
+        var endtime = ""
+        switch dateType {
+        case .day:
+            starttime = startDate
+            endtime = endDate
+        case .month:
+            starttime = String(startDate.prefix(7))
+            endtime = String(endDate.prefix(7))
+        case .year:
+            starttime = String(startDate.prefix(4))
+            endtime = String(endDate.prefix(4))
+        }
+        headerView.date_section_button.setTitle("\(starttime)~\(endtime)", for: .normal)
+        
+    }
+    
+    func setupUI(){
+        self.view.addSubview(navBar)
+        self.view.addSubview(statusBar)
+        self.view.backgroundColor = .db_theme
+        self.navBar.back_button.addTarget(self, action: #selector(actionBackdo), for: .touchUpInside)
+        self.navBar.search_button.isHidden = true
+        self.endDate = NYDate.getThisDate()
+        self.startDate = self.endDate.prefix(7)+"-01"
+        configUIdata()
+        //header - 事件
+        headerView.items_date_segmented.rx.selectedSegmentIndex
+                .map { DateType(rawValue: $0)! }
+                    .subscribe(onNext: { [weak self] dateType in
+                        self?.dateType = dateType
+                        self?.configUIdata()
+                        self?.switchStatisticsStuCount()
+                        print("datetype = \(dateType)")
+                    })
+                    .disposed(by: disposeBag)
+        //日前选择
+        headerView.date_section_button.rx.tap.subscribe ({  [unowned self] (_) in
+            self.showPGDatePickManager()
+        }).disposed(by: disposeBag)
+        //时间排序
+        headerView.time_button.rx.tap
+            .subscribe ({  [unowned self] (_) in
+                headerView.time_button.isSelected = !headerView.time_button.isSelected
+                self.fieldType = 1 //1:时间 2:学员数
+                self.sortType = headerView.time_button.isSelected ? 1:2
+                self.switchStatisticsStuCount()
+        }).disposed(by: disposeBag)
+        //学员排序
+        headerView.student_button.rx.tap.subscribe ({  [unowned self] (_) in
+            headerView.student_button.isSelected = !headerView.student_button.isSelected
+            self.fieldType = 2 //1:时间 2:学员数
+            self.sortType = headerView.student_button.isSelected ? 1:2
+            self.switchStatisticsStuCount()
+        }).disposed(by: disposeBag)
+    }
+    func biandView(){
+        tableView.delegate = self
+        tableView.dataSource = self
+        tableView.separatorStyle = .none //去除分割线
+        tableView.register(UINib(nibName: "StatisticsPageCell", bundle: nil), forCellReuseIdentifier: cellIdentifier)
+        tableView.rowHeight = 44.f
+        tableView.contentInset = UIEdgeInsets(top: -25, left: 0, bottom: -25, right: 0)
+        setupRefreshHeader(tableView) {[unowned self] in
+            self.getStatisticsList(isLoading: false)
+        }
+    }
+    
+
+    //获取统计报名
+    func getStatisticsList(isLoading:Bool){
+        if isLoading {NYTips.show()}
+        self.statisticsService.statisticsStuCount(city: LocalManager.userInfo.city!, schoolId: LocalManager.userInfo.schoolId).subscribe(onSuccess: {[unowned self] stuTotalCountDataModel in
+                print("成功%@",stuTotalCountDataModel)
+                self.stuTotalCountDataModel = stuTotalCountDataModel
+                
+                self.statisticsService.everyDayStuCountRequest(city: LocalManager.userInfo.city!, schoolId: LocalManager.userInfo.schoolId, startDate: self.startDate, endDate: self.endDate, fieldType: self.fieldType,sortType: self.sortType).subscribe(onSuccess: { stuCountDataModel in
+                        self.stuCountDataModel = stuCountDataModel
+                        self.hideLoadAnimation()
+                        self.tableView.reloadData()
+                        self.stopRefresh()
+                        NYTips.hide()
+                    }, onError: { error in
+                        self.stopRefresh()
+                        NYTips.hide()
+                    })
+                    .disposed(by: disposeBag)
+            }, onError: { error in
+                self.stopRefresh()
+                NYTips.hide()
+            })
+            .disposed(by: disposeBag)
+    }
+    
+    //切换
+    func switchStatisticsStuCount(){
+        // 根据不同的 dateType 进行相应的数据请求
+        switch dateType {
+        case .day:
+            // 发起请求,获取日数据
+            self.statisticsService.everyDayStuCountRequest(city: LocalManager.userInfo.city!, schoolId: LocalManager.userInfo.schoolId, startDate: self.startDate, endDate: self.endDate, fieldType: self.fieldType,sortType: self.sortType).subscribe(onSuccess: { stuCountDataModel in
+                    self.stuCountDataModel = stuCountDataModel
+                    self.tableView.reloadData()
+                }, onError: { error in
+                })
+                .disposed(by: disposeBag)
+        case .month:
+            // 发起请求,获取月数据
+            let startMonth = String(self.startDate.prefix(7))
+            let endMonth =  String(self.endDate.prefix(7))
+            self.statisticsService.everyMonthStuCount(city: LocalManager.userInfo.city!, schoolId: LocalManager.userInfo.schoolId, startMonth: startMonth, endMonth: endMonth, fieldType: self.fieldType,sortType: self.sortType).subscribe(onSuccess: { stuCountDataModel in
+                    self.stuCountDataModel = stuCountDataModel
+                    self.tableView.reloadData()
+                }, onError: { error in
+                })
+                .disposed(by: disposeBag)
+        case .year:
+            // 发起请求,获取年数据
+            let startYear = String(self.startDate.prefix(4))
+            let endYear =  String(self.endDate.prefix(4))
+            self.statisticsService.everyYearStuCount(city: LocalManager.userInfo.city!, schoolId: LocalManager.userInfo.schoolId, startYear: startYear, endYear: endYear, fieldType: self.fieldType,sortType: self.sortType).subscribe(onSuccess: { stuCountDataModel in
+                    self.stuCountDataModel = stuCountDataModel
+                    self.tableView.reloadData()
+                }, onError: { error in
+                })
+                .disposed(by: disposeBag)
+        }
+
+    }
+
+    
+}
+
+
+//数据源
+extension StatisticsOfficialPageController:UITableViewDataSource {
+    
+    
+    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+        if  stuCountDataModel != nil&&(stuCountDataModel?.rows!.count)!>0 {
+            return (stuCountDataModel?.rows.count)!+1
+        }
+        return 0
+    }
+    
+    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
+        if stuTotalCountDataModel != nil {
+            headerView.setStuTotalCountDataModel(stuTotalCountDataModel: stuTotalCountDataModel!)
+        }
+        return headerView
+    }
+    
+    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
+        return 352.f
+    }
+    
+    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+        let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! StatisticsPageCell
+        cell.contentView.backgroundColor = ((indexPath.row%2) != 0) ? UIColor("#113357") : UIColor("#0B2B4D")
+        cell.backgroundColor = ((indexPath.row%2) != 0) ? UIColor("#113357") : UIColor("#0B2B4D")
+        if (indexPath.row==0){
+            let obj = (stuCountDataModel?.data)! as StuCountTotalModel
+            cell.date_label.text = "总计"
+            cell.num_label.text = String(obj.total)
+            cell.num_label.textColor = .db_green
+        }else{
+            let info = (stuCountDataModel?.rows[indexPath.row-1])! as StuCountInfoModel
+            cell.date_label.text = info.dateTime
+            cell.num_label.text = String(info.stuCount)
+            cell.num_label.textColor = .db_fontGray
+        }
+        return cell
+    }
+}
+
+//事件
+extension StatisticsOfficialPageController:UITableViewDelegate {
+
+    
+}
+//PGDatePickerDelegate
+extension StatisticsOfficialPageController: PGDatePickerDelegate {
+    func datePicker(_ datePicker: PGDatePicker!, didSelectDate dateComponents: DateComponents!) {
+        
+        print("dateComponents = ", dateComponents)
+        if datePicCount>=2 {
+            self.endDate = String(format: "%02d", dateComponents.year ?? 0)+"-"+String(format: "%02d", dateComponents.month ?? 0)+"-"+String(format: "%02d", dateComponents.day ?? 0)
+            datePicCount=0
+            configUIdata()
+            self.switchStatisticsStuCount()
+        }
+        else {
+            self.startDate = String(format: "%02d", dateComponents.year ?? 0)+"-"+String(format: "%02d", dateComponents.month ?? 0)+"-"+String(format: "%02d", dateComponents.day ?? 0)
+            configUIdata()
+            DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
+                // 在延迟 1 秒后执行的代码
+                self.showPGDatePickManager()
+            }
+            
+        }
+    }
+}

+ 223 - 43
JiaPeiManage/Sources/Modulars/Statistics/Controllers/StatisticsPageController.swift

@@ -8,7 +8,7 @@
 import UIKit
 import RxSwift
 import RxCocoa
-
+import PGDatePicker
 
 final class StatisticsPageController: BaseGroupTableViewController {
 
@@ -27,6 +27,16 @@ final class StatisticsPageController: BaseGroupTableViewController {
     let headerView = StatisticsPageHeaderView.loadFromNib().then {
         $0.backgroundColor = .db_theme
     }
+    // MARK: 数据
+    var stuTotalCountDataModel:StuTotalCountDataModel?
+    var stuCountDataModel:StuCountDataModel?
+    var dateType:DateType = .day
+    var startDate:String = ""
+    var endDate:String = ""
+    var fieldType:Int = 1 //1:时间 2:学员数
+    var sortType:Int = 2 //1:正序 2:倒序
+    
+    var datePicCount = 0 //选择器 -日期end 2
     
     override func setupConstraints() {
         
@@ -51,36 +61,123 @@ final class StatisticsPageController: BaseGroupTableViewController {
         super.viewDidLoad()
         setupUI()
         biandView()
-        
-        self.statisticsService.statisticsStuCount(city: LocalManager.userInfo.city!, schoolId: LocalManager.userInfo.schoolId).subscribe(onSuccess: { stuTotalCountDataModel in
-            
-                print("成功%@",stuTotalCountDataModel)
-            
-            }, onError: { error in
-            })
-            .disposed(by: disposeBag)
-        self.statisticsService.everyDayStuCountRequest(city: LocalManager.userInfo.city!, schoolId: LocalManager.userInfo.schoolId, startDate: "2023-06-25", endDate: "2023-06-26").subscribe(onSuccess: { stuCountDataModel in
-            
-//            self.rows.removeAll()
-//            self.traineeDataModel = traineeDataModel
-//            self.rows += traineeDataModel.rows!
-            print("everyDayStuCountRequest成功  %@",stuCountDataModel)
-//            self.hideLoadAnimation()
-//            self.tableView.reloadData()
-//            self.stopRefresh()
-        }, onError: { error in
-//            self.stopRefresh()
-        })
-        .disposed(by: disposeBag)
+        getStatisticsList(isLoading: true)
     }
     
     // MARK: 私有方法
+    //显示时间选择器
+    func showPGDatePickManager(){
+        self.datePicCount+=1
+        switch dateType {
+        case .day:
+            let datePickerManager = PGDatePickManager()
+            datePickerManager.headerViewBackgroundColor = UIColor("#031223")
+            datePickerManager.titleLabel.text = "选择年月日"
+            datePickerManager.titleLabel.textColor = UIColor.white
+            datePickerManager.cancelButtonTextColor = .db_fontGray
+            datePickerManager.confirmButtonTextColor = .db_green
+            let datePicker = datePickerManager.datePicker!
+            datePicker.lineBackgroundColor = .db_green
+            datePicker.textColorOfSelectedRow = .db_green
+            datePicker.backgroundColor = UIColor("#031223")
+            datePicker.delegate = self
+            datePicker.isHiddenMiddleText = false;
+            datePicker.datePickerType = .segment;
+            datePicker.datePickerMode = .date
+            self.present(datePickerManager, animated: false, completion: nil)
+        case .month:
+            let datePickerManager = PGDatePickManager()
+            datePickerManager.headerViewBackgroundColor = UIColor("#031223")
+            datePickerManager.titleLabel.text = "选择年月"
+            datePickerManager.titleLabel.textColor = UIColor.white
+            datePickerManager.cancelButtonTextColor = .db_fontGray
+            datePickerManager.confirmButtonTextColor = .db_green
+            let datePicker = datePickerManager.datePicker!
+            datePicker.lineBackgroundColor = .db_green
+            datePicker.textColorOfSelectedRow = .db_green
+            datePicker.backgroundColor = UIColor("#031223")
+            datePicker.delegate = self
+            datePicker.isHiddenMiddleText = false;
+            datePicker.datePickerType = .segment
+            datePicker.datePickerMode = .yearAndMonth
+            self.present(datePickerManager, animated: false, completion: nil)
+        case .year:
+            let datePickerManager = PGDatePickManager()
+            datePickerManager.headerViewBackgroundColor = UIColor("#031223")
+            datePickerManager.titleLabel.text = "选择年"
+            datePickerManager.titleLabel.textColor = UIColor.white
+            datePickerManager.cancelButtonTextColor = .db_fontGray
+            datePickerManager.confirmButtonTextColor = .db_green
+            let datePicker = datePickerManager.datePicker!
+            datePicker.lineBackgroundColor = .db_green
+            datePicker.textColorOfSelectedRow = .db_green
+            datePicker.backgroundColor = UIColor("#031223")
+            datePicker.delegate = self
+            datePicker.isHiddenMiddleText = false;
+            datePicker.datePickerType = .segment
+            datePicker.datePickerMode = .year
+            self.present(datePickerManager, animated: false, completion: nil)
+        }
+    }
+    //配置显示时间
+    func configUIdata(){
+        
+        // 根据不同的 dateType 进行相应的数据请求
+        var starttime = ""
+        var endtime = ""
+        switch dateType {
+        case .day:
+            starttime = startDate
+            endtime = endDate
+        case .month:
+            starttime = String(startDate.prefix(7))
+            endtime = String(endDate.prefix(7))
+        case .year:
+            starttime = String(startDate.prefix(4))
+            endtime = String(endDate.prefix(4))
+        }
+        headerView.date_section_button.setTitle("\(starttime)~\(endtime)", for: .normal)
+        
+    }
+    
     func setupUI(){
         self.view.addSubview(navBar)
         self.view.addSubview(statusBar)
         self.view.backgroundColor = .db_theme
         self.navBar.back_button.addTarget(self, action: #selector(actionBackdo), for: .touchUpInside)
         self.navBar.search_button.isHidden = true
+        self.endDate = NYDate.getThisDate()
+        self.startDate = self.endDate.prefix(7)+"-01"
+        configUIdata()
+        //header - 事件
+        headerView.items_date_segmented.rx.selectedSegmentIndex
+                .map { DateType(rawValue: $0)! }
+                    .subscribe(onNext: { [weak self] dateType in
+                        self?.dateType = dateType
+                        self?.configUIdata()
+                        self?.switchStatisticsStuCount()
+                        print("datetype = \(dateType)")
+                    })
+                    .disposed(by: disposeBag)
+        //日前选择
+        headerView.date_section_button.rx.tap.subscribe ({  [unowned self] (_) in
+            self.showPGDatePickManager()
+        }).disposed(by: disposeBag)
+        //时间排序
+        headerView.time_button.rx.tap
+            .subscribe ({  [unowned self] (_) in
+                headerView.time_button.isSelected = !headerView.time_button.isSelected
+                self.fieldType = 1 //1:时间 2:学员数
+                self.sortType = headerView.time_button.isSelected ? 1:2
+                self.switchStatisticsStuCount()
+        }).disposed(by: disposeBag)
+        //学员排序
+        headerView.student_button.rx.tap.subscribe ({  [unowned self] (_) in
+            headerView.student_button.isSelected = !headerView.student_button.isSelected
+            self.fieldType = 2 //1:时间 2:学员数
+            self.sortType = headerView.student_button.isSelected ? 1:2
+            self.switchStatisticsStuCount()
+        }).disposed(by: disposeBag)
     }
     func biandView(){
         tableView.delegate = self
@@ -90,16 +187,72 @@ final class StatisticsPageController: BaseGroupTableViewController {
         tableView.rowHeight = 44.f
         tableView.contentInset = UIEdgeInsets(top: -25, left: 0, bottom: -25, right: 0)
         setupRefreshHeader(tableView) {[unowned self] in
-//            self.getStuResultList()
-            self.stopRefresh()
+            self.getStatisticsList(isLoading: false)
+        }
+    }
+    
+
+    //获取统计报名
+    func getStatisticsList(isLoading:Bool){
+        if isLoading {NYTips.show()}
+        self.statisticsService.statisticsStuCount(city: LocalManager.userInfo.city!, schoolId: LocalManager.userInfo.schoolId).subscribe(onSuccess: {[unowned self] stuTotalCountDataModel in
+                print("成功%@",stuTotalCountDataModel)
+                self.stuTotalCountDataModel = stuTotalCountDataModel
+                
+                self.statisticsService.everyDayStuCountRequest(city: LocalManager.userInfo.city!, schoolId: LocalManager.userInfo.schoolId, startDate: self.startDate, endDate: self.endDate, fieldType: self.fieldType,sortType: self.sortType).subscribe(onSuccess: { stuCountDataModel in
+                        self.stuCountDataModel = stuCountDataModel
+                        self.hideLoadAnimation()
+                        self.tableView.reloadData()
+                        self.stopRefresh()
+                        NYTips.hide()
+                    }, onError: { error in
+                        self.stopRefresh()
+                        NYTips.hide()
+                    })
+                    .disposed(by: disposeBag)
+            }, onError: { error in
+                self.stopRefresh()
+                NYTips.hide()
+            })
+            .disposed(by: disposeBag)
+    }
+    
+    //切换
+    func switchStatisticsStuCount(){
+        // 根据不同的 dateType 进行相应的数据请求
+        switch dateType {
+        case .day:
+            // 发起请求,获取日数据
+            self.statisticsService.everyDayStuCountRequest(city: LocalManager.userInfo.city!, schoolId: LocalManager.userInfo.schoolId, startDate: self.startDate, endDate: self.endDate, fieldType: self.fieldType,sortType: self.sortType).subscribe(onSuccess: { stuCountDataModel in
+                    self.stuCountDataModel = stuCountDataModel
+                    self.tableView.reloadData()
+                }, onError: { error in
+                })
+                .disposed(by: disposeBag)
+        case .month:
+            // 发起请求,获取月数据
+            let startMonth = String(self.startDate.prefix(7))
+            let endMonth =  String(self.endDate.prefix(7))
+            self.statisticsService.everyMonthStuCount(city: LocalManager.userInfo.city!, schoolId: LocalManager.userInfo.schoolId, startMonth: startMonth, endMonth: endMonth, fieldType: self.fieldType,sortType: self.sortType).subscribe(onSuccess: { stuCountDataModel in
+                    self.stuCountDataModel = stuCountDataModel
+                    self.tableView.reloadData()
+                }, onError: { error in
+                })
+                .disposed(by: disposeBag)
+        case .year:
+            // 发起请求,获取年数据
+            let startYear = String(self.startDate.prefix(4))
+            let endYear =  String(self.endDate.prefix(4))
+            self.statisticsService.everyYearStuCount(city: LocalManager.userInfo.city!, schoolId: LocalManager.userInfo.schoolId, startYear: startYear, endYear: endYear, fieldType: self.fieldType,sortType: self.sortType).subscribe(onSuccess: { stuCountDataModel in
+                    self.stuCountDataModel = stuCountDataModel
+                    self.tableView.reloadData()
+                }, onError: { error in
+                })
+                .disposed(by: disposeBag)
         }
-        self.isEmptyDisplay = false
-        self.hideLoadAnimation()
-        // 设置上拉加载更多
-//        tableView.es.addInfiniteScrolling { [weak self] in
-//            self?.getLoadMore()
-//        }
+
     }
+
     
 }
 
@@ -109,17 +262,16 @@ extension StatisticsPageController:UITableViewDataSource {
     
     
     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-//        if (rows.count>0){
-//            return rows.count
-//        }
-        return 10
+        if  stuCountDataModel != nil&&(stuCountDataModel?.rows!.count)!>0 {
+            return (stuCountDataModel?.rows.count)!+1
+        }
+        return 0
     }
     
     func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
-//        if(rows.count>0){
-//            let info = rows.first! as StuLogFacInfoModel
-//            header03_view.usertemplate_imageview.sd_setImage(with: info.sourceimg?.urlValue)
-//        }
+        if stuTotalCountDataModel != nil {
+            headerView.setStuTotalCountDataModel(stuTotalCountDataModel: stuTotalCountDataModel!)
+        }
         return headerView
     }
     
@@ -131,11 +283,17 @@ extension StatisticsPageController:UITableViewDataSource {
         let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! StatisticsPageCell
         cell.contentView.backgroundColor = ((indexPath.row%2) != 0) ? UIColor("#113357") : UIColor("#0B2B4D")
         cell.backgroundColor = ((indexPath.row%2) != 0) ? UIColor("#113357") : UIColor("#0B2B4D")
-//        let info = rows[indexPath.row] as StuLogFacInfoModel
-//        cell.stutime_label.text = info.crdate
-//        cell.user_imageview.sd_setImage(with: info.img?.urlValue)
-//        cell.similar_label.text = info.similar
-//        cell.phone_label.text = info.sim
+        if (indexPath.row==0){
+            let obj = (stuCountDataModel?.data)! as StuCountTotalModel
+            cell.date_label.text = "总计"
+            cell.num_label.text = String(obj.total)
+            cell.num_label.textColor = .db_green
+        }else{
+            let info = (stuCountDataModel?.rows[indexPath.row-1])! as StuCountInfoModel
+            cell.date_label.text = info.dateTime
+            cell.num_label.text = String(info.stuCount)
+            cell.num_label.textColor = .db_fontGray
+        }
         return cell
     }
 }
@@ -145,3 +303,25 @@ extension StatisticsPageController:UITableViewDelegate {
 
     
 }
+//PGDatePickerDelegate
+extension StatisticsPageController: PGDatePickerDelegate {
+    func datePicker(_ datePicker: PGDatePicker!, didSelectDate dateComponents: DateComponents!) {
+        
+        print("dateComponents = ", dateComponents)
+        if datePicCount>=2 {
+            self.endDate = String(format: "%02d", dateComponents.year ?? 0)+"-"+String(format: "%02d", dateComponents.month ?? 0)+"-"+String(format: "%02d", dateComponents.day ?? 0)
+            datePicCount=0
+            configUIdata()
+            self.switchStatisticsStuCount()
+        }
+        else {
+            self.startDate = String(format: "%02d", dateComponents.year ?? 0)+"-"+String(format: "%02d", dateComponents.month ?? 0)+"-"+String(format: "%02d", dateComponents.day ?? 0)
+            configUIdata()
+            DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
+                // 在延迟 1 秒后执行的代码
+                self.showPGDatePickManager()
+            }
+            
+        }
+    }
+}

+ 33 - 4
JiaPeiManage/Sources/Modulars/Statistics/Views/StatisticsPageHeaderView.swift

@@ -5,6 +5,12 @@
 //  Created by Ning.ge on 2023/6/27.
 //
 
+enum DateType: Int {
+    case day
+    case month
+    case year
+}
+
 final class StatisticsPageHeaderView: UIView,NibLoadable {
     
     //预报名
@@ -33,11 +39,15 @@ final class StatisticsPageHeaderView: UIView,NibLoadable {
     
     override func awakeFromNib() {
         super.awakeFromNib()
-        
+        //日期
         self.date_section_button.imagePosition = .right
         self.date_section_button.spacingBetweenImageAndTitle = 9.f
-        
-        
+        //时间
+        self.time_button.imagePosition = .right
+        self.time_button.spacingBetweenImageAndTitle = 9.f
+        //学员
+        self.student_button.imagePosition = .right
+        self.student_button.spacingBetweenImageAndTitle = 9.f
       
         if #available(iOS 13.0, *) {
             items_date_segmented.selectedSegmentTintColor = UIColor("#35BF5E")
@@ -58,8 +68,27 @@ final class StatisticsPageHeaderView: UIView,NibLoadable {
         // 设置未选中字体色
         items_date_segmented.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor("#899199")!], for: .normal)
 
-
     }
     
+    func setStuTotalCountDataModel(stuTotalCountDataModel:StuTotalCountDataModel){
+        if(stuTotalCountDataModel != nil){
+            //预报名
+            advanceday_num_label.text = String(stuTotalCountDataModel.yday)
+            //今日
+            today_num_label.text = String(stuTotalCountDataModel.day)
+            //昨日
+            yesterday_num_label.text = "昨日  " + String(stuTotalCountDataModel.yesterday)
+            //当月
+            thismonth_num_label.text = String(stuTotalCountDataModel.month)
+            //上月
+            lastmonth_num_label.text = "上月  " + String(stuTotalCountDataModel.lastMonth)
+            //今年
+            thisyear_num_label.text = String(stuTotalCountDataModel.year)
+            //去年
+            lastyear_num_label.text = "去年  " + String(stuTotalCountDataModel.lastYear)
+        }
+    }
+
+    
 }
 

+ 17 - 13
JiaPeiManage/Sources/Modulars/Statistics/Views/StatisticsPageHeaderView.xib

@@ -27,7 +27,7 @@
                             <color key="textColor" red="0.53725490196078429" green="0.56862745098039214" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="999" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Uue-U7-tVN">
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Uue-U7-tVN">
                             <rect key="frame" x="0.0" y="38" width="168" height="42"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="42" id="uP8-mE-D5g"/>
@@ -65,7 +65,7 @@
                             <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="999" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="y0U-dj-4K9">
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="y0U-dj-4K9">
                             <rect key="frame" x="0.0" y="29" width="168" height="42"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="42" id="n6E-9f-D15"/>
@@ -74,7 +74,7 @@
                             <color key="textColor" red="0.83137254900000002" green="0.86666666670000003" blue="0.90196078430000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="昨日 88" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hl6-VS-paV">
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="昨日 0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hl6-VS-paV">
                             <rect key="frame" x="0.0" y="71" width="168" height="18"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="18" id="0Hk-Lq-KJI"/>
@@ -115,7 +115,7 @@
                             <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="999" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qTY-Ph-Ewx">
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qTY-Ph-Ewx">
                             <rect key="frame" x="0.0" y="29" width="168" height="42"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="42" id="p6s-Ve-TUi"/>
@@ -124,7 +124,7 @@
                             <color key="textColor" red="0.83137254900000002" green="0.86666666670000003" blue="0.90196078430000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="上月 99" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2On-dl-pRp">
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="上月 0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2On-dl-pRp">
                             <rect key="frame" x="0.0" y="71" width="168" height="18"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="18" id="BA6-fh-7Qn"/>
@@ -165,7 +165,7 @@
                             <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="999" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Bfy-od-tkR">
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Bfy-od-tkR">
                             <rect key="frame" x="0.0" y="29" width="168" height="42"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="42" id="xbQ-II-VTl"/>
@@ -174,7 +174,7 @@
                             <color key="textColor" red="0.83137254900000002" green="0.86666666670000003" blue="0.90196078430000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="去年 5652" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jMJ-CH-Lpe">
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="去年 0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jMJ-CH-Lpe">
                             <rect key="frame" x="0.0" y="71" width="168" height="18"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="18" id="qrM-Aq-X6e"/>
@@ -203,10 +203,10 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="VMX-s0-wJI">
-                    <rect key="frame" x="15" y="248" width="114" height="31"/>
+                    <rect key="frame" x="15" y="248" width="138" height="31"/>
                     <color key="backgroundColor" red="0.043137254901960784" green="0.25882352941176467" blue="0.30196078431372547" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                     <constraints>
-                        <constraint firstAttribute="width" constant="114" id="9EA-gu-pYG"/>
+                        <constraint firstAttribute="width" constant="138" id="9EA-gu-pYG"/>
                         <constraint firstAttribute="height" constant="30" id="RAP-ym-7nD"/>
                     </constraints>
                     <segments>
@@ -227,20 +227,22 @@
                             </constraints>
                             <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
                             <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
-                            <state key="normal" title="时间">
+                            <state key="normal" title="时间" image="btn_arrow_down">
                                 <color key="titleColor" red="0.83137254901960778" green="0.8666666666666667" blue="0.90196078431372551" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             </state>
+                            <state key="selected" image="btn_arrow_up"/>
                         </button>
-                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ANm-wP-nuH" customClass="QMUIButton">
+                        <button opaque="NO" contentMode="scaleToFill" selected="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ANm-wP-nuH" customClass="QMUIButton">
                             <rect key="frame" x="275" y="0.0" width="75" height="44"/>
                             <constraints>
                                 <constraint firstAttribute="width" constant="75" id="Wfo-7g-hxA"/>
                             </constraints>
                             <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
                             <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
-                            <state key="normal" title="学员">
+                            <state key="normal" title="学员" image="btn_arrow_down">
                                 <color key="titleColor" red="0.83137254901960778" green="0.8666666666666667" blue="0.90196078431372551" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             </state>
+                            <state key="selected" image="btn_arrow_up"/>
                         </button>
                     </subviews>
                     <color key="backgroundColor" red="0.14901960784313725" green="0.28235294117647058" blue="0.41960784313725491" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -262,7 +264,7 @@
                     </constraints>
                     <fontDescription key="fontDescription" type="system" pointSize="14"/>
                     <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
-                    <state key="normal" title="2023-06-01~2023-06-30" image="btn_arrow_gray">
+                    <state key="normal" title="日期~日期" image="btn_arrow_gray">
                         <color key="titleColor" red="0.83137254901960778" green="0.8666666666666667" blue="0.90196078431372551" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                     </state>
                 </button>
@@ -311,6 +313,8 @@
         </view>
     </objects>
     <resources>
+        <image name="btn_arrow_down" width="8" height="15"/>
         <image name="btn_arrow_gray" width="16" height="12"/>
+        <image name="btn_arrow_up" width="8" height="15"/>
     </resources>
 </document>

+ 23 - 4
JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeListViewController.swift

@@ -124,9 +124,13 @@ final class MeTraineeListViewController: BaseViewController {
         super.viewDidLoad()
         configureMagicController()
         setupUI()
+        addNotificationCenter()
     }
     
     // MARK: 私有方法
+    func addNotificationCenter(){
+        NotificationCenter.default.addObserver(self, selector: #selector(setTagbadgeIntegerNotification), name: Notification.updateItemTopTotalNameNotification, object: nil)
+    }
     func setupUI(){
         self.view.backgroundColor = .db_theme
         self.navBar.back_button.addTarget(self, action: #selector(actionBackdo), for: .touchUpInside)
@@ -161,10 +165,23 @@ final class MeTraineeListViewController: BaseViewController {
     @objc func jumpSearchdo(_ sender: Any){
         NYSwRouter.push(NYSwPushType.trainee_search.path)
     }
+    
 }
 //VTMagicViewDelegate view代理
 extension MeTraineeListViewController : VTMagicViewDelegate {
     
+    //设置 top 数字
+    @objc private func setTagbadgeIntegerNotification(_ notification: Notification) {
+        let array:[Int] = notification.object as! [Int]
+        let total = array[0]
+        let itemIndex = array[1]
+        var menuItem = pageController.magicView.menuItem(at: UInt(itemIndex))
+        menuItem?.qmui_badgeInteger = UInt(total)
+        if pageController.currentPage != itemIndex{
+            menuItem?.qmui_badgeLabel?.isHidden = true
+        }
+    }
+    
     func magicView(_ magicView: VTMagicView, didSelectItemAt itemIndex: UInt) {
         var menuItem = magicView.menuItem(at: itemIndex)
         if (menuItemCurrentBtn != nil) {
@@ -174,10 +191,12 @@ extension MeTraineeListViewController : VTMagicViewDelegate {
         menuItemCurrentBtn = menuItem
         menuItem?.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17)
         menuItem?.qmui_badgeLabel?.isHidden = false
-        guard let currentVc:MeTraineeSubjectPageViewController = pageController.currentViewController as? MeTraineeSubjectPageViewController else { return }
-//        if (currentVc.traineeDataModel != nil) {
-//            menuItem?.qmui_badgeInteger = UInt(currentVc.traineeDataModel?.total ?? 0)
+//        let pageVC = magicView.viewController(atPage: itemIndex) as! MeTraineeSubjectPageViewController
+//        if pageVC != nil{
+//            menuItem?.qmui_badgeInteger = UInt(pageVC.traineeDataModel?.total ?? 0)
 //        }
+        
+        guard let currentVc:MeTraineeSubjectPageViewController = pageController.currentViewController as? MeTraineeSubjectPageViewController else { return }
         if itemIndex == 0 || itemIndex == 1 {
             let currentPage = pageController.currentPage
             
@@ -240,7 +259,7 @@ extension MeTraineeListViewController : VTMagicViewDataSource{
             }
             menuItem?.qmui_badgeBackgroundColor = UIColor("#F84444")
             menuItem?.qmui_badgeTextColor = UIColor.white
-            menuItem?.qmui_badgeInteger = 50
+//            menuItem?.qmui_badgeInteger = 50
             menuItem?.qmui_badgeLabel?.isHidden = true
             menuItem?.qmui_badgeFont = NYFont.SysFont.sys_10
             menuItem?.qmui_badgeOffset = CGPoint(x: -35, y: 26)

+ 1 - 0
JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeSubjectPageViewController.swift

@@ -95,6 +95,7 @@ final class MeTraineeSubjectPageViewController: BaseTableViewController {
                 self.hideLoadAnimation()
                 self.tableView.reloadData()
                 self.stopRefresh()
+                NotificationCenter.default.post(name: Notification.updateItemTopTotalNameNotification, object: [traineeDataModel.total,Int(self.state)!-1])
             }, onError: { error in
                 self.stopRefresh()
             })

+ 42 - 40
JiaPeiManage/Sources/Services/StatisticsAPI.swift

@@ -11,11 +11,11 @@ import SwiftyUserDefaults
 enum StatisticsAPI {
     
     //查询每日报名数
-    case everyDayStuCount(city:String,schoolId:Int,startDate:String, endDate:String)
+    case everyDayStuCount(city:String,schoolId:Int,startDate:String, endDate:String,fieldType:Int,sortType:Int)
     //查询每月报名数
-    case everyMonthStuCount(city:String,schoolId:Int,startMonth:String, endMonth:String)
+    case everyMonthStuCount(city:String,schoolId:Int,startMonth:String, endMonth:String,fieldType:Int,sortType:Int)
     //查询每年报名数
-    case everyYearStuCount(city:String,schoolId:Int,startYear:String, endYear:String)
+    case everyYearStuCount(city:String,schoolId:Int,startYear:String, endYear:String,fieldType:Int,sortType:Int)
     //查询驾校ID 报名数
     case statisticsStuCount(city:String,schoolId:Int)
     
@@ -32,11 +32,11 @@ extension StatisticsAPI: TargetType {
     
     var path: String {
         switch self {
-        case .everyDayStuCount(_,_,_,_):
+        case .everyDayStuCount(_,_,_,_,_,_):
             return "/jsjp-admin/open-api/tms/coachInfo/getEveryDayStuCountBySchoolId"
-        case .everyMonthStuCount(_,_,_,_):
+        case .everyMonthStuCount(_,_,_,_,_,_):
             return "/jsjp-admin/open-api/tms/coachInfo/getEveryMonthStuCountBySchoolId"
-        case .everyYearStuCount(_,_,_,_):
+        case .everyYearStuCount(_,_,_,_,_,_):
             return "/jsjp-admin/open-api/tms/coachInfo/getEveryYearStuCountBySchoolId"
         case .statisticsStuCount(_,_):
             return "/jsjp-admin/open-api/tms/coachInfo/getStatisticsStuCountBySchoolId"
@@ -59,24 +59,28 @@ extension StatisticsAPI: TargetType {
         }
         
         var task: Moya.Task {
-            //        switch self {
-            //        case .loginUser(_,_,_):
-            //            if let parameters = parameters {
-            //                return .requestParameters(parameters: parameters, encoding: URLEncoding.default)
-            //            }
-            //            return .requestPlain
-            //        case .updateUser(_,_,_,_):
-            //            if let parameters = parameters {
-            //                return .requestParameters(parameters: parameters, encoding: URLEncoding.default)
-            //            }
-            //            return .requestPlain
-            //        case .dictUser(_):
-            //            return .requestPlain
-            //        }
-            if let parameters = parameters {
-                return .requestParameters(parameters: parameters, encoding: URLEncoding.default)
+            switch self {
+            case .everyDayStuCount(_,_,_,_,_,_):
+                if let parameters = parameters {
+                    return .requestParameters(parameters: parameters, encoding: URLEncoding.default)
+                }
+                return .requestPlain
+            case .everyMonthStuCount(_,_,_,_,_,_):
+                if let parameters = parameters {
+                    return .requestParameters(parameters: parameters, encoding: URLEncoding.default)
+                }
+                return .requestPlain
+            case .everyYearStuCount(_,_,_,_,_,_):
+                if let parameters = parameters {
+                    return .requestParameters(parameters: parameters, encoding: URLEncoding.default)
+                }
+                return .requestPlain
+            case .statisticsStuCount(_,_):
+                if let parameters = parameters {
+                    return .requestParameters(parameters: parameters, encoding: URLEncoding.default)
+                }
+                return .requestPlain
             }
-            return .requestPlain
         }
         
         var headers: [String: String]? {
@@ -86,21 +90,27 @@ extension StatisticsAPI: TargetType {
         var parameters: [String : Any]? {
             
             switch self {
-            case let .everyDayStuCount(city, schoolId,startDate,endDate):
+            case let .everyDayStuCount(city, schoolId,startDate,endDate,fieldType,sortType):
                 return ["city": city,
                         "schoolId": schoolId,
                         "startDate":startDate,
-                        "endDate":endDate,]
-            case let .everyMonthStuCount(city, schoolId,startDate,endDate):
+                        "endDate":endDate,
+                        "fieldType":fieldType,
+                        "sortType":sortType,]
+            case let .everyMonthStuCount(city, schoolId,startMonth,endMonth,fieldType,sortType):
                 return ["city": city,
                         "schoolId": schoolId,
-                        "startDate":startDate,
-                        "endDate":endDate,]
-            case let .everyYearStuCount(city, schoolId,startDate,endDate):
+                        "startMonth":startMonth,
+                        "endMonth":endMonth,
+                        "fieldType":fieldType,
+                        "sortType":sortType,]
+            case let .everyYearStuCount(city, schoolId,startYear,endYear,fieldType,sortType):
                 return ["city": city,
                         "schoolId": schoolId,
-                        "startDate":startDate,
-                        "endDate":endDate,]
+                        "startYear":startYear,
+                        "endYear":endYear,
+                        "fieldType":fieldType,
+                        "sortType":sortType,]
             case let .statisticsStuCount(city, schoolId):
                 return ["city": city,
                         "schoolId": schoolId]
@@ -108,14 +118,6 @@ extension StatisticsAPI: TargetType {
                 return nil
             }
         }
-        
-        var urlParameters: [String: Any]? {
-            var parameters = parameters
-            //        if let extendsParameters = ["":""] {
-            //            parameters = parameters?.merging(extendsParameters) { $1 } //组合
-            //        }
-            return parameters
-        }
-        
+
     
 }

+ 9 - 9
JiaPeiManage/Sources/Services/StatisticsService.swift

@@ -12,11 +12,11 @@ import SwiftyJSON
 protocol StatisticsServiceType {
     
     //查询每日报名数
-    func everyDayStuCountRequest(city: String, schoolId: Int, startDate: String, endDate: String) -> Single<StuCountDataModel>
+    func everyDayStuCountRequest(city: String, schoolId: Int, startDate: String, endDate: String,fieldType:Int,sortType:Int) -> Single<StuCountDataModel>
     //查询每月报名数
-    func everyMonthStuCount(city: String, schoolId: Int, startMonth: String, endMonth: String) -> Single<StuCountDataModel>
+    func everyMonthStuCount(city: String, schoolId: Int, startMonth: String, endMonth: String,fieldType:Int,sortType:Int) -> Single<StuCountDataModel>
     //查询每年报名数
-    func everyYearStuCount(city: String, schoolId: Int, startYear: String, endYear: String) -> Single<StuCountDataModel>
+    func everyYearStuCount(city: String, schoolId: Int, startYear: String, endYear: String,fieldType:Int,sortType:Int) -> Single<StuCountDataModel>
     //查询驾校ID 报名数
     func statisticsStuCount(city: String, schoolId: Int) -> Single<StuTotalCountDataModel>
     
@@ -30,18 +30,18 @@ final class StatisticsService: StatisticsServiceType {
         self.networking = networking
     }
     //查询每日报名数
-    func everyDayStuCountRequest(city: String, schoolId: Int, startDate: String, endDate: String) -> RxSwift.Single<StuCountDataModel> {
-        let api = StatisticsAPI.everyDayStuCount(city: city, schoolId: schoolId, startDate: startDate, endDate: endDate)
+    func everyDayStuCountRequest(city: String, schoolId: Int, startDate: String, endDate: String,fieldType:Int,sortType:Int) -> RxSwift.Single<StuCountDataModel> {
+        let api = StatisticsAPI.everyDayStuCount(city: city, schoolId: schoolId, startDate: startDate, endDate: endDate , fieldType: fieldType, sortType: sortType)
         return networking.request(api).map(StuCountDataModel.self, isModel: true)
     }
     //查询每月报名数
-    func everyMonthStuCount(city: String, schoolId: Int, startMonth: String, endMonth: String) -> RxSwift.Single<StuCountDataModel> {
-        let api = StatisticsAPI.everyMonthStuCount(city: city, schoolId: schoolId, startMonth: startMonth, endMonth: endMonth)
+    func everyMonthStuCount(city: String, schoolId: Int, startMonth: String, endMonth: String,fieldType:Int,sortType:Int) -> RxSwift.Single<StuCountDataModel> {
+        let api = StatisticsAPI.everyMonthStuCount(city: city, schoolId: schoolId, startMonth: startMonth, endMonth: endMonth, fieldType: fieldType, sortType: sortType)
         return networking.request(api).map(StuCountDataModel.self, isModel: true)
     }
     //查询每年报名数
-    func everyYearStuCount(city: String, schoolId: Int, startYear: String, endYear: String) -> RxSwift.Single<StuCountDataModel> {
-        let api = StatisticsAPI.everyYearStuCount(city: city, schoolId: schoolId, startYear: startYear, endYear: endYear)
+    func everyYearStuCount(city: String, schoolId: Int, startYear: String, endYear: String,fieldType:Int,sortType:Int) -> RxSwift.Single<StuCountDataModel> {
+        let api = StatisticsAPI.everyYearStuCount(city: city, schoolId: schoolId, startYear: startYear, endYear: endYear, fieldType: fieldType, sortType: sortType)
         return networking.request(api).map(StuCountDataModel.self, isModel: true)
     }
     //查询驾校ID 报名数

+ 3 - 0
JiaPeiManage/Sources/Utils/NYSwRouter.swift

@@ -19,6 +19,7 @@ enum NYSwPushType {
     case mine_uppassword
     case trainee_list_school
     case trainee_statistics
+    case trainee_statistics_official
 }
 
 
@@ -49,6 +50,8 @@ extension NYSwPushType {
             return "JiaPeiManage://mine/updatepassword"
         case .trainee_statistics:
             return "JiaPeiManage://me/trainee/statistics"
+        case .trainee_statistics_official:
+            return "JiaPeiManage://me/trainee/statistics/official"
         }
     }
 }

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

@@ -31,6 +31,11 @@ final class URLNavigationMap {
             return statisticsPageController
         }
         
+        navigator.register(NYSwPushType.trainee_statistics_official.path) { (url, values, context) -> UIViewController? in
+            let statisticsOfficialPageController = StatisticsOfficialPageController()
+            return statisticsOfficialPageController
+        }
+        
         navigator.register(NYSwPushType.trainee_list.path) { (url, values, context) -> UIViewController? in
             let meTraineeListViewController = MeTraineeListViewController(type: .none)
             return meTraineeListViewController

+ 1 - 0
Podfile

@@ -42,6 +42,7 @@ target 'JiaPeiManage' do
   pod 'QMUIKit'                                     # 腾讯UI控件
   pod 'SDWebImage'
   pod 'SDWebImageWebPCoder', '0.8.3'
+  pod 'PGDatePicker'
   # Logging
   pod 'CocoaLumberjack/Swift'
   

+ 9 - 1
Podfile.lock

@@ -29,6 +29,9 @@ PODS:
   - "NSObject+Rx (5.1.0)":
     - RxSwift (~> 5.1)
   - ObjectMapper (4.2.0)
+  - PGDatePicker (2.6.9):
+    - PGPickerView
+  - PGPickerView (1.3.8)
   - QMUIKit (4.6.0):
     - QMUIKit/QMUIComponents (= 4.6.0)
     - QMUIKit/QMUICore (= 4.6.0)
@@ -403,6 +406,7 @@ DEPENDENCIES:
   - Moya/RxSwift
   - "NSObject+Rx"
   - ObjectMapper
+  - PGDatePicker
   - QMUIKit
   - ReachabilitySwift
   - ReactorKit
@@ -451,6 +455,8 @@ SPEC REPOS:
     - Moya
     - "NSObject+Rx"
     - ObjectMapper
+    - PGDatePicker
+    - PGPickerView
     - QMUIKit
     - ReachabilitySwift
     - ReactorKit
@@ -508,6 +514,8 @@ SPEC CHECKSUMS:
   Moya: 5b45dacb75adb009f97fde91c204c1e565d31916
   "NSObject+Rx": fa6bbcc1ab1faa06b01466bc09b1e0692bbc5946
   ObjectMapper: 1eb41f610210777375fa806bf161dc39fb832b81
+  PGDatePicker: 88960f3760edac96219c10320f25536ad31d0f44
+  PGPickerView: 037acfb132a4c8054fb43aaa59a5ff50c7f747f5
   QMUIKit: 6321cf1124623d686a9ec0a79a7cc59d0d64a52c
   ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
   ReactorKit: 6d894a20c3d508344320901cd8e386fde92df4b6
@@ -541,6 +549,6 @@ SPEC CHECKSUMS:
   WeakMapTable: 05c694ce8439a7a9ebabb56187287a63c57673d6
   YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
 
-PODFILE CHECKSUM: f4aed25e21546bfec83bc3a8f3ce65a855dddb87
+PODFILE CHECKSUM: c47d0ec12ca57fa81c2fe39e91bc57cbe2767313
 
 COCOAPODS: 1.12.1

+ 9 - 1
Pods/Manifest.lock

@@ -29,6 +29,9 @@ PODS:
   - "NSObject+Rx (5.1.0)":
     - RxSwift (~> 5.1)
   - ObjectMapper (4.2.0)
+  - PGDatePicker (2.6.9):
+    - PGPickerView
+  - PGPickerView (1.3.8)
   - QMUIKit (4.6.0):
     - QMUIKit/QMUIComponents (= 4.6.0)
     - QMUIKit/QMUICore (= 4.6.0)
@@ -403,6 +406,7 @@ DEPENDENCIES:
   - Moya/RxSwift
   - "NSObject+Rx"
   - ObjectMapper
+  - PGDatePicker
   - QMUIKit
   - ReachabilitySwift
   - ReactorKit
@@ -451,6 +455,8 @@ SPEC REPOS:
     - Moya
     - "NSObject+Rx"
     - ObjectMapper
+    - PGDatePicker
+    - PGPickerView
     - QMUIKit
     - ReachabilitySwift
     - ReactorKit
@@ -508,6 +514,8 @@ SPEC CHECKSUMS:
   Moya: 5b45dacb75adb009f97fde91c204c1e565d31916
   "NSObject+Rx": fa6bbcc1ab1faa06b01466bc09b1e0692bbc5946
   ObjectMapper: 1eb41f610210777375fa806bf161dc39fb832b81
+  PGDatePicker: 88960f3760edac96219c10320f25536ad31d0f44
+  PGPickerView: 037acfb132a4c8054fb43aaa59a5ff50c7f747f5
   QMUIKit: 6321cf1124623d686a9ec0a79a7cc59d0d64a52c
   ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
   ReactorKit: 6d894a20c3d508344320901cd8e386fde92df4b6
@@ -541,6 +549,6 @@ SPEC CHECKSUMS:
   WeakMapTable: 05c694ce8439a7a9ebabb56187287a63c57673d6
   YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
 
-PODFILE CHECKSUM: f4aed25e21546bfec83bc3a8f3ce65a855dddb87
+PODFILE CHECKSUM: c47d0ec12ca57fa81c2fe39e91bc57cbe2767313
 
 COCOAPODS: 1.12.1

File diff suppressed because it is too large
+ 2059 - 1973
Pods/Pods.xcodeproj/project.pbxproj


+ 48 - 34
Pods/Pods.xcodeproj/xcuserdata/mimasigeling.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -109,243 +109,257 @@
 			<key>orderHint</key>
 			<integer>15</integer>
 		</dict>
-		<key>Pods-JiaPeiManage.xcscheme</key>
+		<key>PGDatePicker.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
 			<integer>16</integer>
 		</dict>
-		<key>QMUIKit-QMUIResources.xcscheme</key>
+		<key>PGPickerView.xcscheme</key>
+		<dict>
+			<key>isShown</key>
+			<false/>
+			<key>orderHint</key>
+			<integer>17</integer>
+		</dict>
+		<key>Pods-JiaPeiManage.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
 			<integer>18</integer>
 		</dict>
+		<key>QMUIKit-QMUIResources.xcscheme</key>
+		<dict>
+			<key>isShown</key>
+			<false/>
+			<key>orderHint</key>
+			<integer>20</integer>
+		</dict>
 		<key>QMUIKit.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>17</integer>
+			<integer>19</integer>
 		</dict>
 		<key>ReachabilitySwift.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>19</integer>
+			<integer>21</integer>
 		</dict>
 		<key>ReactorKit.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>20</integer>
+			<integer>22</integer>
 		</dict>
 		<key>Realm.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>21</integer>
+			<integer>23</integer>
 		</dict>
 		<key>RealmSwift.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>22</integer>
+			<integer>24</integer>
 		</dict>
 		<key>ReusableKit.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>23</integer>
+			<integer>25</integer>
 		</dict>
 		<key>RxCocoa.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>24</integer>
+			<integer>26</integer>
 		</dict>
 		<key>RxDataSources.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>25</integer>
+			<integer>27</integer>
 		</dict>
 		<key>RxGesture.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>26</integer>
+			<integer>28</integer>
 		</dict>
 		<key>RxOptional.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>27</integer>
+			<integer>29</integer>
 		</dict>
 		<key>RxRelay.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>28</integer>
+			<integer>30</integer>
 		</dict>
 		<key>RxSwift.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>29</integer>
+			<integer>31</integer>
 		</dict>
 		<key>RxViewController.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>30</integer>
+			<integer>32</integer>
 		</dict>
 		<key>SDWebImage.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>31</integer>
+			<integer>33</integer>
 		</dict>
 		<key>SDWebImageWebPCoder.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>32</integer>
+			<integer>34</integer>
 		</dict>
 		<key>SectionReactor.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>33</integer>
+			<integer>35</integer>
 		</dict>
 		<key>SnapKit.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>34</integer>
+			<integer>36</integer>
 		</dict>
 		<key>SwiftDate.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>35</integer>
+			<integer>37</integer>
 		</dict>
 		<key>SwiftTimer.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>36</integer>
+			<integer>38</integer>
 		</dict>
 		<key>SwiftyColor.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>37</integer>
+			<integer>39</integer>
 		</dict>
 		<key>SwiftyImage.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>38</integer>
+			<integer>40</integer>
 		</dict>
 		<key>SwiftyJSON.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>39</integer>
+			<integer>41</integer>
 		</dict>
 		<key>SwiftyUserDefaults.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>40</integer>
+			<integer>42</integer>
 		</dict>
 		<key>Then.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>41</integer>
+			<integer>43</integer>
 		</dict>
 		<key>Toaster.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>42</integer>
+			<integer>44</integer>
 		</dict>
 		<key>UMCCommonLog.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>43</integer>
+			<integer>45</integer>
 		</dict>
 		<key>UMCommon.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>44</integer>
+			<integer>46</integer>
 		</dict>
 		<key>UMDevice.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>45</integer>
+			<integer>47</integer>
 		</dict>
 		<key>URLNavigator.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>46</integer>
+			<integer>48</integer>
 		</dict>
 		<key>VTMagic.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>47</integer>
+			<integer>49</integer>
 		</dict>
 		<key>WeakMapTable.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>48</integer>
+			<integer>50</integer>
 		</dict>
 		<key>YYText.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>49</integer>
+			<integer>51</integer>
 		</dict>
 		<key>libwebp.xcscheme</key>
 		<dict>

+ 50 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-acknowledgements.markdown

@@ -328,6 +328,56 @@ The above copyright notice and this permission notice shall be included in all c
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 
+## PGDatePicker
+
+MIT License
+
+Copyright (c) 2017 piggybear
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+## PGPickerView
+
+MIT License
+
+Copyright (c) 2017 piggybear
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
 ## QMUIKit
 
 Tencent is pleased to support the open source community by making QMUI_iOS available.  

+ 62 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-acknowledgements.plist

@@ -423,6 +423,68 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 			<key>Type</key>
 			<string>PSGroupSpecifier</string>
 		</dict>
+		<dict>
+			<key>FooterText</key>
+			<string>MIT License
+
+Copyright (c) 2017 piggybear
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+</string>
+			<key>License</key>
+			<string>MIT</string>
+			<key>Title</key>
+			<string>PGDatePicker</string>
+			<key>Type</key>
+			<string>PSGroupSpecifier</string>
+		</dict>
+		<dict>
+			<key>FooterText</key>
+			<string>MIT License
+
+Copyright (c) 2017 piggybear
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+</string>
+			<key>License</key>
+			<string>MIT</string>
+			<key>Title</key>
+			<string>PGPickerView</string>
+			<key>Type</key>
+			<string>PSGroupSpecifier</string>
+		</dict>
 		<dict>
 			<key>FooterText</key>
 			<string>Tencent is pleased to support the open source community by making QMUI_iOS available.  

+ 2 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks-Debug-input-files.xcfilelist

@@ -13,6 +13,8 @@ ${BUILT_PRODUCTS_DIR}/ManualLayout/ManualLayout.framework
 ${BUILT_PRODUCTS_DIR}/Moya/Moya.framework
 ${BUILT_PRODUCTS_DIR}/NSObject+Rx/NSObject_Rx.framework
 ${BUILT_PRODUCTS_DIR}/ObjectMapper/ObjectMapper.framework
+${BUILT_PRODUCTS_DIR}/PGDatePicker/PGDatePicker.framework
+${BUILT_PRODUCTS_DIR}/PGPickerView/PGPickerView.framework
 ${BUILT_PRODUCTS_DIR}/QMUIKit/QMUIKit.framework
 ${BUILT_PRODUCTS_DIR}/ReachabilitySwift/Reachability.framework
 ${BUILT_PRODUCTS_DIR}/ReactorKit/ReactorKit.framework

+ 2 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks-Debug-output-files.xcfilelist

@@ -12,6 +12,8 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ManualLayout.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Moya.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NSObject_Rx.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjectMapper.framework
+${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PGDatePicker.framework
+${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PGPickerView.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/QMUIKit.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reachability.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactorKit.framework

+ 2 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks-Release-input-files.xcfilelist

@@ -13,6 +13,8 @@ ${BUILT_PRODUCTS_DIR}/ManualLayout/ManualLayout.framework
 ${BUILT_PRODUCTS_DIR}/Moya/Moya.framework
 ${BUILT_PRODUCTS_DIR}/NSObject+Rx/NSObject_Rx.framework
 ${BUILT_PRODUCTS_DIR}/ObjectMapper/ObjectMapper.framework
+${BUILT_PRODUCTS_DIR}/PGDatePicker/PGDatePicker.framework
+${BUILT_PRODUCTS_DIR}/PGPickerView/PGPickerView.framework
 ${BUILT_PRODUCTS_DIR}/QMUIKit/QMUIKit.framework
 ${BUILT_PRODUCTS_DIR}/ReachabilitySwift/Reachability.framework
 ${BUILT_PRODUCTS_DIR}/ReactorKit/ReactorKit.framework

+ 2 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks-Release-output-files.xcfilelist

@@ -12,6 +12,8 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ManualLayout.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Moya.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NSObject_Rx.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjectMapper.framework
+${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PGDatePicker.framework
+${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PGPickerView.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/QMUIKit.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reachability.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactorKit.framework

+ 4 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks.sh

@@ -190,6 +190,8 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then
   install_framework "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/NSObject+Rx/NSObject_Rx.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ObjectMapper/ObjectMapper.framework"
+  install_framework "${BUILT_PRODUCTS_DIR}/PGDatePicker/PGDatePicker.framework"
+  install_framework "${BUILT_PRODUCTS_DIR}/PGPickerView/PGPickerView.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/QMUIKit/QMUIKit.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ReachabilitySwift/Reachability.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ReactorKit/ReactorKit.framework"
@@ -236,6 +238,8 @@ if [[ "$CONFIGURATION" == "Release" ]]; then
   install_framework "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/NSObject+Rx/NSObject_Rx.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ObjectMapper/ObjectMapper.framework"
+  install_framework "${BUILT_PRODUCTS_DIR}/PGDatePicker/PGDatePicker.framework"
+  install_framework "${BUILT_PRODUCTS_DIR}/PGPickerView/PGPickerView.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/QMUIKit/QMUIKit.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ReachabilitySwift/Reachability.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ReactorKit/ReactorKit.framework"

File diff suppressed because it is too large
+ 0 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage.debug.xcconfig


File diff suppressed because it is too large
+ 0 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage.release.xcconfig


Some files were not shown because too many files changed in this diff