Commit 41d9a880 authored by Steven杜宇's avatar Steven杜宇

// 预约

parent 90c050a9
......@@ -599,6 +599,8 @@
04CE1AE32C2AD91F001CB80A /* YHApplyActivityAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04CE1ACE2C2AD91F001CB80A /* YHApplyActivityAlert.swift */; };
04D144762C0452E200EE3758 /* YHOneKeyLoginManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04D144752C0452E200EE3758 /* YHOneKeyLoginManager.swift */; };
04D5C5662B8ED92600190021 /* YHBaseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04D5C5652B8ED92600190021 /* YHBaseModel.swift */; };
04DF69B92CB95241005AA41E /* YHResignAppointTimeSettingModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04DF69B82CB95241005AA41E /* YHResignAppointTimeSettingModel.swift */; };
04DF69BB2CBA1CC5005AA41E /* YHResignAppointApplicantCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04DF69BA2CBA1CC5005AA41E /* YHResignAppointApplicantCell.swift */; };
04E41DE82BD240570077EAE3 /* YHOrderDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E41DE72BD240570077EAE3 /* YHOrderDetailViewController.swift */; };
04E86E0D2B70D51D00A35F4B /* YHWebViewViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E86E0C2B70D51D00A35F4B /* YHWebViewViewController.swift */; };
04E86E662B86EB6F00A35F4B /* YHLoginManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E86E652B86EB6F00A35F4B /* YHLoginManager.swift */; };
......@@ -1506,6 +1508,8 @@
04CE1ACE2C2AD91F001CB80A /* YHApplyActivityAlert.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHApplyActivityAlert.swift; sourceTree = "<group>"; };
04D144752C0452E200EE3758 /* YHOneKeyLoginManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHOneKeyLoginManager.swift; sourceTree = "<group>"; };
04D5C5652B8ED92600190021 /* YHBaseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBaseModel.swift; sourceTree = "<group>"; };
04DF69B82CB95241005AA41E /* YHResignAppointTimeSettingModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHResignAppointTimeSettingModel.swift; sourceTree = "<group>"; };
04DF69BA2CBA1CC5005AA41E /* YHResignAppointApplicantCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHResignAppointApplicantCell.swift; sourceTree = "<group>"; };
04E41DE72BD240570077EAE3 /* YHOrderDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHOrderDetailViewController.swift; sourceTree = "<group>"; };
04E86E0C2B70D51D00A35F4B /* YHWebViewViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHWebViewViewController.swift; sourceTree = "<group>"; };
04E86E652B86EB6F00A35F4B /* YHLoginManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHLoginManager.swift; sourceTree = "<group>"; };
......@@ -3495,6 +3499,7 @@
04912F832CB7D14D00CC3105 /* YHResignAppointedScheduleLineCollectCell.swift */,
04912F852CB7EF6100CC3105 /* YHResignHaveAppointedMultipleInfoCell.swift */,
04912F892CB9000200CC3105 /* YHResignHaveAppointedSingleInfoCell.swift */,
04DF69BA2CBA1CC5005AA41E /* YHResignAppointApplicantCell.swift */,
);
path = V;
sourceTree = "<group>";
......@@ -3504,6 +3509,7 @@
children = (
04912F8F2CB917BC00CC3105 /* YHResignAppointMember.swift */,
04912F912CB91A6F00CC3105 /* YHResignAppointGroup.swift */,
04DF69B82CB95241005AA41E /* YHResignAppointTimeSettingModel.swift */,
);
path = M;
sourceTree = "<group>";
......@@ -5493,6 +5499,7 @@
04256E1B2C75C60C00A37BA4 /* YHHKMemberModel.swift in Sources */,
04912F782CB7A11700CC3105 /* YHResignAppointOptionCell.swift in Sources */,
045EEF232B9F171A0022A143 /* YHItemView.swift in Sources */,
04DF69B92CB95241005AA41E /* YHResignAppointTimeSettingModel.swift in Sources */,
04256E192C75BD2700A37BA4 /* YHVisaPaymentViewModel.swift in Sources */,
04754A952B96FF3D00F8ADCA /* UITextField+Extension.swift in Sources */,
04256DD02C7041C700A37BA4 /* YHInfoItemView.swift in Sources */,
......@@ -5694,6 +5701,7 @@
0430E6642C7482DD000511E2 /* YHYHAdopterTravelViewModel.swift in Sources */,
A5CA3F502C7447FB00EB22F5 /* YHUploadCertificateVC.swift in Sources */,
04A7BD192BA441D400BD35A2 /* YHMyDocumentsUrlModel.swift in Sources */,
04DF69BB2CBA1CC5005AA41E /* YHResignAppointApplicantCell.swift in Sources */,
04174D792BCD5B74000BA46D /* YHMessageSessionCell.swift in Sources */,
044F39362CB6574D007CA277 /* YHVisaRenewalGuideHeaderCell.swift in Sources */,
04C85DE92C36BF49008B20D6 /* YHMyFileListFooterView.swift in Sources */,
......
......@@ -34,14 +34,28 @@ class YHResignAppointContainerViewController: YHBaseViewController {
self.view.addSubview(appointVC.view)
self.view.addSubview(scheduleVC.view)
requestData()
}
func requestData() {
YHHUD.show(.progress(message: "加载中..."))
viewModel.getAppointInfoList(renewalId: renewalId) {
[weak self] success, error in
YHHUD.hide()
guard let self = self else { return }
if self.viewModel.appointInfoListModel.renewal_List.count <= 0 { // 没有预约过
self.appointVC.view.isHidden = false
self.scheduleVC.view.isHidden = true
// 请求预约人员列表
YHHUD.show(.progress(message: "加载中..."))
self.viewModel.getResignAppointUserlist(renewalId: self.renewalId) {
[weak self] success, error in
YHHUD.hide()
guard let self = self else { return }
self.appointVC.allAppointUsers = self.viewModel.appointUsers
self.appointVC.updateUI()
self.appointVC.view.isHidden = false
self.scheduleVC.view.isHidden = true
}
} else { // 预约过
self.scheduleVC.view.isHidden = false
......@@ -49,5 +63,4 @@ class YHResignAppointContainerViewController: YHBaseViewController {
}
}
}
}
......@@ -75,7 +75,7 @@ class YHResignAppointSubmitScheduleViewController: YHBaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.gk_navTitle = "预约在港递交时间"
self.gk_navTitle = "续签在港递交行程安排"
self.gk_navigationBar.backgroundColor = .white
self.view.backgroundColor = .init(hex: 0xF8F9FB)
self.view.addSubview(tableView)
......
......@@ -9,6 +9,14 @@
import UIKit
import SmartCodable
class YHResignAppointTogetherSetting: SmartCodable {
var is_together: Int = 0 // 0未选择 1是 2不是 一起赴港
required init() {
}
}
class YHResignAppointListModel: SmartCodable {
var is_together: Int = 0 // 1 是2不是 一起赴港
......
......@@ -9,7 +9,20 @@
import UIKit
import SmartCodable
class YHResignAppointMember: SmartCodable {
// [YHResignAppointMember] 数组实现神拷贝
extension Array where Element == YHResignAppointMember {
func deepCopy() -> [YHResignAppointMember] {
var results: [YHResignAppointMember] = []
for item in self {
let newItem = item.copy()
results.append(newItem as! YHResignAppointMember)
}
return results
}
}
class YHResignAppointMember: SmartCodable, NSCopying {
var id: Int = 0
var renewal_number: Int = 0
......@@ -19,9 +32,29 @@ class YHResignAppointMember: SmartCodable {
var stay_deadline: String = ""
var state: String = ""
// 自定义 是否选中
var isSelected: Bool = false
required init() {
}
init(id: Int, renewal_number: Int, apply_relation: Int, apply_uid: String, apply_name: String, stay_deadline: String, state: String, isSelected: Bool) {
self.id = id
self.renewal_number = renewal_number
self.apply_relation = apply_relation
self.apply_uid = apply_uid
self.apply_name = apply_name
self.stay_deadline = stay_deadline
self.state = state
self.isSelected = isSelected
}
func copy(with zone: NSZone? = nil) -> Any {
return YHResignAppointMember(id: self.id, renewal_number: self.renewal_number, apply_relation: self.apply_relation, apply_uid: self.apply_uid, apply_name: self.apply_name, stay_deadline: self.stay_deadline, state: self.state, isSelected: self.isSelected)
}
}
//
// YHResignAppointTimeSettingModel.swift
// galaxy
//
// Created by edy on 2024/10/11.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import SmartCodable
class YHResignAppointTimeSettingModel: SmartCodable {
var ready_to_submit_at: String = "" // 预约在港递交时间
var leave_hk_at: String = "" // 预计离港时间
var notleaveHK: Bool = false // 暂不离港
var users: [YHResignAppointMember] = []
var itemIndex: Int = 0 // 第几批
required init() {
}
}
//
// YHResignAppointApplicantCell.swift
// galaxy
//
// Created by edy on 2024/10/12.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHResignAppointApplicantCell: UICollectionViewCell {
static let cellReuseIdentifier = "YHResignAppointApplicantCell"
lazy var selectImgView:UIImageView = {
let view = UIImageView(image: UIImage(named: ""))
return view
}()
lazy var nameLabel: UILabel = {
let label = UILabel()
label.font = UIFont.PFSC_R(ofSize: 14)
label.textColor = .mainTextColor
return label
}()
override init(frame: CGRect) {
super.init(frame: frame)
createUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func createUI() {
self.addSubview(selectImgView)
self.addSubview(nameLabel)
selectImgView.snp.makeConstraints { make in
make.left.equalTo(0)
make.width.height.equalTo(14)
make.centerY.equalToSuperview()
}
nameLabel.snp.makeConstraints { make in
make.left.equalTo(selectImgView.snp.right).offset(6)
make.centerY.equalToSuperview()
make.right.equalToSuperview()
}
}
func updateApplicantInfo(_ applicant: YHResignAppointMember) {
nameLabel.text = applicant.apply_name
let imgName = applicant.isSelected ? "login_privacy_agree" : "login_privacy_disagree_glay"
selectImgView.image = UIImage(named: imgName)
}
}
......@@ -13,18 +13,12 @@ class YHResignAppointTimeMultipleCell: UITableViewCell {
static let cellReuseIdentifier = "YHResignAppointTimeMultipleCell"
var arr:[YHHKMemberModel] = {
let m1 = YHHKMemberModel()
m1.name = "侯林"
let m2 = YHHKMemberModel()
m2.name = "李小龙"
let m3 = YHHKMemberModel()
m3.name = "啊发顺丰进啦司法局阿里司法"
let m4 = YHHKMemberModel()
m4.name = "司法"
return [m1, m2, m3, m4]
}()
var model: YHResignAppointTimeSettingModel = YHResignAppointTimeSettingModel()
var arr:[YHResignAppointMember] = []
// param 选中的用户 是否选中 选中的用户是第几批
var selectBlock: ((_ member: YHResignAppointMember, _ isSelect: Bool, _ groupIndex: Int)->())?
lazy var whiteContentView: UIView = {
let view = UIView()
......@@ -85,7 +79,7 @@ class YHResignAppointTimeMultipleCell: UITableViewCell {
collectView.dataSource = self
collectView.backgroundColor = .clear
// 注册自定义单元格
collectView.register(YHSelectApplicantCell.self, forCellWithReuseIdentifier: YHSelectApplicantCell.cellReuseIdentifier)
collectView.register(YHResignAppointApplicantCell.self, forCellWithReuseIdentifier: YHResignAppointApplicantCell.cellReuseIdentifier)
return collectView
}()
......@@ -133,6 +127,17 @@ class YHResignAppointTimeMultipleCell: UITableViewCell {
setupUI()
}
func updateModel(_ model: YHResignAppointTimeSettingModel) {
self.model = model
titleLabel.text = "请确认第\(model.itemIndex+1)批赴港递交信息"
subTitleLabel.text = "选择第\(model.itemIndex+1)批赴港递交的申请人"
self.arr.removeAll()
self.arr.append(contentsOf: model.users)
updateUI()
}
func setupUI() {
self.selectionStyle = .none
......@@ -242,32 +247,28 @@ extension YHResignAppointTimeMultipleCell: UICollectionViewDelegate, UICollectio
// 返回自定义单元格
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: YHSelectApplicantCell.cellReuseIdentifier, for: indexPath) as! YHSelectApplicantCell
// if let arr = dataModel?.model?.arr {
if 0 <= indexPath.item && indexPath.item < arr.count {
let applicant = arr[indexPath.item]
cell.updateApplicantInfo(applicant)
}
// }
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: YHResignAppointApplicantCell.cellReuseIdentifier, for: indexPath) as! YHResignAppointApplicantCell
if 0 <= indexPath.item && indexPath.item < arr.count {
let applicant = arr[indexPath.item]
cell.updateApplicantInfo(applicant)
}
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
// if let dataModel = self.dataModel, let model = dataModel.model {
// if 0 <= indexPath.item && indexPath.item < model.arr.count {
// let member = model.arr[indexPath.item]
// let selectArr = model.arr.filter {
// return $0.isSelected == true
// }
// if selectArr.count == 1, member.isSelected == true, member.id == selectArr[0].id {
// // 分组中仅有一个选中用户 且点击的是该用户
// YHHUD.flash(message: "每一批赴港申请人不可为空,请确保每位申请人都在列")
// return
// }
// selectBlock?(member, !member.isSelected, dataModel.itemIndex)
// }
// }
if 0 <= indexPath.item && indexPath.item < arr.count {
let member = arr[indexPath.item]
let selectArr = arr.filter {
return $0.isSelected == true
}
if selectArr.count == 1, member.isSelected == true, member.id == selectArr[0].id {
// 分组中仅有一个选中用户 且点击的是该用户
YHHUD.flash(message: "每一批赴港申请人不可为空,请确保每位申请人都在列")
return
}
selectBlock?(member, !member.isSelected, self.model.itemIndex)
}
}
}
......@@ -37,6 +37,7 @@ class YHResignAppointViewModel: NSObject {
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
self.appointUsers = []
self.appointUsers = self.getUsers()
callBack(false, error)
}
......@@ -46,6 +47,27 @@ class YHResignAppointViewModel: NSObject {
}
}
func getUsers() -> [YHResignAppointMember] {
let m1 = YHResignAppointMember()
m1.apply_name = "刘德华"
m1.id = 123
let m2 = YHResignAppointMember()
m2.apply_name = "黎明"
m2.id = 124
let m3 = YHResignAppointMember()
m3.apply_name = "郭富城"
m3.id = 125
let m4 = YHResignAppointMember()
m4.apply_name = "张学友"
m4.id = 126
return [m1, m2, m3, m4]
}
// 预约列表预约
func getAppointInfoList(renewalId: Int, callBack: @escaping (_ success: Bool,_ error: YHErrorModel?)->()) {
let params = ["renewal_id" : renewalId]
......@@ -64,9 +86,11 @@ class YHResignAppointViewModel: NSObject {
} else {
let err = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg.isEmpty ? "" : json.msg)
self.appointInfoListModel = YHResignAppointListModel()
callBack(false,err)
}
} failBlock: { err in
self.appointInfoListModel = YHResignAppointListModel()
callBack(false,err)
}
}
......
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