//
|
// JobViewController.swift
|
// OKProject
|
//
|
// Created by 无故事王国 on 2022/5/16.
|
// Copyright © 2022 yangwang. All rights reserved.
|
//
|
|
import UIKit
|
import QMUIKit
|
import RxCocoa
|
|
fileprivate enum DriverJobType {
|
case driverType
|
case salary
|
case more
|
case inital
|
}
|
|
|
/// 招聘列表
|
class JobViewController: YYViewController {
|
|
@IBOutlet weak var searchBtn: QMUIButton!
|
@IBOutlet weak var searchTextField: UITextField!
|
@IBOutlet weak var tableView: UITableView!
|
@IBOutlet weak var brandBtn: QMUIButton!
|
@IBOutlet weak var carTypeBtn: QMUIButton!
|
@IBOutlet weak var moreBtn: QMUIButton!
|
|
private var selectType = BehaviorRelay<DriverJobType>(value: .inital)
|
private var carBrandListView:CarBrandListView?
|
private var carTypeListView:CarBrandListView?
|
private var carMoreListView:CarMoreListView?
|
private var selectIndex:Array<[Int]>?
|
private var salarySelectIndex:Int = 0
|
private var carBrandSelectIndex:Int = 0
|
|
private let viewModel = JobViewModel()
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
|
viewModel.configure(tableView: tableView)
|
tableView.beginRefreshing()
|
|
}
|
override func setupViews() {
|
super.setupViews()
|
navigationItem.title = "司机招募"
|
view.backgroundColor = UIColor(hexString: "#F3F4F5")
|
searchBtn.spacingBetweenImageAndTitle = 7
|
brandBtn.spacingBetweenImageAndTitle = 4
|
carTypeBtn.spacingBetweenImageAndTitle = 4
|
moreBtn.spacingBetweenImageAndTitle = 4
|
|
brandBtn.imagePosition = .right
|
carTypeBtn.imagePosition = .right
|
moreBtn.imagePosition = .right
|
|
searchTextField.delegate = self
|
searchTextField.clearButtonMode = .whileEditing
|
searchTextField.returnKeyType = .search
|
tableView.delegate = self
|
tableView.dataSource = self
|
tableView.separatorStyle = .none
|
tableView.backgroundColor = .clear
|
tableView.register(UINib(nibName: "JobTCell", bundle: nil), forCellReuseIdentifier: "_JobTCell")
|
|
brandBtn.setTitleColor(UIColor(hexString: "#00BF30"), for: .selected)
|
carTypeBtn.setTitleColor(UIColor(hexString: "#00BF30"), for: .selected)
|
moreBtn.setTitleColor(UIColor(hexString: "#00BF30"), for: .selected)
|
}
|
|
override func defineLayouts() {
|
super.defineLayouts()
|
|
}
|
|
|
override func bindRx() {
|
selectType.subscribe(onNext: {[weak self] type in
|
guard let weakSelf = self else { return }
|
|
weakSelf.brandBtn.isSelected = false
|
weakSelf.carTypeBtn.isSelected = false
|
weakSelf.moreBtn.isSelected = false
|
|
switch type {
|
case .driverType:
|
let items = ["不限","商务司机","出租车司机","货运司机","快车司机","小件物流司机","专职司机"]
|
weakSelf.carTypeListView?.hidden()
|
weakSelf.carMoreListView?.hidden()
|
weakSelf.brandBtn.isSelected = true
|
|
weakSelf.carBrandListView = CarBrandListView.show(weakSelf, offsetTop: 85, items: items,selectIndex: weakSelf.carBrandSelectIndex, selectClouse: { index in
|
weakSelf.carBrandSelectIndex = index
|
if index == 0{
|
weakSelf.viewModel.driverType.accept(nil)
|
weakSelf.brandBtn.setTitle("司机类型", for: .normal)
|
}else{
|
weakSelf.viewModel.driverType.accept(items[index])
|
weakSelf.brandBtn.setTitle(items[index], for: .normal)
|
}
|
weakSelf.tableView.beginRefreshing()
|
},hiddenClouse: {
|
weakSelf.brandBtn.isSelected = false
|
weakSelf.carBrandListView = nil
|
})
|
case .salary:
|
let items = ["不限","1000以下","1000-2000元","2000-3000元","3000-5000元","5000-8000元","8000-12000元","12000-20000元","20000-25000元","25000以上"]
|
weakSelf.carMoreListView?.hidden()
|
weakSelf.carBrandListView?.hidden()
|
weakSelf.carTypeBtn.isSelected = true
|
|
weakSelf.carTypeListView = CarBrandListView.show(weakSelf, offsetTop: 85, items: items,selectIndex: weakSelf.salarySelectIndex, selectClouse: { index in
|
weakSelf.carTypeBtn.setTitle(items[index], for: .normal)
|
weakSelf.salarySelectIndex = index
|
switch index {
|
case 1:
|
weakSelf.viewModel.startSalary.accept(nil)
|
weakSelf.viewModel.endSalary.accept(1000)
|
case 2:
|
weakSelf.viewModel.startSalary.accept(1000)
|
weakSelf.viewModel.endSalary.accept(2000)
|
case 3:
|
weakSelf.viewModel.startSalary.accept(2000)
|
weakSelf.viewModel.endSalary.accept(3000)
|
case 4:
|
weakSelf.viewModel.startSalary.accept(4000)
|
weakSelf.viewModel.endSalary.accept(5000)
|
case 5:
|
weakSelf.viewModel.startSalary.accept(5000)
|
weakSelf.viewModel.endSalary.accept(8000)
|
case 6:
|
weakSelf.viewModel.startSalary.accept(8000)
|
weakSelf.viewModel.endSalary.accept(12000)
|
case 7:
|
weakSelf.viewModel.startSalary.accept(12000)
|
weakSelf.viewModel.endSalary.accept(20000)
|
case 8:
|
weakSelf.viewModel.startSalary.accept(20000)
|
weakSelf.viewModel.endSalary.accept(25000)
|
case 9:
|
weakSelf.viewModel.startSalary.accept(25000)
|
weakSelf.viewModel.endSalary.accept(nil)
|
default:
|
weakSelf.carTypeBtn.setTitle("薪资", for: .normal)
|
weakSelf.viewModel.startSalary.accept(nil)
|
weakSelf.viewModel.endSalary.accept(nil)
|
}
|
weakSelf.tableView.beginRefreshing()
|
},hiddenClouse: {
|
weakSelf.carTypeBtn.isSelected = false
|
weakSelf.carTypeListView = nil
|
})
|
case .more:
|
weakSelf.carBrandListView?.hidden()
|
weakSelf.carTypeListView?.hidden()
|
weakSelf.moreBtn.isSelected = true
|
|
weakSelf.carMoreListView = CarMoreListView.showJob(weakSelf,type: 2, selectIndex: weakSelf.selectIndex) { text in
|
if text?.isEmpty ?? true{
|
weakSelf.viewModel.welfare.accept(nil)
|
}else{
|
weakSelf.viewModel.welfare.accept(text)
|
}
|
weakSelf.tableView.beginRefreshing()
|
} hiddenClouse: {
|
weakSelf.moreBtn.isSelected = false
|
weakSelf.carMoreListView = nil
|
} selectIndexClouse: { selectIndex in
|
weakSelf.selectIndex = selectIndex
|
}
|
|
case .inital:
|
weakSelf.carBrandListView?.hidden()
|
weakSelf.carTypeListView?.hidden()
|
weakSelf.carMoreListView?.hidden()
|
break
|
|
}
|
}).disposed(by: rx.disposeBag)
|
}
|
|
@IBAction func driverTypeAction(_ sender: UIButton) {
|
if selectType.value == .driverType{selectType.accept(.inital);return}
|
selectType.accept(.driverType)
|
|
}
|
|
@IBAction func salaryAction(_ sender: UIButton) {
|
if selectType.value == .salary{selectType.accept(.inital);return}
|
selectType.accept(.salary)
|
}
|
|
@IBAction func moreAction(_ sender: UIButton) {
|
if selectType.value == .more{selectType.accept(.inital);return}
|
selectType.accept(.more)
|
}
|
}
|
|
extension JobViewController:UITableViewDelegate{
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
let m = viewModel.dataSource.value[indexPath.row]
|
if m.status == .del{
|
let vc = PublishSellCarSuccessVC(type: .jobDel)
|
yy_push(vc: vc)
|
}else{
|
let detailVC = JobDetailVC()
|
detailVC.id = m.id
|
yy_push(vc: detailVC)
|
}
|
}
|
}
|
|
extension JobViewController:UITableViewDataSource{
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
let m = viewModel.dataSource.value[indexPath.row]
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_JobTCell") as! JobTCell
|
cell.backgroundColor = .clear
|
cell.setJobListModel(m)
|
return cell
|
}
|
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
return viewModel.dataSource.value.count
|
}
|
|
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
|
let m = viewModel.dataSource.value[indexPath.row]
|
if m.welfare.components(separatedBy: ",").count >= 9{
|
return 160
|
}
|
if m.welfare.components(separatedBy: ",").count > 5{
|
return 140
|
}else{
|
return 110
|
}
|
|
}
|
}
|
|
extension JobViewController:UITextFieldDelegate{
|
func textFieldDidBeginEditing(_ textField: UITextField) {
|
UIView.animate(withDuration: 0.3) {
|
self.searchBtn.alpha = 0
|
}
|
}
|
|
func textFieldDidEndEditing(_ textField: UITextField) {
|
if textField.text!.isEmpty{
|
UIView.animate(withDuration: 0.3) {
|
self.searchBtn.alpha = 1
|
}
|
}
|
}
|
|
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
|
textField.resignFirstResponder()
|
viewModel.searchName.accept(textField.text)
|
tableView.beginRefreshing()
|
return true
|
}
|
}
|