MeTraineeDetailsPageViewController.swift 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  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. //预报名
  21. var bmType : String = ""
  22. //报名时间
  23. var applyDate:String = ""
  24. var traineeInfoModel:TraineeInfoModel?
  25. // MARK: UI属性
  26. @IBOutlet weak var title_label: UILabel!
  27. @IBOutlet weak var header_view: UIView!
  28. //头像
  29. @IBOutlet weak var user_icon_imageview: UIImageView!
  30. @IBOutlet weak var sex_imageview: UIImageView!
  31. //用户名
  32. @IBOutlet weak var username_label: UILabel!
  33. //电话
  34. @IBOutlet weak var userphone_label: UILabel!
  35. //学员密码-show
  36. @IBOutlet weak var stupwd_showView: UIView!
  37. @IBOutlet weak var stupwd_showbutton: UIButton!
  38. //学员密码
  39. @IBOutlet weak var stupwd_label: UILabel!
  40. //学员密码-hide
  41. @IBOutlet weak var stupwd_hideView: UIView!
  42. @IBOutlet weak var stupwd_hidebutton: UIButton!
  43. let pageController = VTMagicController().then {
  44. $0.view.translatesAutoresizingMaskIntoConstraints = false
  45. $0.magicView.navigationColor = .db_theme
  46. $0.magicView.sliderColor = .db_sliderColor
  47. $0.magicView.switchStyle = .default
  48. $0.magicView.layoutStyle = .divide
  49. // $0.magicView.sliderStyle = .bubble
  50. $0.magicView.navigationHeight = 57.f
  51. // $0.magicView.sliderExtension = -10
  52. $0.magicView.sliderWidth = 22.f
  53. $0.magicView.sliderOffset = -8
  54. $0.magicView.sliderHeight = 4
  55. $0.magicView.isSeparatorHidden = false
  56. $0.magicView.bubbleRadius = 2
  57. $0.magicView.needPreloading = true
  58. $0.magicView.separatorHeight = 0 //下划线h
  59. $0.magicView.isSliderHidden = true
  60. }
  61. override func setupConstraints() {
  62. pageController.view.snp.makeConstraints { (make) in
  63. make.left.right.bottom.equalToSuperview()
  64. make.top.equalTo(header_view.snp.bottom)
  65. }
  66. }
  67. override func viewDidLoad() {
  68. super.viewDidLoad()
  69. if bmType == "1" {
  70. menuTitles = ["基本信息", "理论成绩"]
  71. }
  72. setupUI()
  73. configureMagicController()
  74. getStudentInfo()
  75. }
  76. // MARK: 请求网络
  77. func getStudentInfo(){
  78. NYTips.show()
  79. if bmType == "1" {
  80. //预报名studentInfoByIdRequest
  81. cocahService.studentInfoTempByIdRequest(city: LocalManager.userInfo.city!, id: stuId)
  82. .subscribe { [unowned self] traineeInfoModel in
  83. self.traineeInfoModel = traineeInfoModel
  84. self.biandView()
  85. if(self.pageController.currentPage==0){
  86. let vc:MeTraineeDetails01Controller = self.pageController.currentViewController as! MeTraineeDetails01Controller
  87. vc.setInfo(info: traineeInfoModel)
  88. }
  89. //刷新理论成绩
  90. guard let details02vc:MeTraineeDetails02Controller = self.pageController.viewController(atPage: 1) as? MeTraineeDetails02Controller else { return }
  91. details02vc.setStuOutId(stuId: traineeInfoModel.id)
  92. NYTips.hide()
  93. } onError: { error in
  94. NYTips.hide()
  95. }.disposed(by: disposeBag)
  96. }else {
  97. if LocalManager.userInfo.city == "214" {//温州特殊判断
  98. cocahService.studentInfoApplyByIdRequest(city: LocalManager.userInfo.city!, id: stuId, applyDate: applyDate)
  99. .subscribe { [unowned self] traineeInfoModel in
  100. self.traineeInfoModel = traineeInfoModel
  101. self.biandView()
  102. if(self.pageController.currentPage==0){
  103. let vc:MeTraineeDetails01Controller = self.pageController.currentViewController as! MeTraineeDetails01Controller
  104. vc.setInfo(info: traineeInfoModel)
  105. }
  106. //刷新理论成绩
  107. guard let details02vc:MeTraineeDetails02Controller = self.pageController.viewController(atPage: 1) as? MeTraineeDetails02Controller else { return }
  108. details02vc.setStuOutId(stuId: traineeInfoModel.id)
  109. NYTips.hide()
  110. } onError: { error in
  111. NYTips.hide()
  112. }.disposed(by: disposeBag)
  113. }else{
  114. cocahService.studentInfoByIdRequest(city: LocalManager.userInfo.city!, id: stuId)
  115. .subscribe { [unowned self] traineeInfoModel in
  116. self.traineeInfoModel = traineeInfoModel
  117. self.biandView()
  118. if(self.pageController.currentPage==0){
  119. let vc:MeTraineeDetails01Controller = self.pageController.currentViewController as! MeTraineeDetails01Controller
  120. vc.setInfo(info: traineeInfoModel)
  121. }
  122. //刷新理论成绩
  123. guard let details02vc:MeTraineeDetails02Controller = self.pageController.viewController(atPage: 1) as? MeTraineeDetails02Controller else { return }
  124. details02vc.setStuOutId(stuId: traineeInfoModel.id)
  125. NYTips.hide()
  126. } onError: { error in
  127. NYTips.hide()
  128. }.disposed(by: disposeBag)
  129. }
  130. }
  131. }
  132. // MARK: 私有方法
  133. func setupUI(){
  134. if isIphoneX {self.nav_topH_layout.constant = 64.f+24.f}
  135. self.view.backgroundColor = .db_theme
  136. // if LocalManager.userInfo.classType == 1 || LocalManager.userInfo.classType == 3{
  137. self.stupwd_showView.isHidden = true
  138. self.stupwd_hideView.isHidden = false
  139. // }
  140. //密码展示
  141. self.stupwd_showbutton.rx.tap.subscribe ({ [unowned self] (_) in
  142. self.stupwd_showView.isHidden = true
  143. self.stupwd_hideView.isHidden = false
  144. }).disposed(by: disposeBag)
  145. //密码隐藏
  146. self.stupwd_hidebutton.rx.tap.subscribe ({ [unowned self] (_) in
  147. self.stupwd_showView.isHidden = false
  148. self.stupwd_hideView.isHidden = true
  149. }).disposed(by: disposeBag)
  150. }
  151. func biandView(){
  152. //title
  153. self.title_label.text = (traineeInfoModel?.name)! + "个人信息"
  154. //头像
  155. self.user_icon_imageview.sd_setImage(with: traineeInfoModel?.photoPath?.urlValue, placeholderImage: traineeInfoModel?.sex == "1" ? NYImage.Home.usermale:NYImage.Home.userfemale)
  156. //用户名
  157. self.username_label.text = traineeInfoModel?.name
  158. //电话
  159. self.userphone_label.text = traineeInfoModel?.phone
  160. self.sex_imageview.image = traineeInfoModel?.sex == "1" ? NYImage.Home.sexmale:NYImage.Home.sexfemale
  161. //密码
  162. self.stupwd_label.text = traineeInfoModel?.password
  163. }
  164. func configureMagicController(){
  165. self.addChild(pageController)
  166. self.view.addSubview(pageController.view)
  167. //设置VTMagicController代理,初始页码
  168. pageController.magicView.delegate = self
  169. pageController.magicView.dataSource = self
  170. pageController.magicView.reloadData(toPage: 0)
  171. }
  172. }
  173. //VTMagicViewDelegate view代理
  174. extension MeTraineeDetailsPageViewController : VTMagicViewDelegate {
  175. func magicView(_ magicView: VTMagicView, didSelectItemAt itemIndex: UInt) {
  176. var menuItem = magicView.menuItem(at: itemIndex)
  177. if (menuItemCurrentBtn != nil && menuItemCurrentBtn != menuItem) {
  178. (menuItemCurrentBtn as?QMUIButton)?.spacingBetweenImageAndTitle = -25
  179. }
  180. (menuItem as?QMUIButton)?.spacingBetweenImageAndTitle = -30
  181. menuItemCurrentBtn = menuItem
  182. if itemIndex == 0 || itemIndex == 1 {
  183. guard let currentVc:MeTraineeSubjectPageViewController = pageController.currentViewController as? MeTraineeSubjectPageViewController else { return }
  184. let currentPage = pageController.currentPage
  185. if currentPage == itemIndex {
  186. // TogetherDataManager.refreshDataForVTMagic(currentVc,true)
  187. }
  188. }
  189. }
  190. func magicView(_ magicView: VTMagicView, viewDidAppear viewController: UIViewController, atPage pageIndex: UInt) {
  191. var menuItem = magicView.menuItem(at: pageIndex)
  192. if (menuItemCurrentBtn != nil && menuItemCurrentBtn != menuItem) {
  193. (menuItemCurrentBtn as?QMUIButton)?.spacingBetweenImageAndTitle = -25
  194. }
  195. (menuItem as?QMUIButton)?.spacingBetweenImageAndTitle = -30
  196. menuItemCurrentBtn = menuItem
  197. if pageIndex == 0 || pageIndex == 1 {
  198. var canRefresh: Bool = false
  199. if let collectionVc = viewController as? BaseCollectionViewController {
  200. if collectionVc.totalItems() > 0 {
  201. canRefresh = true
  202. }
  203. }
  204. if idxs.contains(pageIndex) || canRefresh {
  205. // TogetherDataManager.refreshDataForVTMagic(viewController, false)
  206. }
  207. }
  208. }
  209. func magicView(_ magicView: VTMagicView, viewDidDisappear viewController: UIViewController, atPage pageIndex: UInt) {
  210. if pageIndex == 0 || pageIndex == 1 {
  211. if !idxs.contains(pageIndex) {
  212. idxs.append(pageIndex)
  213. }
  214. }
  215. if pageIndex == 1 {
  216. // TogetherDataManager.referenceDate = Date()
  217. }
  218. }
  219. }
  220. //VTMagicViewDataSource 数据源代理
  221. extension MeTraineeDetailsPageViewController : VTMagicViewDataSource{
  222. func menuTitles(for magicView: VTMagicView) -> [String] {
  223. return menuTitles
  224. }
  225. func magicView(_ magicView: VTMagicView, menuItemAt itemIndex: UInt) -> UIButton {
  226. var menuItem = magicView.dequeueReusableItem(withIdentifier: "homeItemIdentifier")
  227. if menuItem == nil {
  228. menuItem = QMUIButton(type: .custom)
  229. menuItem?.titleLabel?.font = NYFont.SysFont.sys_13
  230. menuItem?.setTitleColor(.db_fontGray, for: .normal)
  231. menuItem?.setTitleColor(.db_fontSelColor, for: .selected)
  232. menuItem?.setImage(NYImage.Home.stuBtnSel, for: .selected)
  233. menuItem?.setImage(NYImage.Home.stuBtnNor, for: .normal)
  234. (menuItem as?QMUIButton)?.imagePosition = .top
  235. (menuItem as?QMUIButton)?.spacingBetweenImageAndTitle = -25
  236. if itemIndex==0 {
  237. (menuItem as?QMUIButton)?.spacingBetweenImageAndTitle = -30
  238. menuItemCurrentBtn = menuItem
  239. }
  240. }
  241. return menuItem ?? UIButton()
  242. }
  243. func magicView(_ magicView: VTMagicView, viewControllerAtPage pageIndex: UInt) -> UIViewController {
  244. if pageIndex == 0 {
  245. var meTraineeDetails01Controller = magicView.dequeueReusablePage(withIdentifier: "MeTraineeDetails01Controller")
  246. if meTraineeDetails01Controller == nil {
  247. meTraineeDetails01Controller = MeTraineeDetails01Controller.init(bmType: self.bmType)
  248. }
  249. return meTraineeDetails01Controller ?? UIViewController()
  250. } else if pageIndex == 1 {
  251. var meTraineeDetails02Controller = magicView.dequeueReusablePage(withIdentifier: "MeTraineeDetails02Controller")
  252. if meTraineeDetails02Controller == nil {
  253. meTraineeDetails02Controller = MeTraineeDetails02Controller.init()
  254. }
  255. return meTraineeDetails02Controller ?? UIViewController()
  256. } else if pageIndex == 2 {
  257. var meTraineeDetails03Controller = magicView.dequeueReusablePage(withIdentifier: "MeTraineeDetails03Controller")
  258. if meTraineeDetails03Controller == nil {
  259. var stuId = 0
  260. if (traineeInfoModel != nil) {
  261. stuId = (traineeInfoModel?.id)!
  262. meTraineeDetails03Controller = MeTraineeDetails03Controller(stuOutId: stuId,info: self.traineeInfoModel!)
  263. }
  264. }
  265. return meTraineeDetails03Controller ?? UIViewController()
  266. } else {
  267. var meTraineeDetails04Controller = magicView.dequeueReusablePage(withIdentifier: "MeTraineeDetails04Controller")
  268. if meTraineeDetails04Controller == nil {
  269. var stuId = 0
  270. if (traineeInfoModel != nil) {
  271. stuId = (traineeInfoModel?.id)!
  272. }
  273. meTraineeDetails04Controller = MeTraineeDetails04Controller(stuOutId: stuId)
  274. }
  275. return meTraineeDetails04Controller ?? UIViewController()
  276. }
  277. }
  278. }