| | |
| | | |
| | | import UIKit |
| | | import JQTools |
| | | import RxSwift |
| | | import RxRelay |
| | | |
| | | class CourseBookingViewModel:RefreshModel<StudentAppointModel>{ |
| | | |
| | | let status = BehaviorRelay<StudentAppointType?>(value: nil) |
| | | let search = BehaviorRelay<String>(value: "") |
| | | let studentId = BehaviorRelay<Int>(value: 0) |
| | | let timeType = BehaviorRelay<StudentAppointDateType>(value: .all) |
| | | |
| | | override func api() -> (Observable<BaseResponse<[StudentAppointModel]>>)? { |
| | | Services.studentAppointList(stuId: studentId.value, status: status.value,search: search.value,timeType: timeType.value) |
| | | } |
| | | } |
| | | |
| | | let CourseBooking_Noti = Notification.Name("CourseBooking_Noti") |
| | | |
| | | class CourseBookingSubListVC: BaseVC { |
| | | |
| | | lazy private var tableView:UITableView = { |
| | | let table = UITableView(frame: .zero, style: .plain) |
| | | let viewModel = CourseBookingViewModel() |
| | | |
| | | lazy private var tableView:BaseTableView = { |
| | | let table = BaseTableView(frame: .zero, style: .plain) |
| | | table.separatorStyle = .none |
| | | table.delegate = self |
| | | table.dataSource = self |
| | |
| | | return table |
| | | }() |
| | | |
| | | |
| | | required init(status:StudentAppointType?,studentId:Int) { |
| | | super.init(nibName: nil, bundle: nil) |
| | | viewModel.status.accept(status) |
| | | viewModel.studentId.accept(studentId) |
| | | } |
| | | |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | view.backgroundColor = .white |
| | | viewModel.configure(tableView) |
| | | viewModel.beginRefresh() |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | tableView.snp.makeConstraints { make in |
| | | make.edges.equalToSuperview() |
| | | } |
| | | tableView.jq_setEmptyView() |
| | | } |
| | | |
| | | override func setRx() { |
| | | NotificationCenter.default.rx.notification(CourseBooking_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] noti in |
| | | guard let weakSelf = self else { return } |
| | | if let obj = noti.object as? IndexPath{ |
| | | let model = weakSelf.viewModel.dataSource.value[obj.row] |
| | | model.status = .cancel |
| | | weakSelf.tableView.beginUpdates() |
| | | weakSelf.tableView.reloadRows(at: [obj], with: .automatic) |
| | | weakSelf.tableView.endUpdates() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | extension CourseBookingSubListVC:UITableViewDataSource{ |
| | | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { |
| | | return 5 |
| | | return viewModel.dataSource.value.count |
| | | } |
| | | |
| | | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { |
| | | let cell = tableView.dequeueReusableCell(withIdentifier: "_CourseBooking_1_TCell") as! CourseBooking_1_TCell |
| | | cell.indexPath = indexPath |
| | | cell.studentAppointModel = viewModel.dataSource.value[indexPath.row] |
| | | return cell |
| | | } |
| | | } |