123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- //
- // OOAttanceTotalController.swift
- // O2Platform
- //
- // Created by 刘振兴 on 2018/5/14.
- // Copyright © 2018年 zoneland. All rights reserved.
- //
- import UIKit
- import Promises
- class OOAttanceTotalController: UITableViewController {
-
- private var viewModel:OOAttandanceViewModel = {
- return OOAttandanceViewModel()
- }()
-
- private lazy var headerView:OOAttandanceTotalHeaderView = {
- let view = Bundle.main.loadNibNamed("OOAttandanceTotalHeaderView", owner: self, options: nil)?.first as! OOAttandanceTotalHeaderView
- return view
- }()
-
- private var models:[OOAttandanceCheckinTotal] = []
-
- private var year: String = {
- let currentDate = Date()
- return String(currentDate.year)
- }()
- private var month: String = {
- let currentDate = Date()
- return currentDate.month > 9 ? "\(currentDate.month)" : "0\(currentDate.month)"
- }()
-
- override func viewDidLoad() {
- super.viewDidLoad()
- NotificationCenter.default.addObserver(self, selector: #selector(showDatePicker(_:)), name: OONotification.staticsTotal.notificationName, object: nil)
- tableView.register(UINib.init(nibName: "OOAttandanceTotalItemCell", bundle: nil), forCellReuseIdentifier: "OOAttandanceTotalItemCell")
- tableView.mj_header = MJRefreshNormalHeader(refreshingBlock: {
- self.getTotalDetailList()
- })
- getTotalDetailList()
- }
-
- @objc private func showDatePicker(_ notification:Notification) {
-
- let datePicker = DatePickerView.datePicker(style: .yearMonth, scrollToDate: Date()) { date in
- guard let d = date else { return }
- self.year = d.toString("yyyy")
- self.month = d.toString("MM")
- DispatchQueue.main.async {
- self.getTotalDetailList()
- }
- }
- datePicker.show()
-
- }
-
- func getTotalDetailList(){
- self.showLoading()
- viewModel.getCheckinCycle(self.year, self.month).then { (cycleDetail) -> Promise<(OOAttandanceAnalyze?, [OOAttandanceCheckinTotal])> in
- self.headerView.requestBean = cycleDetail
- return all(self.viewModel.getCheckinAnalyze(cycleDetail), self.viewModel.getCheckinTotal(cycleDetail))
- }.always {
- self.hideLoading()
- }.then { (result) in
- self.headerView.config(withItem: result.0)
- let list = result.1
- self.models.removeAll()
- if !list.isEmpty {
- let newList = list.sorted { (f, s) -> Bool in
- if let fd = f.recordDateString, let sd = s.recordDateString {
- return fd.toDate(formatter: "yyyy-MM-dd") < sd.toDate(formatter: "yyyy-MM-dd")
- }else {
- return false
- }
- }
- self.models.append(contentsOf: newList)
- }
- self.tableView.reloadData()
- if self.tableView.mj_header.isRefreshing() {
- self.tableView.mj_header.endRefreshing()
- }
- }.catch { (myError) in
- let customError = myError as? OOAppError
- self.showError(title: (customError?.failureReason)!)
-
- }
- }
-
- @objc func closeWindow() {
- self.tabBarController?.navigationController?.dismiss(animated: true, completion: nil)
- }
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- // Dispose of any resources that can be recreated.
- }
- // MARK: - Table view data source
- override func numberOfSections(in tableView: UITableView) -> Int {
- return 1
- }
- override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- return models.count
- }
-
- override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCell(withIdentifier: "OOAttandanceTotalItemCell", for: indexPath) as! (OOAttandanceTotalItemCell & Configurable)
- let item = models[indexPath.row]
- cell.config(withItem: item)
- return cell
- }
-
- override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
- return headerView
- }
-
- override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
- return 130.0
- }
-
- override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
- return UIView()
- }
-
- deinit {
- NotificationCenter.default.removeObserver(self)
- }
- }
|