Browse Source

Merge branch 'feature/nanxinlin' into develop

南鑫林 6 years ago
parent
commit
d690d63830
29 changed files with 1257 additions and 141 deletions
  1. 14 6
      RainbowPlanet/RainbowPlanet.xcodeproj/project.pbxproj
  2. 13 0
      RainbowPlanet/RainbowPlanet/Modules/MineModule/Mine/View/MineOrderTableViewCell.swift
  3. 11 0
      RainbowPlanet/RainbowPlanet/Modules/MineModule/Mine/View/MineView.swift
  4. 25 12
      RainbowPlanet/RainbowPlanet/Modules/MineModule/Mine/ViewController/MineViewController.swift
  5. 61 8
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderButtonTableViewCell.swift
  6. 50 1
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderDeliveryModeAndButtonTableViewCell.swift
  7. 11 1
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderDeliveryModeAndTimeTableViewCell.swift
  8. 17 1
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderDeliveryModeTableViewCell.swift
  9. 39 0
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderListView.swift
  10. 16 8
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderProductTableViewCell.swift
  11. 55 4
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderShopAndStatusTableViewCell.swift
  12. 12 6
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderTotalAmountTableViewCell.swift
  13. 0 21
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderView.swift
  14. 266 0
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/ViewController/OrderListViewController.swift
  15. 129 9
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/ViewController/OrderViewController.swift
  16. 14 4
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderDetail/View/OrderDetailContactAddressTableViewCell.swift
  17. 17 1
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderDetail/View/OrderDetailExpressSelfMentionTableViewCell.swift
  18. 11 1
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderDetail/View/OrderDetailInfoTableViewCell.swift
  19. 36 4
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderDetail/View/OrderDetailStatusTableViewCell.swift
  20. 21 7
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderDetail/View/OrderDetailView.swift
  21. 140 10
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderDetail/ViewController/OrderDetailViewController.swift
  22. 57 6
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderRefunddetails/View/OrderRefunddetailsView.swift
  23. 21 12
      RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderRefunddetails/ViewController/OrderRefunddetailsViewController.swift
  24. 3 8
      RainbowPlanet/RainbowPlanet/Modules/ShoppingMallModule/ShoppingMall/ViewController/ShoppingMallListViewController.swift
  25. 138 0
      RainbowPlanet/RainbowPlanet/Service/Model/OrderModel/OrderListModel.swift
  26. 4 2
      RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceCMS/SwiftMoyaServiceCMSApi.swift
  27. 38 1
      RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceOrder/SwiftMoyaNetWorkServiceOrder.swift
  28. 32 6
      RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceOrder/SwiftMoyaServiceOrderApi.swift
  29. 6 2
      RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceManger/SwiftMoyaNetWorkManager/SwiftMoyaNetWorkManager.swift

+ 14 - 6
RainbowPlanet/RainbowPlanet.xcodeproj/project.pbxproj

@@ -282,7 +282,7 @@
 		A7FF1555228AC27600A85748 /* ProductAllCommentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FF1554228AC27600A85748 /* ProductAllCommentView.swift */; };
 		A7FF1557228AC3E800A85748 /* ProductAllCommentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FF1556228AC3E800A85748 /* ProductAllCommentViewController.swift */; };
 		A7FF1560228C693D00A85748 /* OrderViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FF155F228C693D00A85748 /* OrderViewController.swift */; };
-		A7FF1564228C696B00A85748 /* OrderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FF1563228C696B00A85748 /* OrderView.swift */; };
+		A7FF1564228C696B00A85748 /* OrderListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FF1563228C696B00A85748 /* OrderListView.swift */; };
 		A7FF1566228C6DF200A85748 /* OrderShopAndStatusTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FF1565228C6DF200A85748 /* OrderShopAndStatusTableViewCell.swift */; };
 		A7FF1568228C6E2300A85748 /* OrderDeliveryModeAndTimeTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FF1567228C6E2300A85748 /* OrderDeliveryModeAndTimeTableViewCell.swift */; };
 		A7FF156A228C6E3600A85748 /* OrderProductTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FF1569228C6E3600A85748 /* OrderProductTableViewCell.swift */; };
@@ -302,6 +302,8 @@
 		A7FF1590228C914600A85748 /* OrderRefunddetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FF158F228C914600A85748 /* OrderRefunddetailsView.swift */; };
 		A7FF1592228C918100A85748 /* OrderRefunddetailsStatusTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FF1591228C918100A85748 /* OrderRefunddetailsStatusTableViewCell.swift */; };
 		A7FF1594228C919A00A85748 /* OrderRefunddetailsTipsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FF1593228C919A00A85748 /* OrderRefunddetailsTipsTableViewCell.swift */; };
+		A7FF1596228CFA8100A85748 /* OrderListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FF1595228CFA8100A85748 /* OrderListViewController.swift */; };
+		A7FF1598228D092A00A85748 /* OrderListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FF1597228D092A00A85748 /* OrderListModel.swift */; };
 		BD1DC6C5228CFD0B00B89C57 /* SwiftMoyaNetWorkServiceOrder.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD1DC6C3228CFD0B00B89C57 /* SwiftMoyaNetWorkServiceOrder.swift */; };
 		BD1DC6C6228CFD0B00B89C57 /* SwiftMoyaServiceOrderApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD1DC6C4228CFD0B00B89C57 /* SwiftMoyaServiceOrderApi.swift */; };
 		BD1DC6C9228D005000B89C57 /* OrderCreateParameterModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD1DC6C8228D005000B89C57 /* OrderCreateParameterModel.swift */; };
