// // EstuLogListViewController.swift // JiaPeiManage // // Created by Ning.ge on 2023/8/28. // import UIKit import RxSwift import RxCocoa final class EstuLogListViewController: BaseTableViewController { let cellIdentifier:String = "_EstuLogListCell" let dtcellIdentifier:String = "_EstuLogListDetailsCell" // MARK: 服务属性 private let elogCoachService: ElogCoachServiceType = ElogCoachService(networking: ElogCoachNetworking()) // MARK: 私有属性 // MARK: UI let let statusBar = UIView().then { $0.backgroundColor = UIColor.db_theme } let navBar = MeTraineeNavBar.loadFromNib().then { $0.search_button.isHidden = true } let estuLogHeaderView = EstuLogHeaderView.loadFromNib() let mtheader01_view = MeTraineeDetails01HeaderView.loadFromNib().then { $0.title_label.text = "查询明细" } let header01_view = EstuLog01HeaderView.loadFromNib() var selectPath = -1; //学员ID var stuId:Int = 0 var eteachLogDataModel:ETeachLogDataModel? var rows : [ETeachLogInfo] = [] var page:Int = 1 var pageSize:Int = 10 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) } tableView.snp.remakeConstraints { make in make.top.equalTo(self.navBar.snp.bottom) make.left.right.bottom.equalTo(self.view) } self.loadViewIfNeeded() } func scrollViewDidScroll(_ scrollView: UIScrollView) { } // MARK: StatusBar override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationController?.setNavigationBarHidden(true, animated: true) } required convenience init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func viewDidLoad() { super.viewDidLoad() configureMagicController() setupUI() biandView() } // MARK: 私有方法 func setupUI(){ self.navBar.title_label.text = "电子教学日志" self.navBar.back_button.addTarget(self, action: #selector(actionBackdo), for: .touchUpInside) } func configureMagicController(){ self.view.addSubview(navBar) self.view.addSubview(statusBar) } func biandView(){ tableView.delegate = self tableView.dataSource = self tableView.separatorStyle = .none //去除分割线 tableView.register(UINib(nibName: "EstuLogListCell", bundle: nil), forCellReuseIdentifier: cellIdentifier) tableView.register(UINib(nibName: "EstuLogListDetailsCell", bundle: nil), forCellReuseIdentifier: dtcellIdentifier) setupRefreshHeader(tableView) {[unowned self] in self.getStudentTeachLogList() } self.isEmptyDisplay = false self.hideLoadAnimation() // 设置上拉加载更多 tableView.es.addInfiniteScrolling { [weak self] in //self?.getStudentTeachLogList() } // tableView点击事件 tableView.rx.itemSelected.throttle(.seconds(1), scheduler: MainScheduler.instance) .subscribe(onNext: { [weak self]indexPath in print("点击\(indexPath)行") self?.selectPath = indexPath.row self?.tableView.reloadData() // let rowInfo:RowInfo = self!.meTraineeSearchViewModel.rows[indexPath.row] // if rowInfo != nil && rowInfo.bmType == "2" { // let context: Int = rowInfo.id! // NYSwRouter.push(NYSwPushType.trainee_info,context: context) // } // self?.tableView.deselectRow(at: indexPath, animated: false) }).disposed(by: disposeBag) } func getStudentTeachLogList (){ self.elogCoachService.elogTmsStudentTeachLogByIdRequest(city: LocalManager.userInfo.city!, id: stuId, pageNum: page, pageSize: pageSize).subscribe(onSuccess: {[unowned self] eteachLogDataModel in self.rows.removeAll() self.eteachLogDataModel = eteachLogDataModel self.rows += eteachLogDataModel.rows! print("eteachLogDataModelRequest成功") self.isEmptyDisplay = true self.hideLoadAnimation() self.stopRefresh() self.tableView.reloadData() }, onError: { error in self.stopRefresh() NYTips.hide() }) .disposed(by: disposeBag) } } //数据源 extension EstuLogListViewController:UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.rows.count } func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let header_view = UIView().then { $0.backgroundColor = .db_theme } header_view.addSubview(estuLogHeaderView) estuLogHeaderView.snp.makeConstraints { make in make.left.right.top.equalTo(header_view) make.height.equalTo(59.f) } header_view.addSubview(mtheader01_view) mtheader01_view.snp.makeConstraints { make in make.top.equalTo(estuLogHeaderView.bottom) make.left.right.equalTo(header_view) make.height.equalTo(52.f) } header_view.addSubview(header01_view) header01_view.snp.makeConstraints { make in make.top.equalTo(mtheader01_view.bottom) make.left.right.equalTo(header_view) make.height.equalTo(44.f) } header_view.layoutIfNeeded() return header_view } func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return 155.f } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { var cell:UITableViewCell; var info = rows[indexPath.row] as ETeachLogInfo info.stuid = stuId if self.selectPath == indexPath.row { let dcell = tableView.dequeueReusableCell(withIdentifier: dtcellIdentifier, for: indexPath) as! EstuLogListDetailsCell dcell.setRowInfo(rowInfo: info) cell = dcell }else { let ecell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! EstuLogListCell ecell.setRowInfo(rowInfo: info) cell = ecell } return cell } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { if(selectPath==indexPath.row){ return 465.f; } return 80.f; } } //事件 extension EstuLogListViewController:UITableViewDelegate { }