CNLiveShopOrderExpressViewController.swift 10.4 KB
//
//  CNLiveShopOrderExpressViewController.swift
//  metaCode
//
//  Created by open on 2023/11/8.
//

import Foundation

typealias CNLiveShopOrderExpressCompleterBlock = () -> Void
class CNLiveShopOrderExpressViewController: CNLiveBaseViewController, UITableViewDelegate, UITableViewDataSource {
    
    let kShopBodyOrderExpressTableViewCellIdentifier = "kShopBodyOrderExpressTableViewCellIdentifier"
    lazy var tableView: UITableView = {
        let tableView = UITableView.init(frame: CGRect.zero, style: .plain)
        tableView.dataSource = self
        tableView.delegate = self
        tableView.backgroundColor = HexColor("f1f2f6")
        tableView.tableFooterView = UIView.init()
        tableView.separatorStyle = .none
        tableView.rowHeight = adapt_length(length: 50)
        tableView.register(ShopBodyOrderExpressTableViewCell.self, forCellReuseIdentifier: kShopBodyOrderExpressTableViewCellIdentifier)
        return tableView
    }()
    
    lazy var footerView: UIView = {
        let footerView = UIView.init(frame: CGRect(x: 0, y: KSreenHeight - get_system_tabbar_height(), width: KSreenWidth, height: get_system_tabbar_height()))
        footerView.backgroundColor = .white
        footerView.addSubview(cancelBtn)
        cancelBtn.snp.makeConstraints { make in
            make.width.equalTo(adapt_length(length: 130))
            make.height.equalTo(get_system_tabbar_ui_height())
            make.left.equalToSuperview()
            make.top.equalToSuperview()
        }
        footerView.addSubview(deliveryBtn)
        deliveryBtn.snp.makeConstraints { make in
            make.width.equalTo(KSreenWidth - adapt_length(length: 130))
            make.height.equalTo(get_system_tabbar_ui_height())
            make.right.equalToSuperview()
            make.top.equalToSuperview()
        }
        return footerView
    }()
    
