// // StatisticsPageController.swift // JiaPeiManage // // Created by Ning.ge on 2023/6/26. // import UIKit import RxSwift import RxCocoa import PGDatePicker enum StatisticsType: Int { case normal case presell } final class StatisticsPageController: BaseGroupTableViewController { //VM var statisticsPageViewModel:StatisticsPageViewModel? // MARK: UI let let statusBar = UIView().then { $0.backgroundColor = UIColor.db_theme } let navBar = MeTraineeNavBar.loadFromNib().then { $0.title_label.text = "全部报名统计" } //头部 view let headerView = StatisticsPageHeaderView.loadFromNib().then { $0.backgroundColor = .db_theme } let officialheaderView = StatisticsOfficialPageHeaderView.loadFromNib().then { $0.backgroundColor = .db_theme } //头部 日期选择 let selectDateViewBgBtn = UIButton(type:.custom).then { $0.isHidden = true $0.backgroundColor = UIColor.clear } let selectDateView = StatisticsSelectDateView.loadFromNib().then { $0.isHidden = true } // MARK: 数据 var type:StatisticsType = .normal // 普通-预售 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() } selectDateViewBgBtn.snp.makeConstraints { (make) in make.edges.equalToSuperview() } selectDateView.snp.remakeConstraints { make in make.top.equalTo(352.f) make.left.right.equalToSuperview() make.height.equalTo(172.f) } } init(type:StatisticsType) { self.type = type super.init() statisticsPageViewModel = StatisticsPageViewModel(vc: self) statisticsPageViewModel?.type = type } required convenience init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func viewDidLoad() { super.viewDidLoad() setupUI() biandView() self.statisticsPageViewModel!.getStatisticsList(isLoading: true) } func setupUI(){ self.view.addSubview(navBar) self.view.addSubview(statusBar) self.view.backgroundColor = .db_theme self.view.insertSubview(selectDateViewBgBtn, at: 9998) self.view.insertSubview(selectDateView, at: 9999) self.navBar.back_button.addTarget(self, action: #selector(actionBackdo), for: .touchUpInside) self.navBar.search_button.isHidden = true self.statisticsPageViewModel!.configDefaulthDate() self.statisticsPageViewModel!.configUIdata() if(type == .presell){ //header - 事件 headerView.items_date_segmented.rx.selectedSegmentIndex .map { DateType(rawValue: $0)! } .subscribe(onNext: { [unowned self] dateType in self.statisticsPageViewModel?.selectedSegmentIndexdo(dateType: dateType) print("datetype = \(dateType)") }) .disposed(by: disposeBag) //日前选择 headerView.date_section_button.rx.tap.subscribe ({ [unowned self] (_) in self.statisticsPageViewModel!.showSelectDateView() }).disposed(by: disposeBag) //时间排序 headerView.time_button.rx.tap .subscribe ({ [unowned self] (_) in headerView.time_button.isSelected = !headerView.time_button.isSelected self.statisticsPageViewModel?.getDateSortdo() }).disposed(by: disposeBag) //学员排序 headerView.student_button.rx.tap.subscribe ({ [unowned self] (_) in headerView.student_button.isSelected = !headerView.student_button.isSelected self.statisticsPageViewModel?.getStuCountdo() }).disposed(by: disposeBag) }else{ //普通模式 //header - 事件 officialheaderView.items_date_segmented.rx.selectedSegmentIndex .map { DateType(rawValue: $0)! } .subscribe(onNext: { [unowned self] dateType in self.statisticsPageViewModel?.selectedSegmentIndexdo(dateType: dateType) print("datetype = \(dateType)") }) .disposed(by: disposeBag) //日前选择 officialheaderView.date_section_button.rx.tap.subscribe ({ [unowned self] (_) in self.statisticsPageViewModel!.showSelectDateView() }).disposed(by: disposeBag) //时间排序 officialheaderView.time_button.rx.tap .subscribe ({ [unowned self] (_) in officialheaderView.time_button.isSelected = !officialheaderView.time_button.isSelected self.statisticsPageViewModel!.getDateSortdo() }).disposed(by: disposeBag) //学员排序 officialheaderView.student_button.rx.tap.subscribe ({ [unowned self] (_) in officialheaderView.student_button.isSelected = !officialheaderView.student_button.isSelected self.statisticsPageViewModel?.getStuCountdo() }).disposed(by: disposeBag) } //hide showSelectDateView selectDateViewBgBtn.rx.tap.subscribe ({ [unowned self] (_) in self.statisticsPageViewModel!.showSelectDateView() }).disposed(by: disposeBag) //开始时间 事件 selectDateView.startdate_button.rx.tap.subscribe ({ [unowned self] (_) in self.statisticsPageViewModel!.showPGDatePickManager(tag: 1) }).disposed(by: disposeBag) //结束时间 事件 selectDateView.enddate_button.rx.tap.subscribe ({ [unowned self] (_) in self.statisticsPageViewModel!.showPGDatePickManager(tag: 2) }).disposed(by: disposeBag) //本月 selectDateView.month_button.rx.tap.subscribe ({ [unowned self] (_) in selectDateView.selectItemIndex(index: 0) }).disposed(by: disposeBag) //上月 selectDateView.lastmonth_button.rx.tap.subscribe ({ [unowned self] (_) in selectDateView.selectItemIndex(index: 1) }).disposed(by: disposeBag) //近3月 selectDateView.threemonth_button.rx.tap.subscribe ({ [unowned self] (_) in selectDateView.selectItemIndex(index: 2) }).disposed(by: disposeBag) //本年 selectDateView.year_button.rx.tap.subscribe ({ [unowned self] (_) in selectDateView.selectItemIndex(index: 3) }).disposed(by: disposeBag) //重置 selectDateView.reset_button.rx.tap.subscribe ({ [unowned self] (_) in self.statisticsPageViewModel!.resetHandledo() }).disposed(by: disposeBag) //确定 selectDateView.confirm_button.rx.tap.subscribe ({ [unowned self] (_) in self.statisticsPageViewModel!.confirmHandledo() }).disposed(by: disposeBag) } func biandView(){ tableView.delegate = self.statisticsPageViewModel tableView.dataSource = self.statisticsPageViewModel tableView.separatorStyle = .none //去除分割线 tableView.register(UINib(nibName: "StatisticsPageCell", bundle: nil), forCellReuseIdentifier: self.statisticsPageViewModel!.cellIdentifier) tableView.rowHeight = 44.f if(isIphoneX){ tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) }else { if #available(iOS 13.0, *) { tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) }else { tableView.contentInset = UIEdgeInsets(top: -25, left: 0, bottom: -25, right: 0) } } setupRefreshHeader(tableView) {[unowned self] in self.statisticsPageViewModel!.getStatisticsList(isLoading: false) } self.isEmptyDisplay = false } }