|
@@ -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()
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|