// // 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 { tableV.mj_header?.beginRefreshing() } } } } //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)] private let animations = [AnimationType.vector(CGVector(dx: 0, dy: 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.orderNumerLbl.text = rowModel.order_sn! if rowModel.order_status != nil && rowModel.order_status_d != nil && rowModel.goods_before_pay != nil { cell.statusLbl.text = orderStatusStrByInt(statusNumber: rowModel.order_status!, status_d: rowModel.order_status_d!, isBfPay: rowModel.goods_before_pay!, LmIdx: orderStatus) } if rowModel.goods_number != nil { 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.beforeOrderLbl.isHidden = true if rowModel.order_type == 4 { //预售 cell.yuShouStatus.isHidden = false cell.yuShouStatus.text = "预售" }else{ if rowModel.order_type == 5 { //分销 cell.yuShouStatus.isHidden = false cell.yuShouStatus.text = "分销" }else{ cell.yuShouStatus.isHidden = true } } if rowModel.from == 3 { cell.formLbl.isHidden = false if cell.yuShouStatus.isHidden { cell.formNSlayout.constant = 8 }else{ cell.formNSlayout.constant = 8 + 30 + 8 } }else{ cell.formLbl.isHidden = true } if rowModel.goods_before_pay == 1 { cell.beforeOrderLbl.isHidden = false if cell.yuShouStatus.isHidden && cell.formLbl.isHidden { cell.beforeNSLayout.constant = 8 }else if cell.yuShouStatus.isHidden && !cell.formLbl.isHidden { cell.beforeNSLayout.constant = 8 + 30 + 8 }else if !cell.yuShouStatus.isHidden && cell.formLbl.isHidden { cell.beforeNSLayout.constant = 8 + 30 + 8 }else{ cell.beforeNSLayout.constant = 8 + 30 + 8 + 18 + 8 } }else{ cell.beforeOrderLbl.isHidden = true } var btnStr:Array<String> = [] switch rowModel.order_status { case 0://待接单 btnStr = ["同意接单","先货后款","拒绝接单"] if rowModel.goods_before_pay == 1 { btnStr = ["同意接单","拒绝接单"] } break case 1://待付款 btnStr = ["取消订单"] if rowModel.shipping_status == 1 && rowModel.pay_status == 0 { btnStr = ["退货"] } break case 5://交易完成 btnStr = ["查看订单"] break case 6://待发货 if rowModel.from == 3 || rowModel.from == 5 {//销售下单 btnStr = ["发货","取消订单并退款"] if rowModel.pay_status != 2{ btnStr = ["发货","取消订单","确认收款"] } }else{ btnStr = ["发货","退款"] if rowModel.pay_status != 2{ btnStr = ["发货","取消订单"] } } if rowModel.goods_before_pay == 1 && orderStatus == 1{ btnStr.append("付款码") } if rowModel.apply_cancel == 1 { btnStr = ["拒绝取消订单","同意取消订单"] } break case 7://待收货 if rowModel.from == 3 || rowModel.from == 5 {//销售下单 btnStr = ["确认收货","退款退货","退款"] if rowModel.pay_status != 2{//未收款 btnStr = ["确认收货","确认收款","取消订单"] } }else{ btnStr = ["退款"] if rowModel.pay_status != 2 { btnStr = ["取消订单"] } if rowModel.goods_before_pay == 1 && orderStatus == 1{ btnStr = ["取消订单","付款码"] } } if rowModel.apply_cancel == 1 { btnStr = ["拒绝取消订单","同意取消订单"] } break case 9: btnStr = ["查看订单"] if rowModel.order_status_d == 91 && rowModel.from == 3 || rowModel.from == 5 { btnStr = ["确认收到退款"] } if rowModel.order_status_d == 93 { btnStr = ["确认收到退货"] } break case 10://已收货 btnStr = ["退款退货"] if rowModel.pay_status != 2 { btnStr = ["取消订单"] } if rowModel.from == 3 || rowModel.from == 5 { btnStr.append("确认收款") } if rowModel.goods_before_pay == 1 && orderStatus == 1{ btnStr.append("付款码") } 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.pay_status! != 2 { if rowModel.order_status == 1 || rowModel.order_status == 6 || rowModel.order_status == 7 || rowModel.order_status == 10 { if !btnStr.contains("付款码") && btnStr.count < 3 { 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 var agreeType = 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 == "退款" || 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 == "确认收款"{ isSrueOrder = 99 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 = 7 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 = 8 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 = 5 if sender.titleLabel!.text == "同意退款" { agreeType = 1 } if sender.titleLabel!.text == "同意退货"{ agreeType = 2 } 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 = 9 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 == "确认收到退款"{ isSrueOrder = 10 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 = 11 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 = 12 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 = 13 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 = 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! vc.lmIdx = orderStatus self.navigationController?.pushViewController(vc, animated: true) } } func sureGeliAlertViewAction(sender: UIButton) { switch isSrueOrder { case 12: 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) }) { (error) in } break case 13: confirmReceiving(["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) }) { (error) in } break case 99: editPayType(["user_token":UserToken as Any,"order_id":sender.tag as Any,"is_adsale":0 as Any,"amount_type":0 as Any,"pay_type":7 as Any], success: { (data) in let dataM = data as! UpDataModel if dataM.code == 1 { NotificationCenter.default.post(name: NSNotification.Name(rawValue: "orderChange"), object: nil) } }) { (error) in } break 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) }) { (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) }) { (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) }) { (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) }) { (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) }) { (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) }) { (error) in } } break case 5://同意退款 if agreeType == 10086 { 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) }) { (error) in } return } refundOrSalesReturn(["user_token":UserToken as Any,"order_id" : sender.tag as Any,"type":agreeType as Any], success: { (data) in HUD.flash(.labeledSubSuccess(subtitle: "审批成功"),delay: 1.2) NotificationCenter.default.post(name: NSNotification.Name(rawValue: "orderChange"), object: nil) }) { (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) }) { (error) in } break case 7: orderCancelAudit(["user_token":UserToken as Any,"order_id" : sender.tag as Any,"type":1 as Any], success: { (data) in HUD.flash(.labeledSubSuccess(subtitle: "已同意"),delay: 1.2) NotificationCenter.default.post(name: NSNotification.Name(rawValue: "orderChange"), object: nil) }) { (error) in } break case 8: orderCancelAudit(["user_token":UserToken as Any,"order_id" : sender.tag as Any,"type":2 as Any], success: { (data) in HUD.flash(.labeledSubSuccess(subtitle: "已拒绝"),delay: 1.2) NotificationCenter.default.post(name: NSNotification.Name(rawValue: "orderChange"), object: nil) }) { (error) in } break case 9: orderConfirm(["user_token":UserToken as Any,"order_id" : sender.tag as Any,"goods_before_pay":1 as Any], success: { (data) in HUD.flash(.labeledSubSuccess(subtitle: "提交成功"),delay: 1.2) NotificationCenter.default.post(name: NSNotification.Name(rawValue: "orderChange"), object: nil) }) { (error) in } break case 10: ConfirmRefund(["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) }) { (error) in } break case 11: confirmReturnedGoods(["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) }) { (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! vc.lmIdx = orderStatus 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(185 + (49 * 4)) } return CGFloat(185 + (49 * rowModel.order_goods!.count)) } }