MeTraineeDetailsPageViewController.swift 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. //
  2. // MeTraineeDetailsPageViewController.swift
  3. // JiaPeiManage
  4. //
  5. // Created by Ning.ge on 2023/6/16.
  6. //
  7. import UIKit
  8. import RxSwift
  9. import RxCocoa
  10. final class MeTraineeDetailsPageViewController: BaseViewController {
  11. // MARK: 服务属性
  12. private let cocahService: CoachServiceType = CoachService(networking: CoachNetworking())
  13. // MARK: 私有属性
  14. private var menuTitles : [String] = ["基本信息", "理论成绩", "人脸比对记录", "签到记录"]
  15. // private var menuTitles : [String] = ["", "", "", ""]
  16. private var idxs: [UInt] = []
  17. private var menuItemCurrentBtn : UIButton?
  18. //学员ID
  19. var stuId:Int = 0
  20. var traineeInfoModel:TraineeInfoModel?
  21. // MARK: UI属性
  22. @IBOutlet weak var title_label: UILabel!
  23. @IBOutlet weak var header_view: UIView!
  24. //头像
  25. @IBOutlet weak var user_icon_imageview: UIImageView!
  26. @IBOutlet weak var sex_imageview: UIImageView!
  27. //用户名
  28. @IBOutlet weak var username_label: UILabel!
  29. //电话
  30. @IBOutlet weak var userphone_label: UILabel!
  31. let pageController = VTMagicController().then {
  32. $0.view.translatesAutoresizingMaskIntoConstraints = false
  33. $0.magicView.navigationColor = .db_theme
  34. $0.magicView.sliderColor = .db_sliderColor
  35. $0.magicView.switchStyle = .default
  36. $0.magicView.layoutStyle = .divide
  37. // $0.magicView.sliderStyle = .bubble
  38. $0.magicView.navigationHeight = 57.f
  39. // $0.magicView.sliderExtension = -10
  40. $0.magicView.sliderWidth = 22.f
  41. $0.magicView.sliderOffset = -8
  42. $0.magicView.sliderHeight = 4
  43. $0.magicView.isSeparatorHidden = false
  44. $0.magicView.bubbleRadius = 2
  45. $0.magicView.needPreloading = true
  46. $0.magicView.separatorHeight = 0 //下划线h
  47. $0.magicView.isSliderHidden = true
  48. }
  49. override func setupConstraints() {
  50. pageController.view.snp.makeConstraints { (make) in
  51. make.left.right.bottom.equalToSuperview()
  52. make.top.equalTo(header_view.snp.bottom)
  53. }
  54. }
  55. override func viewDidLoad() {
  56. super.viewDidLoad()
  57. setupUI()
  58. configureMagicController()
  59. cocahService.studentInfoByIdRequest(city: LocalManager.userInfo.city!, id: stuId)
  60. .subscribe { traineeInfoModel in
  61. self.traineeInfoModel = traineeInfoModel
  62. self.biandView()
  63. if(self.pageController.currentPage==0){
  64. let vc:MeTraineeDetails01Controller = self.pageController.currentViewController as! MeTraineeDetails01Controller
  65. vc.setInfo(info: traineeInfoModel)
  66. }
  67. } onError: { error in
  68. }.disposed(by: disposeBag)
  69. }
  70. // MARK: 私有方法
  71. func setupUI(){
  72. self.view.backgroundColor = .db_theme
  73. }
  74. func biandView(){
  75. self.title_label.text = (traineeInfoModel?.name)! + "个人信息"
  76. //头像
  77. self.user_icon_imageview.sd_setImage(with: traineeInfoModel?.photoPath?.urlValue, placeholderImage: traineeInfoModel?.sex == "1" ? NYImage.Home.usermale:NYImage.Home.userfemale)
  78. //用户名
  79. self.username_label.text = traineeInfoModel?.name
  80. //电话
  81. self.userphone_label.text = traineeInfoModel?.phone
  82. self.sex_imageview.image = traineeInfoModel?.sex == "1" ? NYImage.Home.sexmale:NYImage.Home.sexfemale
  83. }
  84. func configureMagicController(){
  85. self.addChild(pageController)
  86. self.view.addSubview(pageController.view)
  87. //设置VTMagicController代理,初始页码
  88. pageController.magicView.delegate = self
  89. pageController.magicView.dataSource = self
  90. pageController.magicView.reloadData(toPage: 0)
  91. }
  92. }
  93. //VTMagicViewDelegate view代理
  94. extension MeTraineeDetailsPageViewController : VTMagicViewDelegate {
  95. func magicView(_ magicView: VTMagicView, didSelectItemAt itemIndex: UInt) {
  96. var menuItem = magicView.menuItem(at: itemIndex)
  97. if (menuItemCurrentBtn != nil) {
  98. (menuItemCurrentBtn as?QMUIButton)?.spacingBetweenImageAndTitle = -25
  99. }
  100. (menuItem as?QMUIButton)?.spacingBetweenImageAndTitle = -30
  101. menuItemCurrentBtn = menuItem
  102. if itemIndex == 0 || itemIndex == 1 {
  103. guard let currentVc:MeTraineeSubjectPageViewController = pageController.currentViewController as? MeTraineeSubjectPageViewController else { return }
  104. let currentPage = pageController.currentPage
  105. if currentPage == itemIndex {
  106. // TogetherDataManager.refreshDataForVTMagic(currentVc,true)
  107. }
  108. }
  109. }
  110. func magicView(_ magicView: VTMagicView, viewDidAppear viewController: UIViewController, atPage pageIndex: UInt) {
  111. if pageIndex == 0 || pageIndex == 1 {
  112. var canRefresh: Bool = false
  113. if let collectionVc = viewController as? BaseCollectionViewController {
  114. if collectionVc.totalItems() > 0 {
  115. canRefresh = true
  116. }
  117. }
  118. if idxs.contains(pageIndex) || canRefresh {
  119. // TogetherDataManager.refreshDataForVTMagic(viewController, false)
  120. }
  121. }
  122. }
  123. func magicView(_ magicView: VTMagicView, viewDidDisappear viewController: UIViewController, atPage pageIndex: UInt) {
  124. if pageIndex == 0 || pageIndex == 1 {
  125. if !idxs.contains(pageIndex) {
  126. idxs.append(pageIndex)
  127. }
  128. }
  129. if pageIndex == 1 {
  130. // TogetherDataManager.referenceDate = Date()
  131. }
  132. }
  133. }
  134. //VTMagicViewDataSource 数据源代理
  135. extension MeTraineeDetailsPageViewController : VTMagicViewDataSource{
  136. func menuTitles(for magicView: VTMagicView) -> [String] {
  137. return menuTitles
  138. }
  139. func magicView(_ magicView: VTMagicView, menuItemAt itemIndex: UInt) -> UIButton {
  140. var menuItem = magicView.dequeueReusableItem(withIdentifier: "homeItemIdentifier")
  141. if menuItem == nil {
  142. menuItem = QMUIButton(type: .custom)
  143. menuItem?.titleLabel?.font = NYFont.SysFont.sys_13
  144. menuItem?.setTitleColor(.db_fontGray, for: .normal)
  145. menuItem?.setTitleColor(.db_fontSelColor, for: .selected)
  146. menuItem?.setImage(NYImage.Home.stuBtnSel, for: .selected)
  147. menuItem?.setImage(NYImage.Home.stuBtnNor, for: .normal)
  148. (menuItem as?QMUIButton)?.imagePosition = .top
  149. (menuItem as?QMUIButton)?.spacingBetweenImageAndTitle = -25
  150. // menuItem?.imageEdgeInsets = UIEdgeInsets(top: -5, left: -5, bottom: 0, right: -5)
  151. // let title_label = UILabel()
  152. // title_label.font = NYFont.SysFont.sys_13
  153. // title_label.textColor = .db_fontGray
  154. // title_label.textAlignment = .center
  155. // title_label.text = menuTitleArray[Int(itemIndex)]
  156. // menuItem?.addSubview(title_label)
  157. // let t_top = (57.f - 18.f)*0.5
  158. // title_label.snp.makeConstraints { make in
  159. // make.top.equalTo(t_top)
  160. // make.left.right.equalTo(menuItem!)
  161. // make.height.equalTo(18.f)
  162. // }
  163. if itemIndex==0 {
  164. (menuItem as?QMUIButton)?.spacingBetweenImageAndTitle = -30
  165. menuItemCurrentBtn = menuItem
  166. }
  167. }
  168. return menuItem ?? UIButton()
  169. }
  170. func magicView(_ magicView: VTMagicView, viewControllerAtPage pageIndex: UInt) -> UIViewController {
  171. if pageIndex == 0 {
  172. var meTraineeDetails01Controller = magicView.dequeueReusablePage(withIdentifier: "MeTraineeDetails01Controller")
  173. if meTraineeDetails01Controller == nil {
  174. meTraineeDetails01Controller = MeTraineeDetails01Controller.init()
  175. }
  176. return meTraineeDetails01Controller ?? UIViewController()
  177. } else if pageIndex == 1 {
  178. var meTraineeDetails02Controller = magicView.dequeueReusablePage(withIdentifier: "MeTraineeDetails02Controller")
  179. if meTraineeDetails02Controller == nil {
  180. meTraineeDetails02Controller = MeTraineeDetails02Controller.init()
  181. }
  182. return meTraineeDetails02Controller ?? UIViewController()
  183. } else if pageIndex == 2 {
  184. var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController03")
  185. if meTraineeSubjectPageViewController == nil {
  186. meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(state: "3")
  187. }
  188. return meTraineeSubjectPageViewController ?? UIViewController()
  189. } else if pageIndex == 3{
  190. var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController04")
  191. if meTraineeSubjectPageViewController == nil {
  192. meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(state: "4")
  193. }
  194. return meTraineeSubjectPageViewController ?? UIViewController()
  195. } else {
  196. var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController05")
  197. if meTraineeSubjectPageViewController == nil {
  198. meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(state: "5")
  199. }
  200. return meTraineeSubjectPageViewController ?? UIViewController()
  201. }
  202. }
  203. }