@@ -646,7 +648,7 @@
 		A7FF1554228AC27600A85748 /* ProductAllCommentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductAllCommentView.swift; sourceTree = "<group>"; };
 		A7FF1556228AC3E800A85748 /* ProductAllCommentViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductAllCommentViewController.swift; sourceTree = "<group>"; };
 		A7FF155F228C693D00A85748 /* OrderViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderViewController.swift; sourceTree = "<group>"; };
-		A7FF1563228C696B00A85748 /* OrderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderView.swift; sourceTree = "<group>"; };
+		A7FF1563228C696B00A85748 /* OrderListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderListView.swift; sourceTree = "<group>"; };
 		A7FF1565228C6DF200A85748 /* OrderShopAndStatusTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderShopAndStatusTableViewCell.swift; sourceTree = "<group>"; };
 		A7FF1567228C6E2300A85748 /* OrderDeliveryModeAndTimeTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderDeliveryModeAndTimeTableViewCell.swift; sourceTree = "<group>"; };
 		A7FF1569228C6E3600A85748 /* OrderProductTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderProductTableViewCell.swift; sourceTree = "<group>"; };
@@ -666,6 +668,8 @@
 		A7FF158F228C914600A85748 /* OrderRefunddetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderRefunddetailsView.swift; sourceTree = "<group>"; };
 		A7FF1591228C918100A85748 /* OrderRefunddetailsStatusTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderRefunddetailsStatusTableViewCell.swift; sourceTree = "<group>"; };
 		A7FF1593228C919A00A85748 /* OrderRefunddetailsTipsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderRefunddetailsTipsTableViewCell.swift; sourceTree = "<group>"; };
+		A7FF1595228CFA8100A85748 /* OrderListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderListViewController.swift; sourceTree = "<group>"; };
+		A7FF1597228D092A00A85748 /* OrderListModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OrderListModel.swift; sourceTree = "<group>"; };
 		BD1DC6C3228CFD0B00B89C57 /* SwiftMoyaNetWorkServiceOrder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftMoyaNetWorkServiceOrder.swift; sourceTree = "<group>"; };
 		BD1DC6C4228CFD0B00B89C57 /* SwiftMoyaServiceOrderApi.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftMoyaServiceOrderApi.swift; sourceTree = "<group>"; };
 		BD1DC6C8228D005000B89C57 /* OrderCreateParameterModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderCreateParameterModel.swift; sourceTree = "<group>"; };
@@ -1577,9 +1581,9 @@
 		A738D203225AEAD000EEE860 /* Model */ = {
 			isa = PBXGroup;
 			children = (
+				A72A73722233966800B21995 /* RootModel */,
 				A71738A922898651000AEA6A /* ShopModel */,
 				A7B4E736228190810012914A /* CommonModel */,
-				A72A73722233966800B21995 /* RootModel */,
 				A7A98E00227E88E8005306E9 /* ProductModel */,
 				BD1DC6C7228D002200B89C57 /* OrderModel */,
 				A79057032276D5FE0037F823 /* ConfigModel */,
@@ -1816,11 +1820,11 @@
 				A77F2C8E2231FC5C001BD3F6 /* AppDelegate */,
 				A77F2C8F2231FC65001BD3F6 /* Base */,
 				A77F2CA22232010F001BD3F6 /* Modules */,
+				A72A7252223219BD00B21995 /* Service */,
 				A72A725422321B9400B21995 /* Manager */,
 				A72A725922321C5E00B21995 /* Macro */,
 				A77F2CBC2232022A001BD3F6 /* Tools */,
 				A72A725322321A6900B21995 /* Lib */,
-				A72A7252223219BD00B21995 /* Service */,
 				A72C011E227539800065E0C3 /* Src */,
 				A77F2CBB223201DC001BD3F6 /* Supporting Files */,
 			);
@@ -2623,6 +2627,7 @@
 			isa = PBXGroup;
 			children = (
 				A7FF155F228C693D00A85748 /* OrderViewController.swift */,
+				A7FF1595228CFA8100A85748 /* OrderListViewController.swift */,
 			);
 			path = ViewController;
 			sourceTree = "<group>";
@@ -2630,7 +2635,7 @@
 		A7FF155E228C692000A85748 /* View */ = {
 			isa = PBXGroup;
 			children = (
-				A7FF1563228C696B00A85748 /* OrderView.swift */,
+				A7FF1563228C696B00A85748 /* OrderListView.swift */,
 				A7FF1565228C6DF200A85748 /* OrderShopAndStatusTableViewCell.swift */,
 				A7FF1567228C6E2300A85748 /* OrderDeliveryModeAndTimeTableViewCell.swift */,
 				A7FF1569228C6E3600A85748 /* OrderProductTableViewCell.swift */,
@@ -2702,6 +2707,7 @@
 		BD1DC6C7228D002200B89C57 /* OrderModel */ = {
 			isa = PBXGroup;
 			children = (
+				A7FF1597228D092A00A85748 /* OrderListModel.swift */,
 				BD1DC6C8228D005000B89C57 /* OrderCreateParameterModel.swift */,
 				BD1DC6CA228D157000B89C57 /* OrderCreateBackModel.swift */,
 				BD1DC6CC228D160D00B89C57 /* OrderPurchaseModel.swift */,
@@ -3252,6 +3258,7 @@
 				A72A72AF22321DE000B21995 /* AppInfo.swift in Sources */,
 				A7D460942276854500A5A54E /* BaiduToCity2Model.swift in Sources */,
 				A72A72D422321E2700B21995 /* EnumMacro.swift in Sources */,
+				A7FF1598228D092A00A85748 /* OrderListModel.swift in Sources */,
 				A7FF157D228C837100A85748 /* OrderDetailStatusTableViewCell.swift in Sources */,
 				A7A98E41228046C5005306E9 /* ShoppingMallSepcialTableViewCell.swift in Sources */,
 				A70B2C5E22886F4D00B2449F /* ShopViewTableViewCell.swift in Sources */,
@@ -3308,9 +3315,10 @@
 				A7CC7524227190FB003C4F38 /* AccountSecurityView.swift in Sources */,
 				BD1DC6CB228D157000B89C57 /* OrderCreateBackModel.swift in Sources */,
 				A72A72BD22321DE000B21995 /* Extension+UIColor.swift in Sources */,
+				A7FF1596228CFA8100A85748 /* OrderListViewController.swift in Sources */,
 				A7A98E05227EB891005306E9 /* CategoryViewController.swift in Sources */,
 				A77F2CC822320627001BD3F6 /* WRCustomNavigationBar.swift in Sources */,
-				A7FF1564228C696B00A85748 /* OrderView.swift in Sources */,
+				A7FF1564228C696B00A85748 /* OrderListView.swift in Sources */,
 				A7CC74EF22706CCA003C4F38 /* MessageView.swift in Sources */,
 				A70B2C072284305400B2449F /* ProductModel.swift in Sources */,
 				A7CC74E0227042A4003C4F38 /* MineServiceTableViewCell.swift in Sources */,

+ 13 - 0
RainbowPlanet/RainbowPlanet/Modules/MineModule/Mine/View/MineOrderTableViewCell.swift

@@ -7,9 +7,16 @@
 //
 
 import UIKit
+import RxSwift
+import RxCocoa
 
 class MineOrderTableViewCell: UITableViewCell {
     
+    let disposeBag = DisposeBag()
+    
+    typealias LookAllOrderButtonBlock = () -> Void
+    var lookAllOrderButtonBlock : LookAllOrderButtonBlock?
+    
     let images = ["my_payment","my_pickup","my_shipment","my_reception","my_refund"]
     
     let titles = ["待付款","待自提","待发货","待收货","退款/售后"]
@@ -112,6 +119,12 @@ class MineOrderTableViewCell: UITableViewCell {
             UIControl.State.normal)
         lookAllOrderButton.setTitleColor(k999999Color, for: UIControl.State.normal)
         lookAllOrderButton.titleLabel?.font = kRegularFont13
+        lookAllOrderButton.rx.tap.subscribe(onNext: {
+            [weak self] (data) in
+            if let lookAllOrderButtonBlock = self?.lookAllOrderButtonBlock {
+                lookAllOrderButtonBlock()
+            }
+        }).disposed(by: disposeBag)
         return lookAllOrderButton
     }()
     

+ 11 - 0
RainbowPlanet/RainbowPlanet/Modules/MineModule/Mine/View/MineView.swift

@@ -10,9 +10,13 @@ import UIKit
 
 class MineView: BaseView {
     
+
     typealias ScrollViewDidScrollBlock = (_ offsetY:CGFloat,_ alpha:CGFloat) -> Void
     var scrollViewDidScrollBlock : ScrollViewDidScrollBlock?
     
+    typealias LookAllOrderButtonBlock = () -> Void
+    var lookAllOrderButtonBlock : LookAllOrderButtonBlock?
+    
     typealias AddressClosure = () -> Void
     var addressClosure : AddressClosure?
     
@@ -68,6 +72,13 @@ extension MineView: UITableViewDelegate,UITableViewDataSource {
         switch indexPath.section {
         case 0:
             let cell = MineOrderTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+            cell.lookAllOrderButtonBlock = {
+                [weak self] in
+                
+                if let lookAllOrderButtonBlock = self?.lookAllOrderButtonBlock {
+                    lookAllOrderButtonBlock()
+                }
+            }
             cell.frame = tableView.bounds
             cell.layoutIfNeeded()
             cell.reloadData()

+ 25 - 12
RainbowPlanet/RainbowPlanet/Modules/MineModule/Mine/ViewController/MineViewController.swift

@@ -15,11 +15,8 @@ class MineViewController: BaseViewController {
         super.viewDidLoad()
         setupViews()
         setupLayouts()
-        let operationQueue = OperationQueue.main
-        NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: "AccountSecurity"), object: nil, queue: operationQueue) {
-            [weak self] (notification) in
-            self?.mineView.tableView.reloadData()
-        }
+        setupData()
+        
     }
     
     override func setupViews() {
@@ -43,8 +40,12 @@ class MineViewController: BaseViewController {
         }
     }
     
-    private lazy var navigationBarView: MineNavigationBarView = {
-        let navigationBarView = MineNavigationBarView()
+    override func setupData() {
+        let operationQueue = OperationQueue.main
+        NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: "AccountSecurity"), object: nil, queue: operationQueue) {
+            [weak self] (notification) in
+            self?.mineView.tableView.reloadData()
+        }
         navigationBarView.messageBlock = {
             [weak self] in
             self?.navigationController?.pushViewController(MessageViewController(), animated: true)
@@ -53,11 +54,6 @@ class MineViewController: BaseViewController {
             [weak self] in
             self?.navigationController?.pushViewController(SetViewController(), animated: true)
         }
-        return navigationBarView
-    }()
-    
-    private lazy var mineView: MineView = {
-        let mineView = MineView()
         mineView.scrollViewDidScrollBlock = {
             [weak self] (offsetY,alpha) in
             self?.navigationBar.barBackgroundColor = kFFAC33Color.withAlphaComponent(alpha)
@@ -70,6 +66,23 @@ class MineViewController: BaseViewController {
             vc.addressManagerVCType = .mine
             self?.navigationController?.pushViewController(vc, animated: true)
         }
+        mineView.lookAllOrderButtonBlock = {
+            [weak self] in
+            let vc = OrderViewController()
+            vc.orderVCType = .all
+            self?.navigationController?.pushViewController(vc, animated: true)
+        }
+    }
+    
+    private lazy var navigationBarView: MineNavigationBarView = {
+        let navigationBarView = MineNavigationBarView()
+       
+        return navigationBarView
+    }()
+    
+    private lazy var mineView: MineView = {
+        let mineView = MineView()
+       
         return mineView
     }()
     

+ 61 - 8
RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderButtonTableViewCell.swift

@@ -57,14 +57,6 @@ class OrderButtonTableViewCell: UITableViewCell {
         
     }
     
-    private lazy var addressLabel: UILabel = {
-        let addressLabel = UILabel()
-        addressLabel.textColor = kfe352bColor
-        addressLabel.font = kRegularFont13
-        addressLabel.text = "自提地址:碑林区建设西路新城南门柜机"
-        return addressLabel
-    }()
-    
     private lazy var oneButton: UIButton = {
         let oneButton = UIButton(type: UIButton.ButtonType.custom)
         oneButton.cornerRadius = 14
@@ -81,4 +73,65 @@ class OrderButtonTableViewCell: UITableViewCell {
         return twoButton
     }()
 
+    var orderModel: OrderModel? {
+        didSet {
+            if orderModel?.deliverType == 2 { //快递
+                if orderModel?.feedbackStatus == 0 { //未维权
+                    switch orderModel?.status {
+                    case 0: //待付款
+                        oneButton.setTitle("去付款", for: UIControl.State.normal)
+                        oneButton.setTitleColor(kffffffColor, for: UIControl.State.normal)
+                        oneButton.backgroundColor = kFFA42FColor
+                        
+                        twoButton.setTitle("取消订单", for: UIControl.State.normal)
+                        twoButton.setTitleColor(k333333Color, for: UIControl.State.normal)
+                        twoButton.backgroundColor = UIColor.white
+                        twoButton.layer.borderColor = k333333Color.cgColor
+                        twoButton.layer.borderWidth = 1
+                    case 2: //收货
+                        oneButton.setTitle("查看物流", for: UIControl.State.normal)
+                        oneButton.setTitleColor(kffffffColor, for: UIControl.State.normal)
+                        oneButton.backgroundColor = kFFA42FColor
+                        
+                        twoButton.setTitle("确认收货", for: UIControl.State.normal)
+                        twoButton.setTitleColor(k333333Color, for: UIControl.State.normal)
+                        twoButton.backgroundColor = UIColor.white
+                        twoButton.layer.borderColor = k333333Color.cgColor
+                        twoButton.layer.borderWidth = 1
+                    case 6: //已完成
+                        oneButton.setTitle("去评价", for: UIControl.State.normal)
+                        oneButton.setTitleColor(kffffffColor, for: UIControl.State.normal)
+                        oneButton.backgroundColor = kFFA42FColor
+                        twoButton.setTitle("查看物流", for: UIControl.State.normal)
+                        twoButton.setTitleColor(k333333Color, for: UIControl.State.normal)
+                        twoButton.backgroundColor = UIColor.white
+                        twoButton.layer.borderColor = k333333Color.cgColor
+                        twoButton.layer.borderWidth = 1
+                        
+                    default: 
+                        break
+                    }
+                }else {//1-退款处理中/2-退款完成/3-拒绝退款
+                    switch orderModel?.feedbackStatus {
+                    case 1,2: //1-退款处理中 2-退款完成
+                        oneButton.setTitle("退款详情", for: UIControl.State.normal)
+                        oneButton.setTitleColor(kffffffColor, for: UIControl.State.normal)
+                        oneButton.backgroundColor = kFFA42FColor
+                        twoButton.isHidden = true
+                    case 3: //3-拒绝退款
+                        oneButton.setTitle("退款详情", for: UIControl.State.normal)
+                        oneButton.setTitleColor(kffffffColor, for: UIControl.State.normal)
+                        oneButton.backgroundColor = kFFA42FColor
+                        twoButton.setTitle("查看物流", for: UIControl.State.normal)
+                        twoButton.setTitleColor(k333333Color, for: UIControl.State.normal)
+                        twoButton.backgroundColor = UIColor.white
+                        twoButton.layer.borderColor = k333333Color.cgColor
+                        twoButton.layer.borderWidth = 1
+                    default:
+                        break
+                    }
+                }
+            }
+        }
+    }
 }

+ 50 - 1
RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderDeliveryModeAndButtonTableViewCell.swift

@@ -66,7 +66,6 @@ class OrderDeliveryModeAndButtonTableViewCell: UITableViewCell {
         let addressLabel = UILabel()
         addressLabel.textColor = kfe352bColor
         addressLabel.font = kRegularFont13
-        addressLabel.text = "自提地址:碑林区建设西路新城南门柜机"
         return addressLabel
     }()
     
@@ -85,5 +84,55 @@ class OrderDeliveryModeAndButtonTableViewCell: UITableViewCell {
         twoButton.titleLabel?.font = kRegularFont14
         return twoButton
     }()
+    
+    var orderModel: OrderModel? {
+        didSet {
+            if orderModel?.deliverType == 1 { //自提
+                addressLabel.text = "自提地址:\(orderModel?.address ?? "")"
+
+                if orderModel?.feedbackStatus == 0 { //未维权
+                    switch orderModel?.status {
+                    case 0: //待付款/已自提/已完成
+                        oneButton.setTitle("去付款", for: UIControl.State.normal)
+                        oneButton.setTitleColor(kffffffColor, for: UIControl.State.normal)
+                        oneButton.backgroundColor = kFFA42FColor
+
+                        twoButton.setTitle("取消订单", for: UIControl.State.normal)
+                        twoButton.setTitleColor(k333333Color, for: UIControl.State.normal)
+                        twoButton.backgroundColor = UIColor.white
+                        twoButton.layer.borderColor = k333333Color.cgColor
+                        twoButton.layer.borderWidth = 1
+                    case 5: //已自提
+                        oneButton.setTitle("确认收货", for: UIControl.State.normal)
+                        oneButton.setTitleColor(kffffffColor, for: UIControl.State.normal)
+                        oneButton.backgroundColor = kFFA42FColor
+                        twoButton.isHidden = true
+                        
+                    default: //待发货/待收货/配送中/待自提/已关闭
+                        break
+                    }
+                }else {//1-退款处理中/2-退款完成/3-拒绝退款
+                    switch orderModel?.feedbackStatus {
+                    case 1,2: //1-退款处理中 2-退款完成
+                        oneButton.setTitle("退款详情", for: UIControl.State.normal)
+                        oneButton.setTitleColor(kffffffColor, for: UIControl.State.normal)
+                        oneButton.backgroundColor = kFFA42FColor
+                        twoButton.isHidden = true
+                    case 3: //3-拒绝退款
+                        oneButton.setTitle("退款详情", for: UIControl.State.normal)
+                        oneButton.setTitleColor(kffffffColor, for: UIControl.State.normal)
+                        oneButton.backgroundColor = kFFA42FColor
+                        twoButton.setTitle("查看物流", for: UIControl.State.normal)
+                        twoButton.setTitleColor(k333333Color, for: UIControl.State.normal)
+                        twoButton.backgroundColor = UIColor.white
+                        twoButton.layer.borderColor = k333333Color.cgColor
+                        twoButton.layer.borderWidth = 1
+                    default:
+                        break
+                    }
+                }
+            }
+        }
+    }
 
 }

+ 11 - 1
RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderDeliveryModeAndTimeTableViewCell.swift

@@ -64,7 +64,6 @@ class OrderDeliveryModeAndTimeTableViewCell: UITableViewCell {
         deliveryModeLabel.backgroundColor = kf5f5f5Color
         deliveryModeLabel.textColor = k333333Color
         deliveryModeLabel.font = kRegularFont13
-        deliveryModeLabel.text = "  自提  "
         deliveryModeLabel.cornerRadius = 10
         deliveryModeLabel.masksToBounds = true
         return deliveryModeLabel
@@ -83,5 +82,16 @@ class OrderDeliveryModeAndTimeTableViewCell: UITableViewCell {
         lineLabel.backgroundColor = kf5f5f5Color
         return lineLabel
     }()
+    
+    var orderModel: OrderModel? {
+        didSet {
+            if orderModel?.deliverType == 1 { //自提
+                deliveryModeLabel.text = "  自提  "
+            }else if orderModel?.deliverType == 2 { //快递
+                deliveryModeLabel.text = "  快递  "
+            }
+            timeLabel.text = orderModel?.createdAt
+        }
+    }
 
 }

+ 17 - 1
RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderDeliveryModeTableViewCell.swift

@@ -55,5 +55,21 @@ class OrderDeliveryModeTableViewCell: UITableViewCell {
         addressLabel.text = "自提地址:碑林区建设西路新城南门柜机"
         return addressLabel
     }()
-
+    
+    var orderModel: OrderModel? {
+        didSet {
+            if orderModel?.deliverType == 1 { //自提
+                if orderModel?.feedbackStatus == 0 { //未维权
+                    switch orderModel?.status {
+                    case 1,2,3,4,7: //待发货/待收货/配送中/待自提/已关闭
+                       addressLabel.text = "自提地址:\(orderModel?.address ?? "")"
+                    default: //待付款/已自提/已完成
+                        break
+                    }
+                }else {//1-退款处理中/2-退款完成/3-拒绝退款
+                    
+                }
+            }
+        }
+    }
 }

+ 39 - 0
RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderListView.swift

@@ -0,0 +1,39 @@
+//
+//  OrderListView.swift
+//  RainbowPlanet
+//
+//  Created by 南鑫林 on 2019/5/15.
+//  Copyright © 2019 RainbowPlanet. All rights reserved.
+//
+
+import UIKit
+
+class OrderListView: BaseView {
+
+    override func setupViews() {
+        addSubview(tableView)
+        let emptyView =  EmptyView.shared.diyCustomEmptyViewStyle2(iconStr: "page04", titleStr: "当前暂无数据")
+        emptyView.contentViewY = kScaleValue(value: 182)
+        tableView.ly_emptyView = emptyView
+        tableView.ly_startLoading()
+        
+    }
+    
+    override func setupLayouts() {
+        tableView.snp.makeConstraints { (make) in
+            make.top.edges.equalToSuperview()
+        }
+    }
+    
+    lazy var tableView: UITableView = {
+        let tableView = UITableView(frame: CGRect.zero, style: UITableView.Style.grouped)
+        tableView.separatorStyle = .none
+        tableView.backgroundColor = kf7f8faColor
+        tableView.estimatedRowHeight = 0.000001
+        tableView.estimatedSectionFooterHeight = 0.000001
+        tableView.estimatedSectionHeaderHeight = 0.000001
+        return tableView
+    }()
+
+}
+

+ 16 - 8
RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderProductTableViewCell.swift

@@ -10,7 +10,7 @@ import UIKit
 
 class OrderProductTableViewCell: UITableViewCell {
 
-    class func cellWith(tableView:UITableView,indexPath:IndexPath) -> UITableViewCell {
+    class func cellWith(tableView:UITableView,indexPath:IndexPath) -> OrderProductTableViewCell {
         let ID = "OrderProductTableViewCell"
         tableView.register(OrderProductTableViewCell.self, forCellReuseIdentifier: ID)
         let cell : OrderProductTableViewCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! OrderProductTableViewCell
@@ -51,6 +51,7 @@ class OrderProductTableViewCell: UITableViewCell {
             make.centerY.equalToSuperview()
             make.size.equalTo(80)
         }
+
         titleLabel.snp.makeConstraints { (make) in
             make.left.equalTo(productImageView.snp.right).offset(12)
             make.top.equalTo(20)
@@ -58,12 +59,12 @@ class OrderProductTableViewCell: UITableViewCell {
             make.height.equalTo(20)
         }
         timeLabel.snp.makeConstraints { (make) in
-            make.top.equalTo(titleLabel.snp.left).offset(8)
+            make.top.equalTo(titleLabel.snp.bottom).offset(8)
             make.left.equalTo(titleLabel)
             make.height.equalTo(17)
         }
         skuLabel.snp.makeConstraints { (make) in
-            make.top.equalTo(timeLabel.snp.left).offset(8)
+            make.top.equalTo(timeLabel.snp.bottom).offset(8)
             make.left.equalTo(titleLabel)
             make.height.equalTo(17)
         }
@@ -75,6 +76,7 @@ class OrderProductTableViewCell: UITableViewCell {
             make.centerY.equalTo(timeLabel)
             make.right.equalTo(-14)
         }
+        
         lineLabel.snp.makeConstraints { (make) in
             make.bottom.equalToSuperview()
             make.height.equalTo(1)
@@ -91,7 +93,6 @@ class OrderProductTableViewCell: UITableViewCell {
     
     private lazy var titleLabel: UILabel = {
         let titleLabel = UILabel()
-        titleLabel.text = "果雪语 眉山脐橙4斤装 新鲜脐"
         titleLabel.textColor = k333333Color
         titleLabel.font = kBoldFont14
         return titleLabel
@@ -99,7 +100,6 @@ class OrderProductTableViewCell: UITableViewCell {
     
     private lazy var timeLabel: UILabel = {
         let timeLabel = UILabel()
-        timeLabel.text = "预计配送时间:次日达"
         timeLabel.textColor = k666666Color
         timeLabel.font = kRegularFont12
         return timeLabel
@@ -107,7 +107,6 @@ class OrderProductTableViewCell: UITableViewCell {
     
     private lazy var skuLabel: UILabel = {
         let skuLabel = UILabel()
-        skuLabel.text = "规格:3个装"
         skuLabel.textColor = k999999Color
         skuLabel.font = kRegularFont12
         return skuLabel
@@ -115,7 +114,6 @@ class OrderProductTableViewCell: UITableViewCell {
     
     private lazy var priceLabel: UILabel = {
         let priceLabel = UILabel()
-        priceLabel.text = "¥258"
         priceLabel.textColor = k333333Color
         priceLabel.font = kRegularFont14
         return priceLabel
@@ -123,7 +121,6 @@ class OrderProductTableViewCell: UITableViewCell {
     
     private lazy var numberLabel: UILabel = {
         let numberLabel = UILabel()
-        numberLabel.text = "x1"
         numberLabel.textColor = k999999Color
         numberLabel.font = kRegularFont13
         return numberLabel
@@ -134,4 +131,15 @@ class OrderProductTableViewCell: UITableViewCell {
         lineLabel.backgroundColor = kf5f5f5Color
         return lineLabel
     }()
+    
+    var orderModelDetailModel: OrderModelDetailModel? {
+        didSet {
+            productImageView.kf.setImage(with: kURLImage(name: orderModelDetailModel?.productImg ?? "pic_preload"), placeholder: kImage(name: "pic_preload"))
+            titleLabel.text = orderModelDetailModel?.productName
+            timeLabel.text = "预计配送时间:\(orderModelDetailModel?.receiveTime ?? "")"
+            skuLabel.text = "规格:\(orderModelDetailModel?.skuName ?? "")"
+            priceLabel.text = "¥\(orderModelDetailModel?.productPrice ?? 0)"
+            numberLabel.text = "x\(orderModelDetailModel?.amount ?? 0)"
+        }
+    }
 }

+ 55 - 4
RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderShopAndStatusTableViewCell.swift

@@ -10,7 +10,7 @@ import UIKit
 
 class OrderShopAndStatusTableViewCell: UITableViewCell {
 
-    class func cellWith(tableView:UITableView,indexPath:IndexPath) -> UITableViewCell {
+    class func cellWith(tableView:UITableView,indexPath:IndexPath) -> OrderShopAndStatusTableViewCell {
         let ID = "OrderShopAndStatusTableViewCell"
         tableView.register(OrderShopAndStatusTableViewCell.self, forCellReuseIdentifier: ID)
         let cell : OrderShopAndStatusTableViewCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! OrderShopAndStatusTableViewCell
@@ -70,9 +70,7 @@ class OrderShopAndStatusTableViewCell: UITableViewCell {
     
     private lazy var statusLabel: UILabel = {
         let statusLabel = UILabel()
-        statusLabel.text = "订单状态"
         statusLabel.font = kRegularFont14
-        statusLabel.textColor = kFFA42FColor
         return statusLabel
     }()
     
@@ -81,5 +79,58 @@ class OrderShopAndStatusTableViewCell: UITableViewCell {
         lineLabel.backgroundColor = kf5f5f5Color
         return lineLabel
     }()
-
+    
+    var orderModel: OrderModel? {
+        didSet {
+            shopButton.setTitle(orderModel?.shopName ?? "", for: UIControl.State.normal)
+//            shopButton.layoutButton(edgeInsetsStyle: ButtonEdgeInsetsStyle.right, imageTitleSpace: 5)
+            if orderModel?.feedbackStatus == 0 { //未维权
+                switch orderModel?.status {
+                case 0: //待付款
+                     statusLabel.text = "待付款"
+                     statusLabel.textColor = kFFA42FColor
+                    break
+                case 1: //待发货
+                    statusLabel.text = "待发货"
+                    statusLabel.textColor = kFFA42FColor
+                case 2: //已发货/待收货
+                    statusLabel.text = "待收货"
+                    statusLabel.textColor = k333333Color
+                case 3: //配送中
+                    statusLabel.text = "配送中"
+                    statusLabel.textColor = kFFA42FColor
+                case 4: //待自提
+                    statusLabel.text = "待自提"
+                    statusLabel.textColor = kFFA42FColor
+                case 5: //已自提
+                    statusLabel.text = "已自提"
+                    statusLabel.textColor = k333333Color
+                    
+                case 6: //已完成
+                    statusLabel.text = "已完成"
+                    statusLabel.textColor = k333333Color
+                case 7: //已关闭
+                    statusLabel.text = "已关闭"
+                    statusLabel.textColor = k333333Color
+                    
+                default:
+                    break
+                }
+            }else {
+                switch orderModel?.feedbackStatus {
+                case 1: //1-退款处理中
+                    statusLabel.text = "退款中"
+                    statusLabel.textColor = kFFA42FColor
+                case 2: //2-退款完成
+                    statusLabel.text = "退款完成"
+                    statusLabel.textColor = k333333Color
+                case 3: //3-拒绝退款
+                    statusLabel.text = "退款失败"
+                    statusLabel.textColor = k333333Color
+                default:
+                    break
+                }
+            }
+        }
+    }
 }

+ 12 - 6
RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderTotalAmountTableViewCell.swift

@@ -10,7 +10,7 @@ import UIKit
 
 class OrderTotalAmountTableViewCell: UITableViewCell {
     
-    class func cellWith(tableView:UITableView,indexPath:IndexPath) -> UITableViewCell {
+    class func cellWith(tableView:UITableView,indexPath:IndexPath) -> OrderTotalAmountTableViewCell {
         let ID = "OrderTotalAmountTableViewCell"
         tableView.register(OrderTotalAmountTableViewCell.self, forCellReuseIdentifier: ID)
         let cell : OrderTotalAmountTableViewCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! OrderTotalAmountTableViewCell
@@ -73,11 +73,6 @@ class OrderTotalAmountTableViewCell: UITableViewCell {
         let numberLabel = UILabel()
         numberLabel.textColor = k999999Color
         numberLabel.font = kRegularFont14
-        let str = "共1件商品,合计"
-        let attributedString = NSMutableAttributedString.init(string: str)
-        let range = str.range(of: "1")
-        attributedString.changeForegroundColor(k333333Color, range: NSRange(range!, in: "1"))
-        numberLabel.attributedText = attributedString
         return numberLabel
     }()
     
@@ -86,5 +81,16 @@ class OrderTotalAmountTableViewCell: UITableViewCell {
         lineLabel.backgroundColor = kf5f5f5Color
         return lineLabel
     }()
+    
+    var orderModel: OrderModel? {
+        didSet {
+            moneyLabel.text = "\(orderModel?.realPrice ?? 0)"
+            let str = "共\(orderModel?.amount ?? 0)件商品,合计"
+            let attributedString = NSMutableAttributedString.init(string: str)
+            let range = str.range(of: "\(orderModel?.amount ?? 0)")
+            attributedString.changeForegroundColor(k333333Color, range: NSRange(range!, in: "\(orderModel?.amount ?? 0)"))
+            numberLabel.attributedText = attributedString
+        }
+    }
 
 }

+ 0 - 21
RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/View/OrderView.swift

@@ -1,21 +0,0 @@
-//
-//  OrderListView.swift
-//  RainbowPlanet
-//
-//  Created by 南鑫林 on 2019/5/15.
-//  Copyright © 2019 RainbowPlanet. All rights reserved.
-//
-
-import UIKit
-
-class OrderView: BaseView {
-
-    /*
-    // Only override draw() if you perform custom drawing.
-    // An empty implementation adversely affects performance during animation.
-    override func draw(_ rect: CGRect) {
-        // Drawing code
-    }
-    */
-
-}

+ 266 - 0
RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/ViewController/OrderListViewController.swift

@@ -0,0 +1,266 @@
+//
+//  OrderListViewController.swift
+//  RainbowPlanet
+//
+//  Created by 南鑫林 on 2019/5/16.
+//  Copyright © 2019 RainbowPlanet. All rights reserved.
+//
+
+import UIKit
+import JXSegmentedView
+
+class OrderListViewController: UIViewController {
+
+    var orderVCType : OrderVCType?
+    var orderModelArray = Array<OrderModel>()
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        setupViews()
+        setupLayouts()
+        setupData()
+    }
+    
+    func setupViews() {
+        view.addSubview(orderListView)
+    }
+    
+    func setupLayouts() {
+        orderListView.snp.makeConstraints { (make) in
+            make.edges.equalToSuperview()
+        }
+    }
+    
+    func setupData() {
+        orderListView.tableView.addHeaderWithHeader(withBeginRefresh: true, animation: false) {
+            [weak self] (page) in
+            self?.orderPurchaseOrderListApi(page: page)
+        }
+        orderListView.tableView.addFooterWithWithHeader(withAutomaticallyRefresh: true) {
+            [weak self] (page) in
+            self?.orderPurchaseOrderListApi(page: page)
+        }
+        
+    }
+    
+    func orderPurchaseOrderListApi(page:Int = 1) {
+        SwiftMoyaNetWorkServiceOrder.shared().orderPurchaseOrderListApi(page: page, status: orderVCType.map { $0.rawValue } ?? -1) {
+            [weak self] (orderListModel) -> (Void) in
+            let orderListModel = orderListModel as? OrderListModel
+            if orderListModel?.pagination?.currentPage ?? 1  <= orderListModel?.pagination?.totalPages ?? 1 {
+                if orderListModel?.pagination?.currentPage == 1{
+                    self?.orderModelArray.removeAll()
+                    self?.orderListView.tableView.resetNoMoreData()
+                }
+                self?.orderModelArray = (self?.orderModelArray)! + (orderListModel?.data!)!
+                self?.orderListView.tableView.reloadData()
+            }else {
+                self?.orderListView.tableView.endFooterNoMoreData()
+            }
+        }
+    }
+    
+    private lazy var orderListView: OrderListView = {
+        let orderListView = OrderListView()
+        orderListView.tableView.dataSource = self
+        orderListView.tableView.delegate = self
+        return orderListView
+    }()
+}
+
+extension OrderListViewController : UITableViewDelegate, UITableViewDataSource {
+    func numberOfSections(in tableView: UITableView) -> Int {
+        
+        return orderModelArray.isEmpty ? 0 : orderModelArray.count
+    }
+    
+    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+        let orderModel = orderModelArray[section]
+        
+        
+        if !(orderModel.detail?.isEmpty ?? true) {
+            switch orderModel.deliverType {
+            case 1: //自提
+                if orderModel.feedbackStatus == 0 { //未维权
+                    switch orderModel.status {
+                    case 0: //待付款
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 1: //待发货
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 2: //已发货/待收货
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 3: //配送中
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 4: //待自提
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 5: //已自提
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 6: //已完成
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 7: //已关闭
+                        return 4 + (orderModel.detail?.count ?? 0)
+                        
+                    default:
+                        return 0
+                    }
+                }else {
+                    switch orderModel.feedbackStatus {
+                    case 1: //1-退款处理中
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 2: //2-退款完成
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 3: //3-拒绝退款
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    default:
+                        return 0
+                    }
+                }
+               
+            case 2: //快递
+                if orderModel.feedbackStatus == 0 { //未维权
+                    switch orderModel.status {
+                    case 0: //待付款
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 1: //待发货
+                        return 3 + (orderModel.detail?.count ?? 0)
+                    case 2: //已发货/待收货
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 3: //配送中
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 4: //待自提
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 5: //已自提
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 6: //已完成
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 7: //已关闭
+                         return 3 + (orderModel.detail?.count ?? 0)
+                    default:
+                        return 0
+                    }
+                }else {
+                    switch orderModel.feedbackStatus {
+                    case 1: //1-退款处理中
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 2: //2-退款完成
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    case 3: //3-拒绝退款
+                        return 4 + (orderModel.detail?.count ?? 0)
+                    default:
+                        return 0
+                    }
+                }
+            default:
+                return 0
+            }
+        }else {
+            return 0
+        }
+    }
+    
+    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+        let orderModel = orderModelArray[indexPath.section]
+        let details = orderModel.detail
+        switch indexPath.row {
+        case 0:
+            let cell = OrderShopAndStatusTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+            cell.orderModel = orderModel
+            return cell
+        case 1:
+            let cell = OrderDeliveryModeAndTimeTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+            cell.orderModel = orderModel
+            return cell
+        case details?.count ?? 0 + 2:
+            let cell = OrderTotalAmountTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+            cell.orderModel = orderModel
+            return cell
+        case details?.count ?? 0 + 3:
+            let orderModel = orderModel
+            switch orderModel.deliverType {
+            case 1: //自提
+                if orderModel.feedbackStatus == 0 { //未维权
+                    switch orderModel.status {
+                    case 0,5: //待付款/已自提
+                        let cell = OrderDeliveryModeAndButtonTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+                        return cell
+                    case 1,4,7: //待发货/待自提/已关闭
+                        let cell = OrderDeliveryModeTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+                        return cell
+                    case 3: //配送中
+                        let cell = OrderButtonTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+                        return cell
+                    default:
+                        return UITableViewCell()
+                    }
+                }else {
+                    let cell = OrderDeliveryModeAndButtonTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+                    return cell
+                }
+                
+            case 2: //快递
+                if orderModel.feedbackStatus == 0 { //未维权
+                    switch orderModel.status {
+                    case 0,2,6: //待付款/待收货/
+                        let cell = OrderButtonTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+                        return cell
+                    default:
+                        return UITableViewCell()
+                    }
+                }else {
+                    let cell = OrderButtonTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+                    return cell
+                }
+            default:
+                return UITableViewCell()
+            }
+        default:
+            let cell = OrderProductTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+            let orderModel = orderModelArray[indexPath.section]
+            if !(orderModel.detail?.isEmpty ?? true) {
+                cell.orderModelDetailModel = details?[indexPath.row - 2]
+            }
+            return cell
+            
+        }
+    }
+    
+    
+    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
+        switch indexPath.row {
+        case 0:
+            return 48
+        case 1:
+           return 40
+        case orderModelArray.count + 2:
+            return 40
+        case orderModelArray.count + 3:
+            return UITableView.automaticDimension
+        default:
+            return 108
+        }
+        
+    }
+    
+    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
+        return 10
+    }
+    
+    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
+        return nil
+    }
+    
+    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
+        return 0
+    }
+    
+    func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
+        return nil
+    }
+}
+
+
+extension OrderListViewController : JXSegmentedListContainerViewListDelegate {
+    func listView() -> UIView {
+        return view
+    }
+}

+ 129 - 9
RainbowPlanet/RainbowPlanet/Modules/OrderModule/Order/ViewController/OrderViewController.swift

@@ -7,24 +7,144 @@
 //
 
 import UIKit
+import JXSegmentedView
+
+/// 我的订单类型
+///
+/// - all: 全部
+/// - pendingPayment: 待付款
+/// - toBeShipped: 待收货
+/// - toBeReceived: 待发货
+/// - toBeEvaluated: 待评价
+/// - refund: 退款
+enum OrderVCType : Int {
+    case all = -1
+    case pendingPayment = 0
+    case toBeShipped = 1
+    case toBeReceived = 2
+    case toBeEvaluated = 3
+    case refund = 4
+    
+}
 
 class OrderViewController: BaseViewController {
+    
+    var orderVCType : OrderVCType?
 
     override func viewDidLoad() {
         super.viewDidLoad()
-
-        // Do any additional setup after loading the view.
+        setupViews()
+        setupLayouts()
+        setupData()
+    }
+    
+    override func setupViews() {
+        navigationBar.title = "我的订单"
+        view.addSubview(segmentedView)
+        view.addSubview(listContainerView)
     }
     
+    override func setupLayouts() {
+        segmentedView.snp.makeConstraints { (make) in
+            make.left.right.equalToSuperview()
+            make.height.equalTo(44)
+            make.top.equalTo(kNavBarTotalHeight)
 
-    /*
-    // MARK: - Navigation
+        }
+        listContainerView.snp.makeConstraints { (make) in
+            make.top.equalTo(segmentedView.snp.bottom)
+            make.left.right.bottom.equalToSuperview()
+        }
+    }
+    
+    override func setupData() {
+        
+    }
+    
+    //1.初始化JXSegmentedView
+    lazy var segmentedView: JXSegmentedView = {
+        let segmentedView = JXSegmentedView()
+        segmentedView.delegate = self
+        segmentedView.dataSource = segmentedDataSource
+        segmentedView.indicators = [indicator]
+        segmentedView.contentScrollView = listContainerView.scrollView
+        return segmentedView
+    }()
+    
+    //2.初始化dataSource
+    lazy var segmentedDataSource: JXSegmentedTitleDataSource = {
+        let segmentedDataSource = JXSegmentedTitleDataSource()
+        segmentedDataSource.titles = ["全部","待付款","待发货","待收货","待评价","退款"]
+        segmentedDataSource.isTitleColorGradientEnabled = true
+        segmentedDataSource.isItemSpacingAverageEnabled = true
+        segmentedDataSource.titleNormalColor = k333333Color
+        segmentedDataSource.titleSelectedColor = kFFA42FColor
+        segmentedDataSource.titleNormalFont = kRegularFont14!
+        segmentedDataSource.titleSelectedFont = kBoldFont14
+        
+        //reloadData(selectedIndex:)方法一定要调用,方法内部会刷新数据源数组
+        segmentedDataSource.reloadData(selectedIndex: 0)
+        return segmentedDataSource
+    }()
+    //3.初始化指示器indicator
+    lazy var indicator: JXSegmentedIndicatorLineView = {
+        let indicator = JXSegmentedIndicatorLineView()
+        indicator.indicatorColor = kFFA42FColor
+        indicator.indicatorHeight = 4
+        indicator.indicatorWidth = 20
+        return indicator
+    }()
+    
+    //4.初始化JXSegmentedListContainerView
+    lazy var listContainerView: JXSegmentedListContainerView = {
+        let listContainerView = JXSegmentedListContainerView(dataSource: self)
+        listContainerView.didAppearPercent = 0.01
+        return listContainerView
+    }()
+    
+}
 
-    // In a storyboard-based application, you will often want to do a little preparation before navigation
-    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
-        // Get the new view controller using segue.destination.
-        // Pass the selected object to the new view controller.
+extension OrderViewController : JXSegmentedViewDelegate {
+    //点击选中或者滚动选中都会调用该方法。适用于只关心选中事件,而不关心具体是点击还是滚动选中的情况。
+    func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
+        
+    }
+    
+    // 点击选中的情况才会调用该方法
+    func segmentedView(_ segmentedView: JXSegmentedView, didClickSelectedItemAt index: Int) {
+        //传递didClickSelectedItemAt事件给listContainerView,必须调用!!!
+        listContainerView.didClickSelectedItem(at: index)
+    }
+    
+    // 滚动选中的情况才会调用该方法
+    func segmentedView(_ segmentedView: JXSegmentedView, didScrollSelectedItemAt index: Int) {
+        
+    }
+    
+    // 正在滚动中的回调
+    func segmentedView(_ segmentedView: JXSegmentedView, scrollingFrom leftIndex: Int, to rightIndex: Int, percent: CGFloat) {
+        //传递scrolling事件给listContainerView,必须调用!!!
+        listContainerView.segmentedViewScrolling(from: leftIndex, to: rightIndex, percent: percent, selectedIndex: segmentedView.selectedIndex)
     }
-    */
+    
+    /// 是否允许点击选中目标index的item
+    func segmentedView(_ segmentedView: JXSegmentedView, canClickItemAt index: Int) -> Bool {
+        return true
+    }
+}
 
+extension OrderViewController :JXSegmentedListContainerViewDataSource {
+    
+    
+    func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int {
+        if let titleDataSource = segmentedView.dataSource as? JXSegmentedBaseDataSource {
+            return titleDataSource.dataSource.count
+        }
+        return 0
+    }
+    func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate {
+        let vc = OrderListViewController()
+        vc.orderVCType = orderVCType
+        return vc
+    }
 }

+ 14 - 4
RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderDetail/View/OrderDetailContactAddressTableViewCell.swift

@@ -10,7 +10,7 @@ import UIKit
 
 class OrderDetailContactAddressTableViewCell: UITableViewCell {
     
-    class func cellWith(tableView:UITableView,indexPath:IndexPath) -> UITableViewCell {
+    class func cellWith(tableView:UITableView,indexPath:IndexPath) -> OrderDetailContactAddressTableViewCell {
         let ID = "OrderDetailContactAddressTableViewCell"
         tableView.register(OrderDetailContactAddressTableViewCell.self, forCellReuseIdentifier: ID)
         let cell : OrderDetailContactAddressTableViewCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! OrderDetailContactAddressTableViewCell
@@ -75,7 +75,6 @@ class OrderDetailContactAddressTableViewCell: UITableViewCell {
         let contactLabel = UILabel()
         contactLabel.textColor = k333333Color
         contactLabel.font = kBoldFont15
-        contactLabel.text = "图图   158****7201"
         return contactLabel
     }()
     
@@ -83,7 +82,6 @@ class OrderDetailContactAddressTableViewCell: UITableViewCell {
         let addressTitleLabel = UILabel()
         addressTitleLabel.textColor = k666666Color
         addressTitleLabel.font = kRegularFont13
-        addressTitleLabel.text = "自提地址:"
         return addressTitleLabel
     }()
     
@@ -91,8 +89,20 @@ class OrderDetailContactAddressTableViewCell: UITableViewCell {
         let addressContentLabel = UILabel()
         addressContentLabel.textColor = k666666Color
         addressContentLabel.font = kRegularFont13
-        addressContentLabel.text = "西安市碑林区建设西路新城智能柜机"
         return addressContentLabel
     }()
+    
+    var orderModel: OrderModel? {
+        didSet {
+            if orderModel?.deliverType == 1 { //自提
+                addressTitleLabel.text = "自提地址:"
+            }else { //快递
+                addressTitleLabel.text = "快递地址:"
+
+            }
+            contactLabel.text = "\(orderModel?.name ?? "")   \(orderModel?.mobile ?? "")"
+            addressContentLabel.text = orderModel?.address
+        }
+    }
 
 }

+ 17 - 1
RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderDetail/View/OrderDetailExpressSelfMentionTableViewCell.swift

@@ -63,8 +63,24 @@ class OrderDetailExpressSelfMentionTableViewCell: UITableViewCell {
         let contentLabel = UILabel()
         contentLabel.textColor = k333333Color
         contentLabel.font = kRegularFont13
-        contentLabel.text = "快递"
+        
         return contentLabel
     }()
+    
+    var orderModel: OrderModel? {
+        didSet {
+            switch indexPath?.row {
+            case 0:
+                if orderModel?.deliverType == 1 { //自提
+                    contentLabel.text = "自提"
+                }else { //快递
+                    contentLabel.text = "快递"
+                }
+            default:
+                titleLabel.text = "自提点店长"
+                contentLabel.text = orderModel?.pickNodeContact
+            }
+        }
+    }
 
 }

+ 11 - 1
RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderDetail/View/OrderDetailInfoTableViewCell.swift

@@ -84,5 +84,15 @@ class OrderDetailInfoTableViewCell: UITableViewCell {
         copyButton.layer.borderWidth = 1
         return copyButton
     }()
-
+    
+    var titles : [String]? {
+        didSet {
+            titleLabel.text = titles?[(indexPath?.row)!]
+            if indexPath?.row == 0 {
+                copyButton.isHidden = true
+            }else {
+                copyButton.isHidden = false
+            }
+        }
+    }
 }

+ 36 - 4
RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderDetail/View/OrderDetailStatusTableViewCell.swift

@@ -65,16 +65,48 @@ class OrderDetailStatusTableViewCell: UITableViewCell {
         let statusLabel = UILabel()
         statusLabel.textColor = kffffffColor
         statusLabel.font = kBoldFont20
-        statusLabel.text = "已关闭"
         return statusLabel
     }()
     
     private lazy var statusImageView: UIImageView = {
         let statusImageView = UIImageView()
-        statusImageView.image = kImage(name: "order_good")
         return statusImageView
     }()
     
-
-
+    
+    var orderModel: OrderModel? {
+        didSet {
+                switch orderModel?.status {
+                case 0: //待付款
+                    statusLabel.text = "待付款"
+                    statusImageView.image = kImage(name: "order_payment")
+                    break
+                case 1: //待发货
+                    statusLabel.text = "待发货"
+                    statusImageView.image = kImage(name: "order_good")
+                case 2: //已发货/待收货
+                    statusLabel.text = "待收货"
+                    statusImageView.image = kImage(name: "order_good")
+                case 3: //配送中
+                    statusLabel.text = "配送中"
+                    statusImageView.image = kImage(name: "order_good")
+                case 4: //待自提
+                    statusLabel.text = "待自提"
+                    statusImageView.image = kImage(name: "order_pick")
+                case 5: //已自提
+                    statusLabel.text = "已自提"
+                    statusImageView.image = kImage(name: "order_pick_been")
+                    
+                case 6: //已完成
+                    statusLabel.text = "已完成"
+                    statusImageView.image = kImage(name: "order_done")
+                case 7: //已关闭
+                    statusLabel.text = "已关闭"
+                    statusImageView.image = kImage(name: "order_de")
+                    
+                default:
+                    break
+                }
+        }
+    }
 }

+ 21 - 7
RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderDetail/View/OrderDetailView.swift

@@ -10,12 +10,26 @@ import UIKit
 
 class OrderDetailView: BaseView {
 
-    /*
-    // Only override draw() if you perform custom drawing.
-    // An empty implementation adversely affects performance during animation.
-    override func draw(_ rect: CGRect) {
-        // Drawing code
+    override func setupViews() {
+        addSubview(tableView)
+        
     }
-    */
-
+    
+    override func setupLayouts() {
+        tableView.snp.makeConstraints { (make) in
+            make.top.edges.equalToSuperview()
+        }
+    }
+    
+    lazy var tableView: UITableView = {
+        let tableView = UITableView(frame: CGRect.zero, style: UITableView.Style.grouped)
+        tableView.separatorStyle = .none
+        tableView.backgroundColor = kf7f8faColor
+        tableView.estimatedRowHeight = 0.000001
+        tableView.estimatedSectionFooterHeight = 0.000001
+        tableView.estimatedSectionHeaderHeight = 0.000001
+        return tableView
+    }()
+    
 }
+

+ 140 - 10
RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderDetail/ViewController/OrderDetailViewController.swift

@@ -9,22 +9,152 @@
 import UIKit
 
 class OrderDetailViewController: BaseViewController {
+    
+    let orderModel : OrderModel? = nil
+    
+    var orderDetailModel : OrderModel?
+    
+    var titles = ["订单编码","下单时间","支付时间","支付方式","订单备注"]
+    
+    var contents = ["","","","",""]
 
     override func viewDidLoad() {
         super.viewDidLoad()
-
-        // Do any additional setup after loading the view.
+        setupViews()
+        setupLayouts()
+        setupData()
+    }
+    
+    override func setupViews() {
+        view.addSubview(orderDetailView)
+    }
+    
+    override func setupLayouts() {
+        orderDetailView.snp.makeConstraints { (make) in
+            make.top.equalToSuperview().offset(kNavBarTotalHeight)
+            make.top.left.right.equalToSuperview()
+        }
+    }
+    
+    override func setupData() {
+        orderDetailView.tableView.addHeaderWithHeader(withBeginRefresh: true, animation: false) {
+            [weak self] (page) in
+            self?.orderPurchaseDetailApi()
+        }
+    }
+    
+    
+    /// 订单详情接口
+    func orderPurchaseDetailApi() {
+        SwiftMoyaNetWorkServiceOrder.shared().orderPurchaseDetailApi(purchaseNo:orderModel?.purchaseNo ?? "") {
+            [weak self] (orderDetailModel) -> (Void) in
+            self?.orderDetailModel = orderDetailModel as? OrderModel
+            self?.orderDetailView.tableView.reloadData()
+        }
     }
     
+    private lazy var orderDetailView: OrderDetailView = {
+        let orderDetailView = OrderDetailView()
+        orderDetailView.tableView.dataSource = self
+        orderDetailView.tableView.delegate = self
+        return orderDetailView
+    }()
 
-    /*
-    // MARK: - Navigation
+}
 
-    // In a storyboard-based application, you will often want to do a little preparation before navigation
-    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
-        // Get the new view controller using segue.destination.
-        // Pass the selected object to the new view controller.
+extension OrderDetailViewController : UITableViewDelegate, UITableViewDataSource {
+    func numberOfSections(in tableView: UITableView) -> Int {
+        return 4
+    }
+    
+    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+        switch section {
+        case 0:
+            return 2
+        case 1:
+            if self.orderDetailModel?.deliverType == 1 { //自提
+                return 1
+            }else { // 快递
+                return 2
+            }
+        case 2:
+            if self.orderDetailModel?.detail?.isEmpty ?? true {
+                return 2
+            }else {
+                return 2 + (self.orderDetailModel?.detail?.count)!
+            }
+        case 3:
+            switch self.orderDetailModel?.status {
+            case 0: //  0-待付款
+                return 2
+            default: //1-待发货 2-已发货 3-配送中 4-待自提 5-已自提 6-已完成 7-已关闭
+                return titles.count
+            }
+        default:
+            return 0
+        }
+        
+    }
+    
+    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+        switch indexPath.section {
+        case 0:
+            if indexPath.row == 0 {
+                let cell = OrderDetailStatusTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+                cell.orderModel = self.orderDetailModel
+                return cell
+            }else {
+                let cell = OrderDetailContactAddressTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+                 cell.orderModel = self.orderDetailModel
+                return cell
+            }
+        case 1:
+            let cell = OrderDetailExpressSelfMentionTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+            cell.orderModel = self.orderDetailModel
+            return cell
+        case 2:
+            let detail = self.orderDetailModel?.detail
+            switch indexPath.row {
+            case 0:
+                let cell = OrderShopAndStatusTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+                cell.orderModel = self.orderDetailModel
+                return cell
+            case detail!.count + 1:
+                let cell = OrderTotalAmountTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+                cell.orderModel = self.orderDetailModel
+                return cell
+            default:
+                let detail = self.orderDetailModel?.detail
+                let cell = OrderProductTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+                cell.orderModelDetailModel = detail?[indexPath.row]
+                return cell
+            }
+        case 3:
+            let cell = OrderDetailInfoTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
+            return cell
+        default:
+            return UITableViewCell()
+        }
+    }
+    
+    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
+        return UITableView.automaticDimension
+    }
+    
+    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
+        return 10
+    }
+    
+    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
+        return nil
+    }
+    
+    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
+        return 0
+    }
+    
+    func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
+        return nil
     }
-    */
-
 }
+

+ 57 - 6
RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderRefunddetails/View/OrderRefunddetailsView.swift

@@ -10,12 +10,63 @@ import UIKit
 
 class OrderRefunddetailsView: BaseView {
 
-    /*
-    // Only override draw() if you perform custom drawing.
-    // An empty implementation adversely affects performance during animation.
-    override func draw(_ rect: CGRect) {
-        // Drawing code
+    override func setupViews() {
+        addSubview(tableView)
+        
     }
-    */
+    
+    override func setupLayouts() {
+        tableView.snp.makeConstraints { (make) in
+            make.top.edges.equalToSuperview()
+        }
+    }
+    
+    lazy var tableView: UITableView = {
+        let tableView = UITableView(frame: CGRect.zero, style: UITableView.Style.grouped)
+        tableView.separatorStyle = .none
+        tableView.backgroundColor = kf7f8faColor
+        tableView.dataSource = self
+        tableView.delegate = self
+        tableView.estimatedRowHeight = 0.000001
+        tableView.estimatedSectionFooterHeight = 0.000001
+        tableView.estimatedSectionHeaderHeight = 0.000001
+        return tableView
+    }()
+    
+}
 
+extension OrderRefunddetailsView : UITableViewDelegate, UITableViewDataSource {
+    func numberOfSections(in tableView: UITableView) -> Int {
+        
+        return 0
+    }
+    
+    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+        return 0
+    }
+    
+    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+        return UITableViewCell()
+    }
+    
+    
+    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
+        return UITableView.automaticDimension
+    }
+    
+    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
+        return 10
+    }
+    
+    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
+        return nil
+    }
+    
+    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
+        return 0
+    }
+    
+    func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
+        return nil
+    }
 }

+ 21 - 12
RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderRefunddetails/ViewController/OrderRefunddetailsViewController.swift

@@ -12,19 +12,28 @@ class OrderRefunddetailsViewController: BaseViewController {
 
     override func viewDidLoad() {
         super.viewDidLoad()
-
-        // Do any additional setup after loading the view.
+        setupViews()
+        setupLayouts()
+        setupData()
     }
     
-
-    /*
-    // MARK: - Navigation
-
-    // In a storyboard-based application, you will often want to do a little preparation before navigation
-    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
-        // Get the new view controller using segue.destination.
-        // Pass the selected object to the new view controller.
+    override func setupViews() {
+        view.addSubview(orderRefunddetailsView)
     }
-    */
-
+    
+    override func setupLayouts() {
+        orderRefunddetailsView.snp.makeConstraints { (make) in
+            make.top.equalToSuperview().offset(kNavBarTotalHeight)
+            make.top.left.right.equalToSuperview()
+        }
+    }
+    
+    override func setupData() {
+        
+    }
+    
+    private lazy var orderRefunddetailsView: OrderRefunddetailsView = {
+        let orderRefunddetailsView = OrderRefunddetailsView()
+        return orderRefunddetailsView
+    }()
 }

+ 3 - 8
RainbowPlanet/RainbowPlanet/Modules/ShoppingMallModule/ShoppingMall/ViewController/ShoppingMallListViewController.swift

@@ -52,15 +52,10 @@ class ShoppingMallListViewController: UIViewController {
             let cmsModel = cmsModel as! CMSModel
             self?.shoppingMallListView.cmsSectionModels = cmsModel.content
             
-            //任务队列
-            let queue = DispatchQueue(label: "requestHandler")
-            //分组
-            let group = DispatchGroup()
-            
-            queue.async(group: group) {
+            DispatchQueue.global(qos: .default).async {
                 self?.productHomeProductApi(cmsModel: cmsModel)
             }
-            
+        
         }
     }
     
@@ -95,7 +90,7 @@ class ShoppingMallListViewController: UIViewController {
                                     //异步调用返回前,就会一直阻塞在这
                                     sema.wait()
                                     NXLLog("wait\(index)")
-                                    
+                                
                                 }
                             DispatchQueue.main.async {
                                 self.shoppingMallListView.productModelsArrays = self.productModelsArrays

+ 138 - 0
RainbowPlanet/RainbowPlanet/Service/Model/OrderModel/OrderListModel.swift

@@ -0,0 +1,138 @@
+//
+//	OrderListModel.swift
+//	Model file generated using JSONExport: https://github.com/Ahmed-Ali/JSONExport
+
+import Foundation 
+import ObjectMapper
+
+
+class OrderListModel : NSObject, Mappable{
+
+	var data : [OrderModel]?
+	var pagination : PaginationModel?
+
+
+	class func newInstance(map: Map) -> Mappable?{
+		return OrderListModel()
+	}
+	required init?(map: Map){}
+	private override init(){}
+
+	func mapping(map: Map)
+	{
+		data <- map["data"]
+		pagination <- map["pagination"]
+		
+	}
+}
+
+class OrderModel : NSObject, Mappable{
+    
+    var address : String?
+    var amount : Int?
+    var cityId : Int?
+    var cityName : String?
+    var createdAt : String?
+    var deliverType : Int?
+    var detail : [OrderModelDetailModel]?
+    var expressNo : String?
+    var feedbackStatus : Int?
+    var id : Int?
+    var mobile : String?
+    var name : String?
+    var paidAt : String?
+    var patchNum : String?
+    var payType : String?
+    var pickNodeContact : String?
+    var purchaseNo : String?
+    var realPrice : Int?
+    var refundNo : String?
+    var remark : String?
+    var shopId : Int?
+    var shopName : String?
+    var status : Int?
+    var transPrice : Int?
+    
+    
+    class func newInstance(map: Map) -> Mappable?{
+        return OrderModel()
+    }
+    required init?(map: Map){}
+    private override init(){}
+    
+    func mapping(map: Map)
+    {
+        address <- map["address"]
+        amount <- map["amount"]
+        cityId <- map["city_id"]
+        cityName <- map["city_name"]
+        createdAt <- map["created_at"]
+        deliverType <- map["deliver_type"]
+        detail <- map["detail"]
+        expressNo <- map["express_no"]
+        feedbackStatus <- map["feedback_status"]
+        id <- map["id"]
+        mobile <- map["mobile"]
+        name <- map["name"]
+        paidAt <- map["paid_at"]
+        patchNum <- map["patch_num"]
+        payType <- map["pay_type"]
+        pickNodeContact <- map["pick_node_contact"]
+        purchaseNo <- map["purchase_no"]
+        realPrice <- map["real_price"]
+        refundNo <- map["refund_no"]
+        remark <- map["remark"]
+        shopId <- map["shop_id"]
+        shopName <- map["shop_name"]
+        status <- map["status"]
+        transPrice <- map["trans_price"]
+        
+    }
+}
+
+class OrderModelDetailModel : NSObject, Mappable{
+    
+    var amount : Int?
+    var categoryName1 : String?
+    var categoryName2 : String?
+    var categoryName3 : String?
+    var feedbackStatus : Int?
+    var id : Int?
+    var productId : Int?
+    var productImg : String?
+    var productName : String?
+    var productPrice : Int?
+    var realPrice : Int?
+    var receiveTime : String?
+    var skuId : Int?
+    var skuName : String?
+    var status : Int?
+    
+    
+    class func newInstance(map: Map) -> Mappable?{
+        return OrderModelDetailModel()
+    }
+    required init?(map: Map){}
+    private override init(){}
+    
+    func mapping(map: Map)
+    {
+        amount <- map["amount"]
+        categoryName1 <- map["category_name1"]
+        categoryName2 <- map["category_name2"]
+        categoryName3 <- map["category_name3"]
+        feedbackStatus <- map["feedback_status"]
+        id <- map["id"]
+        productId <- map["product_id"]
+        productImg <- map["product_img"]
+        productName <- map["product_name"]
+        productPrice <- map["product_price"]
+        realPrice <- map["real_price"]
+        receiveTime <- map["receive_time"]
+        skuId <- map["sku_id"]
+        skuName <- map["sku_name"]
+        status <- map["status"]
+        
+    }
+}
+

+ 4 - 2
RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceCMS/SwiftMoyaServiceCMSApi.swift

@@ -59,11 +59,13 @@ extension SwiftMoyaServiceCMSApi: TargetType {
     
     public var method: Moya.Method {
         switch self {
+        case .cmsTemplateSetPreview
+            :
+            return .post
         case .cmsTemplateSetTemplateName,
-             .cmsTemplateSetPreview,
              .cmsTemplateSetProductList
             :
-            return .post
+            return .get
         }
     }
     

+ 38 - 1
RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceOrder/SwiftMoyaNetWorkServiceOrder.swift

@@ -73,7 +73,44 @@ class SwiftMoyaNetWorkServiceOrder: NSObject {
         }
     }
     
+    // MARK: - 前台订单列表
+    /// 前台订单列表
+    ///
+    /// - Parameters:
+    ///   - status: 订单状态
+    ///   - completion: 回调
+    func orderPurchaseOrderListApi(page:Int = 1,status:Int = -1,completion: @escaping apiCallBack) {
+        var parameters = Dictionary<String,Any>()
+        
+        if status == -1 {
+            parameters.updateValue("", forKey: "search_status")
+        }else {
+            parameters.updateValue(status, forKey: "search_status")
+        }
+        parameters.updateValue(page, forKey: "page")
+        SwiftProgressHUD.shared().showWait()
+        SwiftMoyaNetWorkManager.shared().request(OrderListModel.self,target: MultiTarget(SwiftMoyaServiceOrderApi.orderPurchaseOrderList(parameters: parameters))) { (orderListModel) in
+            SwiftProgressHUD.shared().hide()
+            completion(orderListModel)
+        }
+
+    }
     
-    
+    // MARK: - 前台订单详情
+    /// 前台订单详情
+    ///
+    /// - Parameters:
+    ///   - status: 订单状态
+    ///   - completion: 回调
+    func orderPurchaseDetailApi(purchaseNo:String = "",completion: @escaping apiCallBack) {
+        var parameters = Dictionary<String,Any>()
+        parameters.updateValue(purchaseNo, forKey: "search_status")
+        SwiftProgressHUD.shared().showWait()
+        SwiftMoyaNetWorkManager.shared().request(OrderModel.self,target: MultiTarget(SwiftMoyaServiceOrderApi.orderPurchaseDetail(parameters: parameters))) { (orderModel) in
+            SwiftProgressHUD.shared().hide()
+            completion(orderModel)
+        }
+        
+    }
         
 }

+ 32 - 6
RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceApi/SwiftMoyaServiceOrder/SwiftMoyaServiceOrderApi.swift

@@ -13,18 +13,35 @@ import Moya
 /// 搜索、列表、热销
 public let kOrderCreateApi = "/order/purchase/create"
 
+// MARK: - 前台订单列表
+/// 前台订单列表
+public let kOrderPurchaseOrderListApi = "/order/purchase/orderList"
+
+// MARK: - 前台订单详情
+/// 前台订单详情
+public let kOrderPurchaseDetailApi = "/order/purchase/detail"
+
+
+
 /// 商品
 ///
 /// - productSearch: 搜索、列表、热销
+/// - orderPurchaseOrderList: 前台订单列表
+/// - orderPurchaseOrderList: 前台订单详情
 public enum SwiftMoyaServiceOrderApi {
     case orderCreate(parameters:Dictionary<String, Any>)
+    case orderPurchaseOrderList(parameters:Dictionary<String, Any>)
+    case orderPurchaseDetail(parameters:Dictionary<String, Any>)
+
 }
 
 extension SwiftMoyaServiceOrderApi: TargetType {
     
     public var baseURL: URL {
         switch self {
-        case .orderCreate
+        case .orderCreate,
+             .orderPurchaseOrderList,
+             .orderPurchaseDetail
             :
             return URL(string: kApiDataPrefix())!
         }
@@ -34,6 +51,10 @@ extension SwiftMoyaServiceOrderApi: TargetType {
         switch self {
         case .orderCreate:
             return kOrderCreateApi
+        case .orderPurchaseOrderList:
+            return kOrderPurchaseOrderListApi
+        case .orderPurchaseDetail:
+            return kOrderPurchaseDetailApi
         }
     }
     
@@ -47,9 +68,10 @@ extension SwiftMoyaServiceOrderApi: TargetType {
 //             .productCartAllSel
 //            :
 //            return .put
-//        case .productSearch,
-//            :
-//            return .get
+        case .orderPurchaseOrderList,
+             .orderPurchaseDetail
+            :
+            return .get
 //        case .productCartDelete
 //            :
 //            return .delete
@@ -59,7 +81,9 @@ extension SwiftMoyaServiceOrderApi: TargetType {
     // MARK: - 请求任务事件(这里附带上参数)
     public var task: Task {
         switch self {
-        case .orderCreate(var parameters)
+        case .orderCreate(var parameters),
+             .orderPurchaseOrderList(var parameters),
+             .orderPurchaseDetail(var parameters)
             :
             let sign = SwiftSign.shared().sign(signType:.AccessToken, parameters: parameters)
             parameters.updateValue(sign, forKey: "sign")
@@ -82,7 +106,9 @@ extension SwiftMoyaServiceOrderApi: TargetType {
     public var headers: [String : String]? {
         //同task,具体选择看后台 有application/x-www-form-urlencoded 、application/json
         switch self {
-        case .orderCreate
+        case .orderCreate,
+             .orderPurchaseOrderList,
+             .orderPurchaseDetail
             :
             return (headerParameters(headerType: .tokenHeader) as! [String : String])
         }

+ 6 - 2
RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceManger/SwiftMoyaNetWorkManager/SwiftMoyaNetWorkManager.swift

@@ -16,7 +16,7 @@ import RxCocoa
 import Result
 
 /// 超时时长
-private var requestTimeOut:Double = 20
+private var requestTimeOut:Double = 10
 
 ///网络请求的基本设置,这里可以拿到是具体的哪个网络请求,可以在这里做一些设置
 private let myEndpointClosure = { (target: MultiTarget) -> Endpoint in
@@ -34,7 +34,7 @@ private let myEndpointClosure = { (target: MultiTarget) -> Endpoint in
         task: task,
         httpHeaderFields: target.headers
     )
-    requestTimeOut = 20//每次请求都会调用endpointClosure 到这里设置超时时长 也可单独每个接口设置
+    requestTimeOut = 10//每次请求都会调用endpointClosure 到这里设置超时时长 也可单独每个接口设置
     
     return endpoint
 }
@@ -415,6 +415,8 @@ extension PrimitiveSequence where TraitType == SingleTrait, ElementType == Respo
                         SwiftProgressHUD.shared().showText(rootModel!.msg ?? "信息有误!!!", textAlignment: .left)
                         return Single<T?>.just(nil)
                     }else {
+                        NXLLog("\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)");
+                        SwiftProgressHUD.shared().showText(response.description)
                         return Single<T?>.just(nil)
                     }
                 }else if response.statusCode == 401 {
@@ -454,6 +456,8 @@ extension PrimitiveSequence where TraitType == SingleTrait, ElementType == Respo
                         SwiftProgressHUD.shared().showText(rootModel!.msg ?? "信息有误!!!", textAlignment: .left)
                         return Single<[T]?>.just(nil)
                     }else {
+                        NXLLog("\nstatusCode=\(response.statusCode)\nerror=\n\(response.description)");
+                        SwiftProgressHUD.shared().showText(response.description)
                         return Single<[T]?>.just(nil)
                     }
                 }else if response.statusCode == 401 {