Commit 2fc86ec0 authored by pete谢兆麟's avatar pete谢兆麟

时间选择器修改

parent 65109d88
...@@ -336,7 +336,7 @@ extension YHEducationDetailVC : UITableViewDelegate, UITableViewDataSource { ...@@ -336,7 +336,7 @@ extension YHEducationDetailVC : UITableViewDelegate, UITableViewDataSource {
} else if detailItem.type == .graduateTime { } else if detailItem.type == .graduateTime {
title = "选择毕业日期" title = "选择毕业日期"
} }
YHDatePickView.show(type: .yyyymm, title: title) { YHDatePickView.show(type: .yyyymm, title: title, lastIsTaday: true) {
[weak self] dateStr in [weak self] dateStr in
guard let self = self else { return } guard let self = self else { return }
......
...@@ -288,7 +288,7 @@ extension YHQualificationDetailVC : UITableViewDelegate, UITableViewDataSource { ...@@ -288,7 +288,7 @@ extension YHQualificationDetailVC : UITableViewDelegate, UITableViewDataSource {
} else if detailItem.type == .conferTime { // 授权年份 } else if detailItem.type == .conferTime { // 授权年份
YHDatePickView.show(type: .yyyy, title:"选择授权年份".local) { YHDatePickView.show(type: .yyyy, title:"选择授权年份".local, lastIsTaday: true) {
[weak self] dateStr in [weak self] dateStr in
guard let self = self else { return } guard let self = self else { return }
......
...@@ -344,7 +344,7 @@ extension YHCertificateInfoController : UITableViewDelegate, UITableViewDataSour ...@@ -344,7 +344,7 @@ extension YHCertificateInfoController : UITableViewDelegate, UITableViewDataSour
} }
self.view?.endEditing(true) self.view?.endEditing(true)
YHDatePickView.show(type: .yyyymmdd, title: title) { YHDatePickView.show(type: .yyyymmdd, title: title, lastIsTaday: true) {
[weak self] dateStr in [weak self] dateStr in
print(dateStr) print(dateStr)
......
...@@ -460,7 +460,7 @@ extension YHChildBasicInfoVC : UITableViewDelegate, UITableViewDataSource { ...@@ -460,7 +460,7 @@ extension YHChildBasicInfoVC : UITableViewDelegate, UITableViewDataSource {
if detailItem.type == .stayHKDate { if detailItem.type == .stayHKDate {
title = "选择逗留日期" title = "选择逗留日期"
} }
YHDatePickView.show(type: .yyyymmdd, title:title) { [weak self] dateStr in YHDatePickView.show(type: .yyyymmdd, title:title, lastIsTaday: true) { [weak self] dateStr in
guard let self = self else { return } guard let self = self else { return }
if detailItem.type == .stayHKDate { if detailItem.type == .stayHKDate {
......
...@@ -418,7 +418,7 @@ extension YHChildPrimaryInfoVC : UITableViewDelegate, UITableViewDataSource { ...@@ -418,7 +418,7 @@ extension YHChildPrimaryInfoVC : UITableViewDelegate, UITableViewDataSource {
// 子女选择年满18岁则【是否随行至香港】默认选择否,不可修改 // 子女选择年满18岁则【是否随行至香港】默认选择否,不可修改
// 如果未年满18岁则【是否随行至香港】可选择【是/否】,可修改 // 如果未年满18岁则【是否随行至香港】可选择【是/否】,可修改
YHDatePickView.show(type: .yyyymmdd, title:"选择出生日期".local) { [weak self] date in YHDatePickView.show(type: .yyyymmdd, title:"选择出生日期".local, lastIsTaday: true) { [weak self] date in
guard let self = self else { return } guard let self = self else { return }
if detailItem.type == .birthday { if detailItem.type == .birthday {
......
...@@ -422,7 +422,7 @@ extension YHBrotherInfoVC : UITableViewDelegate, UITableViewDataSource { ...@@ -422,7 +422,7 @@ extension YHBrotherInfoVC : UITableViewDelegate, UITableViewDataSource {
let detailItem = item as! YHFormDetailItem let detailItem = item as! YHFormDetailItem
if detailItem.type == .birthday { // 出生日期 if detailItem.type == .birthday { // 出生日期
YHDatePickView.show(type: .yyyymmdd, title:"选择出生日期".local) { [weak self] dateStr in YHDatePickView.show(type: .yyyymmdd, title:"选择出生日期".local, lastIsTaday: true) { [weak self] dateStr in
guard let self = self else { return } guard let self = self else { return }
if detailItem.type == .birthday { if detailItem.type == .birthday {
......
...@@ -470,7 +470,7 @@ extension YHParentInfoVC : UITableViewDelegate, UITableViewDataSource { ...@@ -470,7 +470,7 @@ extension YHParentInfoVC : UITableViewDelegate, UITableViewDataSource {
let detailItem = item as! YHFormDetailItem let detailItem = item as! YHFormDetailItem
if detailItem.type == .birthday { // 出生日期 if detailItem.type == .birthday { // 出生日期
YHDatePickView.show(type: .yyyymmdd, title:"选择出生日期".local) { [weak self] dateStr in YHDatePickView.show(type: .yyyymmdd, title:"选择出生日期".local, lastIsTaday: true) { [weak self] dateStr in
guard let self = self else { return } guard let self = self else { return }
if detailItem.type == .birthday { if detailItem.type == .birthday {
......
...@@ -666,7 +666,7 @@ extension YHSpouseBasicInfoVC : UITableViewDelegate, UITableViewDataSource { ...@@ -666,7 +666,7 @@ extension YHSpouseBasicInfoVC : UITableViewDelegate, UITableViewDataSource {
} else if detailItem.type == .stayHKDate { } else if detailItem.type == .stayHKDate {
title = "选择逗留日期" title = "选择逗留日期"
} }
YHDatePickView.show(type: .yyyymmdd, title:title) { [weak self] dateStr in YHDatePickView.show(type: .yyyymmdd, title:title, lastIsTaday: true) { [weak self] dateStr in
guard let self = self else { return } guard let self = self else { return }
if detailItem.type == .birthday { if detailItem.type == .birthday {
......
...@@ -32,7 +32,26 @@ class YHDatePickView: UIView { ...@@ -32,7 +32,26 @@ class YHDatePickView: UIView {
var sureButton: UIButton! var sureButton: UIButton!
var lineView: UIView! var lineView: UIView!
var pickerView: UIPickerView! var pickerView: UIPickerView!
var lastIsTaday: Bool = false {
didSet {
if lastIsTaday {
guard let type = type else { return }
switch type {
case .yyyymmdd:
pickerView.selectRow(0, inComponent: 0, animated: true)
pickerView.selectRow(self.currentDateCom.month! - 1, inComponent: 1, animated: true)
pickerView.selectRow(self.currentDateCom.day! - 1, inComponent: 2, animated: true)
case .yyyymm:
pickerView.selectRow(self.currentDateCom.month! - 1, inComponent: 1, animated: true)
pickerView.selectRow(self.currentDateCom.month! - 1, inComponent: 1, animated: true)
case .yyyy:
pickerView.selectRow(0, inComponent: 0, animated: true)
}
} else {
pickerView.selectRow(100, inComponent: 0, animated: true)
}
}
}
private var currentDateCom: DateComponents = Calendar.current.dateComponents([.year, .month, .day], from: Date()) private var currentDateCom: DateComponents = Calendar.current.dateComponents([.year, .month, .day], from: Date())
// 日期分割符 eg: 2024-01-01 // 日期分割符 eg: 2024-01-01
...@@ -161,17 +180,14 @@ class YHDatePickView: UIView { ...@@ -161,17 +180,14 @@ class YHDatePickView: UIView {
make.height.equalTo(220) make.height.equalTo(220)
make.right.equalTo(-16) make.right.equalTo(-16)
} }
pickerView.selectRow(100, inComponent: 0, animated: true)
centerView.layoutIfNeeded() centerView.layoutIfNeeded()
let corner = UIRectCorner(rawValue: UIRectCorner.topLeft.rawValue | UIRectCorner.topRight.rawValue) let corner = UIRectCorner(rawValue: UIRectCorner.topLeft.rawValue | UIRectCorner.topRight.rawValue)
let path = UIBezierPath(roundedRect:bounds,byRoundingCorners: corner,cornerRadii:CGSizeMake(8, 8)); let path = UIBezierPath(roundedRect:bounds,byRoundingCorners: corner,cornerRadii:CGSizeMake(8, 8))
let layer = CAShapeLayer(); let layer = CAShapeLayer()
layer.frame = centerView.bounds; layer.frame = centerView.bounds
layer.path = path.cgPath; layer.path = path.cgPath
centerView.layer.mask = layer; centerView.layer.mask = layer
} }
@objc private func handleTap(_ sender: AnyObject?) { @objc private func handleTap(_ sender: AnyObject?) {
...@@ -179,11 +195,12 @@ class YHDatePickView: UIView { ...@@ -179,11 +195,12 @@ class YHDatePickView: UIView {
dismiss() dismiss()
} }
static func show(type:YHDateType, title: String? = nil, callBack: @escaping ((String) -> Void)) { static func show(type:YHDateType, title: String? = nil, lastIsTaday: Bool = false, callBack: @escaping ((String) -> Void)) {
let view = YHDatePickView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: KScreenHeight)) let view = YHDatePickView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: KScreenHeight))
view.type = type view.type = type
view.backDate = callBack view.backDate = callBack
view.title = title ?? "" view.title = title ?? ""
view.lastIsTaday = lastIsTaday
let window = UIApplication.shared.yhKeyWindow() let window = UIApplication.shared.yhKeyWindow()
window?.addSubview(view) window?.addSubview(view)
} }
...@@ -198,11 +215,23 @@ class YHDatePickView: UIView { ...@@ -198,11 +215,23 @@ class YHDatePickView: UIView {
var date = "" var date = ""
switch type { switch type {
case .yyyymmdd: case .yyyymmdd:
date = String(format: "%02ld%@%02ld%@%02ld", (self.currentDateCom.year!) - self.pickerView.selectedRow(inComponent: 0) + 100,Self.separator, self.pickerView.selectedRow(inComponent: 1) + 1,Self.separator, self.pickerView.selectedRow(inComponent: 2) + 1) if lastIsTaday {
date = String(format: "%02ld%@%02ld%@%02ld", (self.currentDateCom.year!) - self.pickerView.selectedRow(inComponent: 0),Self.separator, self.pickerView.selectedRow(inComponent: 1) + 1,Self.separator, self.pickerView.selectedRow(inComponent: 2) + 1)
} else {
date = String(format: "%02ld%@%02ld%@%02ld", (self.currentDateCom.year!) - self.pickerView.selectedRow(inComponent: 0) + 100,Self.separator, self.pickerView.selectedRow(inComponent: 1) + 1,Self.separator, self.pickerView.selectedRow(inComponent: 2) + 1)
}
case .yyyymm: case .yyyymm:
date = String(format: "%02ld%@%02ld", (self.currentDateCom.year!) - self.pickerView.selectedRow(inComponent: 0) + 100 ,Self.separator, self.pickerView.selectedRow(inComponent: 1) + 1) if lastIsTaday {
date = String(format: "%02ld%@%02ld", (self.currentDateCom.year!) - self.pickerView.selectedRow(inComponent: 0) ,Self.separator, self.pickerView.selectedRow(inComponent: 1) + 1)
} else {
date = String(format: "%02ld%@%02ld", (self.currentDateCom.year!) - self.pickerView.selectedRow(inComponent: 0) + 100 ,Self.separator, self.pickerView.selectedRow(inComponent: 1) + 1)
}
case .yyyy: case .yyyy:
date = String(format: "%02ld", (self.currentDateCom.year!) - self.pickerView.selectedRow(inComponent: 0) + 100) if lastIsTaday {
date = String(format: "%02ld", (self.currentDateCom.year!) - self.pickerView.selectedRow(inComponent: 0))
} else {
date = String(format: "%02ld", (self.currentDateCom.year!) - self.pickerView.selectedRow(inComponent: 0) + 100)
}
} }
if self.backDate != nil { if self.backDate != nil {
self.backDate!(date) self.backDate!(date)
...@@ -234,14 +263,27 @@ extension YHDatePickView: UIPickerViewDelegate,UIPickerViewDataSource { ...@@ -234,14 +263,27 @@ extension YHDatePickView: UIPickerViewDelegate,UIPickerViewDataSource {
} }
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if component == 0 { if component == 0 {
if lastIsTaday {
return 100
}
return 200 return 200
} else if component == 1 { } else if component == 1 {
if self.pickerView.selectedRow(inComponent: 0) == 0 {
if lastIsTaday {
return self.currentDateCom.month!
}
}
return 12 return 12
} else { } else {
let year: Int = pickerView.selectedRow(inComponent: 0) + currentDateCom.year! let year: Int = pickerView.selectedRow(inComponent: 0) + currentDateCom.year!
if type == .yyyy { if type == .yyyy {
return 0 return 0
} }
if self.pickerView.selectedRow(inComponent: 0) == 0 && self.pickerView.selectedRow(inComponent: 1) == self.currentDateCom.month! - 1 {
if lastIsTaday {
return self.currentDateCom.day!
}
}
let month: Int = pickerView.selectedRow(inComponent: 1) + 1 let month: Int = pickerView.selectedRow(inComponent: 1) + 1
let days: Int = howManyDays(inThisYear: year, withMonth: month) let days: Int = howManyDays(inThisYear: year, withMonth: month)
return days return days
...@@ -285,6 +327,9 @@ extension YHDatePickView: UIPickerViewDelegate,UIPickerViewDataSource { ...@@ -285,6 +327,9 @@ extension YHDatePickView: UIPickerViewDelegate,UIPickerViewDataSource {
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if component == 0 { if component == 0 {
if lastIsTaday {
return "\((currentDateCom.year!) - row)"
}
return "\((currentDateCom.year!) - row + 100)" return "\((currentDateCom.year!) - row + 100)"
} else if component == 1 { } else if component == 1 {
return "\(row + 1)" return "\(row + 1)"
...@@ -297,5 +342,9 @@ extension YHDatePickView: UIPickerViewDelegate,UIPickerViewDataSource { ...@@ -297,5 +342,9 @@ extension YHDatePickView: UIPickerViewDelegate,UIPickerViewDataSource {
if component == 1, self.type == .yyyymmdd { if component == 1, self.type == .yyyymmdd {
pickerView.reloadComponent(2) pickerView.reloadComponent(2)
} }
if component == 0, lastIsTaday {
pickerView.reloadComponent(1)
}
} }
} }
...@@ -435,18 +435,20 @@ class YHItemView: UIView { ...@@ -435,18 +435,20 @@ class YHItemView: UIView {
UIViewController.current?.present(addressPicker, animated: true, completion: nil) UIViewController.current?.present(addressPicker, animated: true, completion: nil)
case .time: case .time:
var title = "" var title = ""
var isLastDay = false
if dataSource?.id == .id10 || dataSource?.id == .id14 || dataSource?.id == .id19 { if dataSource?.id == .id10 || dataSource?.id == .id14 || dataSource?.id == .id19 {
title = "请选择签发日期" title = "请选择签发日期"
isLastDay = true
} }
if dataSource?.id == .id11 || dataSource?.id == .id15 || dataSource?.id == .id20 { if dataSource?.id == .id11 || dataSource?.id == .id15 || dataSource?.id == .id20 {
title = "请选择届满日期" title = "请选择届满日期"
isLastDay = false
} }
if dataSource?.id == .id24 { if dataSource?.id == .id24 {
title = "请选择出生日期" title = "请选择出生日期"
isLastDay = true
} }
YHDatePickView.show(type: .yyyymmdd, title: title) { date in YHDatePickView.show(type: .yyyymmdd, title: title, lastIsTaday: isLastDay) { date in
// let arr = date.components(separatedBy: YHDatePickView.separator)
// [yyyy, mm, dd] eg ["2024", "01", "20"]
self.dataSource?.message = date self.dataSource?.message = date
self.updateAllViews() self.updateAllViews()
if let block = self.block { if let block = self.block {
......
...@@ -155,7 +155,7 @@ extension YHOtherResidenceFillView { ...@@ -155,7 +155,7 @@ extension YHOtherResidenceFillView {
@objc func tapStartDate(_ gestureRecognizer: UIPanGestureRecognizer) { @objc func tapStartDate(_ gestureRecognizer: UIPanGestureRecognizer) {
YHDatePickView.show(type: .yyyymm,title: "请选择开始时间") { date in YHDatePickView.show(type: .yyyymm,title: "请选择开始时间", lastIsTaday: true) { date in
printLog(date) printLog(date)
self.startView.updateKeyName(name: "开始时间", keyValue: date) self.startView.updateKeyName(name: "开始时间", keyValue: date)
......
...@@ -289,7 +289,7 @@ class YHWorkIntroductionViewController: YHBaseViewController { ...@@ -289,7 +289,7 @@ class YHWorkIntroductionViewController: YHBaseViewController {
@objc func startClick() { @objc func startClick() {
view.endEditing(true) view.endEditing(true)
YHDatePickView.show(type: .yyyymmdd, title: "请选择开始时间") { date in YHDatePickView.show(type: .yyyymmdd, title: "请选择开始时间", lastIsTaday: true) { date in
if date > self.dataSource.project_end_time ?? "" && self.dataSource.project_end_time?.count ?? 0 > 0 { if date > self.dataSource.project_end_time ?? "" && self.dataSource.project_end_time?.count ?? 0 > 0 {
YHHUD.flash(message: "开始时间不能晚于结束时间") YHHUD.flash(message: "开始时间不能晚于结束时间")
} else { } else {
......
...@@ -403,19 +403,24 @@ class YHWorkExperienceItemView: UIView { ...@@ -403,19 +403,24 @@ class YHWorkExperienceItemView: UIView {
UIViewController.current?.present(addressPicker, animated: true, completion: nil) UIViewController.current?.present(addressPicker, animated: true, completion: nil)
case .time: case .time:
var title = "" var title = ""
var lastIsTaday = false
if dataSource?.id == .id9 { if dataSource?.id == .id9 {
title = "请选择入职日期" title = "请选择入职日期"
lastIsTaday = true
} }
if dataSource?.id == .id10 { if dataSource?.id == .id10 {
title = "请选择离职日期" title = "请选择离职日期"
lastIsTaday = true
} }
if dataSource?.id == .id21 { if dataSource?.id == .id21 {
title = "请选择高管在职开始时间" title = "请选择高管在职开始时间"
lastIsTaday = true
} }
if dataSource?.id == .id22 { if dataSource?.id == .id22 {
title = "请选择高管在职结束时间" title = "请选择高管在职结束时间"
lastIsTaday = true
} }
YHDatePickView.show(type: .yyyymm, title: title) { date in YHDatePickView.show(type: .yyyymm, title: title, lastIsTaday: lastIsTaday) { date in
self.dataSource?.message = date self.dataSource?.message = date
self.updateAllViews() self.updateAllViews()
if let block = self.block { if let block = self.block {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment