Browse Source

Merge branch 'develop' into feature/nanxinlin

* develop:
  订单支付-- 赋值
南鑫林 6 years ago
parent
commit
7bd0626cf6

+ 4 - 8
RainbowPlanet/RainbowPlanet/Modules/ShoppingCartModule/ShoppingCart/View/ShoppingCartView.swift

@@ -34,7 +34,7 @@ class ShoppingCartView: BaseView {
     // 已选商品ModelArr
     private var selModelArr: Array<CartProductListModel> = []
     
-    typealias OrderPayTransBlock = (_ selMdlArr: Array<CartProductListModel>) -> Void
+    typealias OrderPayTransBlock = (_ selMdlArr: Array<CartProductListModel>, _ totalPrice: Int) -> Void
     var orderPayTransBlock : OrderPayTransBlock?
     
     override func setupViews() {
@@ -70,7 +70,7 @@ class ShoppingCartView: BaseView {
         accountView.orderPayBlock = {
             [weak self] in
             if let orderPayTransBlock = self?.orderPayTransBlock {
-                orderPayTransBlock(self!.selModelArr)
+                orderPayTransBlock(self!.selModelArr, self!.totalPrice)
             }
         }
         
@@ -112,7 +112,7 @@ extension ShoppingCartView : UITableViewDelegate, UITableViewDataSource {
     }
     
     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
-        if cartListModelArr?.count == 0 {
+        if cartListModelArr?.isEmpty ?? true {
             switch indexPath.section {
             case 0:
                 // 购物车列表为空
@@ -278,14 +278,11 @@ extension ShoppingCartView {
         totalNum = 0
         selModelArr = []
         
-//        var cartListCopyArr :Array<CartProductListModel> = []
-        
+        // 深拷贝数组
         for listModel in cartListModelArr! {
             let copyListMdl: CartProductListModel = listModel.copy() as! CartProductListModel
             selModelArr.append(copyListMdl)
         }
-        print(selModelArr)
-        
         
         for (secIdx, cartProListMdl) in (cartListModelArr?.enumerated())! {
             var subTag: Int = 0
@@ -302,7 +299,6 @@ extension ShoppingCartView {
                 }
             }
         }
-        print(selModelArr)
         
         self.accountView.tPrice = totalPrice
         self.accountView.tNumber = totalNum

+ 3 - 3
RainbowPlanet/RainbowPlanet/Modules/ShoppingCartModule/ShoppingCart/ViewController/ShoppingCartViewController.swift

@@ -35,7 +35,7 @@ class ShoppingCartViewController: BaseViewController {
     
     override func setupViews() {
         navigationBar.title = "购物车"
-        
+        setShoppingCartView()
     }
     
     override func setupLayouts() {
@@ -66,9 +66,10 @@ class ShoppingCartViewController: BaseViewController {
     private lazy var shoppingCartView: ShoppingCartView = {
         let shoppingCartView = ShoppingCartView()
         shoppingCartView.orderPayTransBlock = {
-            [weak self] (selMdlArr) in
+            [weak self] (selMdlArr, totalPrice) in
             let vc = ShoppingCartPayOrderController()
             vc.selListModelArr = selMdlArr
+            vc.totalProductPrice = totalPrice
             self?.navigationController?.pushViewController(vc, animated: true)
         }
         return shoppingCartView
@@ -78,7 +79,6 @@ class ShoppingCartViewController: BaseViewController {
     func productCartListApi() {
         SwiftMoyaNetWorkServiceProduct.shared().productCartListApi { [weak self] (cartListData) -> (Void) in
             let cartListData = cartListData as? ProductCartListData
-            self?.setShoppingCartView()
             self?.shoppingCartView.cartListModelArr = cartListData?.data
         }
     }

+ 6 - 1
RainbowPlanet/RainbowPlanet/Modules/ShoppingCartModule/ShoppingCartPayOrder/View/OrderPayAcountView.swift

@@ -15,6 +15,12 @@ class OrderPayAcountView: BaseView {
     typealias CommitOrderBlock = () -> Void
     var commitOrderBlock : CommitOrderBlock?
     
+    var tPrice: Int? {
+        didSet {
+            priceLabel.text = "¥\(tPrice ?? 0)"
+        }
+    }
+    
     override func setupViews() {
         self.backgroundColor = kffffffColor
         addSubview(accountBtn)
@@ -61,7 +67,6 @@ class OrderPayAcountView: BaseView {
     
     private lazy var priceLabel: UILabel = {
         let priceLabel = UILabel()
-        priceLabel.text = "¥324"
         priceLabel.textColor = kFE352BColor
         priceLabel.font = kScaleBoldFont18
         return priceLabel

+ 60 - 4
RainbowPlanet/RainbowPlanet/Modules/ShoppingCartModule/ShoppingCartPayOrder/View/ShoppingCartOrderPayView.swift

@@ -13,6 +13,20 @@ class ShoppingCartOrderPayView: BaseView {
     typealias CommitOrderTransBlock = () -> Void
     var commitOrderTransBlock : CommitOrderTransBlock?
     
+    // 全部已选总价
+    var totalProductPrice: Int = 0 {
+        didSet {
+            self.accountView.tPrice = totalProductPrice
+        }
+    }
+    
+    // 已选商品ModelArr
+    var proListModelArr : Array<CartProductListModel>? {
+        didSet {
+            tableView.reloadData()
+        }
+    }
+    
     override func setupViews() {
         self.backgroundColor = kf7f8faColor
         addSubview(accountView)
@@ -60,16 +74,17 @@ class ShoppingCartOrderPayView: BaseView {
     
 }
 
+// MARK: - tableView dataSource && delegate
 extension ShoppingCartOrderPayView : UITableViewDelegate, UITableViewDataSource {
     func numberOfSections(in tableView: UITableView) -> Int {
-        return 3
+        return proListModelArr!.count + 1
     }
     
     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
         if section == 0 {
             return 1
         } else {
-            return 2
+            return proListModelArr![section-1].productList!.count
         }
     }
     
@@ -90,7 +105,9 @@ extension ShoppingCartOrderPayView : UITableViewDelegate, UITableViewDataSource
             return cell
             
         } else {
+            // 购物车列表Item
             let cell = ShoppingCartPayOrderItemCell.cellWith(tableView: tableView, indexPath: indexPath)
+            cell.productMdl = proListModelArr![indexPath.section-1].productList![indexPath.row]
             return cell
         }
     }
@@ -103,7 +120,7 @@ extension ShoppingCartOrderPayView : UITableViewDelegate, UITableViewDataSource
         if section == 0 {
             return 10
         } else {
-            return 48
+            return 58
         }
     }
     
@@ -111,8 +128,10 @@ extension ShoppingCartOrderPayView : UITableViewDelegate, UITableViewDataSource
         if section == 0 {
             return nil
         } else {
-            let headerView = ShoppingCartPayOrderHeader(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 48))
+            let headerView = ShoppingCartListTableViewHeader(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 58))
+            headerView.shopName = proListModelArr![section-1].shopName
             return headerView
+            
         }
     }
     
@@ -134,3 +153,40 @@ extension ShoppingCartOrderPayView : UITableViewDelegate, UITableViewDataSource
     }
     
 }
+
+// 购物车计算
+extension ShoppingCartOrderPayView {
+    
+    // 计算结算数据,刷新结算View
+    func refreshAccountView() {
+//        totalPrice = 0
+//        totalNum = 0
+//        selModelArr = []
+//
+//        // 深拷贝数组
+//        for listModel in cartListModelArr! {
+//            let copyListMdl: CartProductListModel = listModel.copy() as! CartProductListModel
+//            selModelArr.append(copyListMdl)
+//        }
+//
+//        for (secIdx, cartProListMdl) in (cartListModelArr?.enumerated())! {
+//            var subTag: Int = 0
+//            for (rowIdx, productMdl) in cartProListMdl.productList!.enumerated() {
+//                if productMdl.isSelect == 1 {
+//                    totalPrice += productMdl.skuPrice ?? 0
+//                    totalNum += 1
+//
+//                } else {
+//                    if !cartListModelArr![secIdx].productList!.isEmpty {
+//                        selModelArr[secIdx].productList!.remove(at: rowIdx-subTag)
+//                        subTag += 1
+//                    }
+//                }
+//            }
+//        }
+//
+//        self.accountView.tPrice = totalPrice
+//        self.accountView.tNumber = totalNum
+    }
+    
+}

+ 45 - 4
RainbowPlanet/RainbowPlanet/Modules/ShoppingCartModule/ShoppingCartPayOrder/View/ShoppingCartPayOrderHeader.swift

@@ -12,6 +12,13 @@ import RxCocoa
 
 class ShoppingCartPayOrderHeader: BaseView {
     
+    var shopName : String? {
+        didSet {
+            titleButton.setTitle(shopName, for: UIControl.State.normal)
+            titleButton.layoutButton(edgeInsetsStyle: ButtonEdgeInsetsStyle.right, imageTitleSpace: 4)
+        }
+    }
+    
     override var frame: CGRect {
         get {
             return super.frame
@@ -25,9 +32,12 @@ class ShoppingCartPayOrderHeader: BaseView {
     }
     
     override func setupViews() {
-        self.backgroundColor = kffffffColor
+        self.backgroundColor = kf7f8faColor
         addSubview(separateView)
-        addSubview(titleButton)
+        addSubview(headerBackView)
+        addSubview(bottomLineView)
+        
+        headerBackView.addSubview(titleButton)
     }
     
     override func setupLayouts() {
@@ -36,9 +46,21 @@ class ShoppingCartPayOrderHeader: BaseView {
             make.height.equalTo(10)
         }
         
+        headerBackView.snp.makeConstraints { (make) in
+            make.top.equalTo(separateView.snp_bottom)
+            make.left.right.equalToSuperview()
+            make.height.equalTo(48)
+        }
+        
         titleButton.snp.makeConstraints { (make) in
             make.left.equalToSuperview().offset(10)
             make.centerY.equalToSuperview()
+            make.height.equalTo(20)
+        }
+        
+        bottomLineView.snp.makeConstraints { (make) in
+            make.left.right.bottom.equalToSuperview()
+            make.height.equalTo(1)
         }
     }
     
@@ -48,11 +70,24 @@ class ShoppingCartPayOrderHeader: BaseView {
         return separateView
     }()
     
+    lazy var headerBackView: UIView = {
+        let headerBackView = UIView()
+        headerBackView.backgroundColor = kffffffColor
+        let shapeLayer = CAShapeLayer()
+        headerBackView.layer.mask = nil
+        let rect = CGRect(x: 0, y: 0, width: kScreenWidth - 14 * kScaleWidth * 2, height: 48)
+        let bezierPath = UIBezierPath(roundedRect: rect,
+                                      byRoundingCorners: [.topLeft,.topRight],
+                                      cornerRadii: CGSize(width: 4,height: 4))
+        shapeLayer.frame = headerBackView.bounds
+        shapeLayer.path = bezierPath.cgPath
+        headerBackView.layer.mask = shapeLayer
+        return headerBackView
+    }()
+    
     private lazy var titleButton: UIButton = {
         let titleButton = UIButton(type: UIButton.ButtonType.custom)
-        titleButton.setTitle("彩虹星球专营", for: UIControl.State.normal)
         titleButton.setTitleColor(k333333Color, for: UIControl.State.normal)
-        titleButton.setTitleColor(k666666Color, for: UIControl.State.selected)
         titleButton.titleLabel?.font = kScaleRegularFont14
         titleButton.rx.tap.subscribe(onNext: { [weak self] (data) in
             
@@ -65,4 +100,10 @@ class ShoppingCartPayOrderHeader: BaseView {
         return titleButton
     }()
     
+    private lazy var bottomLineView: UIView = {
+        let bottomLineView = UIView()
+        bottomLineView.backgroundColor = kf5f5f5Color
+        return bottomLineView
+    }()
+    
 }

+ 23 - 13
RainbowPlanet/RainbowPlanet/Modules/ShoppingCartModule/ShoppingCartPayOrder/View/ShoppingCartPayOrderItemCell.swift

@@ -10,6 +10,23 @@ import UIKit
 
 class ShoppingCartPayOrderItemCell: UITableViewCell {
     
+    var productMdl : ProductModel? {
+        didSet {
+            // 商品图片
+            iconImageView.kf.setImage(with: kURLImage(name: productMdl?.productImg ?? ""), placeholder: kImage(name: "pic_preload"))
+            // 商品名称
+            titleLabel.text = productMdl?.productName
+            // 预计配送时间
+            deliveryTime.text = "预计配送时间:次日达"
+            // 规格
+            sellScaleLabel.text = "规格:\(productMdl?.skuName ?? "")"
+            // 数量
+            sellNumberLabel.text = "x\(productMdl?.amount ?? 1)"
+            // 价格
+            sellPriceLabel.text = "¥\(productMdl?.skuPrice ?? 0)"
+        }
+    }
+    
     override var frame: CGRect {
         get {
             return super.frame
@@ -49,10 +66,8 @@ class ShoppingCartPayOrderItemCell: UITableViewCell {
     //MRAK: - 设置View
     private func setupViews() {
         self.selectionStyle = .none
-        //        cornerRadius = 4
-        //        masksToBounds = true
         
-        addSubview(iconImagView)
+        addSubview(iconImageView)
         addSubview(titleLabel)
         addSubview(deliveryTime)
         addSubview(sellScaleLabel)
@@ -62,13 +77,13 @@ class ShoppingCartPayOrderItemCell: UITableViewCell {
     }
     
     private func setupLayouts() {
-        iconImagView.snp.makeConstraints { (make) in
+        iconImageView.snp.makeConstraints { (make) in
             make.top.left.equalToSuperview().offset(14)
             make.width.height.equalTo(92)
             make.bottom.equalToSuperview().offset(-14)
         }
         titleLabel.snp.makeConstraints { (make) in
-            make.left.equalTo(iconImagView.snp_right).offset(10)
+            make.left.equalTo(iconImageView.snp_right).offset(10)
             make.top.equalTo(14)
             make.right.equalTo(-26)
             make.height.equalTo(20)
@@ -96,15 +111,13 @@ class ShoppingCartPayOrderItemCell: UITableViewCell {
         
     }
     
-    private lazy var iconImagView: UIImageView = {
-        let iconImagView = UIImageView()
-        iconImagView.image = kImage(name: "pic_preload")
-        return iconImagView
+    private lazy var iconImageView: UIImageView = {
+        let iconImageView = UIImageView()
+        return iconImageView
     }()
     
     private lazy var titleLabel: UILabel = {
         let titleLabel = UILabel()
-        titleLabel.text = "妈妈冬装外套棉袄短款"
         titleLabel.textColor = k333333Color
         titleLabel.font = kBoldFont14
         titleLabel.textAlignment = .left
@@ -123,7 +136,6 @@ class ShoppingCartPayOrderItemCell: UITableViewCell {
     
     private lazy var sellScaleLabel: UILabel = {
         let sellScaleLabel = UILabel()
-        sellScaleLabel.text = "规格:3个装"
         sellScaleLabel.textColor = k999999Color
         sellScaleLabel.font = kRegularFont12
         return sellScaleLabel
@@ -131,7 +143,6 @@ class ShoppingCartPayOrderItemCell: UITableViewCell {
     
     private lazy var sellNumberLabel: UILabel = {
         let sellNumberLabel = UILabel()
-        sellNumberLabel.text = "x1"
         sellNumberLabel.textColor = k999999Color
         sellNumberLabel.font = kRegularFont12
         return sellNumberLabel
@@ -139,7 +150,6 @@ class ShoppingCartPayOrderItemCell: UITableViewCell {
     
     private lazy var sellPriceLabel: UILabel = {
         let sellPriceLabel = UILabel()
-        sellPriceLabel.text = "¥258"
         sellPriceLabel.textColor = k333333Color
         sellPriceLabel.font = kRegularFont14
         sellPriceLabel.textAlignment = .left

+ 6 - 6
RainbowPlanet/RainbowPlanet/Modules/ShoppingCartModule/ShoppingCartPayOrder/ViewController/ShoppingCartPayOrderController.swift

@@ -12,11 +12,9 @@ import RxSwift
 class ShoppingCartPayOrderController: BaseViewController {
     
     // 已选商品ModelArr
-    var selListModelArr : Array<CartProductListModel>? {
-        didSet {
-            self.setOrderPayView()
-        }
-    }
+    var selListModelArr : Array<CartProductListModel>?
+    // 全部已选总价
+    var totalProductPrice: Int?
     
     override func viewDidLoad() {
         super.viewDidLoad()
@@ -27,7 +25,7 @@ class ShoppingCartPayOrderController: BaseViewController {
     
     override func setupViews() {
         navigationBar.title = "订单支付"
-        
+        self.setOrderPayView()
     }
     
     override func setupLayouts() {
@@ -49,6 +47,8 @@ class ShoppingCartPayOrderController: BaseViewController {
     
     private lazy var orderPayView: ShoppingCartOrderPayView = {
         let orderPayView = ShoppingCartOrderPayView()
+        orderPayView.proListModelArr = self.selListModelArr
+        orderPayView.totalProductPrice = self.totalProductPrice!
         orderPayView.commitOrderTransBlock = {
             [weak self] in
             // 支付弹窗调用