// // OrderListViewController.swift // GeliBusinessPlatform // // Created by 刘俊宏 on 2020/4/25. // Copyright © 2020 junye lu. All rights reserved. // import UIKit import Parchment class OrderListViewController: BaseViewController ,UISearchBarDelegate, SearchBarViewDelegate, PagingViewControllerDelegate, OrderSelectMoreViewDelegate{ fileprivate let cities = [ "全部", "待确认", "待付款", "待发货", "已发货", "退款/货", "已取消" ] let viewControllers = [ OrderListVC(title: "全部"), OrderListVC(title: "待确认"), OrderListVC(title: "待付款"), OrderListVC(title: "待发货"), OrderListVC(title: "已发货"), OrderListVC(title: "退款/货"), OrderListVC(title: "已取消") ] var searchV : SearchBarView? = nil @IBOutlet weak var contentView: UIView! @IBOutlet weak var searchBgView: UIView! //头部滚动视图 weak var pagingVC : PagingViewController? override func viewDidLoad() { super.viewDidLoad() self.view.backgroundColor = UIColor.init(named: "白色背景色") //searchbar let searchBr = SearchBarView.init() self.searchBgView.addSubview(searchBr) searchBr.snp.makeConstraints { (make) in make.left.right.equalTo(0) make.centerY.equalToSuperview() make.height.equalTo(35) } searchV = searchBr searchBr.placeholderStr = "请输入订单编号/客户名称" searchBr.cornerRadius = 35/2.0 searchBr.delegate = self searchBr.delegateL = self let pagingViewController = PagingViewController(viewControllers: viewControllers) pagingViewController.indicatorColor = UIColor.init(named: "蓝色字体颜色")! pagingViewController.menuItemSize = .fixed(width: 0, height: 44*glscale) pagingViewController.font = UIFont.systemFont(ofSize: 13) pagingViewController.selectedFont = UIFont.systemFont(ofSize: 13) pagingViewController.textColor = UIColor.init(named: "灰色字体颜色")! pagingViewController.selectedTextColor = UIColor.init(named: "蓝色字体颜色")! pagingViewController.delegate = self pagingViewController.dataSource = self pagingViewController.sizeDelegate = self addChild(pagingViewController) contentView.addSubview(pagingViewController.view) contentView.constrainToEdges(pagingViewController.view) pagingViewController.didMove(toParent: self) pagingVC = pagingViewController //MARK:--添加个刷新通知 NotificationCenter.default.addObserver(self, selector: #selector(refreshingByOrderHavChange), name: NSNotification.Name(rawValue: "orderChange"), object: nil) NotificationCenter.default.addObserver(self, selector: #selector(jpushServiceNotification(notion:)), name: NSNotification.Name(rawValue: "jpushServiceNotification0"), object: nil) //跳转对应的头部视图 NotificationCenter.default.addObserver(self, selector: #selector(orderNavChange), name: NSNotification.Name(rawValue: "orderNavChange"), object: nil) } @objc func orderNavChange(notion:Notification){ let dic = notion.userInfo pagingVC!.select(index: dic!["tag"] as Any as! Int, animated: true) } //MARK:--jpushServiceNotification @objc func jpushServiceNotification(notion:Notification) { let vc = MsgCenterViewController() self.navigationController?.pushViewController(vc, animated: true) } @objc func refreshingByOrderHavChange(){ viewControllers.forEach { (vc) in vc.isUpData = false } } //MARK:--搜索按钮代理 var keyword = "" func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { print("点击搜索进行--") searchBar.resignFirstResponder() keyword = searchBar.text! viewControllers.forEach { (vc) in vc.keyword = keyword vc.isUpData = false } let vc = viewControllers[selectIndex] vc.tableV.mj_header?.beginRefreshing() } //MARK:--取消搜索代理 func clearSearchAction() { print("取消搜索代理了--") } func searchBarTextDidEndEditing(_ searchBar: UISearchBar) { print("编辑即将结束了--") removeBlackBtnView() if searchBar.text?.count == 0 && keyword.count != 0{ keyword = searchBar.text! viewControllers.forEach { (vc) in vc.keyword = keyword vc.isUpData = false } let vc = viewControllers[selectIndex] vc.tableV.mj_header?.beginRefreshing() } } //MARK:--筛选 var BeginDate: Date! = nil var EndDate: Date! = nil var paySArr:Array<Bool> = [false,false,false,false,false,false] var bugSArr:Array<Bool> = [false,false] var sendSArr:Array<Bool> = [false,false,false,false] var selectV : OrderSelectMoreView! = nil @IBAction func SelectOtherAction(_ sender: UIButton) { print("筛选") if blackBtnView != nil { blackBtnView.removeFromSuperview() searchV!.resignFirstResponder() } if selectV == nil { selectV = OrderSelectMoreView() selectV.delegate = self self.view.window?.addSubview(selectV) selectV.snp.makeConstraints { (make) in make.left.right.bottom.equalToSuperview() make.top.equalTo(contentView.snp_top) } selectV.setUIbyData(beginDate: BeginDate, endginDate: EndDate, paySelectArr: paySArr, bugSelectArr: bugSArr, sendSelectArr: sendSArr) }else{ selectV.removeFromSuperview() selectV = nil } } //MARK: -- 筛选代理 func sureAction(beginDate: Date?, endginDate: Date?, paySelectArr: Array<Bool>, bugSelectArr: Array<Bool>, sendSelectArr: Array<Bool>) { selectV = nil EndDate = endginDate BeginDate = beginDate self.paySArr = paySelectArr self.bugSArr = bugSelectArr self.sendSArr = sendSelectArr viewControllers.forEach { (vc) in if EndDate == nil { vc.startTime = 0 vc.endTime = 0 }else{ let timeInterval:TimeInterval = BeginDate!.timeIntervalSince1970 let timeIntervalEnd:TimeInterval = EndDate!.timeIntervalSince1970 vc.startTime = Int(timeInterval) vc.endTime = Int(timeIntervalEnd) } //支付状态 var payStr = "" for i in 0..<self.paySArr.count { let isBool = self.paySArr[i] var tmpeStr = "" if isBool { switch i { case 0: tmpeStr = "0" break case 1: tmpeStr = "1" break case 2: tmpeStr = "2" break case 3: tmpeStr = "10" break case 4: tmpeStr = "11" break case 5: tmpeStr = "12" break default: break } } if tmpeStr.count > 0 { if payStr.count == 0 { payStr = tmpeStr }else{ payStr = payStr + ";" + tmpeStr } } } if payStr.count == 0 { payStr = "100" } vc.payStatus = payStr //下单方式 vc.orderSource = 0 for i in 0..<self.bugSArr.count { let isBool = self.bugSArr[i] if isBool { vc.orderSource = i + 1 } } //商品配送状态 var shippingStr = "" for i in 0..<self.sendSArr.count { let isBool = self.sendSArr[i] var tmpeStr = "" if isBool { switch i { case 0: tmpeStr = "0" break case 1: tmpeStr = "1" break case 2: tmpeStr = "2" break case 3: tmpeStr = "4" break default: break } } if tmpeStr.count > 0 { if shippingStr.count == 0 { shippingStr = tmpeStr }else{ shippingStr = shippingStr + ";" + tmpeStr } } } if shippingStr.count == 0 { shippingStr = "100" } vc.shippingStatus = shippingStr vc.isUpData = false } let vc = viewControllers[selectIndex] vc.tableV.mj_header?.beginRefreshing() } func colseAction() { selectV = nil } //MAKR:--调起搜索后添加个蒙版本 var blackBtnView:UIButton! = nil func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool { print("调起搜索后添加个蒙版本") blackBtnView = UIButton () blackBtnView.backgroundColor = UIColor.init(named: "提示视图背景色") contentView.addSubview(blackBtnView) blackBtnView.snp.makeConstraints { (make) in make.left.right.top.bottom.equalToSuperview() } blackBtnView.addTarget(self, action: #selector(removeBlackBtnView), for: .touchUpInside) if selectV != nil { selectV.removeFromSuperview() selectV = nil } return true } @objc func removeBlackBtnView(){ if blackBtnView != nil { blackBtnView.removeFromSuperview() searchV!.resignFirstResponder() } } //MARK:---滚动选择 var selectIndex = 0 func pagingViewController(_ pagingViewController: PagingViewController, didScrollToItem pagingItem: PagingItem, startingViewController: UIViewController?, destinationViewController: UIViewController, transitionSuccessful: Bool) { guard let item = pagingItem as? PagingIndexItem else { return} print("滚动至vc\(item.index)") if selectIndex != item.index { selectIndex = item.index let vc = viewControllers[selectIndex] if !vc.isUpData { vc.tableV.mj_header?.beginRefreshing() } } } } extension OrderListViewController: PagingViewControllerDataSource { func pagingViewController(_: PagingViewController, pagingItemAt index: Int) -> PagingItem { return PagingIndexItem(index: index, title: cities[index]) } func pagingViewController(_: PagingViewController, viewControllerAt index: Int) -> UIViewController { return viewControllers[index] } func numberOfViewControllers(in pagingViewController: PagingViewController) -> Int { return cities.count } } extension OrderListViewController: PagingViewControllerSizeDelegate { func pagingViewController(_ pagingViewController: PagingViewController, widthForPagingItem pagingItem: PagingItem, isSelected: Bool) -> CGFloat { guard let item = pagingItem as? PagingIndexItem else { return 0 } let insets = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20) let size = CGSize(width: CGFloat.greatestFiniteMagnitude, height: pagingViewController.options.menuItemSize.height) let attributes = [NSAttributedString.Key.font: pagingViewController.options.font] let rect = item.title.boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: attributes, context: nil) let width = ceil(rect.width) + insets.left + insets.right if isSelected { return width * 1.5 } else { return width } } }