//
|
// HomeLeftMenuView.swift
|
// EDriverProject
|
//
|
// Created by alvin_y on 2020/3/10.
|
// Copyright © 2020 yangwang. All rights reserved.
|
//
|
|
import UIKit
|
import RxSwift
|
import RxCocoa
|
import NSObject_Rx
|
struct HomeLeftMenuModel {
|
|
/// 图片
|
var image: String = ""
|
|
/// 名称
|
var name: String = ""
|
|
var num :Int = 0
|
}
|
|
class HomeLeftMenuView: UIView {
|
|
@IBOutlet weak var pointsButton: UIButton!
|
/// 积分
|
@IBOutlet weak var label_integral: UILabel!
|
|
let viewModel = HomeLeftMenuViewModel()
|
|
/// 昵称
|
@IBOutlet weak var label_name: UILabel!
|
|
/// 头像
|
@IBOutlet weak var image_avatar: UIImageView!
|
|
/// UITableView
|
@IBOutlet weak var tableView: UITableView!
|
|
/// 菜单
|
@IBOutlet weak var view_menu: UIView!
|
|
private var footCollectionView:UICollectionView!
|
|
private var enterpriseViewModel = EnterpriseViewModel()
|
|
var isHiddenMerchant = false
|
|
var data = [HomeLeftMenuModel.init(image: "icon_me_order", name: "我的订单"),
|
HomeLeftMenuModel.init(image: "icon_me_coupons", name: "优惠券"),
|
HomeLeftMenuModel.init(image: "icon_me_card", name: "企业认证(\(app.userInfo.companyCount))"),
|
HomeLeftMenuModel.init(image: "icon_me_card", name: "我的卡包"),
|
HomeLeftMenuModel.init(image: "icon_me_wallet", name: "钱包"),
|
HomeLeftMenuModel.init(image: "icon_me_close", name: "亲密账户"),
|
HomeLeftMenuModel.init(image: "icon_me_invoice", name: "开发票"),
|
HomeLeftMenuModel.init(image: "icon_me_service-1", name: "入驻成为商家"),
|
HomeLeftMenuModel.init(image: "icon_me_comment", name: "我的评论"),
|
HomeLeftMenuModel.init(image: "icon_me_publish", name: "我发布的"),
|
]
|
|
let data1 = [HomeLeftMenuModel.init(image: "icon_me_safety", name: "安全"),
|
HomeLeftMenuModel.init(image: "icon_me_opinion", name: "意见反馈"),
|
HomeLeftMenuModel.init(image: "icon_me_service", name: "客服"),
|
HomeLeftMenuModel.init(image: "icon_me_set", name: "设置"),
|
HomeLeftMenuModel.init(image: "icon_me_share", name: "分享")]
|
|
/// 点击事件
|
let didSelectRow = Delegate<String,Void>()
|
|
/// 点击事件
|
let didSelectMineInfo = Delegate<Void,Void>()
|
/// 点击事件
|
let didPoinstMineInfo = Delegate<Void,Void>()
|
|
/// 初始化
|
class func instance() -> HomeLeftMenuView {
|
let v = UINib(nibName: "HomeLeftMenuView", bundle: nil).instantiate(withOwner: self, options: nil).first as! HomeLeftMenuView
|
v.frame = CGRect(x: 0, y: 0, width: screenW, height: screenH)
|
v.transform = CGAffineTransform.init(translationX: -screenW, y: 0)
|
v.setupViews()
|
v.bindRx()
|
return v
|
}
|
|
func setupViews() {
|
view_menu.transform = CGAffineTransform.init(translationX: -(screenW - 132), y: 0)
|
tableView.contentInset = UIEdgeInsets(top: 14, left: 0, bottom: 0, right: 0)
|
tableView.separatorStyle = .none
|
tableView.dataSource = self
|
tableView.delegate = self
|
tableView.register(cellName: "HomeLeftMenuCell", identifier: "item")
|
image_avatar.isUserInteractionEnabled = true
|
image_avatar.addGestureRecognizer(UITapGestureRecognizer.init(target: self, action: #selector(mineInfo)))
|
pointsButton.rx.tap.subscribe { (r) in
|
self.dismiss(complete: {[unowned self] in
|
self.didPoinstMineInfo.call()
|
})
|
} onError: { (error) in
|
|
} onCompleted: {
|
|
} onDisposed: {
|
|
}.disposed(by: rx.disposeBag)
|
|
let layout = UICollectionViewFlowLayout()
|
layout.minimumLineSpacing = 0
|
layout.minimumInteritemSpacing = 0
|
layout.scrollDirection = .vertical
|
layout.itemSize = CGSize(width: self.view_menu.width/4, height: self.view_menu.width/4)
|
footCollectionView = UICollectionView(frame: CGRect.zero, collectionViewLayout: layout)
|
footCollectionView.register(UINib(nibName: "Common_SingleImg_CCell", bundle: nil), forCellWithReuseIdentifier: "_Common_SingleImg_CCell")
|
footCollectionView.delegate = self
|
footCollectionView.dataSource = self
|
footCollectionView.backgroundColor = .white
|
tableView.tableFooterView = footCollectionView
|
}
|
|
override func layoutSubviews() {
|
super.layoutSubviews()
|
tableView.tableFooterView?.frame = CGRect(x: 0, y: 0, width: self.width, height: 167)
|
}
|
|
/// 个人信息
|
@objc func mineInfo(){
|
dismiss(complete: {[unowned self] in
|
self.didSelectMineInfo.call()
|
})
|
}
|
|
//MARK: - Rx
|
func bindRx() {
|
viewModel.requestSubject
|
.subscribe(onNext: {[unowned self] (status) in
|
switch status{
|
case .loading:
|
break
|
case .success(let model):
|
guard let data = model as? UserInfoModel else{return}
|
self.image_avatar.avatar(url: data.avatar)
|
self.label_name.text = data.nickName
|
self.label_integral.text = "当前积分\(data.integral)"
|
if data.merchant == 1{
|
// self.data[6].name = "我的商家中心"
|
}else{
|
// self.data[6].name = "入驻成为商家"
|
}
|
|
if data.approveOrder == 1 && !self.data.contains(where: {$0.name.contains("订单审核")}){
|
let m = HomeLeftMenuModel.init(image: "icon_me_wallet", name: "订单审核(\(app.userInfo.orderCount))")
|
self.data.insert(m, at: 4)
|
}else if data.approveOrder == 0 && self.data.contains(where: {$0.name.contains("订单审核")}){
|
self.data.remove(at: 4)
|
}
|
|
self.tableView.reloadData()
|
break
|
case .error(let error):
|
alert(text: error.localizedDescription)
|
break
|
}
|
}).disposed(by: rx.disposeBag)
|
|
|
}
|
|
/// 显示
|
func show() {
|
viewModel.queryUserInfo()
|
// if !self.data.contains(where: {$0.name.contains("订单审核")}){
|
// enterpriseViewModel.queryEnterpriseInfo(needShow: false) { status in
|
// switch status {
|
// case .success(let m):
|
// if m?.authStatus == .Pass {
|
// let m = HomeLeftMenuModel.init(image: "icon_me_wallet", name: "订单审核(\(app.userInfo.orderCount))")
|
// self.data.insert(m, at: 4)
|
// self.tableView.reloadData()
|
// }
|
// break
|
// case .error(let _):break
|
// }
|
// }
|
// }
|
|
viewModel.queryMessNum { [weak self]m in
|
self?.data[7].num = m.commentNum
|
self?.data[8].num = m.carRental + m.sellingCarNum
|
self?.tableView.reloadData()
|
}
|
self.isHidden = false
|
self.transform = CGAffineTransform.identity
|
UIView.animate(withDuration: 0.3) {
|
self.view_menu.transform = CGAffineTransform.identity
|
}
|
}
|
|
/// 隐藏
|
func dismiss(complete: @escaping() -> Void) {
|
DispatchQueue.main.async {
|
UIView.animate(withDuration: 0, animations: {
|
self.isHidden = true
|
self.view_menu.transform = CGAffineTransform.init(translationX: -(screenW - 132), y: 0)
|
self.transform = CGAffineTransform.init(translationX: -screenW, y: 0)
|
}) { (_) in
|
complete()
|
}
|
}
|
}
|
|
/// 消失
|
/// - Parameter sender: 按钮
|
@IBAction func dismissActtion(_ sender: UIButton) {
|
DispatchQueue.main.async {
|
UIView.animate(withDuration: 0.2, animations: {
|
self.view_menu.transform = CGAffineTransform.init(translationX: -(screenW - 132), y: 0)
|
}) { (_) in
|
self.isHidden = true
|
self.transform = CGAffineTransform.init(translationX: -screenW, y: 0)
|
}
|
}
|
}
|
|
|
|
}
|
|
|
// MARK: - UITableViewDelegate
|
extension HomeLeftMenuView:UITableViewDelegate{
|
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
|
if indexPath.row == 6 && isHiddenMerchant{return 0}
|
return 50
|
}
|
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
dismiss { [unowned self] in
|
self.didSelectRow.call(data[indexPath.row].name)
|
}
|
}
|
}
|
|
// MARK: - UITableViewDelegate
|
extension HomeLeftMenuView:UITableViewDataSource{
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
return data.count
|
}
|
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
let cell = tableView.dequeueReusableCell(withIdentifier: "item", for: indexPath) as! HomeLeftMenuCell
|
cell.configure(model: data[indexPath.row])
|
cell.selectionStyle = .none
|
return cell
|
}
|
}
|
|
extension HomeLeftMenuView:UICollectionViewDelegate{
|
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
|
dismiss { [unowned self] in
|
self.didSelectRow.call(data1[indexPath.row].name)
|
}
|
}
|
}
|
|
extension HomeLeftMenuView:UICollectionViewDataSource{
|
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
return data1.count
|
}
|
|
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_Common_SingleImg_CCell", for: indexPath) as! Common_SingleImg_CCell
|
let data = data1[indexPath.row]
|
cell.img.image = UIImage(named: data.image)
|
cell.titleL.text = data.name
|
return cell
|
}
|
|
|
}
|