    lazy var cancelBtn: UIButton = {
        let cancelBtn = UIButton.init(type: .custom)
        cancelBtn.backgroundColor = .white
        cancelBtn.setTitle("取消", for: .normal)
        cancelBtn.setTitleColor(HexColor("#3A3A3A"), for: .normal)
        cancelBtn.titleLabel?.font = medium_adapt_font(pointSize: 14)
        cancelBtn.addTarget(self, action: #selector(cancelBtnClick), for: .touchUpInside)
        return cancelBtn
    }()
    
    lazy var deliveryBtn: UIButton = {
        let deliveryBtn = UIButton.init()
        deliveryBtn.backgroundColor = HexColor("#65C368")
        deliveryBtn.setTitle(hiddenShop ? "确认修改" : "确认发货", for: .normal)
        deliveryBtn.titleLabel?.font = regular_adapt_font(pointSize: 15)
        deliveryBtn.setTitleColor(HexColor("#FFFFFF"), for: .normal)
        deliveryBtn.addTarget(self, action: #selector(sendBtnClick), for: .touchUpInside)
        return deliveryBtn
    }()
    
    lazy var dataArray: NSMutableArray = {
        let dataArray = NSMutableArray.init()
        return dataArray
    }()
    
    lazy var textArray: NSMutableArray = {
        let textArray = NSMutableArray.init()
        return textArray
    }()
    
    var selectStoreModel: ShopOrderStoreModel!
    var selectExpressModel: ShopOrderExpressModel!
    var hiddenShop: Bool! = false//是否隐藏店铺名称
    var _isExp: Bool! = false
    var expId: String! = ""// 发货单id (多物流快递有用)
    var expressModel: ShopOrderExpressModel!// 快递model
    var express_num: String! = ""
    var _goods_arr: NSArray!
    var _orderId: String!
    init(orderId: NSString,isExp: Bool,goods_arr: NSArray) {
        super.init(nibName:nil, bundle:nil)
        _orderId = orderId as String
        _isExp = isExp
        _goods_arr = goods_arr
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        navigationBarHidden = false
        titleName = "快递信息"
        
        loadDataSourceAction {}
        
        view.addSubview(tableView)
        tableView.snp.makeConstraints { make in
            make.top.equalTo(KNavigationHeight)
            make.left.right.equalToSuperview()
            make.bottom.equalToSuperview().offset(-get_system_tabbar_height())
        }
        
        view.addSubview(footerView)
    }
    
    func loadDataSourceAction(completerBlock: @escaping CNLiveShopOrderExpressCompleterBlock) {
        showMessage(message: "")
        CNLiveShopViewModel.requestSellerStore { [weak self] result, respStatue in
            if respStatue == .success {
                self!.dataArray.addObjects(from: (result as! [NSMutableArray]).first! as! [ShopOrderStoreModel])
                self!.textArray.addObjects(from: (result as! [NSMutableArray]).last as! [String])
                self!.tableView.reloadData()
                completerBlock()
            }
        }
    }
    
    @objc func sendBtnClick() {
        if !hiddenShop && (selectStoreModel == nil) {
            showMessage(message: "请选择店铺")
            return
        } else if (selectExpressModel == nil) {
            showMessage(message: "请选择快递公司")
            return
        } else if (!selectExpressModel.no!.isNotBlank()) {
            showMessage(message: "请输入快递单号")
            return
        } else if (!selectExpressModel.no!.allowWriteString(string: "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHRJKLMNOPQRSTUVWXYZ")) {
            showMessage(message: "请输入正确快递单号")
            return
        }
        showLoading(message: "")
        CNLiveShopViewModel.requestExpress(orderId: _orderId, expressId: selectExpressModel.id!, expressNum: selectExpressModel.no!, hiddenSop: hiddenShop, expId: expId, goodsList: _goods_arr, storeId: selectStoreModel.id!) { [weak self] result, respStatue in
            if respStatue == .success {
                showMessage(message: result as! String)
                if !self!.hiddenShop {
                    var dic: NSDictionary = [:]
                    if self!._isExp {
                        dic = ["selectNum":NSNumber(integerLiteral: 1)]
                    }
                    if self!.hiddenShop {
                        NotificationCenter.default.post(name: Notification.Name.ShopOrderStatue.CNLiveShopOrderEditExpressNotification, object: nil)
                    } else {
                        NotificationCenter.default.post(name: Notification.Name.ShopOrderStatue.CNLiveShopOrderSendExpressNotification, object: dic)
                    }
                }
            }
        }
    }
    
    @objc func cancelBtnClick() {
        self.navigationController?.popViewController(animated: true)
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

extension CNLiveShopOrderExpressViewController {
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return hiddenShop ? 2 : 3
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        guard let cell = tableView.dequeueReusableCell(withIdentifier: kShopBodyOrderExpressTableViewCellIdentifier) as? ShopBodyOrderExpressTableViewCell else {
            return ShopBodyOrderExpressTableViewCell()
        }
        var title: String = ""
        var content: String = ""
        var placeHolder: String = ""
        var contentIsEdit: Bool = false
        var isShowArrowImage: Bool = false
        var isShowLine: Bool = false
        if !hiddenShop && indexPath.row == 0 {
            title = "店铺名称"
            if selectStoreModel != nil {
                content = selectStoreModel.title!.isNotBlank() ? selectStoreModel.title! as String : "" as String
            }
            placeHolder = "请选择店铺"
            isShowArrowImage = true
            isShowLine = true
        } else if (indexPath.row == (hiddenShop ? 0 : 1)) {
            title = "快递公司"
            if selectExpressModel != nil {
                content = selectExpressModel.com!.isNotBlank() ? selectExpressModel.com! as String : "" as String
            }
            placeHolder = "请选择快递公司"
            isShowArrowImage = true
            isShowLine = true
        } else {
            title = "快递单号"
            if express_num.isNotBlank() {
                content = express_num! as String
                selectExpressModel.no = express_num as String
            } else {
                if selectExpressModel != nil {
                    content = (selectExpressModel.no != nil) ? selectExpressModel.no! : ""
                }
            }
            placeHolder = "请输入单号"
            contentIsEdit = true
        }
        cell.row = indexPath.row
        cell.setup(title: title, content: content, placeHolder: placeHolder, contentIsEdit: contentIsEdit, isShowArrowImage: isShowArrowImage, isShowLine: isShowLine)
        cell.clickBlock = {[weak self] content, row in
            if row == (self!.hiddenShop ? 1 : 2) {
                self!.selectExpressModel.no = content
            }
        }
        return cell
    }
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return adapt_length(length: 50)
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if !hiddenShop && indexPath.row == 0 {
            if dataArray.count > 0 {
                MineStandListAlertView.showStandListView(infos: textArray, name: "请选择店铺", show_type: .string) { [weak self] text in
                    let index = self!.textArray.index(of: text)
                    self!.selectStoreModel = (self!.dataArray[index] as! ShopOrderStoreModel)
                    self!.tableView.reloadData()
                }
            } else {
                loadDataSourceAction { [weak self] in
                    MineStandListAlertView.showStandListView(infos: self!.textArray, name: "请选择店铺", show_type: .string) { text in
                        let index = self!.textArray.index(of: text)
                        self!.selectStoreModel = (self!.dataArray[index] as! ShopOrderStoreModel)
                        self!.tableView.reloadData()
                    }
                }
            }
        } else if (indexPath.row == (self.hiddenShop ? 0 : 1)) {
            let vc = CNLiveShopOrderExpressFirmViewController.init()
            vc.completerBlock = {[weak self] model in
                self!.selectExpressModel = model
                self!.tableView.reloadData()
            }
            self.navigationController?.pushViewController(vc, animated: true)
        }
    }
}