StatisticsPageController.swift 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. //
  2. // StatisticsPageController.swift
  3. // JiaPeiManage
  4. //
  5. // Created by Ning.ge on 2023/6/26.
  6. //
  7. import UIKit
  8. import RxSwift
  9. import RxCocoa
  10. import PGDatePicker
  11. enum StatisticsType: Int {
  12. case normal
  13. case presell
  14. }
  15. final class StatisticsPageController: BaseGroupTableViewController {
  16. //VM
  17. var statisticsPageViewModel:StatisticsPageViewModel?
  18. // MARK: UI let
  19. let statusBar = UIView().then {
  20. $0.backgroundColor = UIColor.db_theme
  21. }
  22. let navBar = MeTraineeNavBar.loadFromNib().then {
  23. $0.title_label.text = "全部报名统计"
  24. }
  25. //头部 view
  26. let headerView = StatisticsPageHeaderView.loadFromNib().then {
  27. $0.backgroundColor = .db_theme
  28. }
  29. let officialheaderView = StatisticsOfficialPageHeaderView.loadFromNib().then {
  30. $0.backgroundColor = .db_theme
  31. }
  32. //头部 日期选择
  33. let selectDateViewBgBtn = UIButton(type:.custom).then {
  34. $0.isHidden = true
  35. $0.backgroundColor = UIColor.clear
  36. }
  37. let selectDateView = StatisticsSelectDateView.loadFromNib().then {
  38. $0.isHidden = true
  39. }
  40. // MARK: 数据
  41. var type:StatisticsType = .normal // 普通-预售
  42. override func setupConstraints() {
  43. statusBar.snp.makeConstraints { (make) in
  44. make.left.right.top.equalToSuperview()
  45. make.height.equalTo(Metric.statusBarHeight)
  46. }
  47. navBar.snp.remakeConstraints { (make) in
  48. make.left.right.equalToSuperview()
  49. make.height.equalTo(Metric.navBarHeight)
  50. make.top.equalTo(statusBar.snp.bottom)
  51. }
  52. tableView.snp.remakeConstraints { make in
  53. make.top.equalTo(navBar.snp.bottom)
  54. make.left.right.bottom.equalToSuperview()
  55. }
  56. selectDateViewBgBtn.snp.makeConstraints { (make) in
  57. make.edges.equalToSuperview()
  58. }
  59. selectDateView.snp.remakeConstraints { make in
  60. make.top.equalTo(352.f)
  61. make.left.right.equalToSuperview()
  62. make.height.equalTo(172.f)
  63. }
  64. }
  65. init(type:StatisticsType) {
  66. self.type = type
  67. super.init()
  68. statisticsPageViewModel = StatisticsPageViewModel(vc: self)
  69. statisticsPageViewModel?.type = type
  70. }
  71. required convenience init?(coder aDecoder: NSCoder) {
  72. fatalError("init(coder:) has not been implemented")
  73. }
  74. override func viewDidLoad() {
  75. super.viewDidLoad()
  76. setupUI()
  77. biandView()
  78. self.statisticsPageViewModel!.getStatisticsList(isLoading: true)
  79. }
  80. func setupUI(){
  81. self.view.addSubview(navBar)
  82. self.view.addSubview(statusBar)
  83. self.view.backgroundColor = .db_theme
  84. self.view.insertSubview(selectDateViewBgBtn, at: 9998)
  85. self.view.insertSubview(selectDateView, at: 9999)
  86. self.navBar.back_button.addTarget(self, action: #selector(actionBackdo), for: .touchUpInside)
  87. self.navBar.search_button.isHidden = true
  88. self.statisticsPageViewModel!.configDefaulthDate()
  89. self.statisticsPageViewModel!.configUIdata()
  90. if(type == .presell){
  91. //header - 事件
  92. headerView.items_date_segmented.rx.selectedSegmentIndex
  93. .map { DateType(rawValue: $0)! }
  94. .subscribe(onNext: { [unowned self] dateType in
  95. self.statisticsPageViewModel?.selectedSegmentIndexdo(dateType: dateType)
  96. print("datetype = \(dateType)")
  97. })
  98. .disposed(by: disposeBag)
  99. //日前选择
  100. headerView.date_section_button.rx.tap.subscribe ({ [unowned self] (_) in
  101. self.statisticsPageViewModel!.showSelectDateView()
  102. }).disposed(by: disposeBag)
  103. //时间排序
  104. headerView.time_button.rx.tap
  105. .subscribe ({ [unowned self] (_) in
  106. headerView.time_button.isSelected = !headerView.time_button.isSelected
  107. self.statisticsPageViewModel?.getDateSortdo()
  108. }).disposed(by: disposeBag)
  109. //学员排序
  110. headerView.student_button.rx.tap.subscribe ({ [unowned self] (_) in
  111. headerView.student_button.isSelected = !headerView.student_button.isSelected
  112. self.statisticsPageViewModel?.getStuCountdo()
  113. }).disposed(by: disposeBag)
  114. }else{
  115. //普通模式
  116. //header - 事件
  117. officialheaderView.items_date_segmented.rx.selectedSegmentIndex
  118. .map { DateType(rawValue: $0)! }
  119. .subscribe(onNext: { [unowned self] dateType in
  120. self.statisticsPageViewModel?.selectedSegmentIndexdo(dateType: dateType)
  121. print("datetype = \(dateType)")
  122. })
  123. .disposed(by: disposeBag)
  124. //日前选择
  125. officialheaderView.date_section_button.rx.tap.subscribe ({ [unowned self] (_) in
  126. self.statisticsPageViewModel!.showSelectDateView()
  127. }).disposed(by: disposeBag)
  128. //时间排序
  129. officialheaderView.time_button.rx.tap
  130. .subscribe ({ [unowned self] (_) in
  131. officialheaderView.time_button.isSelected = !officialheaderView.time_button.isSelected
  132. self.statisticsPageViewModel!.getDateSortdo()
  133. }).disposed(by: disposeBag)
  134. //学员排序
  135. officialheaderView.student_button.rx.tap.subscribe ({ [unowned self] (_) in
  136. officialheaderView.student_button.isSelected = !officialheaderView.student_button.isSelected
  137. self.statisticsPageViewModel?.getStuCountdo()
  138. }).disposed(by: disposeBag)
  139. }
  140. //hide showSelectDateView
  141. selectDateViewBgBtn.rx.tap.subscribe ({ [unowned self] (_) in
  142. self.statisticsPageViewModel!.showSelectDateView()
  143. }).disposed(by: disposeBag)
  144. //开始时间 事件
  145. selectDateView.startdate_button.rx.tap.subscribe ({ [unowned self] (_) in
  146. self.statisticsPageViewModel!.showPGDatePickManager(tag: 1)
  147. }).disposed(by: disposeBag)
  148. //结束时间 事件
  149. selectDateView.enddate_button.rx.tap.subscribe ({ [unowned self] (_) in
  150. self.statisticsPageViewModel!.showPGDatePickManager(tag: 2)
  151. }).disposed(by: disposeBag)
  152. //本月
  153. selectDateView.month_button.rx.tap.subscribe ({ [unowned self] (_) in
  154. selectDateView.selectItemIndex(index: 0)
  155. }).disposed(by: disposeBag)
  156. //上月
  157. selectDateView.lastmonth_button.rx.tap.subscribe ({ [unowned self] (_) in
  158. selectDateView.selectItemIndex(index: 1)
  159. }).disposed(by: disposeBag)
  160. //近3月
  161. selectDateView.threemonth_button.rx.tap.subscribe ({ [unowned self] (_) in
  162. selectDateView.selectItemIndex(index: 2)
  163. }).disposed(by: disposeBag)
  164. //本年
  165. selectDateView.year_button.rx.tap.subscribe ({ [unowned self] (_) in
  166. selectDateView.selectItemIndex(index: 3)
  167. }).disposed(by: disposeBag)
  168. //重置
  169. selectDateView.reset_button.rx.tap.subscribe ({ [unowned self] (_) in
  170. self.statisticsPageViewModel!.resetHandledo()
  171. }).disposed(by: disposeBag)
  172. //确定
  173. selectDateView.confirm_button.rx.tap.subscribe ({ [unowned self] (_) in
  174. self.statisticsPageViewModel!.confirmHandledo()
  175. }).disposed(by: disposeBag)
  176. }
  177. func biandView(){
  178. tableView.delegate = self.statisticsPageViewModel
  179. tableView.dataSource = self.statisticsPageViewModel
  180. tableView.separatorStyle = .none //去除分割线
  181. tableView.register(UINib(nibName: "StatisticsPageCell", bundle: nil), forCellReuseIdentifier: self.statisticsPageViewModel!.cellIdentifier)
  182. tableView.rowHeight = 44.f
  183. if(isIphoneX){
  184. tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
  185. }else {
  186. if #available(iOS 13.0, *) {
  187. tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
  188. }else {
  189. tableView.contentInset = UIEdgeInsets(top: -25, left: 0, bottom: -25, right: 0)
  190. }
  191. }
  192. setupRefreshHeader(tableView) {[unowned self] in
  193. self.statisticsPageViewModel!.getStatisticsList(isLoading: false)
  194. }
  195. self.isEmptyDisplay = false
  196. }
  197. }