ソースを参照

快递地址流程 -- reFixed

Chris 5 年 前
コミット
d057927088

+ 13 - 0
RainbowPlanet/RainbowPlanet/Modules/MineModule/EditExpressAddress/ViewController/EditExpressAddressViewController.swift

@@ -12,9 +12,15 @@ class EditExpressAddressViewController: BaseViewController {
     
     var expressAddresModel: ExpressAddresModel?
     
+    typealias SaveAddressClosure = () -> Void
+    var saveAddressClosure : SaveAddressClosure?
+    
     // 是否由支付订单页面进入
     var isFromOrderPay: Bool = false
     
+    // 地址列表中总条数
+    var listCount: Int?
+    
     // 新增/编辑
     var isAddNewAddress: Bool = true {
         didSet {
@@ -53,6 +59,10 @@ class EditExpressAddressViewController: BaseViewController {
         editExpressAddressView.expressAddresModel = expressAddresModel
         editExpressAddressView.deleteClosure = {
             [weak self] in
+            if self!.listCount! <= 1 {
+                SwiftProgressHUD.shared().showText("至少需保留一条收货地址")
+                return
+            }
             
             AlertSheetView.alert(title: "是否删除该地址", cancelTitle: "取消", sureTitle: "确定", cancelBlock: { (popupView, int, string) in
                 
@@ -90,6 +100,9 @@ class EditExpressAddressViewController: BaseViewController {
         expressAddresModel:expressAddresModel!) {
             [weak self] (data) -> (Void) in
             if self!.isFromOrderPay {
+                if let saveAddressClosure = self?.saveAddressClosure {
+                    saveAddressClosure()
+                }
                 self?.navigationController?.popViewController(animated: true)
             } else {
                 self?.popVC()

+ 4 - 4
RainbowPlanet/RainbowPlanet/Modules/MineModule/ExpressAddressList/View/ExpressAddressListView.swift

@@ -13,8 +13,8 @@ class ExpressAddressListView: BaseView {
     typealias DidSelectRowClosure = (_ indexPath: IndexPath) -> Void
     var didSelectRowClosure : DidSelectRowClosure?
     
-    typealias EditClosure = (_ indexPath: IndexPath) -> Void
-    var editClosure: EditClosure?
+    typealias EditTransClosure = (_ indexPath: IndexPath, _ listCount: Int) -> Void
+    var editTransClosure: EditTransClosure?
     
     var addressManagerListModel : AddressManagerListModel? {
         didSet {
@@ -63,8 +63,8 @@ extension ExpressAddressListView: UITableViewDelegate,UITableViewDataSource {
         cell.expressAddresModel = self.addressManagerListModel?.expressAddress?[indexPath.row]
         cell.editClosure = {
             [weak self] indexPath in
-            if let editClosure = self?.editClosure {
-                editClosure(indexPath)
+            if let editTransClosure = self?.editTransClosure {
+                editTransClosure(indexPath, (self?.addressManagerListModel?.expressAddress!.count)!)
             }
         }
         return cell

+ 11 - 3
RainbowPlanet/RainbowPlanet/Modules/MineModule/ExpressAddressList/ViewController/ExpressAddressListViewController.swift

@@ -18,6 +18,10 @@ class ExpressAddressListViewController: BaseViewController {
     
     // 是否由支付订单页面进入
     var isFromOrderPay: Bool = false
+    
+    // 快递选中地址の回调
+    typealias SelectAddressClosure = (_ expAddrMdl: ExpressAddresModel) -> Void
+    var selectAddressClosure : SelectAddressClosure?
    
     override func viewDidLoad() {
         super.viewDidLoad()
@@ -32,7 +36,7 @@ class ExpressAddressListViewController: BaseViewController {
         navigationBar.rightButton.titleLabel!.font = kRegularFont14
         navigationBar.onClickRightButton = {
             [weak self] in
-           let vc = EditExpressAddressViewController()
+            let vc = EditExpressAddressViewController()
             vc.isAddNewAddress = true
             self?.navigationController?.pushViewController(vc, animated: true)
         }
@@ -58,17 +62,21 @@ class ExpressAddressListViewController: BaseViewController {
     
     private lazy var expressAddressListView: ExpressAddressListView = {
         let expressAddressListView = ExpressAddressListView()
-        expressAddressListView.editClosure = {
-            [weak self] indexPath in
+        expressAddressListView.editTransClosure = {
+            [weak self] (indexPath, listCount) in
             let vc = EditExpressAddressViewController()
             vc.isAddNewAddress = false
             vc.expressAddresModel = self?.addressManagerListModel?.expressAddress![indexPath.row]
+            vc.listCount = listCount
             self?.navigationController?.pushViewController(vc, animated: true)
         }
         expressAddressListView.didSelectRowClosure = {
             [weak self] indexPath in
              let expressAddresModel = self?.addressManagerListModel?.expressAddress![indexPath.row]
             self?.userAddressIsDefaultApi(id: expressAddresModel?.id ?? 0)
+            if let selectAddressClosure = self?.selectAddressClosure {
+                selectAddressClosure(expressAddresModel!)
+            }
             NotificationCenter.default.post(name: NSNotification.Name("editAddress"), object: nil)
         }
         return expressAddressListView

+ 14 - 6
RainbowPlanet/RainbowPlanet/Modules/OrderModule/OrderPayOrder/ViewController/ShoppingCartPayOrderController.swift

@@ -37,9 +37,6 @@ class ShoppingCartPayOrderController: BaseViewController {
         super.viewDidLoad()
         setupViews()
         setupLayouts()
-    }
-    
-    override func viewWillAppear(_ animated: Bool) {
         setupData()
     }
     
@@ -73,11 +70,22 @@ class ShoppingCartPayOrderController: BaseViewController {
         orderPayView.jumpNavBlock = {
             [weak self] (jumpType) in
             switch jumpType {
-            case WillJumpType.expressAddInfo,
-                 WillJumpType.expressManageInfo
-                 :
+            case WillJumpType.expressAddInfo:
+                let vc = EditExpressAddressViewController()
+                vc.isFromOrderPay = true
+                vc.isAddNewAddress = true                
+                vc.saveAddressClosure = {
+                    [weak self] () in
+                    self?.setupData()
+                }
+                self?.navigationController?.pushViewController(vc, animated: true)
+            case WillJumpType.expressManageInfo:
                 let vc = ExpressAddressListViewController()
                 vc.isFromOrderPay = true
+                vc.selectAddressClosure = {
+                    [weak self] (expressAddresModel) in
+                    self?.orderPayView.expressAddressMdl = expressAddresModel
+                }
                 self?.navigationController?.pushViewController(vc, animated: true)
             case WillJumpType.selfAddInfo,
                  WillJumpType.selfPersonalInfo