// // OrderListVC.swift // GeliBusinessPlatform // // Created by 刘俊宏 on 2020/4/26. // Copyright © 2020 junye lu. All rights reserved. // import UIKit import ViewAnimator //cell动效 class OrderListVC: BaseViewController, UITableViewDelegate, UITableViewDataSource, DaiQueRenCellDelegate, GeliAlertViewDelegate, OrderDViewControllerDelegate{ //MARK:--基础数据 var keyword: String = "" var startTime : Int = 0 var endTime : Int = 0 var payStatus : String = "100" var orderSource : Int = 0 var shippingStatus : String = "100" var orderStatus : Int = 100 var page : Int = 0 var isUpData = false //MARK:--列表数据源 var dataArr:Array<OrderListDataModel> = [] override func viewDidLoad() { super.viewDidLoad() switch self.title { case "全部": orderStatus = 100 break case "待确认": orderStatus = 0 break case "待付款": orderStatus = 1 break case "待发货": orderStatus = 6 break case "已发货": orderStatus = 7 break case "退款/货": orderStatus = 5 break case "已取消": orderStatus = 2 break default: break } setTabv() } //MARK:--VC 初始化 convenience init(title: String) { self.init(title: title, content: "") } init(title: String, content: String) { super.init(nibName: nil, bundle: nil) self.title = title print("ttit===\(title)") } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } //MARK:--加载数据 @objc func loadData(){ print("加载数据") isUpData = true page = 1 let UserToken = UserDefaults.standard.value(forKey: "user_token") var dic = ["user_token":UserToken as Any,"keyword":keyword,"page":page,"order_status":orderStatus,"pay_status":payStatus,"order_source":orderSource,"shipping_status":shippingStatus,"start_time":startTime,"end_time":endTime] if endTime == 0 { dic.removeValue(forKey: "end_time") } orderList(dic, success: { (data) in self.dataArr.removeAll() let dataM = data as! OrderListModel dataM.data?.forEach({ (model) in self.dataArr.append(model) }) self.tableV.reloadData() self.tableV?.mj_header?.endRefreshing() self.page = 2 self.tableV.performBatchUpdates({ UIView.animate(views: self.tableV!.visibleCells, animations: self.animations, completion: { }) }, completion: nil) if dataM.data?.count == 0 { self.tableV?.mj_footer?.endRefreshingWithNoMoreData() }else{ self.tableV?.mj_footer?.endRefreshing() } }) { (error) in self.tableV?.mj_header?.endRefreshing() } } //MARK:--加载更多数据 @objc func loadMoreData(){ print("加载更多数据") let UserToken = UserDefaults.standard.value(forKey: "user_token") var dic = ["user_token":UserToken as Any,"keyword":keyword,"page":page,"order_status":orderStatus,"pay_status":payStatus,"order_source":orderSource,"shipping_status":shippingStatus,"start_time":startTime,"end_time":endTime] if endTime == 0 { dic.removeValue(forKey: "end_time") } orderList(dic, success: { (data) in let dataM = data as! OrderListModel if dataM.data?.count == 0 { self.tableV?.mj_footer?.endRefreshingWithNoMoreData() }else{ self.page += 1 dataM.data?.forEach({ (model) in self.dataArr.append(model) }) self.tableV.reloadData() self.tableV?.mj_footer?.endRefreshing() } }) { (error) in self.tableV?.mj_footer?.endRefreshing() } } //MARK:-- tablev 处理 var tableV :UITableView! var tableSearchV :UITableView! = nil private let animations = [AnimationType.from(direction: .bottom, offset: 300*glscale)] func setTabv() { tableV = UITableView() view.addSubview(tableV); tableV.snp.makeConstraints { (make) in make.top.left.right.bottom.equalToSuperview() } tableV.backgroundColor = UIColor.init(named: "app底色") tableV.delegate = self tableV.dataSource = self tableV.separatorStyle = .none tableV?.register(UINib(nibName: "DaiQueRenCell", bundle: nil), forCellReuseIdentifier: "DaiQueRenCell") let footerTbV = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 15*glscale)) footerTbV.backgroundColor = UIColor.init(named: "app底色") tableV.tableFooterView = footerTbV //下拉刷新相关设置 headerMJ.setRefreshingTarget(self, refreshingAction: #selector(loadData)) self.tableV!.mj_header = headerMJ //上拉加载相关设置 footerMJ.setRefreshingTarget(self, refreshingAction: #selector(loadMoreData)) self.tableV!.mj_footer = footerMJ self.tableV?.mj_header?.beginRefreshing() } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return dataArr.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "DaiQueRenCell") as! DaiQueRenCell let rowModel = self.dataArr[indexPath.row] cell.cancelBtn.isHidden = false cell.submitBtn.isHidden = false cell.submitBtn.tag = indexPath.row cell.cancelBtn.tag = indexPath.row cell.nameLbl.text = rowModel.user_name if rowModel.cus_name != nil { cell.nameLbl.text = rowModel.cus_name } cell.statusLbl.text = orderStatusStrByInt(leftBtn: cell.cancelBtn, rightBtn: cell.submitBtn, statusNumber: rowModel.order_status!) cell.accountLbl.text = rowModel.order_sn cell.typeLbl.text = orderTypeStrByInt(statusNumber: rowModel.order_type!) if rowModel.order_type == 1 { cell.typeLbl.isHidden = true }else{ cell.typeLbl.isHidden = false } if rowModel.from == 3 { cell.formLbl.isHidden = false cell.typeLbl.isHidden = true }else{ cell.formLbl.isHidden = true } if rowModel.order_type == 4 { cell.formLbl.isHidden = true cell.typeLbl.isHidden = false } cell.dateLbl.text = dayAndTimeByDouble(sender: rowModel.add_time!) cell.countLbl.text = "商品数量:\(rowModel.goods_number!)" cell.priceLbl.text = "金额:¥\(rowModel.sum_amount!)" cell.delegate = self return cell } //MARK:--如果存在操作是否需要自动刷新? func cancel(sender: UIButton) { print(sender.tag) //取消订单 isSrueOrder = false let rowModel = self.dataArr[sender.tag] let alertView = GeliAlertView(frame: self.view.window!.bounds) alertView.delegate = self; alertView.tishiLbl.text = "" alertView.titileLbl.text = "是否确认取消订单?" alertView.rightBtn.setAttributedTitle(NSAttributedString(string: "确认"), for: .normal) alertView.rightBtn.tag = rowModel.order_id! self.view.window?.addSubview(alertView) } var isSrueOrder = false func submit(sender: UIButton) { print(sender.tag) let rowModel = self.dataArr[sender.tag] if sender.titleLabel?.text == "确认订单" { isSrueOrder = true let alertView = GeliAlertView(frame: self.view.window!.bounds) alertView.delegate = self; alertView.tishiLbl.text = "" alertView.titileLbl.text = "是否确认订单?" alertView.rightBtn.setAttributedTitle(NSAttributedString(string: "确认"), for: .normal) alertView.rightBtn.tag = rowModel.order_id! self.view.window?.addSubview(alertView) }else if sender.titleLabel?.text == "取消订单" { isSrueOrder = false let alertView = GeliAlertView(frame: self.view.window!.bounds) alertView.delegate = self; alertView.tishiLbl.text = "" alertView.titileLbl.text = "是否确认取消订单?" alertView.rightBtn.setAttributedTitle(NSAttributedString(string: "确认"), for: .normal) alertView.rightBtn.tag = rowModel.order_id! self.view.window?.addSubview(alertView) }else { //跳转订单详情 let vc = OrderDViewController() vc.delegate = self vc.orderId = rowModel.order_id! self.navigationController?.pushViewController(vc, animated: true) } } func sureGeliAlertViewAction(sender: UIButton) { if isSrueOrder { let UserToken = UserDefaults.standard.value(forKey: "user_token") orderConfirm(["user_token":UserToken as Any,"order_id" : sender.tag as Any], success: { (data) in HUD.flash(.labeledSubSuccess(subtitle: "确认成功"),delay: 1.2) NotificationCenter.default.post(name: NSNotification.Name(rawValue: "orderChange"), object: nil) self.tableV.mj_header?.beginRefreshing() }) { (error) in } }else{ let UserToken = UserDefaults.standard.value(forKey: "user_token") orderCancel(["user_token":UserToken as Any,"order_id" : sender.tag as Any], success: { (data) in HUD.flash(.labeledSubSuccess(subtitle: "取消成功"),delay: 1.2) NotificationCenter.default.post(name: NSNotification.Name(rawValue: "orderChange"), object: nil) self.tableV.mj_header?.beginRefreshing() }) { (error) in } } } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print(indexPath) let rowModel = self.dataArr[indexPath.row] let vc = OrderDViewController() vc.delegate = self vc.orderId = rowModel.order_id! self.navigationController?.pushViewController(vc, animated: true) } func refishingOrderDchange() { self.tableV.mj_header?.beginRefreshing() } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 224 } }