Commit 0853cb1c authored by Steven杜宇's avatar Steven杜宇

// 续签

parent a64f1b4d
...@@ -171,6 +171,7 @@ extension YHResignAppointTimeModifyViewController: UITableViewDelegate, UITableV ...@@ -171,6 +171,7 @@ extension YHResignAppointTimeModifyViewController: UITableViewDelegate, UITableV
guard let cell2 = tableView.dequeueReusableCell(withIdentifier: YHResignAppointTimeSingleCell.cellReuseIdentifier, for: indexPath) as? YHResignAppointTimeSingleCell else { guard let cell2 = tableView.dequeueReusableCell(withIdentifier: YHResignAppointTimeSingleCell.cellReuseIdentifier, for: indexPath) as? YHResignAppointTimeSingleCell else {
return UITableViewCell() return UITableViewCell()
} }
cell2.renewalId = self.renewalId
cell2.updateModel(self.oneGroupTimeSetting) cell2.updateModel(self.oneGroupTimeSetting)
cell2.switchBlock = { cell2.switchBlock = {
[weak self] isOn in [weak self] isOn in
...@@ -200,6 +201,7 @@ extension YHResignAppointTimeModifyViewController: UITableViewDelegate, UITableV ...@@ -200,6 +201,7 @@ extension YHResignAppointTimeModifyViewController: UITableViewDelegate, UITableV
guard let cell1 = tableView.dequeueReusableCell(withIdentifier: YHResignAppointTimeMultipleCell.cellReuseIdentifier, for: indexPath) as? YHResignAppointTimeMultipleCell else { guard let cell1 = tableView.dequeueReusableCell(withIdentifier: YHResignAppointTimeMultipleCell.cellReuseIdentifier, for: indexPath) as? YHResignAppointTimeMultipleCell else {
return UITableViewCell() return UITableViewCell()
} }
cell1.renewalId = self.renewalId
cell1.updateModel(model) cell1.updateModel(model)
cell1.selectUserBlock = { cell1.selectUserBlock = {
[weak self] member, isSelect, groupIndex in [weak self] member, isSelect, groupIndex in
...@@ -402,6 +404,20 @@ extension YHResignAppointTimeModifyViewController { ...@@ -402,6 +404,20 @@ extension YHResignAppointTimeModifyViewController {
return return
} }
YHHUD.show(.progress(message: "加载中..."))
self.viewModel.getResignSubmitTime(renewalId: self.renewalId, userIds: self.allAppointUsers.map { return $0.id }) { result in
YHHUD.hide()
if let result = result {
self.oneGroupTimeSetting.server_submit_deadLine_start = result.stay_deadline_start
self.oneGroupTimeSetting.server_submit_deadLine_end = result.stay_deadline
if !self.oneGroupTimeSetting.checkSubmitTime() {
self.tableView.reloadData()
return
}
self.requestSubmit()
}
}
} else { // 非一起递交 } else { // 非一起递交
for group in self.selectGroupArr { for group in self.selectGroupArr {
...@@ -423,8 +439,38 @@ extension YHResignAppointTimeModifyViewController { ...@@ -423,8 +439,38 @@ extension YHResignAppointTimeModifyViewController {
YHHUD.flash(message: "有分批未选择时间") YHHUD.flash(message: "有分批未选择时间")
return return
} }
YHHUD.show(.progress(message: "加载中..."))
let dispatchGroup = DispatchGroup()
for group in self.selectGroupArr {
dispatchGroup.enter()
self.viewModel.getResignSubmitTime(renewalId: self.renewalId, userIds: group.users.map { return $0.id }) { result in
if let result = result {
group.server_submit_deadLine_start = result.stay_deadline_start
group.server_submit_deadLine_end = result.stay_deadline
}
dispatchGroup.leave()
}
}
var isChecked = true
dispatchGroup.notify(queue: .main) {
YHHUD.hide()
for group in self.selectGroupArr {
group.isClickSubmit = true
if !group.checkSubmitTime() {
isChecked = false
}
}
if !isChecked {
self.tableView.reloadData()
return
}
self.requestSubmit()
}
} }
requestSubmit()
} }
func requestSubmit() { func requestSubmit() {
......
...@@ -305,7 +305,36 @@ class YHResignAppointTimeViewController: YHBaseViewController { ...@@ -305,7 +305,36 @@ class YHResignAppointTimeViewController: YHBaseViewController {
return return
} }
requestSubmit() YHHUD.show(.progress(message: "加载中..."))
let dispatchGroup = DispatchGroup()
for group in self.selectGroupArr {
dispatchGroup.enter()
self.viewModel.getResignSubmitTime(renewalId: self.renewalId, userIds: group.users.map { return $0.id }) { result in
if let result = result {
group.server_submit_deadLine_start = result.stay_deadline_start
group.server_submit_deadLine_end = result.stay_deadline
}
dispatchGroup.leave()
}
}
var isChecked = true
dispatchGroup.notify(queue: .main) {
YHHUD.hide()
for group in self.selectGroupArr {
group.isClickSubmit = true
if !group.checkSubmitTime() {
isChecked = false
}
}
if !isChecked {
self.tableView.reloadData()
return
}
self.requestSubmit()
}
} }
func requestSubmit() { func requestSubmit() {
...@@ -428,6 +457,7 @@ extension YHResignAppointTimeViewController: UITableViewDelegate, UITableViewDat ...@@ -428,6 +457,7 @@ extension YHResignAppointTimeViewController: UITableViewDelegate, UITableViewDat
guard let cell2 = tableView.dequeueReusableCell(withIdentifier: YHResignAppointTimeSingleCell.cellReuseIdentifier, for: indexPath) as? YHResignAppointTimeSingleCell else { guard let cell2 = tableView.dequeueReusableCell(withIdentifier: YHResignAppointTimeSingleCell.cellReuseIdentifier, for: indexPath) as? YHResignAppointTimeSingleCell else {
return UITableViewCell() return UITableViewCell()
} }
cell2.renewalId = self.renewalId
cell2.updateModel(model) cell2.updateModel(model)
cell2.switchBlock = { cell2.switchBlock = {
[weak self] isOn in [weak self] isOn in
...@@ -446,6 +476,7 @@ extension YHResignAppointTimeViewController: UITableViewDelegate, UITableViewDat ...@@ -446,6 +476,7 @@ extension YHResignAppointTimeViewController: UITableViewDelegate, UITableViewDat
guard let cell3 = tableView.dequeueReusableCell(withIdentifier: YHResignAppointTimeMultipleCell.cellReuseIdentifier, for: indexPath) as? YHResignAppointTimeMultipleCell else { guard let cell3 = tableView.dequeueReusableCell(withIdentifier: YHResignAppointTimeMultipleCell.cellReuseIdentifier, for: indexPath) as? YHResignAppointTimeMultipleCell else {
return UITableViewCell() return UITableViewCell()
} }
cell3.renewalId = self.renewalId
cell3.updateModel(model) cell3.updateModel(model)
cell3.selectUserBlock = { cell3.selectUserBlock = {
[weak self] member, isSelect, groupIndex in [weak self] member, isSelect, groupIndex in
......
...@@ -20,6 +20,9 @@ class YHResignAppointTimeSettingModel: SmartCodable { ...@@ -20,6 +20,9 @@ class YHResignAppointTimeSettingModel: SmartCodable {
var isClickSubmit: Bool = false var isClickSubmit: Bool = false
var isHaveAppointed: Bool = false var isHaveAppointed: Bool = false
var server_submit_deadLine_start: String = ""
var server_submit_deadLine_end: String = ""
func getLeaveHKTime() -> String { func getLeaveHKTime() -> String {
let format = "yyyy-MM-dd HH:mm" let format = "yyyy-MM-dd HH:mm"
if leave_hk_at.count <= format.count { if leave_hk_at.count <= format.count {
...@@ -40,4 +43,31 @@ class YHResignAppointTimeSettingModel: SmartCodable { ...@@ -40,4 +43,31 @@ class YHResignAppointTimeSettingModel: SmartCodable {
} }
func checkSubmitTime() -> Bool {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
guard let startDate = dateFormatter.date(from: server_submit_deadLine_start) else {
return false
}
guard let endDate = dateFormatter.date(from: server_submit_deadLine_end) else {
return false
}
// 将结束日期C设置为当天的23:59:59,确保包含整天
let calendar = Calendar.current
guard let endOfDay = calendar.date(bySettingHour: 23, minute: 59, second: 59, of: endDate) else {
return false
}
let dateTimeFormatter = DateFormatter()
dateTimeFormatter.dateFormat = "yyyy-MM-dd HH:mm"
guard let targetDate = dateTimeFormatter.date(from: self.ready_to_submit_at) else {
return false
}
// 判断目标日期是否在范围内 (包含边界)
return startDate <= targetDate && targetDate <= endOfDay
}
} }
...@@ -12,6 +12,8 @@ import AttributedString ...@@ -12,6 +12,8 @@ import AttributedString
class YHResignAppointTimeMultipleCell: UITableViewCell { class YHResignAppointTimeMultipleCell: UITableViewCell {
static let cellReuseIdentifier = "YHResignAppointTimeMultipleCell" static let cellReuseIdentifier = "YHResignAppointTimeMultipleCell"
var renewalId: Int = 0
let viewModel = YHResignAppointViewModel()
var model: YHResignAppointTimeSettingModel = YHResignAppointTimeSettingModel() var model: YHResignAppointTimeSettingModel = YHResignAppointTimeSettingModel()
...@@ -312,7 +314,20 @@ class YHResignAppointTimeMultipleCell: UITableViewCell { ...@@ -312,7 +314,20 @@ class YHResignAppointTimeMultipleCell: UITableViewCell {
leaveTimeItemView.detail = model.getLeaveHKTime() leaveTimeItemView.detail = model.getLeaveHKTime()
// 时间控件红色提示显示 // 时间控件红色提示显示
submitTimeItemView.isNeedShowErrorTips = (model.isClickSubmit && model.ready_to_submit_at.isEmpty) var isNeeShowSubmitTimeError = false
if model.isClickSubmit {
if model.ready_to_submit_at.isEmpty {
isNeeShowSubmitTimeError = true
submitTimeItemView.errorTips = "请选择在港递交时间"
} else if !model.server_submit_deadLine_start.isEmpty, !model.server_submit_deadLine_end.isEmpty {
if !model.checkSubmitTime() {
isNeeShowSubmitTimeError = true
submitTimeItemView.errorTips = "递交时间不在允许的范围内"
}
}
}
submitTimeItemView.isNeedShowErrorTips = isNeeShowSubmitTimeError
leaveTimeItemView.isNeedShowErrorTips = (model.isClickSubmit && model.leave_hk_at.isEmpty) leaveTimeItemView.isNeedShowErrorTips = (model.isClickSubmit && model.leave_hk_at.isEmpty)
leaveTimeItemView.removeFromSuperview() leaveTimeItemView.removeFromSuperview()
...@@ -354,6 +369,7 @@ class YHResignAppointTimeMultipleCell: UITableViewCell { ...@@ -354,6 +369,7 @@ class YHResignAppointTimeMultipleCell: UITableViewCell {
func getDateInfo(_ result: ((_ startTime: String, _ endTime: String) -> Void)?) { func getDateInfo(_ result: ((_ startTime: String, _ endTime: String) -> Void)?) {
/*
// 开始时间和结束时间 都有则都取服务器model时间 // 开始时间和结束时间 都有则都取服务器model时间
// 若开始时间为空则取当前时间 // 若开始时间为空则取当前时间
// 若结束时间为空则取当前时间+28天的时间 // 若结束时间为空则取当前时间+28天的时间
...@@ -387,6 +403,15 @@ class YHResignAppointTimeMultipleCell: UITableViewCell { ...@@ -387,6 +403,15 @@ class YHResignAppointTimeMultipleCell: UITableViewCell {
let duration = "START_DATE: \(startTimeStr) END_DATE: \(endTimeStr)" let duration = "START_DATE: \(startTimeStr) END_DATE: \(endTimeStr)"
printLog("\(duration)") printLog("\(duration)")
result?(startTimeStr, endTimeStr) result?(startTimeStr, endTimeStr)
*/
YHHUD.show(.progress(message: "加载中..."))
self.viewModel.getResignSubmitTime(renewalId: self.renewalId, userIds: self.model.users.map { return $0.id }) { model in
YHHUD.hide()
if let model = model {
result?(model.stay_deadline_start, model.stay_deadline)
}
}
} }
func compareDates(_ dateStr1: String, _ dateStr2: String) -> YHDateCompareResult { func compareDates(_ dateStr1: String, _ dateStr2: String) -> YHDateCompareResult {
......
...@@ -19,6 +19,8 @@ class YHResignAppointTimeSingleCell: UITableViewCell { ...@@ -19,6 +19,8 @@ class YHResignAppointTimeSingleCell: UITableViewCell {
static let cellReuseIdentifier = "YHResignAppointTimeSingleCell" static let cellReuseIdentifier = "YHResignAppointTimeSingleCell"
var model = YHResignAppointTimeSettingModel() var model = YHResignAppointTimeSettingModel()
var renewalId: Int = 0
let viewModel = YHResignAppointViewModel()
var switchBlock: ((Bool) -> Void)? var switchBlock: ((Bool) -> Void)?
var refreshBlock: (() -> Void)? var refreshBlock: (() -> Void)?
...@@ -170,7 +172,20 @@ class YHResignAppointTimeSingleCell: UITableViewCell { ...@@ -170,7 +172,20 @@ class YHResignAppointTimeSingleCell: UITableViewCell {
leaveTimeItemView.detail = model.getLeaveHKTime() leaveTimeItemView.detail = model.getLeaveHKTime()
// 时间控件红色提示显示 // 时间控件红色提示显示
submitTimeItemView.isNeedShowErrorTips = (model.isClickSubmit && model.ready_to_submit_at.isEmpty) var isNeeShowSubmitTimeError = false
if model.isClickSubmit {
if model.ready_to_submit_at.isEmpty {
isNeeShowSubmitTimeError = true
submitTimeItemView.errorTips = "请选择在港递交时间"
} else if !model.server_submit_deadLine_start.isEmpty, !model.server_submit_deadLine_end.isEmpty {
if !model.checkSubmitTime() {
isNeeShowSubmitTimeError = true
submitTimeItemView.errorTips = "递交时间不在允许的范围内"
}
}
}
submitTimeItemView.isNeedShowErrorTips = isNeeShowSubmitTimeError
leaveTimeItemView.isNeedShowErrorTips = (model.isClickSubmit && model.leave_hk_at.isEmpty) leaveTimeItemView.isNeedShowErrorTips = (model.isClickSubmit && model.leave_hk_at.isEmpty)
leaveTimeItemView.removeFromSuperview() leaveTimeItemView.removeFromSuperview()
...@@ -251,6 +266,7 @@ class YHResignAppointTimeSingleCell: UITableViewCell { ...@@ -251,6 +266,7 @@ class YHResignAppointTimeSingleCell: UITableViewCell {
func getDateInfo(_ result: ((_ startTime: String, _ endTime: String) -> Void)?) { func getDateInfo(_ result: ((_ startTime: String, _ endTime: String) -> Void)?) {
/*
// 开始时间和结束时间 都有则都取服务器model时间 // 开始时间和结束时间 都有则都取服务器model时间
// 若开始时间为空则取当前时间 // 若开始时间为空则取当前时间
// 若结束时间为空则取当前时间+28天的时间 // 若结束时间为空则取当前时间+28天的时间
...@@ -284,6 +300,15 @@ class YHResignAppointTimeSingleCell: UITableViewCell { ...@@ -284,6 +300,15 @@ class YHResignAppointTimeSingleCell: UITableViewCell {
let duration = "START_DATE: \(startTimeStr) END_DATE: \(endTimeStr)" let duration = "START_DATE: \(startTimeStr) END_DATE: \(endTimeStr)"
printLog("\(duration)") printLog("\(duration)")
result?(startTimeStr, endTimeStr) result?(startTimeStr, endTimeStr)
*/
YHHUD.show(.progress(message: "加载中..."))
self.viewModel.getResignSubmitTime(renewalId: self.renewalId, userIds: self.model.users.map { return $0.id }) { model in
YHHUD.hide()
if let model = model {
result?(model.stay_deadline_start, model.stay_deadline)
}
}
} }
func compareDates(_ dateStr1: String, _ dateStr2: String) -> YHDateCompareResult { func compareDates(_ dateStr1: String, _ dateStr2: String) -> YHDateCompareResult {
......
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