From 1639e83c543ea728592570bfa824702e0dca1d63 Mon Sep 17 00:00:00 2001
From: younger_times <841720330@qq.com>
Date: 星期五, 28 七月 2023 14:20:18 +0800
Subject: [PATCH] fix

---
 WanPai/Root/Other/View/CommonDatePickerView.swift |  115 +++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 86 insertions(+), 29 deletions(-)

diff --git a/WanPai/Root/Other/View/CommonDatePickerView.swift b/WanPai/Root/Other/View/CommonDatePickerView.swift
index fa9e9f2..7b1662e 100644
--- a/WanPai/Root/Other/View/CommonDatePickerView.swift
+++ b/WanPai/Root/Other/View/CommonDatePickerView.swift
@@ -11,7 +11,7 @@
 class CommonDatePickerView: UIView,JQNibView{
 
     enum DatePickerType{
-        case YMD,YM
+        case YMD,YM,HHmm
     }
 
     @IBOutlet weak var view_container: UIView!
@@ -21,8 +21,10 @@
 
     private var years = [Int]()
     private var months = [1,2,3,4,5,6,7,8,9,10,11,12]
+    private var hours = [Int]()
+    private var minutes = [Int]()
     private var days = [Int]()
-    private var clouse:((Int,Int,Int?)->Void)?
+    private var clouse:((Int?,Int?,Int?,Int?,Int?)->Void)?
 
     override func awakeFromNib() {
         super.awakeFromNib()
@@ -39,23 +41,36 @@
         ///   - before: 向上N年
         ///   - after: 向下N年
         ///   - type: 显示状态
-    static func show(before:Int = 0,after:Int = 0,type:DatePickerType = .YM,clouse:@escaping (Int,Int,Int?)->Void){
+    static func show(before:Int = 0,after:Int = 0,type:DatePickerType = .YM,clouse:@escaping (Int?,Int?,Int?,Int?,Int?)->Void){
         let pickerView = CommonDatePickerView.jq_loadNibView()
         pickerView.type = type
         pickerView.clouse = clouse
 
-        if before > 0{
-            for i in 0...before{
-                pickerView.years.append(Date().jq_nowYear() - i)
+
+        if type == .YM || type == .YMD{
+            if before > 0{
+                for i in 0...before{
+                    pickerView.years.append(Date().jq_nowYear() - i)
+                }
+            }
+
+            if after > 0{
+                for i in 0...after{
+                    pickerView.years.append(Date().jq_nowYear() + i)
+                }
             }
         }
 
-        if after > 0{
-            for i in 0...after{
-                pickerView.years.append(Date().jq_nowYear() + i)
+        if type == .HHmm{
+            for i in 0...24{
+                pickerView.hours.append(i)
+            }
+
+            for i in 0...59{
+                pickerView.minutes.append(i)
             }
         }
-//        pickerView.years = pickerView.years.sorted()
+
 
         pickerView.frame = screnDelegate?.window?.frame ?? .zero
         screnDelegate?.window?.addSubview(pickerView)
@@ -82,9 +97,11 @@
     @IBAction func completeAction(_ sender: UIButton) {
 
 
-        var year:Int!
-        var month:Int!
+        var year:Int?
+        var month:Int?
         var day:Int?
+        var hour:Int?
+        var minute:Int?
 
         switch type{
             case .YMD:
@@ -94,6 +111,9 @@
             case .YM:
                 year = years[pickerView.selectedRow(inComponent: 0)]
                 month = months[pickerView.selectedRow(inComponent: 1)]
+            case .HHmm:
+                hour = hours[pickerView.selectedRow(inComponent: 0)]
+                minute = minutes[pickerView.selectedRow(inComponent: 1)]
             case .none:break
         }
 
@@ -103,7 +123,7 @@
             self.layoutIfNeeded()
         } completion: { _ in
             self.removeFromSuperview()
-            self.clouse?(year,month,day)
+            self.clouse?(year,month,day,hour,minute)
         }
     }
 
@@ -123,7 +143,6 @@
         }
         if component == 1{
             if type == .YMD{pickerView.reloadComponent(2)}
-
         }
     }
 }
@@ -131,24 +150,45 @@
 extension CommonDatePickerView:UIPickerViewDataSource{
     func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
 
-        if component == 0{return years.count
 
-        }else if component == 1{
-            if component == 1 && pickerView.selectedRow(inComponent: 0) == 0{
-                return Date().jq_nowMonth()
+        if component == 0{
+            switch type{
+                case .YM,.YMD:return years.count
+                case .HHmm:return hours.count
+                case .none:return 0
             }
-            return months.count
-        }else if component == 2{
-            let year = years[pickerView.selectedRow(inComponent: 0)]
-            let month = months[pickerView.selectedRow(inComponent: 1)]
-            return Date.jq_getDays(year, month)
         }
+
+        if component == 1{
+            switch type{
+                case .YM,.YMD:
+                    if component == 1 && pickerView.selectedRow(inComponent: 0) == 0{
+                        return Date().jq_nowMonth()
+                    }
+                    return months.count
+                case .HHmm:
+                    return minutes.count
+                case .none:
+                    return 0
+            }
+        }
+
+        if component == 2{
+            switch type{
+                case .YMD:
+                    let year = years[pickerView.selectedRow(inComponent: 0)]
+                    let month = months[pickerView.selectedRow(inComponent: 1)]
+                    return Date.jq_getDays(year, month)
+                default:return 0
+            }
+        }
+
         return 0
     }
 
     func numberOfComponents(in pickerView: UIPickerView) -> Int {
         switch type{
-            case .YM:return 2
+            case .YM,.HHmm:return 2
             case .YMD:return 3
             case .none:return 0
         }
@@ -160,11 +200,28 @@
 
     func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
         if component == 0{
-            return "\(years[row])年"
-        }else if component == 1{
-            return "\(months[row])月"
-        }else{
-            return "\(row + 1)日"
+            switch type{
+                case .YM,.YMD:return "\(years[row])年"
+                case .HHmm:return String(format: "%02ld时", hours[row])
+                default:return nil
+            }
         }
+
+        if component == 1{
+            switch type{
+                case .YM,.YMD:return "\(months[row])月"
+                case .HHmm:return String(format: "%02ld分", minutes[row])
+                default:return nil
+            }
+        }
+
+        if component == 2{
+            switch type{
+                case .YMD:return "\(row + 1)日"
+                default:return nil
+            }
+        }
+
+        return nil
     }
 }

--
Gitblit v1.7.1