From ca2a4ce89064be715e90ae60dc305c26e7dd5719 Mon Sep 17 00:00:00 2001 From: younger_times <841720330@qq.com> Date: 星期五, 14 七月 2023 18:52:34 +0800 Subject: [PATCH] 新增 --- WanPai/Root/Activity/VC/ActivityListVC.swift | 89 +++++++++++++++++++++++++++++++++++++------- 1 files changed, 75 insertions(+), 14 deletions(-) diff --git a/WanPai/Root/Activity/VC/ActivityListVC.swift b/WanPai/Root/Activity/VC/ActivityListVC.swift index 348d580..6702618 100644 --- a/WanPai/Root/Activity/VC/ActivityListVC.swift +++ b/WanPai/Root/Activity/VC/ActivityListVC.swift @@ -7,6 +7,20 @@ import UIKit import QMUIKit +import RxSwift +import RxCocoa + +class ActivityListViewModel:RefreshModel<ActivityListModel>{ + + var city = BehaviorRelay<Int?>(value:nil) + var content = BehaviorRelay<String>(value: "") + var heat = BehaviorRelay<SortType?>(value:nil) + var registerCondition = BehaviorRelay<RegisterAcitivyType?>(value:nil) + + override func api() -> (Observable<BaseResponse<[ActivityListModel]>>)? { + return Services.queryCompetitionList(cityCode: city.value, content: content.value, heat: heat.value, registerCondition: registerCondition.value?.rawValue) + } +} class ActivityListVC: BaseVC { @IBOutlet weak var view_top: UIView! @@ -14,17 +28,26 @@ @IBOutlet weak var btn_holdCity: QMUIButton! @IBOutlet weak var btn_joinCondition: QMUIButton! @IBOutlet weak var btn_hotFilter: QMUIButton! - @IBOutlet weak var tableView: UITableView! + @IBOutlet weak var tableView: BaseTableView! + + private var courseSubTypeView:CourseSubTypeView? + private var cityChooseSubTypeView:CityChooseSubTypeView? + + private var viewModel = ActivityListViewModel() override func viewDidLoad() { super.viewDidLoad() title = "赛事活动列表" + viewModel.configure(tableView,needMore: false) + viewModel.beginRefresh() } override func setUI() { tableView.delegate = self tableView.dataSource = self + tf_search.delegate = self tableView.register(UINib(nibName: "ActivityInfoTCell", bundle: nil), forCellReuseIdentifier: "_ActivityInfoTCell") + tableView.jq_setEmptyView() btn_holdCity.imagePosition = .right btn_holdCity.spacingBetweenImageAndTitle = 5 @@ -35,55 +58,93 @@ btn_hotFilter.imagePosition = .right btn_hotFilter.spacingBetweenImageAndTitle = 5 } + + override func setRx() { + tf_search.rx.text.orEmpty.changed.bind(to: viewModel.content).disposed(by: disposeBag) + + } @IBAction func searchAction(_ sender: Any) { - + tf_search.resignFirstResponder() + viewModel.beginRefresh() } @IBAction func holdCityAction(_ sender: QMUIButton) { - guard !btn_holdCity.isSelected else {return} - btn_holdCity.isSelected = true - CityChooseSubTypeView.show(inView: self.view, afterView: view_top) { text in - + guard !sender.isSelected else {return} + hiddenMenu() + sender.isSelected = true + cityChooseSubTypeView = CityChooseSubTypeView.show(inView: self.view, afterView: view_top) { text in + sender.setTitle(text, for: .normal) + sender.isSelected = false } closeClouse: { - self.btn_holdCity.isSelected = false + sender.isSelected = false } } @IBAction func signupConditionAction(_ sender: QMUIButton) { guard !sender.isSelected else {return} + hiddenMenu() sender.isSelected = true - let items = Array<NormalSimpleModel>() - CourseSubTypeView.show(inView: self.view, afterView: btn_joinCondition, items: items) { m in + var items = Array<NormalSimpleModel>() + items.append(NormalSimpleModel(id: 1, name: "全部用户")) + items.append(NormalSimpleModel(id: 2, name: "仅限年度会员参与")) + items.append(NormalSimpleModel(id: 3, name: "仅限学员参与")) + courseSubTypeView = CourseSubTypeView.show(inView: self.view, afterView: btn_joinCondition, items: items) { [weak self] m in + sender.setTitle(m.name, for: .normal) sender.isSelected = false - + self?.viewModel.registerCondition.accept(RegisterAcitivyType(rawValue: m.id)) + self?.viewModel.beginRefresh() } closeClouse: { sender.isSelected = false } } + @IBAction func hotFliterAction(_ sender: UIButton) { + sender.isSelected = !sender.isSelected + let sortType = sender.isSelected ? SortType.desc:SortType.asc + sender.setImage(sortType.img, for: .normal) + viewModel.heat.accept(sortType) + viewModel.beginRefresh() + } + @IBAction func signupAction(_ sender: UIButton) { let vc = ActivitySignupListVC() push(vc: vc) } - - + + private func hiddenMenu(){ + btn_holdCity.isSelected = false + btn_joinCondition.isSelected = false + courseSubTypeView?.removeFromSuperview() + cityChooseSubTypeView?.removeFromSuperview() + } } extension ActivityListVC:UITableViewDelegate{ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - let vc = ActivityDetailVC() + let model = viewModel.dataSource.value[indexPath.row] + let vc = ActivityDetailVC(id: model.id) push(vc: vc) } } extension ActivityListVC:UITableViewDataSource{ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let model = viewModel.dataSource.value[indexPath.row] let cell = tableView.dequeueReusableCell(withIdentifier: "_ActivityInfoTCell") as! ActivityInfoTCell + cell.activityListModel = model return cell } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 5 + return viewModel.dataSource.value.count + } +} + +extension ActivityListVC:QMUITextFieldDelegate{ + func textFieldShouldReturn(_ textField: UITextField) -> Bool { + textField.resignFirstResponder() + viewModel.beginRefresh() + return true } } -- Gitblit v1.7.1