// // InspectViewController.swift // LaserMethane // // Created by 203 on 2021/7/28. // import Alamofire import KeychainAccess import MJRefresh import SwiftyJSON import UIKit class InspectViewController: UIViewController { @IBOutlet var startTimePicker: UIDatePicker! @IBOutlet var endTimePicker: UIDatePicker! @IBOutlet var keywordsView: UITextField! @IBOutlet var inspectTableView: UITableView! private var keychain = Keychain() private var baseURL: String? private var rowsArray: [RowsModel] = [] private var dformatter = DateFormatter() private var pageOffSet: Int = 1 private var isUpdate: Bool = false private var startDate: String? private var endDate: String? private var keyWords: String? var valueDelegate: TransferValueDelegate! override func viewDidLoad() { super.viewDidLoad() title = "巡检记录查询" navigationController?.navigationBar.isTranslucent = false navigationController?.navigationBar.barTintColor = .systemBlue let dict: [NSAttributedString.Key: Any] = [NSAttributedString.Key.foregroundColor: UIColor.white] navigationController?.navigationBar.titleTextAttributes = dict navigationController?.navigationBar.tintColor = .white // Do any additional setup after loading the view. setupTableView() // 默认加载数据 loadData(keywords: "", startTime: "", endTime: "", offset: 1) } func loadData(keywords: String, startTime: String, endTime: String, offset: Int) { baseURL = keychain[Constant.ServerConfig.rawValue] let inspectListURL = baseURL! + Constant.inspectList.rawValue Alamofire.request(inspectListURL, method: .get, parameters: ["keywords": keywords, "startTime": startTime, "endTime": endTime, "limit": 15, "offset": offset], headers: ["token": keychain[Constant.Token.rawValue]!]).responseJSON { [self] response in switch response.result { case let .success(value): let inspectModel = InspectListModel(respJson: JSON(value)) if inspectModel.code == 200 { if isUpdate { rowsArray = inspectModel.data.rows } else { inspectModel.data.rows.forEach { model in rowsArray.append(model) } } // 必须要重新加载数据,否则不走数据绑定 inspectTableView.reloadData() } else { AlertHub.shared.showWaringAlert(controller: self, message: "查询失败,请重试") } case .failure: AlertHub.shared.showWaringAlert(controller: self, message: "未知错误") } } } func setupTableView() { inspectTableView.register(UINib(nibName: "ListCustomCell", bundle: nil), forCellReuseIdentifier: "listCustomCell") inspectTableView.dataSource = self inspectTableView.delegate = self inspectTableView.mj_header = MJRefreshNormalHeader { DispatchQueue.main.asyncAfter(deadline: .now() + 0.5, execute: { [self] in isUpdate = true pageOffSet = 1 loadData(keywords: "", startTime: "", endTime: "", offset: pageOffSet) inspectTableView.mj_header?.endRefreshing() }) } inspectTableView.mj_footer = MJRefreshBackNormalFooter { DispatchQueue.main.asyncAfter(deadline: .now() + 0.5, execute: { [self] in isUpdate = false pageOffSet += 1 loadData(keywords: keyWords ?? "", startTime: startDate ?? "", endTime: endDate ?? "", offset: pageOffSet) inspectTableView.mj_footer?.endRefreshing() }) } } @IBAction func startSearchAction(_ sender: Any) { dformatter.dateFormat = "yyyy-MM-dd" startDate = dformatter.string(from: startTimePicker.date) endDate = dformatter.string(from: endTimePicker.date) keyWords = keywordsView?.description loadData(keywords: keyWords ?? "", startTime: startDate ?? "", endTime: endDate ?? "", offset: 1) } } extension InspectViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { rowsArray.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell: ListCustomCell! = inspectTableView.dequeueReusableCell(withIdentifier: "listCustomCell", for: indexPath) as? ListCustomCell cell.selectionStyle = .none let row = (indexPath as NSIndexPath).row let model = rowsArray[row] cell.nameLabel.text = model.name cell.dateLabel.text = model.date cell.userLabel.text = model.user return cell } } extension InspectViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let mapViewController = InspectMapViewController(nibName: "InspectMapViewController", bundle: nil) // 委托代理 valueDelegate = mapViewController // 实现代理的方法,传值 let row = (indexPath as NSIndexPath).row let model = rowsArray[row] valueDelegate.transfer(controller: self, dic: ["id": model.id]) navigationController?.pushViewController(mapViewController, animated: true) } }