123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326 |
- //
- // MeTraineeListViewController.swift
- // JiaPeiManage
- //
- // Created by Ning.ge on 2023/6/13.
- //
- import UIKit
- import RxSwift
- import RxCocoa
- enum TraineeType {
- case advancet //预报名
- case official //正式
- case biandstu //绑定
- case none //普通-模式
- }
- final class MeTraineeListViewController: BaseViewController {
-
-
- // MARK: 私有属性
-
- private var menuTitles : [String] = ["科一", "科二", "科三", "科四", "毕业"]
-
- private var idxs: [UInt] = []
-
- private var menuItemCurrentBtn : UIButton?
-
- var schoolId:Int = 0
-
- var type:TraineeType?
-
- // MARK: UI let
- let statusBar = UIView().then {
- $0.backgroundColor = UIColor.db_theme
- }
-
- let navBar = MeTraineeNavBar.loadFromNib()
-
- let pageController = VTMagicController().then {
- $0.view.translatesAutoresizingMaskIntoConstraints = false
- $0.magicView.navigationColor = .db_theme_L2
- $0.magicView.sliderColor = .db_sliderColor
- $0.magicView.switchStyle = .default
- $0.magicView.layoutStyle = .divide
- $0.magicView.navigationHeight = 57.f
- // $0.magicView.sliderExtension = -10
- $0.magicView.sliderWidth = 22.f
- $0.magicView.sliderOffset = -8
- $0.magicView.sliderHeight = 4
- $0.magicView.isSeparatorHidden = false
- $0.magicView.bubbleRadius = 2
- $0.magicView.needPreloading = true
- $0.magicView.separatorHeight = 0 //下划线h
- }
-
- var advancetTraineeSubjectPageViewController:MeTraineeSubjectPageViewController?
-
- 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)
- }
-
- pageController.view.snp.makeConstraints { (make) in
- make.left.right.bottom.equalToSuperview()
- make.top.equalTo(navBar.snp.bottom)
- }
- // if self.type != .advancet {
- // pageController.view.snp.makeConstraints { (make) in
- // make.left.right.bottom.equalToSuperview()
- // make.top.equalTo(navBar.snp.bottom)
- // }
- // }else {
- // advancetTraineeSubjectPageViewController?.view.snp.makeConstraints { (make) in
- // make.left.right.bottom.equalToSuperview()
- // make.top.equalTo(navBar.snp.bottom)
- // }
- // }
- }
- func scrollViewDidScroll(_ scrollView: UIScrollView) {
- }
- // MARK: StatusBar
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
-
- self.navigationController?.setNavigationBarHidden(true, animated: true)
- }
-
- init(type:TraineeType) {
- self.type = type
- super.init()
-
- switch type {
- case .advancet:
- self.title = "预报名学员"
- self.tabBarItem.image = NYImage.TabBar.advancet
- self.tabBarItem.selectedImage = NYImage.TabBar.advancet_s?.withRenderingMode(.alwaysOriginal)
- menuTitles = ["预报名","科一", "科二", "科三", "科四", "毕业"]
- return
- case .official:
- self.navBar.title_label.text = "我的学员" //"我的学员-正式"
- self.title = "正式学员"
- self.tabBarItem.image = NYImage.TabBar.official
- self.tabBarItem.selectedImage = NYImage.TabBar.official_s?.withRenderingMode(.alwaysOriginal)
- return
- case .biandstu:
- self.navBar.title_label.text = "绑定学员"
- return
- case .none:
- return
- }
-
- }
-
- required convenience init?(coder aDecoder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- override func viewDidLoad() {
- super.viewDidLoad()
- configureMagicController()
- setupUI()
- addNotificationCenter()
- }
-
- // MARK: 私有方法
- func addNotificationCenter(){
- NotificationCenter.default.addObserver(self, selector: #selector(setTagbadgeIntegerNotification), name: Notification.updateItemTopTotalNameNotification, object: nil)
- }
- func setupUI(){
- if type == .advancet || type == TraineeType.none {
- self.navBar.title_label.text = (schoolId > 0 ?"在校学员":"我的学员") //"我的学员-预报名"
- }
- self.view.backgroundColor = .db_theme
- self.navBar.back_button.addTarget(self, action: #selector(actionBackdo), for: .touchUpInside)
- self.navBar.search_button.addTarget(self, action: #selector(jumpSearchdo), for: .touchUpInside)
- // self.navBar.search_button.rx.tap.subscribe ({ [unowned self] (_) in
- //// self.jumpSearch()
- // print("search_button=====%@",self)
- // NYSwRouter.push(NYSwPushType.trainee_search.path)
- // }).disposed(by: disposeBag)
- }
-
- func configureMagicController(){
-
- self.view.addSubview(navBar)
- self.view.addSubview(statusBar)
- self.addChild(pageController)
- self.view.addSubview(pageController.view)
- //设置VTMagicController代理,初始页码
- pageController.magicView.delegate = self
- pageController.magicView.dataSource = self
- pageController.magicView.reloadData(toPage: 0)
- // if self.type != .advancet {
- // self.addChild(pageController)
- // self.view.addSubview(pageController.view)
- // //设置VTMagicController代理,初始页码
- // pageController.magicView.delegate = self
- // pageController.magicView.dataSource = self
- // pageController.magicView.reloadData(toPage: 0)
- // }else{
- // //预报名
- // advancetTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(type: self.type!,state: "0",schoolId: schoolId)
- // self.addChild(advancetTraineeSubjectPageViewController!)
- // self.view.addSubview(advancetTraineeSubjectPageViewController!.view)
- // }
-
- }
-
- @objc func jumpSearchdo(_ sender: Any){
- var context = 0 //我的
- if type == .biandstu {
- context = 2 //绑定
- }else {
- if schoolId > 0 {
- context = 1 //在校
- }
- }
- NYSwRouter.push(NYSwPushType.trainee_search,context: context)
- }
-
- }
- //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 total>999 {
- menuItem?.qmui_badgeOffset = CGPoint(x: -40, y: 26)
- }
- if pageController.currentPage != itemIndex{
- menuItem?.qmui_badgeLabel?.isHidden = true
- }
- }
- //1
- func magicView(_ magicView: VTMagicView, didSelectItemAt itemIndex: UInt) {
- // var menuItem = magicView.menuItem(at: itemIndex)
- // if (menuItemCurrentBtn != nil) {
- // menuItemCurrentBtn?.titleLabel?.font = NYFont.SysFont.sys_15
- // menuItemCurrentBtn?.qmui_badgeLabel?.isHidden = true
- // }
- // menuItemCurrentBtn = menuItem
- // menuItem?.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17)
- // menuItem?.qmui_badgeLabel?.isHidden = false
- // 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
-
- if currentPage == itemIndex {
- // TogetherDataManager.refreshDataForVTMagic(currentVc,true)
- }
- }
- }
- //3
- func magicView(_ magicView: VTMagicView, viewDidAppear viewController: UIViewController, atPage pageIndex: UInt) {
- var menuItem = magicView.menuItem(at: pageIndex)
- if (menuItem != nil) {
- menuItemCurrentBtn = menuItem
- menuItem?.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17)
- menuItem?.qmui_badgeLabel?.isHidden = false
- }
- if pageIndex == 0 || pageIndex == 1 {
- var canRefresh: Bool = false
-
- if let collectionVc = viewController as? BaseCollectionViewController {
-
- if collectionVc.totalItems() > 0 {
- canRefresh = true
- }
- }
-
- if idxs.contains(pageIndex) || canRefresh {
-
- // TogetherDataManager.refreshDataForVTMagic(viewController, false)
- }
- }
- }
- //2
- func magicView(_ magicView: VTMagicView, viewDidDisappear viewController: UIViewController, atPage pageIndex: UInt) {
- var menuItem = magicView.menuItem(at: pageIndex)
- if (menuItem != nil) {
- menuItem?.titleLabel?.font = NYFont.SysFont.sys_15
- menuItem?.qmui_badgeLabel?.isHidden = true
- }
- if pageIndex == 0 || pageIndex == 1 {
- if !idxs.contains(pageIndex) {
- idxs.append(pageIndex)
- }
- }
-
- if pageIndex == 1 {
- // TogetherDataManager.referenceDate = Date()
- }
- }
- }
- //VTMagicViewDataSource 数据源代理
- extension MeTraineeListViewController : VTMagicViewDataSource{
- func menuTitles(for magicView: VTMagicView) -> [String] {
- return menuTitles
- }
-
- func magicView(_ magicView: VTMagicView, menuItemAt itemIndex: UInt) -> UIButton {
-
- var menuItem = magicView.dequeueReusableItem(withIdentifier: "homeItemIdentifier")
- if menuItem == nil {
- menuItem = QMUIButton(type: .custom)
- menuItem?.setTitleColor(.db_fontGray, for: .normal)
- menuItem?.setTitleColor(.db_fontSelColor, for: .selected)
- menuItem?.titleLabel?.font = NYFont.SysFont.sys_15
- if itemIndex==0 {
- menuItemCurrentBtn = menuItem
- menuItem?.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17)
- }
- menuItem?.qmui_badgeBackgroundColor = UIColor("#F84444")
- menuItem?.qmui_badgeTextColor = UIColor.white
- // menuItem?.qmui_badgeInteger = 50
- menuItem?.qmui_badgeLabel?.isHidden = true
- menuItem?.qmui_badgeFont = NYFont.SysFont.sys_10
- if self.type != .advancet {
- menuItem?.qmui_badgeOffset = CGPoint(x: -35, y: 26)
- }else {
- menuItem?.qmui_badgeOffset = CGPoint(x: -25, y: 26)
- }
- menuItem?.qmui_badgeContentEdgeInsets = UIEdgeInsets(top: 2, left: 2, bottom: 2, right: 2)
- }
-
- return menuItem ?? UIButton()
- }
-
- func magicView(_ magicView: VTMagicView, viewControllerAtPage pageIndex: UInt) -> UIViewController {
-
- if self.type != .advancet {
- var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController0\(pageIndex)")
- if meTraineeSubjectPageViewController == nil {
- meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(type: self.type!,state: "\(pageIndex+1)",schoolId: schoolId)
- }
- return meTraineeSubjectPageViewController ?? UIViewController()
- }else{
- var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController0\(pageIndex)")
- if meTraineeSubjectPageViewController == nil {
- meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(type: self.type!,state: "\(pageIndex)",schoolId: schoolId)
- }
- return meTraineeSubjectPageViewController ?? UIViewController()
- }
- }
- }
|