// // 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, GeliAlertViewDelegate, OrderDViewControllerDelegate,CGDListCellDelegate{ let UserToken = UserDefaults.standard.value(forKey: "user_token") //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{ didSet{ if !isUpData { if tableV != nil { loadData() } } } } //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 = 10 break case "退款退货": orderStatus = 1109 break case "交易完成": orderStatus = 5 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 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("加载更多数据") 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: "CGDListCell", bundle: nil), forCellReuseIdentifier: "CGDListCell") 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: "CGDListCell") as! CGDListCell let rowModel = self.dataArr[indexPath.row] // cell.leftIcon.isHidden = true // cell.nameLblLeft.constant = -15 if rowModel.cus_name != nil { cell.nameLbl.text = rowModel.cus_name }else{ cell.nameLbl.text = rowModel.user_name } cell.orderNumerLbl.text = rowModel.order_sn cell.statusLbl.text = orderStatusStrByInt(statusNumber: rowModel.order_status!) cell.countLbl.text = "\(rowModel.goods_number!)" cell.priceLbl.text = rowModel.sum_amount cell.timeLbl.text = TimeByDouble(sender: rowModel.add_time!) cell.formLbl.isHidden = true cell.yuShouStatus.isHidden = true cell.orderNumberRight.constant = 15 if rowModel.order_type == 1 { cell.yuShouStatus.isHidden = true }else{ cell.yuShouStatus.isHidden = false cell.orderNumberRight.constant = 56 } if rowModel.from == 3 { cell.formLbl.isHidden = false cell.orderNumberRight.constant = 78 cell.yuShouStatus.isHidden = true }else{ cell.formLbl.isHidden = true } if rowModel.order_type == 4 { cell.formLbl.isHidden = true cell.orderNumberRight.constant = 56 cell.yuShouStatus.isHidden = false } var btnStr:Array<String> = [] switch rowModel.order_status { case 0://待接单 btnStr = ["同意接单","拒绝接单"] if rowModel.goods_before_pay == 1 { btnStr = ["同意接单","先货后款","拒绝接单"] } break case 1://待付款 print("rowModel == ",rowModel.shipping_status,rowModel.pay_status) btnStr = ["取消订单"] if rowModel.shipping_status == 1 && rowModel.pay_status == 0 { btnStr = ["退货"] } if rowModel.shipping_status == 0 && rowModel.pay_status == 12 { btnStr = ["退款"] } break case 5://交易完成 btnStr = ["查看详情"] break case 6://待发货 btnStr = ["发货","取消订单"] if rowModel.pay_status == 0 { btnStr = ["发货","取消订单","确认收款"] } break case 7://待收货 btnStr = ["确认收货","退货退款","退款"] if rowModel.pay_status == 0 { btnStr = ["确认收款","取消订单","确认收货"] } break case 10://已收货 btnStr = ["退货退款","交易关闭"] if rowModel.pay_status == 0 { btnStr = ["确认收款"] } break case 9: if rowModel.from == 3 || rowModel.from == 5 { btnStr = ["确认收到退款"] } break case 11: btnStr = ["查看订单"] if rowModel.order_status_d == 111 || rowModel.order_status_d == 112 || rowModel.order_status_d == 113{ btnStr = ["拒绝退款","同意退款"] } if rowModel.order_status_d == 114 || rowModel.order_status_d == 115 { btnStr = ["拒绝退货","同意退货"] } if rowModel.order_status_d == 116 || rowModel.order_status_d == 117 { btnStr = ["拒绝退款退货","同意退款退货"] } break default: btnStr = ["查看订单"] break } if rowModel.order_status! == 1 { btnStr.append("付款码") } cell.delegate = self cell.setBtnView(arr: btnStr, index: indexPath.row) cell.dataArr = rowModel.order_goods return cell } var isYuShou = false var isSrueOrder = 10086 var rejectType = 10086 func allBtnSubmit(sender: UIButton) { print(sender.tag) let rowModel = self.dataArr[sender.tag] if sender.titleLabel?.text == "同意接单" { isSrueOrder = 0 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 = 2 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 = 3 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 == "同意退款" || sender.titleLabel?.text == "同意退款退货" || sender.titleLabel?.text == "同意退货"{ isSrueOrder = 5 let alertView = GeliAlertView(frame: self.view.window!.bounds) alertView.delegate = self; alertView.tishiLbl.text = "" alertView.titileLbl.text = "是否\(sender.titleLabel?.text)?" alertView.rightBtn.setAttributedTitle(NSAttributedString(string: "确认"), for: .normal) alertView.rightBtn.tag = rowModel.order_id! self.view.window?.addSubview(alertView) }else if sender.titleLabel?.text == "拒绝退款" || sender.titleLabel?.text == "拒绝退款退货" || sender.titleLabel?.text == "拒绝退货"{ isSrueOrder = 6 rejectType = rowModel.order_status_d! let alertView = GeliAlertView(frame: self.view.window!.bounds) alertView.delegate = self; alertView.tishiLbl.text = "" alertView.titileLbl.text = "是否\(sender.titleLabel?.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 = 4 if rowModel.order_type == 4 { isYuShou = 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 = 1 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 == "付款码" { //MARK:--付款码测试完成 let alertView = GeliAltetCodeView(frame: self.view.window!.bounds) alertView.saveImgID = 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) { switch isSrueOrder { case 0: 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 } break case 1: 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 } break case 2: refuseOrder(["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 } break case 3: orderRefund(["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 } break case 4: if isYuShou { sendOutAd(["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{ sendOut(["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 } } break case 5://同意退款 refundAndSalesReturn(["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 } break case 6://拒绝退款 var type = 1 if rejectType == 114 && rejectType == 115 { type = 2 } if rejectType == 116 && rejectType == 117 { type = 3 } orderRefundRefuse(["user_token":UserToken as Any,"order_id" : sender.tag as Any,"type":type 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 } break default: break } } 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 { let rowModel = self.dataArr[indexPath.row] if rowModel.order_goods!.count > 4 { return CGFloat(200 + (49 * 4)) } return CGFloat(200 + (49 * rowModel.order_goods!.count)) } }