Commit 383060cd authored by David黄金龙's avatar David黄金龙

Merge branch 'develop' of http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS into develop

* 'develop' of http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS:
  //  赴港
  //  预约
  //  赴港
  //  重新预约逻辑
  //  赴港
  //  预约赴港
parents 2c18f7ce 5f9f3637
......@@ -168,7 +168,7 @@ GEM
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
fastlane-plugin-pgyer (0.2.9)
fastlane-plugin-upload_to_bugly (0.1.2)
fastlane-plugin-versioning (0.5.2)
fastlane-plugin-versioning (0.6.0)
ffi (1.16.3)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
......@@ -294,4 +294,4 @@ DEPENDENCIES
fastlane-plugin-versioning
BUNDLED WITH
2.5.14
2.5.9
......@@ -258,6 +258,10 @@ extension YHServiceOrderListView : UITableViewDelegate,UITableViewDataSource {
navigationController?.pushViewController(vc)
} else if model.type == 24 {
//赴港时间预约
let vc = YHCertificateAppointViewController()
vc.orderId = orderID
self.navigationController?.pushViewController(vc)
} else if model.type == 25 {
//赴港行程指引
} else if model.type == 26 {
......
......@@ -8,16 +8,25 @@
import UIKit
enum YHAppointButtnStatus: Int {
case hidden = 0 // 隐藏按钮
case confirmSubmitAppoint = 1 // 显示确认提交
case nextStepToPay = 2 // 显示下一步去缴费
}
class YHCertificateAppointViewController: YHBaseViewController {
var orderId: Int = 0
var bottomStatus: YHAppointButtnStatus = .hidden
var sections: [[YHAppointItem]] = []
// 第一个section数据组
var items1: [YHAppointItem] = []
// 只装选人的cell
var items2: [YHAppointItem] = []
// 只装抢号中、已抢号
var items3: [YHAppointItem] = []
var normalAppointInfoArr: [YHAppointItem] = []
// 第二个section 只装选人的cell
var selectMemberGroupArr: [YHAppointItem] = []
// 第三个section 只装抢号中、已抢号
var grabbingNumInfoArr: [YHAppointItem] = []
// 第四个section 只装已抢号
var grabbedNumInfoArr:[YHAppointItem] = []
// 需要继续预约人员
var waitList: [YHAppointMemberGroupModel] = []
......@@ -27,9 +36,10 @@ class YHCertificateAppointViewController: YHBaseViewController {
// 无需预约办证人员
var noNeedAppointMembers:[YHHKMemberModel] = []
// 需要办证人员
// 需要预约办证人员
var waitAppointMembers:[YHHKMemberModel] = []
let viewModel = YHCerAppointViewModel()
var viewModel = YHCerAppointViewModel()
let bottomViewHeight = 98.0
// 是否赴港办证
var isNeedGoHK: Int = 2 // 0不需要 1需要赴港 2没有选择
......@@ -117,14 +127,14 @@ class YHCertificateAppointViewController: YHBaseViewController {
}
self.bottomView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.height.equalTo(98)
make.height.equalTo(0)
}
requetHKPlaceList()
requestData()
}
func requestData() {
func requestData(completion:(()->())? = nil) {
YHHUD.show(.progress(message: "加载中..."))
self.requetIsGoToHK { // 请求是否赴港办证选项和是否已预约过
self.requetAppointMembers { // 请求赴港办证人员名单
......@@ -133,10 +143,12 @@ class YHCertificateAppointViewController: YHBaseViewController {
self.requestAppointResultList { // 请求预约结果
YHHUD.hide()
self.updateData()
completion?()
}
} else { // 没有预约过
YHHUD.hide()
self.updateData()
completion?()
}
}
}
......@@ -147,13 +159,14 @@ class YHCertificateAppointViewController: YHBaseViewController {
YHHUD.hide()
sections.removeAll()
items1.removeAll()
items2.removeAll()
items3.removeAll()
normalAppointInfoArr.removeAll()
selectMemberGroupArr.removeAll()
grabbingNumInfoArr.removeAll()
grabbedNumInfoArr.removeAll()
// *赴港办证
let item1 = YHAppointItem(type: .goHKMakeCertificate)
items1.append(item1)
normalAppointInfoArr.append(item1)
if self.isNeedGoHK != 1 { // 是否赴港办证没有选择是
refreshData()
......@@ -162,42 +175,49 @@ class YHCertificateAppointViewController: YHBaseViewController {
// 赴港办证选择了是
// *温馨提示
let item2 = YHAppointItem(type: .warmTips)
items1.append(item2)
normalAppointInfoArr.append(item2)
// *无需预约办证成员(未满11岁)
if self.noNeedAppointMembers.count > 0 {
let item3 = YHAppointItem(type: .noNeedMakeCertificateMembers)
items1.append(item3)
normalAppointInfoArr.append(item3)
}
if self.reservationToHK == 0 { // 没有预约过人员
// 赴港激活签证 申请人是否统一赴港激活签证
let item4 = YHAppointItem(type: .activeVisa)
items1.append(item4)
normalAppointInfoArr.append(item4)
if self.isAllMembersGo { // 申请人统一赴港激活签证
let item5 = YHAppointItem(type: .confirmGoHKInfo)
let group = YHSelectGroupMemberModel()
group.arr = waitAppointMembers.deepCopy()
item5.model = group
item5.itemIndex = 0
let group1 = YHSelectGroupMemberModel()
group1.isAllMembersGoHK = true
group1.arr = waitAppointMembers.deepCopy().map {
let member = $0
member.isSelected = true
return member
}
item5.model = group1
item5.placeList = self.viewModel.placeList
item5.arrHkHolidays = self.viewModel.dataModelForHkHolidays?.legaldays ?? []
items2.append(item5)
selectMemberGroupArr.append(item5)
} else { // 申请人不是统一赴港激活签证
let item6 = YHAppointItem(type: .confirmGoHKInfo)
item6.itemIndex = 0
let group1 = YHSelectGroupMemberModel()
group1.arr = waitAppointMembers.deepCopy().map {
var member = $0
let member = $0
member.isSelected = true
return member
}
item6.model = group1
item6.placeList = self.viewModel.placeList
item6.arrHkHolidays = self.viewModel.dataModelForHkHolidays?.legaldays ?? []
items2.append(item6)
selectMemberGroupArr.append(item6)
}
......@@ -206,19 +226,19 @@ class YHCertificateAppointViewController: YHBaseViewController {
// 待预约的赴港成员
if waitAppointMembers.count > 0 {
let item5 = YHAppointItem(type: .needReAppointMembers)
items1.append(item5)
normalAppointInfoArr.append(item5)
}
// 赴港办理抢号中批次
if self.waitList.count > 0 {
let item6 = YHAppointItem(type: .grabingNumberBatch)
items3.append(item6)
grabbingNumInfoArr.append(item6)
}
// 赴港办理已抢号批次
if self.successList.count > 0 {
let item7 = YHAppointItem(type: .haveGrabedNumberBatch)
items3.append(item7)
grabbedNumInfoArr.append(item7)
}
}
refreshData()
......@@ -228,38 +248,58 @@ class YHCertificateAppointViewController: YHBaseViewController {
sections.removeAll()
if items1.count > 0 {
sections.append(items1)
if normalAppointInfoArr.count > 0 {
sections.append(normalAppointInfoArr)
}
if items2.count > 0 {
sections.append(items2)
if selectMemberGroupArr.count > 0 {
sections.append(selectMemberGroupArr)
}
if items3.count > 0 {
sections.append(items3)
if grabbingNumInfoArr.count > 0 {
sections.append(grabbingNumInfoArr)
}
self.tableView.reloadData()
// 底部按钮更新
var isBottomViewHidden = true
var isNeedToPay = false // YES 展示确认提交 NO展示下一步去缴费
self.bottomStatus = .hidden
if self.reservationToHK == 0 { // 没有预约人员
if self.isNeedGoHK == 1 { // 要赴港办证
isBottomViewHidden = false
isNeedToPay = false
if self.isNeedGoHK == 1 { // 赴港办证选是
// 底部按钮显示确认提交
self.bottomStatus = .confirmSubmitAppoint
} else if self.isNeedGoHK == 0 { // 赴港办证选否
// 底部按钮显示下一步去缴费
self.bottomStatus = .nextStepToPay
} else { // 赴港办证未选择
// 不显示底部按钮
self.bottomStatus = .hidden
}
} else { // 有预约过
if waitList.count <= 0 { // 全部都预约完了
isBottomViewHidden = true
isNeedToPay = true
if waitAppointMembers.count <= 0 { // 全部都预约完了
self.bottomStatus = .nextStepToPay
} else { // 还有未预约人员
// 不显示底部按钮
self.bottomStatus = .hidden
}
}
bottomView.isHidden = isBottomViewHidden
if !isBottomViewHidden {
let titleStr = isNeedToPay ? "下一步, 去缴费" : "确认提交"
bottomBtn.setTitle(titleStr, for: .normal)
bottomView.isHidden = (self.bottomStatus == .hidden)
if self.bottomStatus == .confirmSubmitAppoint {
bottomBtn.setTitle("确认提交", for: .normal)
} else if self.bottomStatus == .nextStepToPay {
bottomBtn.setTitle("下一步,去缴费", for: .normal)
}
self.bottomView.snp.updateConstraints { make in
make.height.equalTo((self.bottomStatus == .hidden) ? 0 : bottomViewHeight)
}
self.view.setNeedsLayout()
self.view.layoutIfNeeded()
}
}
......@@ -354,6 +394,12 @@ extension YHCertificateAppointViewController: UITableViewDelegate, UITableViewDa
[weak self] in
guard let self = self else { return }
let vc = YHReAppointViewController()
vc.orderId = self.orderId
vc.waitAppointMembers = self.waitAppointMembers.deepCopy()
vc.viewModel = self.viewModel
vc.updateBlock = {
self.requestData()
}
self.navigationController?.pushViewController(vc)
}
return cell
......@@ -364,7 +410,6 @@ extension YHCertificateAppointViewController: UITableViewDelegate, UITableViewDa
// 请您确认第X批赴港信息
let cell = tableView.dequeueReusableCell(withIdentifier: YHSelectApplicantGroupCell.cellReuseIdentifier, for: indexPath) as! YHSelectApplicantGroupCell
cell.dataModel = arr[indexPath.row]
cell.isShowSelectUserView = !self.isAllMembersGo
cell.refreshBlock = {
[weak self] in
guard let self = self else { return }
......@@ -428,13 +473,6 @@ extension YHCertificateAppointViewController: UITableViewDelegate, UITableViewDa
return UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if 0 <= indexPath.section && indexPath.section < items1.count {
self.saveHkexpectServicOp()//for test hjl
}
}
private func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> CGFloat {
return 0.01
}
......@@ -516,7 +554,7 @@ extension YHCertificateAppointViewController {
extension YHCertificateAppointViewController {
//预约成功后调用
func saveHkexpectServicOp() {
func showSelectHKServiceAlertView() {
if self.orderId > 0 {
let key = "hkExpectService_\(self.orderId)"
......@@ -526,7 +564,10 @@ extension YHCertificateAppointViewController {
}
}
self.viewModel.getServicelist { success, error in
YHHUD.show(.progress(message: "加载中..."))
self.viewModel.getServicelist {
success, error in
YHHUD.hide()
let view = YHServiceSelectAlertView.alertView()
view.items = self.viewModel.serviceArr
view.confirmBlock = {
......@@ -580,8 +621,8 @@ extension YHCertificateAppointViewController {
var currentMembers:[YHHKMemberModel] = []
// 先改变点击当前批的选择状态
if 0 <= groupLevel, groupLevel < items2.count {
let item = items2[groupLevel]
if 0 <= groupLevel, groupLevel < selectMemberGroupArr.count {
let item = selectMemberGroupArr[groupLevel]
if let members = item.model?.arr {
currentMembers = members
for member in members {
......@@ -594,7 +635,7 @@ extension YHCertificateAppointViewController {
if !select { // 如果操作是取消
// 如果操作的当前批次是最后一批,则需要分新批次
if groupLevel == items2.count-1 {
if groupLevel == selectMemberGroupArr.count-1 {
// 进行分批
let newItem = YHAppointItem(type: .confirmGoHKInfo)
// 批次+1
......@@ -613,15 +654,15 @@ extension YHCertificateAppointViewController {
newItem.model = group1
newItem.placeList = self.viewModel.placeList
newItem.arrHkHolidays = self.viewModel.dataModelForHkHolidays?.legaldays ?? []
items2.append(newItem)
selectMemberGroupArr.append(newItem)
} else { // 如果操作的当前批次不是最后一批 需要更新后面几批的选中状态
let nextGroupIndex = groupLevel+1
let newMember = currentMember.copy() as! YHHKMemberModel
newMember.isSelected = true
if 0 <= groupLevel, groupLevel < items2.count {
let item = items2[nextGroupIndex]
if 0 <= groupLevel, groupLevel < selectMemberGroupArr.count {
let item = selectMemberGroupArr[nextGroupIndex]
if var members = item.model?.arr {
members.append(newMember)
item.model?.arr = members
......@@ -632,9 +673,9 @@ extension YHCertificateAppointViewController {
// 肯定会有下一层因为之前取消过
let nextGroupIndex = groupLevel+1
if 0 <= nextGroupIndex, nextGroupIndex < items2.count {
for i in nextGroupIndex..<items2.count {
let item = items2[i]
if 0 <= nextGroupIndex, nextGroupIndex < selectMemberGroupArr.count {
for i in nextGroupIndex..<selectMemberGroupArr.count {
let item = selectMemberGroupArr[i]
if var members = item.model?.arr {
// 下几批的组员中都要删除该人
members = members.filter { $0.id != currentMember.id }
......@@ -646,17 +687,17 @@ extension YHCertificateAppointViewController {
// 无论是选中还是反选 检测下面所有批次有无全未选数组,有则删除该批
let nextGroupIndex = groupLevel+1
if 0 <= nextGroupIndex, nextGroupIndex < items2.count {
if 0 <= nextGroupIndex, nextGroupIndex < selectMemberGroupArr.count {
var i = nextGroupIndex
while i < items2.count {
let item = items2[i]
while i < selectMemberGroupArr.count {
let item = selectMemberGroupArr[i]
if let members = item.model?.arr {
let a = members.filter {
return $0.isSelected == true
}
// 数组中全未选
if a.count <= 0 {
items2.remove(at: i)
selectMemberGroupArr.remove(at: i)
} else {
i += 1
......@@ -666,7 +707,7 @@ extension YHCertificateAppointViewController {
}
// 重新进行批次排号
for (index, group) in items2.enumerated() {
for (index, group) in selectMemberGroupArr.enumerated() {
group.itemIndex = index
}
refreshData()
......@@ -677,14 +718,23 @@ extension YHCertificateAppointViewController {
@objc func didBottomBtnClicked() {
if self.isAllMembersGo { // 选择统一赴港
if self.bottomStatus == .confirmSubmitAppoint {
// 提交预约时间信息
submitAppointInfo()
return
} else if self.bottomStatus == .nextStepToPay {
// 下一步去缴费
let vc = YHVisaPaymentVC()
vc.orderID = orderId
navigationController?.pushViewController(vc)
}
}
func submitAppointInfo() {
// 选择非统一赴港
// 检测各批次是否有日期或办证地点未选择
var isOK = true
for item in self.items2 {
for item in self.selectMemberGroupArr {
if let groupModel = item.model {
if groupModel.dateTye == 0 { // 选择具体日期
if groupModel.detailDateStr.isEmpty {
......@@ -706,13 +756,13 @@ extension YHCertificateAppointViewController {
}
}
}
if !isOK { // 有日期或办证地点未选择
if !isOK { // 检测各批次是否有日期或办证地点未选择
self.tableView.reloadData()
return
}
var batchs:[[String: Any]] = []
for group in items2 {
for group in selectMemberGroupArr {
if let model = group.model {
var start_time = ""
var end_time = ""
......@@ -751,16 +801,16 @@ extension YHCertificateAppointViewController {
printLog("\(params)")
// if true {
// return
// }
viewModel.submitAppoint(params: params) {
YHHUD.show(.progress(message: "加载中..."))
viewModel.submitAppoint(params: params) {
[weak self] success, error in
YHHUD.hide()
guard let self = self else { return }
if success {
YHHUD.flash(message: "提交成功")
self.requestData()
self.requestData {
self.showSelectHKServiceAlertView()
}
return
}
let msg = error?.errorMsg ?? ""
......
......@@ -14,6 +14,11 @@ class YHReAppointViewController: YHBaseViewController {
var orderId: Int = 0
var items:[YHAppointItem] = []
var waitAppointMembers:[YHHKMemberModel] = []
var viewModel = YHCerAppointViewModel()
var updateBlock:(()->())?
lazy var tableView: UITableView = {
let tableView = UITableView(frame:.zero, style:.grouped)
tableView.estimatedSectionHeaderHeight = 16.0
......@@ -38,6 +43,30 @@ class YHReAppointViewController: YHBaseViewController {
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.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 viewDidLoad() {
super.viewDidLoad()
createUI()
......@@ -49,10 +78,16 @@ class YHReAppointViewController: YHBaseViewController {
self.gk_navTitle = "赴港办证预约"
self.view.backgroundColor = .white
self.view.addSubview(self.tableView)
self.view.addSubview(bottomView)
self.tableView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.left.right.equalToSuperview()
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.0)
}
updateData()
......@@ -65,11 +100,29 @@ class YHReAppointViewController: YHBaseViewController {
items.append(item1)
let item2 = YHAppointItem(type: .confirmGoHKInfo)
item2.itemIndex = 0
let group1 = YHSelectGroupMemberModel()
group1.isAllMembersGoHK = true
group1.arr = waitAppointMembers
item2.model = group1
item2.placeList = self.viewModel.placeList
item2.arrHkHolidays = self.viewModel.dataModelForHkHolidays?.legaldays ?? []
items.append(item2)
self.tableView.reloadData()
}
func getReAppointMemberNameText() -> String {
var text = ""
for (index, user) in self.waitAppointMembers.enumerated() {
text += user.name
if index != self.waitAppointMembers.count-1 {
text += "、"
}
}
text = "成员:\(text)"
return text
}
}
extension YHReAppointViewController: UITableViewDelegate, UITableViewDataSource {
......@@ -93,6 +146,14 @@ extension YHReAppointViewController: UITableViewDelegate, UITableViewDataSource
// 请您确认第X批赴港信息
let cell = tableView.dequeueReusableCell(withIdentifier: YHSelectApplicantGroupCell.cellReuseIdentifier, for: indexPath) as! YHSelectApplicantGroupCell
cell.isShowSelectUserView = false
cell.isShowRepointNameView = true
cell.repointMembersNameLabel.text = self.getReAppointMemberNameText()
cell.dataModel = item
cell.refreshBlock = {
[weak self] in
guard let self = self else { return }
self.tableView.reloadData()
}
return cell
}
}
......@@ -128,3 +189,96 @@ extension YHReAppointViewController: UITableViewDelegate, UITableViewDataSource
}
}
extension YHReAppointViewController {
@objc func didBottomBtnClicked() {
// 检测各批次是否有日期或办证地点未选择
var isOK = true
for item in self.items {
if item.type != .confirmGoHKInfo {
continue
}
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.name.isEmpty {
groupModel.isNeedCheck = true
isOK = false
}
}
}
if !isOK { // 检测各批次是否有日期或办证地点未选择
self.tableView.reloadData()
return
}
var batchs:[[String: Any]] = []
for group in items {
if let model = group.model {
var start_time = ""
var end_time = ""
if model.dateTye == 0 { // 具体时间
start_time = model.detailDateStr
end_time = model.detailDateStr
} else { // 具体时段
start_time = model.startDateStr
end_time = model.endDateStr
}
let selectUsers = model.arr.filter {
return $0.isSelected == true
}
let users = self.waitAppointMembers.map {
let dict = ["id" : $0.id,
"type" : $0.type,
"name" : $0.name] as! [String : Any]
return dict
}
if users.count > 0 {
let batch:[String : Any] = ["start_time" : start_time,
"end_time" : end_time,
"migration_office" : model.hkPlace.name,
"users" : users]
batchs.append(batch)
}
}
}
// 请求参数
let params:[String : Any] = ["order_id": orderId,
"batch": batchs]
printLog("\(params)")
YHHUD.show(.progress(message: "加载中..."))
viewModel.submitAppoint(params: params) {
[weak self] success, error in
YHHUD.hide()
guard let self = self else { return }
if success {
YHHUD.flash(message: "提交成功")
updateBlock?()
self.navigationController?.popViewController()
return
}
let msg = error?.errorMsg ?? ""
YHHUD.flash(message: msg)
}
}
}
......@@ -65,4 +65,7 @@ class YHSelectGroupMemberModel {
// 需要检测日期和办证地点是否选择
var isNeedCheck = false
// 是否统一赴港
var isAllMembersGoHK: Bool = false
}
......@@ -11,7 +11,7 @@ import SmartCodable
class YHMakeCertificatePlaceModel: SmartCodable {
var id: Int = 0
var id: Int = -1
var name: String = ""
// 自定义
......@@ -20,5 +20,9 @@ class YHMakeCertificatePlaceModel: SmartCodable {
required init() {
}
func isEmpty() -> Bool {
return id == -1 && name.isEmpty
}
}
......@@ -150,7 +150,7 @@ class YHGrabNumberInfoItemView: UIView {
make.width.height.equalTo(dotWidth)
make.centerY.equalTo(detailLabel)
make.right.equalTo(detailLabel.snp.left).offset(-4)
make.left.greaterThanOrEqualTo(titleLabel.snp.right).offset(0)
// make.left.greaterThanOrEqualTo(titleLabel.snp.right).offset(0)
}
collectionView.snp.makeConstraints { make in
......
......@@ -29,35 +29,53 @@ class YHSelectApplicantGroupCell: UITableViewCell {
didSet {
detailLabel.isHidden = !isShowSelectUserView
selectGroupView.isHidden = !isShowSelectUserView
collectionView.isHidden = !isShowSelectUserView
lineView.isHidden = !isShowSelectUserView
detailLabel.text = isShowSelectUserView ? self.detailText : ""
detailLabel.snp.updateConstraints { make in
make.top.equalTo(lineView.snp.bottom).offset(isShowSelectUserView ? 16 : 0)
selectPanelView.isHidden = !isShowSelectUserView
selectPanelView.snp.remakeConstraints { make in
make.top.equalTo(reAppontNameView.snp.bottom)
make.left.equalTo(0)
make.right.equalTo(0)
make.bottom.equalTo(optionsView.snp.top)
if !isShowSelectUserView {
make.height.equalTo(0)
}
}
selectGroupView.snp.updateConstraints { make in
make.top.equalTo(detailLabel.snp.bottom).offset(isShowSelectUserView ? 12 : 0)
reAppontNameView.snp.remakeConstraints { make in
make.top.equalTo(lineView.snp.bottom)
make.left.equalTo(18)
make.right.equalTo(-18)
if !isShowRepointNameView {
make.height.equalTo(0)
}
}
collectionView.snp.updateConstraints { make in
make.top.equalTo(isShowSelectUserView ? 14 : 0)
make.bottom.equalTo(isShowSelectUserView ? -14 : 0)
make.height.equalTo(isShowSelectUserView ? self.getCollectionViewHeight() : 0)
}
optionsView.snp.updateConstraints { make in
make.top.equalTo(selectGroupView.snp.bottom).offset(isShowSelectUserView ? 16 : 0)
}
optionsView.lineView.isHidden = (!isShowSelectUserView && !isShowRepointNameView)
self.setNeedsLayout()
self.layoutIfNeeded()
}
}
var isShowRepointNameView: Bool = false {
didSet {
reAppontNameView.snp.remakeConstraints { make in
make.top.equalTo(lineView.snp.bottom)
make.left.equalTo(18)
make.right.equalTo(-18)
if !isShowRepointNameView {
make.height.equalTo(0)
}
}
self.setNeedsLayout()
self.layoutIfNeeded()
}
}
lazy var whiteContentView: UIView = {
let view = UIView()
view.backgroundColor = .white
......@@ -65,12 +83,6 @@ class YHSelectApplicantGroupCell: UITableViewCell {
return view
}()
lazy var lineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
return view
}()
lazy var titleLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
......@@ -80,7 +92,49 @@ class YHSelectApplicantGroupCell: UITableViewCell {
return label
}()
lazy var detailLabel: UILabel = {
lazy var lineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
return view
}()
lazy var selectPanelView: UIView = {
let panelView = UIView()
panelView.addSubview(selecPanelTitleLabel)
let groupBgview = UIView()
groupBgview.backgroundColor = .init(hex: 0xF8F9FB)
groupBgview.layer.cornerRadius = kCornerRadius3
groupBgview.addSubview(collectionView)
panelView.addSubview(groupBgview)
selecPanelTitleLabel.snp.makeConstraints { make in
make.top.equalTo(16)
make.left.equalTo(18)
make.right.equalTo(-18)
}
groupBgview.snp.makeConstraints { make in
make.left.equalTo(18)
make.right.equalTo(-18)
make.top.equalTo(selecPanelTitleLabel.snp.bottom).offset(12)
make.bottom.equalTo(-16)
}
collectionView.snp.makeConstraints { make in
make.left.equalTo(14)
make.right.equalTo(-14)
make.height.equalTo(0)
make.top.equalTo(14)
make.bottom.equalTo(-14)
}
return panelView
}()
lazy var selecPanelTitleLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
label.font = UIFont.PFSC_R(ofSize: 14)
......@@ -89,13 +143,6 @@ class YHSelectApplicantGroupCell: UITableViewCell {
return label
}()
lazy var selectGroupView: UIView = {
let view = UIView()
view.backgroundColor = .init(hex: 0xF8F9FB)
view.layer.cornerRadius = kCornerRadius3
return view
}()
lazy var collectionView: UICollectionView = {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical
......@@ -164,6 +211,7 @@ class YHSelectApplicantGroupCell: UITableViewCell {
if let arr = dataModel?.placeList, arr.count > 0 {
let listView = YHSelectHKPlaceListView.listView()
listView.listArr = arr
listView.selectModel = dataModel?.model?.hkPlace
listView.selectBlock = {
[weak self] selectPlace in
guard let self = self else { return }
......@@ -179,6 +227,45 @@ class YHSelectApplicantGroupCell: UITableViewCell {
return view
}()
lazy var reAppontNameView: UIView = {
let view = UIView()
let lineView = UIView()
lineView.backgroundColor = .separatorColor
view.addSubview(lineView)
let grayView = UIView()
grayView.backgroundColor = .init(hex: 0xF8F9FB)
grayView.addSubview(repointMembersNameLabel)
view.addSubview(grayView)
lineView.snp.makeConstraints { make in
make.left.right.top.equalTo(0)
make.height.equalTo(1)
}
grayView.snp.makeConstraints { make in
make.left.right.equalTo(0)
make.top.equalTo(lineView.snp.bottom).offset(12)
make.bottom.equalTo(-12)
}
repointMembersNameLabel.snp.makeConstraints { make in
make.left.equalTo(14)
make.right.equalTo(-14)
make.top.equalTo(14)
make.bottom.equalTo(-14)
}
return view
}()
lazy var repointMembersNameLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
label.font = UIFont.PFSC_R(ofSize: 13)
label.textColor = .mainTextColor
label.text = "成员:"
return label
}()
required init?(coder: NSCoder) {
super.init(coder: coder)
}
......@@ -196,9 +283,8 @@ class YHSelectApplicantGroupCell: UITableViewCell {
contentView.addSubview(whiteContentView)
whiteContentView.addSubview(titleLabel)
whiteContentView.addSubview(lineView)
whiteContentView.addSubview(detailLabel)
whiteContentView.addSubview(selectGroupView)
selectGroupView.addSubview(collectionView)
whiteContentView.addSubview(reAppontNameView)
whiteContentView.addSubview(selectPanelView)
whiteContentView.addSubview(optionsView)
whiteContentView.addSubview(timeSelectView)
whiteContentView.addSubview(locationSelectView)
......@@ -218,34 +304,28 @@ class YHSelectApplicantGroupCell: UITableViewCell {
lineView.snp.makeConstraints { make in
make.top.equalTo(titleLabel.snp.bottom).offset(12)
make.left.right.equalToSuperview()
make.left.equalTo(0)
make.right.equalTo(0)
make.height.equalTo(0.5)
}
detailLabel.snp.makeConstraints { make in
make.top.equalTo(lineView.snp.bottom).offset(16)
make.left.equalTo(18)
make.right.equalTo(-18)
}
selectGroupView.snp.makeConstraints { make in
reAppontNameView.snp.makeConstraints { make in
make.top.equalTo(lineView.snp.bottom)
make.left.equalTo(18)
make.right.equalTo(-18)
make.top.equalTo(detailLabel.snp.bottom).offset(12)
make.height.equalTo(0)
}
collectionView.snp.makeConstraints { make in
make.left.equalTo(14)
make.right.equalTo(-14)
make.height.equalTo(40+16)
make.top.equalTo(14)
make.bottom.equalTo(-14)
selectPanelView.snp.makeConstraints { make in
make.top.equalTo(reAppontNameView.snp.bottom)
make.left.equalTo(0)
make.right.equalTo(0)
make.bottom.equalTo(optionsView.snp.top)
}
optionsView.snp.makeConstraints { make in
make.top.equalTo(selectGroupView.snp.bottom).offset(16)
make.left.equalTo(18)
make.right.equalTo(0)
make.right.equalTo(-18)
}
timeSelectView.snp.makeConstraints { make in
......@@ -317,14 +397,14 @@ private extension YHSelectApplicantGroupCell {
return
}
let batchNumberText = self.convertNumberToChineseText(model.itemIndex+1)
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("请您确认第\(batchNumberText)批赴港信息", .font(UIFont.PFSC_M(ofSize: 17)),.foreground(UIColor.mainTextColor))
titleLabel.attributed.text = a+b
selecPanelTitleLabel.text = "选择第\(batchNumberText)批赴港激活签证的申请人"
collectionView.reloadData()
let isShowSelectList = self.isShowSelectUserView
self.isShowSelectUserView = isShowSelectList
// 时间选择UI更新
optionsView.selectIndex = 0
......@@ -332,6 +412,15 @@ private extension YHSelectApplicantGroupCell {
if let model = dataModel?.model {
let isShowSelectList = !model.isAllMembersGoHK
self.isShowSelectUserView = isShowSelectList
if model.isAllMembersGoHK {
let a: ASAttributedString = .init("*", .font(UIFont.PFSC_M(ofSize: 17)),.foreground(UIColor.failColor))
let b: ASAttributedString = .init("请您确认以下赴港信息", .font(UIFont.PFSC_M(ofSize: 17)),.foreground(UIColor.mainTextColor))
titleLabel.attributed.text = a+b
}
timeSelectView.title = model.dateTye == 0 ? "具体日期" : "具体时段"
if model.dateTye == 0 { // 具体时间
......@@ -584,4 +673,12 @@ private extension YHSelectApplicantGroupCell {
}
return false
}
//阿拉伯数字转文字
func convertNumberToChineseText(_ number: Int) -> String {
let numberFormatter = NumberFormatter()
numberFormatter.locale = Locale(identifier: "zh_CN")
numberFormatter.numberStyle = .spellOut
return numberFormatter.string(from: NSNumber(value: number)) ?? ""
}
}
......@@ -15,11 +15,29 @@ class YHSelectHKPlaceListView: UIView {
return view
}
var selectModel: YHMakeCertificatePlaceModel? = nil
var selectModel: YHMakeCertificatePlaceModel? = nil {
didSet {
if let selectItem = selectModel {
for item in listArr {
item.isSelect = (selectItem.id == item.id && selectItem.name == item.name)
}
} else {
for item in listArr {
item.isSelect = false
}
}
self.tableView.reloadData()
}
}
var selectBlock: ((YHMakeCertificatePlaceModel)->())?
var listArr:[YHMakeCertificatePlaceModel] = [] {
didSet {
for item in listArr {
item.isSelect = false
}
self.tableView.reloadData()
}
}
......@@ -98,10 +116,12 @@ class YHSelectHKPlaceListView: UIView {
}
@objc func sure() {
if let model = self.selectModel {
if let model = self.selectModel, !model.isEmpty() {
selectBlock?(model)
self.dismiss()
return
}
self.dismiss()
YHHUD.flash(message: "请选择港府办证地点")
}
override init(frame: CGRect) {
......@@ -197,9 +217,6 @@ extension YHSelectHKPlaceListView: UITableViewDelegate, UITableViewDataSource {
if 0 <= indexPath.row && indexPath.row < listArr.count {
let model = listArr[indexPath.row]
selectModel = model
for item in listArr {
item.isSelect = (model.id == item.id)
}
self.tableView.reloadData()
}
}
......
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