Commit 8b0d7c3d authored by Steven杜宇's avatar Steven杜宇

// 赴港

parent f400c820
...@@ -19,8 +19,9 @@ class YHCertificateAppointViewController: YHBaseViewController { ...@@ -19,8 +19,9 @@ class YHCertificateAppointViewController: YHBaseViewController {
// 只装抢号中、已抢号 // 只装抢号中、已抢号
var items3: [YHAppointItem] = [] var items3: [YHAppointItem] = []
// 需要继续预约人员
var waitList: [YHAppointMemberGroupModel] = [] var waitList: [YHAppointMemberGroupModel] = []
// 预约成功人员
var successList: [YHAppointMemberGroupModel] = [] var successList: [YHAppointMemberGroupModel] = []
// 无需预约办证人员 // 无需预约办证人员
...@@ -61,6 +62,31 @@ class YHCertificateAppointViewController: YHBaseViewController { ...@@ -61,6 +62,31 @@ class YHCertificateAppointViewController: YHBaseViewController {
return tableView return tableView
}() }()
lazy var bottomBtn: UIButton = {
let btn = UIButton()
btn.backgroundColor = .brandMainColor
btn.setTitle("确认提交", for: .normal)
btn.setTitleColor(.white, for: .normal)
btn.titleLabel?.font = UIFont.PFSC_M(ofSize: 16)
btn.addTarget(self, action: #selector(didBottomBtnClicked), for: .touchUpInside)
btn.layer.cornerRadius = kCornerRadius3
return btn
}()
lazy var bottomView: UIView = {
let view = UIView()
view.isHidden = true
view.backgroundColor = .white
view.addSubview(bottomBtn)
bottomBtn.snp.makeConstraints { make in
make.left.equalTo(16)
make.right.equalTo(-16)
make.top.equalTo(8)
make.height.equalTo(48)
}
return view
}()
override func viewWillAppear(_ animated: Bool) { override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated) super.viewWillAppear(animated)
if !viewModel.isHKHolidaysOKFlag { if !viewModel.isHKHolidaysOKFlag {
...@@ -82,11 +108,18 @@ class YHCertificateAppointViewController: YHBaseViewController { ...@@ -82,11 +108,18 @@ class YHCertificateAppointViewController: YHBaseViewController {
self.gk_navTitle = "赴港办证预约" self.gk_navTitle = "赴港办证预约"
self.view.backgroundColor = .white self.view.backgroundColor = .white
self.view.addSubview(self.tableView) self.view.addSubview(self.tableView)
self.view.addSubview(bottomView)
self.tableView.snp.makeConstraints { make in self.tableView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview() make.left.right.equalToSuperview()
make.top.equalTo(k_Height_NavigationtBarAndStatuBar) make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
make.bottom.equalTo(bottomView.snp.top)
} }
self.bottomView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.height.equalTo(98)
}
requetHKPlaceList() requetHKPlaceList()
requestData() requestData()
} }
...@@ -192,6 +225,7 @@ class YHCertificateAppointViewController: YHBaseViewController { ...@@ -192,6 +225,7 @@ class YHCertificateAppointViewController: YHBaseViewController {
} }
func refreshData() { func refreshData() {
sections.removeAll() sections.removeAll()
if items1.count > 0 { if items1.count > 0 {
...@@ -205,8 +239,27 @@ class YHCertificateAppointViewController: YHBaseViewController { ...@@ -205,8 +239,27 @@ class YHCertificateAppointViewController: YHBaseViewController {
if items3.count > 0 { if items3.count > 0 {
sections.append(items3) sections.append(items3)
} }
self.tableView.reloadData() self.tableView.reloadData()
// 底部按钮更新
var isBottomViewHidden = true
var isNeedToPay = false // YES 展示确认提交 NO展示下一步去缴费
if self.reservationToHK == 0 { // 没有预约人员
if self.isNeedGoHK == 1 { // 要赴港办证
isBottomViewHidden = false
isNeedToPay = false
}
} else { // 有预约过
if waitList.count <= 0 { // 全部都预约完了
isBottomViewHidden = true
isNeedToPay = true
}
}
bottomView.isHidden = isBottomViewHidden
if !isBottomViewHidden {
let titleStr = isNeedToPay ? "下一步, 去缴费" : "确认提交"
bottomBtn.setTitle(titleStr, for: .normal)
}
} }
} }
...@@ -312,6 +365,11 @@ extension YHCertificateAppointViewController: UITableViewDelegate, UITableViewDa ...@@ -312,6 +365,11 @@ extension YHCertificateAppointViewController: UITableViewDelegate, UITableViewDa
let cell = tableView.dequeueReusableCell(withIdentifier: YHSelectApplicantGroupCell.cellReuseIdentifier, for: indexPath) as! YHSelectApplicantGroupCell let cell = tableView.dequeueReusableCell(withIdentifier: YHSelectApplicantGroupCell.cellReuseIdentifier, for: indexPath) as! YHSelectApplicantGroupCell
cell.dataModel = arr[indexPath.row] cell.dataModel = arr[indexPath.row]
cell.isShowSelectUserView = !self.isAllMembersGo cell.isShowSelectUserView = !self.isAllMembersGo
cell.refreshBlock = {
[weak self] in
guard let self = self else { return }
self.tableView.reloadData()
}
cell.selectBlock = { cell.selectBlock = {
[weak self] member, isSelect, groupIndex in [weak self] member, isSelect, groupIndex in
guard let self = self else { return } guard let self = self else { return }
...@@ -570,3 +628,43 @@ extension YHCertificateAppointViewController { ...@@ -570,3 +628,43 @@ extension YHCertificateAppointViewController {
} }
} }
extension YHCertificateAppointViewController {
@objc func didBottomBtnClicked() {
if self.isAllMembersGo { // 选择统一赴港
return
}
// 选择非统一赴港
var isOK = true
for item in self.items2 {
if let groupModel = item.model {
if groupModel.dateTye == 0 { // 选择具体日期
if groupModel.detailDateStr.isEmpty {
groupModel.isNeedCheck = true
isOK = false
}
} else { // 选择具体时段
if groupModel.startDateStr.isEmpty || groupModel.endDateStr.isEmpty {
groupModel.isNeedCheck = true
isOK = false
}
}
// 办证地点未选
if groupModel.hkPlace.id <= 0 {
groupModel.isNeedCheck = true
isOK = false
}
}
}
if !isOK { // 有日期或办证地点未选择
self.tableView.reloadData()
return
}
}
}
...@@ -62,4 +62,7 @@ class YHSelectGroupMemberModel { ...@@ -62,4 +62,7 @@ class YHSelectGroupMemberModel {
//办证地点 //办证地点
var hkPlace : YHMakeCertificatePlaceModel = YHMakeCertificatePlaceModel() var hkPlace : YHMakeCertificatePlaceModel = YHMakeCertificatePlaceModel()
// 需要检测日期和办证地点是否选择
var isNeedCheck = false
} }
...@@ -22,6 +22,29 @@ class YHInfoItemSelectSheetView: UIView { ...@@ -22,6 +22,29 @@ class YHInfoItemSelectSheetView: UIView {
var placeHolder: String = "" var placeHolder: String = ""
var errorTips: String = "" {
didSet {
errorLabel.text = errorTips
}
}
var isNeedShowErrorTips: Bool = false {
didSet {
errorLabel.isHidden = !isNeedShowErrorTips
errorLabel.snp.remakeConstraints { make in
make.top.equalTo(detailLabel.snp.bottom).offset(isNeedShowErrorTips ? 5 : 0)
make.left.equalTo(titleLabel)
make.right.equalTo(0)
make.bottom.equalTo(-16)
if !isNeedShowErrorTips {
make.height.equalTo(0)
}
}
self.setNeedsLayout()
self.layoutIfNeeded()
}
}
var detail: String = "" { var detail: String = "" {
didSet { didSet {
...@@ -46,11 +69,18 @@ class YHInfoItemSelectSheetView: UIView { ...@@ -46,11 +69,18 @@ class YHInfoItemSelectSheetView: UIView {
make.top.equalTo(16) make.top.equalTo(16)
make.left.equalTo(titleLabel.snp.right) make.left.equalTo(titleLabel.snp.right)
make.right.equalTo(arrowImgView.snp.left) make.right.equalTo(arrowImgView.snp.left)
make.bottom.equalTo(-16)
if isShowDetailOneline { if isShowDetailOneline {
make.height.equalTo(20) make.height.equalTo(20)
} }
} }
errorLabel.snp.remakeConstraints { make in
make.top.equalTo(detailLabel.snp.bottom).offset(0)
make.left.equalTo(titleLabel)
make.right.equalTo(0)
make.bottom.equalTo(-16)
}
self.setNeedsLayout() self.setNeedsLayout()
self.layoutIfNeeded() self.layoutIfNeeded()
} }
...@@ -78,6 +108,14 @@ class YHInfoItemSelectSheetView: UIView { ...@@ -78,6 +108,14 @@ class YHInfoItemSelectSheetView: UIView {
return label return label
}() }()
private lazy var errorLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
label.font = UIFont.PFSC_R(ofSize: 12)
label.textColor = .failColor
return label
}()
lazy var arrowImgView: UIImageView = { lazy var arrowImgView: UIImageView = {
let view = UIImageView(image: UIImage(named: "family_info_arrow")) let view = UIImageView(image: UIImage(named: "family_info_arrow"))
return view return view
...@@ -101,6 +139,7 @@ class YHInfoItemSelectSheetView: UIView { ...@@ -101,6 +139,7 @@ class YHInfoItemSelectSheetView: UIView {
self.addSubview(detailLabel) self.addSubview(detailLabel)
self.addSubview(arrowImgView) self.addSubview(arrowImgView)
self.addSubview(lineView) self.addSubview(lineView)
self.addSubview(errorLabel)
let tap = UITapGestureRecognizer(target: self, action: #selector(didSelectView)) let tap = UITapGestureRecognizer(target: self, action: #selector(didSelectView))
self.addGestureRecognizer(tap) self.addGestureRecognizer(tap)
...@@ -122,6 +161,12 @@ class YHInfoItemSelectSheetView: UIView { ...@@ -122,6 +161,12 @@ class YHInfoItemSelectSheetView: UIView {
make.top.equalTo(16) make.top.equalTo(16)
make.left.equalTo(titleLabel.snp.right) make.left.equalTo(titleLabel.snp.right)
make.right.equalTo(arrowImgView.snp.left) make.right.equalTo(arrowImgView.snp.left)
}
errorLabel.snp.makeConstraints { make in
make.top.equalTo(detailLabel.snp.bottom).offset(0)
make.left.equalTo(titleLabel)
make.right.equalTo(0)
make.bottom.equalTo(-16) make.bottom.equalTo(-16)
} }
......
...@@ -14,6 +14,8 @@ class YHSelectApplicantGroupCell: UITableViewCell { ...@@ -14,6 +14,8 @@ class YHSelectApplicantGroupCell: UITableViewCell {
static let cellReuseIdentifier = "YHSelectApplicantGroupCell" static let cellReuseIdentifier = "YHSelectApplicantGroupCell"
var detailText = "选择第一批赴港激活签证的申请人" var detailText = "选择第一批赴港激活签证的申请人"
var refreshBlock:(()->())?
var dataModel : YHAppointItem? { var dataModel : YHAppointItem? {
didSet { didSet {
updateUI() updateUI()
...@@ -120,7 +122,7 @@ class YHSelectApplicantGroupCell: UITableViewCell { ...@@ -120,7 +122,7 @@ class YHSelectApplicantGroupCell: UITableViewCell {
guard let self = self else { return } guard let self = self else { return }
if let model = dataModel?.model { if let model = dataModel?.model {
model.dateTye = index model.dateTye = index
self.updateUI() refreshBlock?()
} }
} }
return view return view
...@@ -132,6 +134,8 @@ class YHSelectApplicantGroupCell: UITableViewCell { ...@@ -132,6 +134,8 @@ class YHSelectApplicantGroupCell: UITableViewCell {
view.title = "具体日期" view.title = "具体日期"
view.placeHolder = "请选择具体日期" view.placeHolder = "请选择具体日期"
view.detail = "" view.detail = ""
view.isNeedShowErrorTips = false
view.errorTips = "请选择具体日期"
view.clickBlock = { view.clickBlock = {
[weak self] in [weak self] in
guard let self = self else { return } guard let self = self else { return }
...@@ -151,6 +155,8 @@ class YHSelectApplicantGroupCell: UITableViewCell { ...@@ -151,6 +155,8 @@ class YHSelectApplicantGroupCell: UITableViewCell {
let view = YHInfoItemSelectSheetView(frame: .zero) let view = YHInfoItemSelectSheetView(frame: .zero)
view.title = "港府办证地点" view.title = "港府办证地点"
view.placeHolder = "请选择" view.placeHolder = "请选择"
view.errorTips = "请选择港府办证地点"
view.isNeedShowErrorTips = false
view.detail = "" view.detail = ""
view.clickBlock = { view.clickBlock = {
[weak self] in [weak self] in
...@@ -164,7 +170,7 @@ class YHSelectApplicantGroupCell: UITableViewCell { ...@@ -164,7 +170,7 @@ class YHSelectApplicantGroupCell: UITableViewCell {
view.detail = selectPlace.name view.detail = selectPlace.name
if let model = dataModel?.model { if let model = dataModel?.model {
model.hkPlace = selectPlace model.hkPlace = selectPlace
self.updateUI() refreshBlock?()
} }
} }
listView.show() listView.show()
...@@ -310,36 +316,55 @@ private extension YHSelectApplicantGroupCell { ...@@ -310,36 +316,55 @@ private extension YHSelectApplicantGroupCell {
guard let model = dataModel else { guard let model = dataModel else {
return return
} }
let a: ASAttributedString = .init("*", .font(UIFont.PFSC_M(ofSize: 17)),.foreground(UIColor.failColor)) let a: ASAttributedString = .init("*", .font(UIFont.PFSC_M(ofSize: 17)),.foreground(UIColor.failColor))
let b: ASAttributedString = .init("请您确认第\(model.itemIndex + 1)批赴港信息", .font(UIFont.PFSC_M(ofSize: 17)),.foreground(UIColor.mainTextColor)) let b: ASAttributedString = .init("请您确认第\(model.itemIndex + 1)批赴港信息", .font(UIFont.PFSC_M(ofSize: 17)),.foreground(UIColor.mainTextColor))
titleLabel.attributed.text = a+b titleLabel.attributed.text = a+b
collectionView.reloadData() collectionView.reloadData()
let isShowSelectList = self.isShowSelectUserView let isShowSelectList = self.isShowSelectUserView
self.isShowSelectUserView = isShowSelectList self.isShowSelectUserView = isShowSelectList
// 时间选择UI更新 // 时间选择UI更新
optionsView.selectIndex = 0 optionsView.selectIndex = 0
var isSelectDate = false
if let model = dataModel?.model { if let model = dataModel?.model {
timeSelectView.title = model.dateTye == 0 ? "具体日期" : "具体时段"
if model.dateTye == 0 { // 具体时间 if model.dateTye == 0 { // 具体时间
optionsView.selectIndex = 0 optionsView.selectIndex = 0
timeSelectView.placeHolder = "请选择具体日期" timeSelectView.placeHolder = "请选择具体日期"
timeSelectView.errorTips = "请选择具体日期"
timeSelectView.detail = model.detailDateStr timeSelectView.detail = model.detailDateStr
if !model.detailDateStr.isEmpty {
isSelectDate = true
}
} else { // 具体时段 } else { // 具体时段
optionsView.selectIndex = 1 optionsView.selectIndex = 1
timeSelectView.placeHolder = "请选择具体时段" timeSelectView.placeHolder = "请选择具体时段"
timeSelectView.errorTips = "请选择具体时段"
if !model.startDateStr.isEmpty, !model.endDateStr.isEmpty { if !model.startDateStr.isEmpty, !model.endDateStr.isEmpty {
self.timeSelectView.detail = "\(model.startDateStr) ~ \(model.endDateStr)" self.timeSelectView.detail = "\(model.startDateStr) ~ \(model.endDateStr)"
isSelectDate = true
} else { } else {
self.timeSelectView.detail = "" self.timeSelectView.detail = ""
} }
} }
// 办证地点更新 // 办证地点更新
self.locationSelectView.detail = model.hkPlace.name locationSelectView.detail = model.hkPlace.name
// 办证地点是否显示红色错误提示
locationSelectView.isNeedShowErrorTips = (model.isNeedCheck && model.hkPlace.name.isEmpty)
// 办证地点是否显示红色错误提示
timeSelectView.isNeedShowErrorTips = (model.isNeedCheck && !isSelectDate)
self.setNeedsLayout()
self.layoutIfNeeded()
} }
} }
...@@ -376,6 +401,7 @@ private extension YHSelectApplicantGroupCell { ...@@ -376,6 +401,7 @@ private extension YHSelectApplicantGroupCell {
timeSelectView.detail = dateStr timeSelectView.detail = dateStr
} }
} }
refreshBlock?()
} }
} }
...@@ -405,6 +431,7 @@ private extension YHSelectApplicantGroupCell { ...@@ -405,6 +431,7 @@ private extension YHSelectApplicantGroupCell {
let _ = showHKHolidayWarmTips(startDateStr: startDateStr,endDateStr: endDateStr) let _ = showHKHolidayWarmTips(startDateStr: startDateStr,endDateStr: endDateStr)
} }
refreshBlock?()
} }
view.show() view.show()
} }
...@@ -416,9 +443,6 @@ private extension YHSelectApplicantGroupCell { ...@@ -416,9 +443,6 @@ private extension YHSelectApplicantGroupCell {
let dateFormatter = DateFormatter() let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd" dateFormatter.dateFormat = "yyyy-MM-dd"
if let startDate = dateFormatter.date(from: start), if let startDate = dateFormatter.date(from: start),
let endDate = dateFormatter.date(from: end) { let endDate = dateFormatter.date(from: end) {
let (arrString,allDates) = getAllDates(from: startDate, to: endDate) let (arrString,allDates) = getAllDates(from: startDate, to: endDate)
......
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