StatisticsPageController.swift 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  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. //预报名-点击
  115. headerView.advanceday_btn.addTarget(self, action: #selector(ItemClickdo(_:)), for: .touchUpInside)
  116. //今日-点击
  117. headerView.today_btn.addTarget(self, action: #selector(ItemClickdo(_:)), for: .touchUpInside)
  118. //月份-点击
  119. headerView.thismonth_btn.addTarget(self, action: #selector(ItemClickdo(_:)), for: .touchUpInside)
  120. //年份-点击
  121. headerView.thisyear_btn.addTarget(self, action: #selector(ItemClickdo(_:)), for: .touchUpInside)
  122. }else{
  123. //普通模式
  124. //header - 事件
  125. officialheaderView.items_date_segmented.rx.selectedSegmentIndex
  126. .map { DateType(rawValue: $0)! }
  127. .subscribe(onNext: { [unowned self] dateType in
  128. self.statisticsPageViewModel?.selectedSegmentIndexdo(dateType: dateType)
  129. print("datetype = \(dateType)")
  130. })
  131. .disposed(by: disposeBag)
  132. //日前选择
  133. officialheaderView.date_section_button.rx.tap.subscribe ({ [unowned self] (_) in
  134. self.statisticsPageViewModel!.showSelectDateView()
  135. }).disposed(by: disposeBag)
  136. //时间排序
  137. officialheaderView.time_button.rx.tap
  138. .subscribe ({ [unowned self] (_) in
  139. officialheaderView.time_button.isSelected = !officialheaderView.time_button.isSelected
  140. self.statisticsPageViewModel!.getDateSortdo()
  141. }).disposed(by: disposeBag)
  142. //学员排序
  143. officialheaderView.student_button.rx.tap.subscribe ({ [unowned self] (_) in
  144. officialheaderView.student_button.isSelected = !officialheaderView.student_button.isSelected
  145. self.statisticsPageViewModel?.getStuCountdo()
  146. }).disposed(by: disposeBag)
  147. //今日-点击
  148. officialheaderView.today_btn.addTarget(self, action: #selector(ItemClickdo(_:)), for: .touchUpInside)
  149. //月份-点击
  150. officialheaderView.thismonth_btn.addTarget(self, action: #selector(ItemClickdo(_:)), for: .touchUpInside)
  151. //年份-点击
  152. officialheaderView.thisyear_btn.addTarget(self, action: #selector(ItemClickdo(_:)), for: .touchUpInside)
  153. }
  154. //hide showSelectDateView
  155. selectDateViewBgBtn.rx.tap.subscribe ({ [unowned self] (_) in
  156. self.statisticsPageViewModel!.showSelectDateView()
  157. }).disposed(by: disposeBag)
  158. //开始时间 事件
  159. selectDateView.startdate_button.rx.tap.subscribe ({ [unowned self] (_) in
  160. self.statisticsPageViewModel!.showPGDatePickManager(tag: 1)
  161. }).disposed(by: disposeBag)
  162. //结束时间 事件
  163. selectDateView.enddate_button.rx.tap.subscribe ({ [unowned self] (_) in
  164. self.statisticsPageViewModel!.showPGDatePickManager(tag: 2)
  165. }).disposed(by: disposeBag)
  166. //本月
  167. selectDateView.month_button.rx.tap.subscribe ({ [unowned self] (_) in
  168. selectDateView.selectItemIndex(index: 0)
  169. }).disposed(by: disposeBag)
  170. //上月
  171. selectDateView.lastmonth_button.rx.tap.subscribe ({ [unowned self] (_) in
  172. selectDateView.selectItemIndex(index: 1)
  173. }).disposed(by: disposeBag)
  174. //近3月
  175. selectDateView.threemonth_button.rx.tap.subscribe ({ [unowned self] (_) in
  176. selectDateView.selectItemIndex(index: 2)
  177. }).disposed(by: disposeBag)
  178. //本年
  179. selectDateView.year_button.rx.tap.subscribe ({ [unowned self] (_) in
  180. selectDateView.selectItemIndex(index: 3)
  181. }).disposed(by: disposeBag)
  182. //重置
  183. selectDateView.reset_button.rx.tap.subscribe ({ [unowned self] (_) in
  184. self.statisticsPageViewModel!.resetHandledo()
  185. }).disposed(by: disposeBag)
  186. //确定
  187. selectDateView.confirm_button.rx.tap.subscribe ({ [unowned self] (_) in
  188. self.statisticsPageViewModel!.confirmHandledo()
  189. }).disposed(by: disposeBag)
  190. }
  191. func biandView(){
  192. tableView.delegate = self.statisticsPageViewModel
  193. tableView.dataSource = self.statisticsPageViewModel
  194. tableView.separatorStyle = .none //去除分割线
  195. tableView.register(UINib(nibName: "StatisticsPageCell", bundle: nil), forCellReuseIdentifier: self.statisticsPageViewModel!.cellIdentifier)
  196. tableView.rowHeight = 44.f
  197. if(isIphoneX){
  198. tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
  199. }else {
  200. if #available(iOS 13.0, *) {
  201. tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
  202. }else {
  203. tableView.contentInset = UIEdgeInsets(top: -25, left: 0, bottom: -25, right: 0)
  204. }
  205. }
  206. setupRefreshHeader(tableView) {[unowned self] in
  207. self.statisticsPageViewModel!.getStatisticsList(isLoading: false)
  208. }
  209. self.isEmptyDisplay = false
  210. }
  211. //点击item cell
  212. @objc func ItemClickdo(_ sender: UIButton) {
  213. self.statisticsPageViewModel?.statisticsListItemCellClickdo(type: sender.tag)
  214. }
  215. }