EstuLogListViewModel.swift 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. //
  2. // EstuLogListViewModel.swift
  3. // JiaPeiManage
  4. //
  5. // Created by Ning.ge on 2023/8/31.
  6. //
  7. import RxSwift
  8. class EstuLogListViewModel: NSObject {
  9. let cellIdentifier:String = "_EstuLogListCell"
  10. let dtcellIdentifier:String = "_EstuLogListDetailsCell"
  11. // MARK: 服务属性
  12. private let elogCoachService: ElogCoachServiceType = ElogCoachService(networking: ElogCoachNetworking())
  13. // MARK: 私有属性
  14. var selectPath = -1;
  15. //学员ID
  16. var stuId:Int = 0
  17. var eteachLogDataModel:ETeachLogDataModel?
  18. var rows : [ETeachLogInfo] = []
  19. var page:Int = 1
  20. var pageSize:Int = 10
  21. @objc weak var vc:EstuLogListViewController? = nil
  22. init(vc:EstuLogListViewController,stuId:Int) {
  23. super.init()
  24. self.vc = vc
  25. self.stuId = stuId
  26. }
  27. func biandView(){
  28. vc!.tableView.delegate = self
  29. vc!.tableView.dataSource = self
  30. vc!.tableView.separatorStyle = .none //去除分割线
  31. vc!.tableView.register(UINib(nibName: "EstuLogListCell", bundle: nil), forCellReuseIdentifier: cellIdentifier)
  32. vc!.tableView.register(UINib(nibName: "EstuLogListDetailsCell", bundle: nil), forCellReuseIdentifier: dtcellIdentifier)
  33. vc!.setupRefreshHeader(vc!.tableView) {[unowned self] in
  34. self.getStudentTeachLogList(isLoading: false)
  35. }
  36. vc!.isEmptyDisplay = false
  37. vc!.hideLoadAnimation()
  38. // 设置上拉加载更多
  39. vc!.tableView.es.addInfiniteScrolling { [weak self] in
  40. self?.getLoadMore()
  41. }
  42. // tableView点击事件
  43. vc!.tableView.rx.itemSelected.throttle(.seconds(1), scheduler: MainScheduler.instance)
  44. .subscribe(onNext: { [weak self]indexPath in
  45. print("点击\(indexPath)行")
  46. if (self?.selectPath == indexPath.row){
  47. self?.selectPath = -1
  48. }else{
  49. self?.selectPath = indexPath.row
  50. }
  51. self!.vc!.tableView.reloadData()
  52. // let rowInfo:RowInfo = self!.meTraineeSearchViewModel.rows[indexPath.row]
  53. // if rowInfo != nil && rowInfo.bmType == "2" {
  54. // let context: Int = rowInfo.id!
  55. // NYSwRouter.push(NYSwPushType.trainee_info,context: context)
  56. // }
  57. // self?.tableView.deselectRow(at: indexPath, animated: false)
  58. }).disposed(by: vc!.disposeBag)
  59. self.getStudentTeachLogList(isLoading: true)
  60. }
  61. func getStudentTeachLogList(isLoading:Bool){
  62. if isLoading {NYTips.show()}
  63. page = 1
  64. self.elogCoachService.elogTmsStudentTeachLogByIdRequest(city: LocalManager.userInfo.city!, id: stuId, pageNum: page, pageSize: pageSize).subscribe(onSuccess: {[unowned self] eteachLogDataModel in
  65. self.rows.removeAll()
  66. self.eteachLogDataModel = eteachLogDataModel
  67. self.rows += eteachLogDataModel.rows!
  68. print("eteachLogDataModelRequest成功")
  69. self.vc!.isEmptyDisplay = true
  70. self.vc!.hideLoadAnimation()
  71. self.vc!.stopRefresh()
  72. self.vc!.tableView.reloadData()
  73. NYTips.hide()
  74. }, onError: { error in
  75. self.vc!.stopRefresh()
  76. NYTips.hide()
  77. })
  78. .disposed(by: self.vc!.disposeBag)
  79. }
  80. //更多
  81. func getLoadMore(){
  82. //计算-页数
  83. if (eteachLogDataModel != nil){
  84. let total = pageSize*self.page
  85. if(total<(eteachLogDataModel?.total)!){
  86. self.page+=1
  87. }else{
  88. self.vc!.stopLoad()
  89. return //已经显示完
  90. }
  91. }
  92. //请求网络-加载
  93. self.elogCoachService.elogTmsStudentTeachLogByIdRequest(city: LocalManager.userInfo.city!, id: stuId, pageNum: page, pageSize: pageSize).subscribe(onSuccess: {[unowned self] eteachLogDataModel in
  94. self.eteachLogDataModel = eteachLogDataModel
  95. self.rows += eteachLogDataModel.rows!
  96. print("resultInfoModel成功")
  97. self.vc!.tableView.reloadData()
  98. self.vc!.stopLoad()
  99. }, onError: { error in
  100. self.vc!.stopLoad()
  101. })
  102. .disposed(by: self.vc!.disposeBag)
  103. }
  104. }
  105. //数据源
  106. extension EstuLogListViewModel:UITableViewDataSource {
  107. func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  108. return self.rows.count
  109. }
  110. func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
  111. let header_view = UIView().then {
  112. $0.backgroundColor = .db_theme
  113. }
  114. header_view.addSubview(self.vc!.estuLogHeaderView)
  115. self.vc!.estuLogHeaderView.snp.makeConstraints { make in
  116. make.left.right.top.equalTo(header_view)
  117. make.height.equalTo(59.f)
  118. }
  119. header_view.addSubview(self.vc!.mtheader01_view)
  120. self.vc!.mtheader01_view.snp.makeConstraints { make in
  121. make.top.equalTo(self.vc!.estuLogHeaderView.bottom)
  122. make.left.right.equalTo(header_view)
  123. make.height.equalTo(52.f)
  124. }
  125. header_view.addSubview(self.vc!.header01_view)
  126. self.vc!.header01_view.snp.makeConstraints { make in
  127. make.top.equalTo(self.vc!.mtheader01_view.bottom)
  128. make.left.right.equalTo(header_view)
  129. make.height.equalTo(44.f)
  130. }
  131. header_view.layoutIfNeeded()
  132. return header_view
  133. }
  134. func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
  135. return 155.f
  136. }
  137. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  138. var cell:UITableViewCell;
  139. var info = rows[indexPath.row] as ETeachLogInfo
  140. info.stuid = stuId
  141. if self.selectPath == indexPath.row {
  142. let dcell = tableView.dequeueReusableCell(withIdentifier: dtcellIdentifier, for: indexPath) as! EstuLogListDetailsCell
  143. dcell.setRowInfo(rowInfo: info)
  144. cell = dcell
  145. }else {
  146. let ecell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! EstuLogListCell
  147. ecell.setRowInfo(rowInfo: info)
  148. cell = ecell
  149. }
  150. return cell
  151. }
  152. func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  153. if(selectPath==indexPath.row){
  154. return 465.f;
  155. }
  156. return 80.f;
  157. }
  158. }
  159. //事件
  160. extension EstuLogListViewModel:UITableViewDelegate {
  161. }