Commit b04c0a78 authored by pete谢兆麟's avatar pete谢兆麟

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

parents ed16d087 d96d357f
This diff is collapsed.
......@@ -207,6 +207,9 @@ class YHServiceOrderListView: YHBaseViewController {
UIViewController.current?.navigationController?.pushViewController(vc)
} else if type == 33 {
//续签信息确认
let vc = YHResignConfirmInfoListViewController()
vc.stepId = stepId
UIViewController.current?.navigationController?.pushViewController(vc)
} else if type == 34 {
//在港递交预约
......
......@@ -10,9 +10,10 @@ import UIKit
class YHFilePreviewTool: NSObject {
weak var targetVC: UIViewController!
weak var targetVC: UIViewController?
private var documentController: UIDocumentInteractionController?
init(targetVC: UIViewController!) {
init(targetVC: UIViewController?) {
self.targetVC = targetVC
}
......@@ -50,13 +51,22 @@ class YHFilePreviewTool: NSObject {
}
func openXLSXFile(at fileURL: URL, fileName: String?) {
let controller = UIDocumentInteractionController(url: fileURL)
documentController = UIDocumentInteractionController(url: fileURL)
// 设置标题显示
if let fileName = fileName, !fileName.isEmpty {
controller.name = fileName
documentController?.name = fileName
}
documentController?.delegate = self
guard let controller = documentController else {
printLog("Failed to create UIDocumentInteractionController")
return
}
DispatchQueue.main.async { [weak self] in
guard let self = self, let presentingVC = self.targetVC else {
printLog("Target view controller is not available")
return
}
controller.delegate = self
DispatchQueue.main.async {
controller.presentPreview(animated: true)
}
}
......@@ -64,6 +74,6 @@ class YHFilePreviewTool: NSObject {
extension YHFilePreviewTool: UIDocumentInteractionControllerDelegate {
func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
return targetVC
return targetVC ?? UIViewController.current ?? UIViewController()
}
}
......@@ -104,6 +104,9 @@ class YHHKVisaRenewalPaymentVC: YHBaseViewController {
init(orderId: Int, renewalId: Int) {
// self.orderId = 136927
// self.renewalId = 343
// self.orderId = 151296
// self.renewalId = 439
self.orderId = orderId
self.renewalId = renewalId
super.init(nibName: nil, bundle: nil)
......@@ -116,6 +119,10 @@ class YHHKVisaRenewalPaymentVC: YHBaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
requestData()
}
......@@ -140,7 +147,7 @@ extension YHHKVisaRenewalPaymentVC {
@objc private func clickSureButton() {
let vc = YHResignUploadTravelCardListViewController()
vc.orderId = orderId
// vc.batchId = renewalId
vc.batchId = renewalId
navigationController?.pushViewController(vc)
}
......@@ -222,10 +229,8 @@ extension YHHKVisaRenewalPaymentVC {
let member = YHVisaRenewalItemDetailType.residenceAction(person.name, presenceStatus, .mid) {
switch presenceStatus {
case .approvalPending:
printLog("欧阳唯一 approvalPending")
YHHUD.flash(message: approvalPendingMsg)
case .confirmingPresence:
printLog("欧阳唯二 confirmingPresence")
self.showAlertView(confirmBlock: { [weak self] in
guard let self = self else {
return
......@@ -247,7 +252,6 @@ extension YHHKVisaRenewalPaymentVC {
}
})
case .confirmedPresence:
printLog("欧阳唯三 confirmedPresence")
YHHUD.flash(message: confirmedPresenceMsg)
}
}
......
......@@ -23,7 +23,7 @@ class YHVisaRenewalPayContentCell: YHVisaRenewalPayInfoBaseCell {
private lazy var infoDetailLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize: 13)
label.font = .PFSC_R(ofSize: 13)
label.textColor = UIColor(hexString: "#222222")
label.numberOfLines = 0
label.lineBreakMode = .byCharWrapping
......
......@@ -23,7 +23,7 @@ class YHVisaRenewalPayInfoCell: YHVisaRenewalPayInfoBaseCell {
private lazy var infoDetailLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize: 13)
label.font = .PFSC_R(ofSize: 13)
label.textColor = .mainTextColor
return label
}()
......
......@@ -54,7 +54,7 @@ class YHVisaRenewalResidenceActionCell: YHResignDocumentCell {
rightButton.backgroundColor = presenceStatus.bgColor
let isBottom = cellType == .bottom
bottomLineView.isHidden = isBottom ? true : false
let bottomMargin: CGFloat = isBottom ? 38 : 16
let bottomMargin: CGFloat = isBottom ? 28 : 16
infoTitleLabel.snp.remakeConstraints { make in
make.left.equalToSuperview().offset(18)
make.top.equalToSuperview().offset(16)
......
......@@ -288,7 +288,7 @@ extension YHResignDocumentDetailViewController: UITableViewDelegate, UITableView
} else if editType == .delete { // 删除
//
} else if editType == .preview { // 预览
guard let url = URL(string: urlStr) else {
guard URL(string: urlStr) != nil else {
return
}
YHHUD.show(.progress(message: ""))
......
......@@ -55,6 +55,7 @@ class YHResignAppointSubmitScheduleViewController: YHBaseViewController {
button.setTitleColor(UIColor.mainTextColor, for: .normal)
button.setImage(UIImage(named: "resign_appint_guide"), for: .normal)
button.centerTextAndImage(imageAboveText: true, spacing: 0.0)
button.addTarget(self, action: #selector(didGuideBtnClicked), for: .touchUpInside)
return button
}()
......@@ -64,7 +65,7 @@ class YHResignAppointSubmitScheduleViewController: YHBaseViewController {
btn.setTitle("下一步,去查看递交凭证", for: .normal)
btn.setTitleColor(.white, for: .normal)
btn.titleLabel?.font = UIFont.PFSC_M(ofSize: 15)
btn.addTarget(self, action: #selector(didSubmitBtnClicked), for: .touchUpInside)
btn.addTarget(self, action: #selector(didNextBtnClicked), for: .touchUpInside)
btn.layer.cornerRadius = kCornerRadius3
return btn
}()
......@@ -107,22 +108,31 @@ class YHResignAppointSubmitScheduleViewController: YHBaseViewController {
make.height.equalTo(98)
}
self.updateBottomBtnAndMotifyBtnStatus()
}
@objc func didNextBtnClicked() {
}
@objc func didSubmitBtnClicked() {
@objc func didGuideBtnClicked() {
let view = YHResignAppointGuideLineView.sheetView()
view.ischeckBeforeFlag = false
view.block = {
}
view.show()
}
// 更新底部下一步按钮点击状态
func updateBottomBtnAndMotifyBtnStatus() {
var isAtLeatOneHaveConfirmInHK = self.isAtLeatOneHaveConfirmInHK()
// 至少有一个行程已确认在港
let isAtLeatOneHaveConfirmInHK = self.isAtLeatOneHaveConfirmInHK()
self.nextBtn.isUserInteractionEnabled = isAtLeatOneHaveConfirmInHK
self.nextBtn.alpha = isAtLeatOneHaveConfirmInHK ? 1.0 : 0.3
// 所有分批都已确认在港 则无需修改了
self.isHiddenModifyBtn = self.isAllHaveHaveConfirmInHK()
self.tableView.reloadData()
}
func clickConfirmHKButton(status: YHResignConfirmHKStatus, _ model: YHResignAppointGroup) {
......@@ -168,16 +178,21 @@ class YHResignAppointSubmitScheduleViewController: YHBaseViewController {
let vc = YHResignAppointTimeViewController()
vc.renewalId = self.renewalId
if scheduleArr.count > 0 {
// 先得到所有分批用户的集合
YHHUD.show(.progress(message: "加载中..."))
self.viewModel.getResignAppointUserlist(renewalId: self.renewalId) {
[weak self] success, error in
YHHUD.hide()
guard let self = self else { return }
let group = scheduleArr[0]
vc.togetherSetting.isCanEdit = false
vc.togetherSetting.is_together = 1
vc.defaultSubmitTime = group.ready_to_submit_at
vc.defaultLeaveHKTime = group.leave_hk_at
vc.allAppointUsers = group.user_list.map {
return $0.transformToMember()
}
vc.allAppointUsers = self.viewModel.appointUsers
self.navigationController?.pushViewController(vc)
}
}
return
}
......@@ -201,7 +216,9 @@ class YHResignAppointSubmitScheduleViewController: YHBaseViewController {
var lastLeftUnselectUsers: [YHResignAppointMember] = appAppointUsers.deepCopy()
var groupArr = [YHResignAppointTimeSettingModel]()
for (index, group) in scheduleArr.enumerated() {
let model = YHResignAppointTimeSettingModel()
let status = group.getConfirmInHKStatus()
model.isHaveAppointed = (status == .haveConfirmHK)
......@@ -233,15 +250,23 @@ class YHResignAppointSubmitScheduleViewController: YHBaseViewController {
lastLeftUnselectUsers = users.filter {
return $0.isSelected == false
}.deepCopy()
} else { // 已确认在港
let users = group.user_list.map {
return $0.transformToMember()
}
model.users = users
groupArr.append(model)
lastLeftUnselectUsers = lastLeftUnselectUsers.filter {
for model in group.user_list {
if model.memberId == $0.id { // 该用户已经选择过
return false
}
}
return false
return true
}.deepCopy()
}
}
......
......@@ -327,7 +327,7 @@ extension YHResignAppointTimeModifyViewController {
if group.notleaveHK {
noSeletTime = group.ready_to_submit_at.isEmpty
} else {
noSeletTime = (group.ready_to_submit_at.isEmpty && group.leave_hk_at.isEmpty)
noSeletTime = (group.ready_to_submit_at.isEmpty || group.leave_hk_at.isEmpty)
}
if noSeletTime {
isNoSelectTime = true
......@@ -347,6 +347,7 @@ extension YHResignAppointTimeModifyViewController {
var batchs: [[String : Any]] = []
for group in self.selectGroupArr {
group.isClickSubmit = false
if !group.isHaveAppointed { // 非已确认在港 才加入集合
let selectUser = group.users.filter {
let item = $0
return item.isSelected
......@@ -359,7 +360,7 @@ extension YHResignAppointTimeModifyViewController {
"leave_hk_at" : group.notleaveHK ? "" : group.leave_hk_at,
"users" : allUserInfoArr] as! [String : Any]
batchs.append(dict)
}
}
let param: [String : Any] = ["renewal_id" : renewalId,
......
......@@ -75,6 +75,7 @@ class YHResignAppointTimeViewController: YHBaseViewController {
button.setTitleColor(UIColor.mainTextColor, for: .normal)
button.setImage(UIImage(named: "resign_appoint_tips_btn"), for: .normal)
button.centerTextAndImage(imageAboveText: true, spacing: 0.0)
button.addTarget(self, action: #selector(didTipsBtnClicked), for: .touchUpInside)
return button
}()
......@@ -129,6 +130,10 @@ class YHResignAppointTimeViewController: YHBaseViewController {
self.updateUI()
}
@objc func didTipsBtnClicked() {
YHResignAppointSubmitTipsView.alertView().show()
}
func updateUI() {
togetherArr.removeAll()
......@@ -139,7 +144,7 @@ class YHResignAppointTimeViewController: YHBaseViewController {
let model1 = YHResignAppointTimeSettingModel()
model1.ready_to_submit_at = defaultSubmitTime
model1.leave_hk_at = defaultLeaveHKTime
model1.notleaveHK = !defaultLeaveHKTime.isEmpty
model1.notleaveHK = defaultLeaveHKTime.isEmpty
selectGroupArr.append(model1)
self.tableView.reloadData()
return
......@@ -152,7 +157,7 @@ class YHResignAppointTimeViewController: YHBaseViewController {
let model1 = YHResignAppointTimeSettingModel()
model1.ready_to_submit_at = defaultSubmitTime
model1.leave_hk_at = defaultLeaveHKTime
model1.notleaveHK = !defaultLeaveHKTime.isEmpty
model1.notleaveHK = defaultLeaveHKTime.isEmpty
if self.togetherSetting.is_together == 2 { // 不一起递交 需显示候选人列表
// 默认全部选中
let users = allAppointUsers.deepCopy().map {
......@@ -271,7 +276,7 @@ class YHResignAppointTimeViewController: YHBaseViewController {
if group.notleaveHK {
noSeletTime = group.ready_to_submit_at.isEmpty
} else {
noSeletTime = (group.ready_to_submit_at.isEmpty && group.leave_hk_at.isEmpty)
noSeletTime = (group.ready_to_submit_at.isEmpty || group.leave_hk_at.isEmpty)
}
if noSeletTime {
isNoSelectTime = true
......
......@@ -31,6 +31,7 @@ class YHResignAppointMember: SmartCodable, NSCopying {
var apply_name: String = ""
var stay_deadline: String = ""
var state: String = ""
var stay_deadline_start: String = ""
// 自定义 是否选中
var isSelected: Bool = false
......@@ -39,7 +40,7 @@ class YHResignAppointMember: SmartCodable, NSCopying {
}
init(id: Int, renewal_number: Int, apply_relation: Int, apply_uid: String, apply_name: String, stay_deadline: String, state: String, isSelected: Bool) {
init(id: Int, renewal_number: Int, apply_relation: Int, apply_uid: String, apply_name: String, stay_deadline: String, state: String, stay_deadline_start: String, isSelected: Bool) {
self.id = id
self.renewal_number = renewal_number
......@@ -49,11 +50,12 @@ class YHResignAppointMember: SmartCodable, NSCopying {
self.stay_deadline = stay_deadline
self.state = state
self.isSelected = isSelected
self.stay_deadline_start = stay_deadline_start
}
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)
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, stay_deadline_start: self.stay_deadline_start, isSelected: self.isSelected)
}
......
//
// YHResignAppointGuideLineView.swift
// galaxy
//
// Created by edy on 2024/10/14.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHResignAppointGuideLineView: UIView {
typealias Block = () -> ()
var block: Block?
lazy var blackMaskView: UIView = {
let view = UIView()
view.backgroundColor = UIColor(hex: 0x0F1214, alpha: 0.5)
// let tap = UITapGestureRecognizer(target: self, action: #selector(dismiss))
// view.addGestureRecognizer(tap)
return view
}()
lazy var whiteContentView: UIView = {
let view = UIView()
view.backgroundColor = .white
return view
}()
lazy var bottomView: UIView = {
let view = UIView()
view.backgroundColor = .clear
view.addSubview(self.rewardBtn)
self.rewardBtn.snp.makeConstraints { make in
make.top.equalToSuperview().offset(10)
make.left.equalTo(kMargin)
make.right.equalTo(-kMargin)
make.height.equalTo(44)
}
view.layer.zPosition = 10
return view
}()
//我已知悉,确认
lazy var rewardBtn: UIButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 15)
button.contentHorizontalAlignment = .center
button.setTitle("我已知悉,确认", for: .normal)
button.setTitleColor(UIColor.white, for: .normal)
button.layer.cornerRadius = kCornerRadius3
button.clipsToBounds = true
button.addTarget(self, action: #selector(clickSureBtn), for: .touchUpInside)
button.backgroundColor = UIColor.brandMainColor
return button
}()
lazy var myScrollView: UIScrollView = {
let view = UIScrollView()
view.backgroundColor = .clear
view.showsVerticalScrollIndicator = false
view.showsHorizontalScrollIndicator = false
view.delegate = self
return view
}()
lazy var bkgImageV: UIImageView = {
let imageV = UIImageView()
imageV.image = UIImage(named: "resign_appoint_guide_text_img")
imageV.contentMode = .scaleAspectFit
imageV.clipsToBounds = true
return imageV
}()
lazy var bkgImageV2: UIImageView = {
let imageV = UIImageView()
imageV.image = UIImage(named: "resign_appoint_guide_head_bg")
imageV.clipsToBounds = true
return imageV
}()
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override init(frame: CGRect) {
super.init(frame: frame)
setupUI()
}
private var timer : Timer?
private var maxCount : Int = 5
//之前是否展示过
var ischeckBeforeFlag : Bool = false {
didSet {
if ischeckBeforeFlag {
setButtonEnable(true)
} else {
setButtonEnable(false)
startTimer()
}
}
}
}
extension YHResignAppointGuideLineView {
static func sheetView() -> YHResignAppointGuideLineView {
let view = YHResignAppointGuideLineView(frame:UIScreen.main.bounds)
return view
}
func show() {
UIApplication.shared.yhKeyWindow()?.addSubview(self)
UIView.animate(withDuration: 0.5) {
let whiteHeight = KScreenHeight - k_Height_NavigationtBarAndStatuBar
self.whiteContentView.frame = CGRect(x: 0, y: KScreenHeight - whiteHeight, width: KScreenWidth, height: whiteHeight)
}
}
@objc func dismiss() {
self.removeFromSuperview()
}
@objc func clickSureBtn() {
self.block?()
dismiss()
}
}
private extension YHResignAppointGuideLineView {
@objc func timerFired() {
// 定时器触发时执行的代码
print("Timer fired")
self.maxCount = self.maxCount - 1
if self.maxCount < 0 {
self.stopTimer()
self.setButtonEnable(true)
} else {
rewardBtn.setTitle("请上滑看完指引后操作(\(maxCount)s)", for: .normal)
}
}
func startTimer() {
stopTimer()
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(timerFired), userInfo: nil, repeats: true)
RunLoop.current.add(timer!, forMode: .common)
}
func stopTimer() {
maxCount = 5
timer?.invalidate()
timer = nil
}
func setButtonEnable(_ enable : Bool) {
rewardBtn.isEnabled = enable
if enable {
rewardBtn.setTitle("我已知悉,确认", for: .normal)
rewardBtn.backgroundColor = UIColor.brandMainColor
} else {
rewardBtn.setTitle("请上滑看完指引后操作(5s)", for: .normal)
rewardBtn.backgroundColor = UIColor(hex: 0xB7C0CC, alpha: 1.0)
}
}
func setupUI() {
self.addSubview(blackMaskView)
self.addSubview(whiteContentView)
let corner = UIRectCorner(rawValue: UIRectCorner.topLeft.rawValue | UIRectCorner.topRight.rawValue)
let path = UIBezierPath(roundedRect:bounds,byRoundingCorners: corner,cornerRadii:CGSizeMake(kCornerRadius6, kCornerRadius6));
let layer = CAShapeLayer();
layer.frame = whiteContentView.bounds;
layer.path = path.cgPath;
whiteContentView.layer.mask = layer;
whiteContentView.clipsToBounds = true
blackMaskView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
let whiteHeight = KScreenHeight - k_Height_NavigationtBarAndStatuBar
// whiteContentView.snp.makeConstraints { make in
// make.left.right.bottom.equalToSuperview()
// make.height.equalTo(whiteHeight)
// }
whiteContentView.frame = CGRect(x: 0, y: KScreenHeight, width: KScreenWidth, height: whiteHeight)
whiteContentView.addSubview(bkgImageV2)
bkgImageV2.snp.makeConstraints { make in
make.top.left.right.equalToSuperview()
make.height.equalTo(KScreenWidth*(151.0/375.0))
}
whiteContentView.addSubview(bottomView)
bottomView.snp.makeConstraints { make in
make.bottom.left.right.equalToSuperview()
make.height.equalTo(98)
}
whiteContentView.addSubview(myScrollView)
myScrollView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(20)
make.left.right.equalToSuperview()
make.width.equalTo(KScreenWidth)
make.height.equalTo(whiteHeight-98-20)
}
if let _ = UIImage(named:"resign_appoint_guide_text_img") {
let radio = 1549.0/375.0
myScrollView.addSubview(bkgImageV)
bkgImageV.snp.makeConstraints { make in
make.top.equalToSuperview()
make.left.equalTo(0)
make.right.equalTo(0)
make.width.equalTo(KScreenWidth)
make.height.equalTo((KScreenWidth)*radio)
make.bottom.equalTo(0)
}
myScrollView.contentSize = CGSize(width: KScreenWidth, height:KScreenWidth*radio)
}
}
}
extension YHResignAppointGuideLineView : UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if !ischeckBeforeFlag {
let scrollViewContentHeight = scrollView.contentSize.height
let scrollOffsetThreshold = scrollViewContentHeight - scrollView.bounds.size.height
// 当前滚动位置
let currentOffset = scrollView.contentOffset.y
if currentOffset > scrollOffsetThreshold { // 接近底部
// 滚动到了底部
ischeckBeforeFlag = true
stopTimer()
setButtonEnable(true)
} else {
// 没有滚动到底部
}
}
}
}
......@@ -61,22 +61,34 @@ class YHResignAppointedScheduleLineView: UIView {
createUI()
}
func getDateOfYYYYMMDD(_ dateString: String) -> String {
// dateString格式为yyyy-MM-dd HH:mm:ss 返回yyyy-MM-dd
if dateString.count <= 10 {
return dateString
}
return String(dateString.prefix(10))
}
// 已确认在港时间 银河递交续签资料时间 查看递交回执时间
func updateDates(confirmDate: String, submitDate: String, watchDate: String) {
let newConfirmDate = getDateOfYYYYMMDD(confirmDate)
let newSubmitDate = getDateOfYYYYMMDD(submitDate)
let newWatchDate = getDateOfYYYYMMDD(watchDate)
if steps.count >= 2 { // 已确认在港节点
let confirmModel = steps[1]
confirmModel.time = confirmDate
confirmModel.time = newConfirmDate
}
if steps.count >= 3 { // 银河递交续签资料节点
let submitModel = steps[2]
submitModel.time = submitDate
submitModel.time = newSubmitDate
}
if steps.count >= 4 { // 查看递交回执节点
let watchModel = steps[3]
watchModel.time = watchDate
watchModel.time = newWatchDate
}
self.collectView.reloadData()
}
......
......@@ -106,6 +106,7 @@ class YHResignHaveAppointedMultipleInfoCell: UITableViewCell {
}
func updateModel(_ model: YHResignAppointGroup) {
titleLabel.text = "第\(String.convertNumberToChineseText(model.batchIndex))批"
var names = "申请人:"
for (index, user) in model.user_list.enumerated() {
......@@ -141,11 +142,11 @@ class YHResignHaveAppointedMultipleInfoCell: UITableViewCell {
}
}
confirmHKTimeLabel.removeFromSuperview()
confirmHKTimeLabel.snp.removeConstraints()
confirmHKTimeLabel.isHidden = true
if self.confirmHKStatus == .haveConfirmHK { // 已确认在港 需要显示确认在港时间
self.addSubview(confirmHKTimeLabel)
confirmHKTimeLabel.isHidden = false
confirmHKTimeLabel.snp.remakeConstraints { make in
make.left.equalTo(18)
make.right.equalTo(-18)
......
......@@ -115,7 +115,7 @@ class YHResignAppointViewModel: NSObject {
func submitConfirmInHK(id: Int, callBack: @escaping (_ success: Bool,_ error: YHErrorModel?)->()) {
let params:[String : Any] = ["id" : id]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.ResignAppoint.confirmInHK
let _ = YHNetRequest.getRequest(url: strUrl, params:params) { [weak self] json, code in
let _ = YHNetRequest.postRequest(url: strUrl, params:params) { [weak self] json, code in
//1. json字符串 转 对象
guard let _ = self else { return }
if json.code == 200 {
......
......@@ -9,10 +9,13 @@
import UIKit
import AttributedString
class YHResignInfoConfirmViewController: YHBaseViewController {
class YHResignConfirmInfoListViewController: YHBaseViewController {
var stepId: Int = 0 // 批次ID
var familyArr = [YHResignInfoConfirmFamilyInfoModel]()
let viewModel = YHResignInfoConfirmViewModel()
// YHApplicantInfoModel
var familyArr: [String] = ["", "", "", ""]
lazy var tableView: UITableView = {
let tableView = UITableView(frame: CGRect.zero, style:.grouped)
if #available(iOS 15.0, *) {
......@@ -86,12 +89,30 @@ class YHResignInfoConfirmViewController: YHBaseViewController {
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
showRiskAlertView()
requestList()
}
@objc func didBottomBtnClicked() {
}
func showRiskAlertView() {
let isShowKey = "isShowResignConfirmRisk_\(stepId)"
if let isShow = UserDefaults.standard.value(forKey: isShowKey) as? Bool, isShow == true {
} else {
// 风险弹窗
YHResignRiskWarningAlertView.alertView().show()
UserDefaults.standard.set(true, forKey: isShowKey)
UserDefaults.standard.synchronize()
}
}
}
extension YHResignInfoConfirmViewController: UITableViewDelegate, UITableViewDataSource {
extension YHResignConfirmInfoListViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return familyArr.count
......@@ -103,6 +124,7 @@ extension YHResignInfoConfirmViewController: UITableViewDelegate, UITableViewDat
if 0 <= indexPath.row && indexPath.row < familyArr.count {
let model = familyArr[indexPath.row]
cell.updateModel(model)
cell.updateLineMargin(indexPath.row == 0 ? 0.0 : 18.0)
if indexPath.row == familyArr.count-1 {
let corner = UIRectCorner(rawValue: UIRectCorner.bottomLeft.rawValue | UIRectCorner.bottomRight.rawValue)
......@@ -159,3 +181,15 @@ extension YHResignInfoConfirmViewController: UITableViewDelegate, UITableViewDat
}
}
extension YHResignConfirmInfoListViewController {
func requestList() {
YHHUD.show(.progress(message: "加载中..."))
self.viewModel.getList(id: stepId) { success, error in
YHHUD.hide()
self.familyArr.removeAll()
self.familyArr.append(contentsOf: self.viewModel.getList())
self.tableView.reloadData()
}
}
}
//
// YHResignInfoConfirmModifyViewController.swift
// galaxy
//
// Created by edy on 2024/10/14.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHResignInfoConfirmModifyViewController: YHBaseViewController {
var stepId: Int = 0 // 批次ID
override func viewDidLoad() {
super.viewDidLoad()
}
}
//
// YHResignInfoConfirmInfoListModel.swift
// galaxy
//
// Created by edy on 2024/10/14.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import SmartCodable
class YHResignInfoConfirmInfoListModel: SmartCodable {
var id: Int = 0
var main: YHResignInfoConfirmFamilyInfoModel?
var spouse: YHResignInfoConfirmFamilyInfoModel?
var children: [YHResignInfoConfirmFamilyInfoModel] = []
enum CodingKeys: String, CodingKey {
case id = "id"
case main = "main"
case spouse = "spouse"
case children = "children"
}
required init() {
}
init(id: Int, main: YHResignInfoConfirmFamilyInfoModel, spouse: YHResignInfoConfirmFamilyInfoModel, children: [YHResignInfoConfirmFamilyInfoModel]) {
self.id = id
self.main = main
self.spouse = spouse
self.children = children
}
}
class YHResignInfoConfirmFamilyInfoModel: SmartCodable {
var info: YHResignInfoConfirmFamilyModel = YHResignInfoConfirmFamilyModel()
var confirmStatus: Int = 0
enum CodingKeys: String, CodingKey {
case info = "info"
case confirmStatus = "confirm_status"
}
required init() {
}
init(info: YHResignInfoConfirmFamilyModel, confirmStatus: Int) {
self.info = info
self.confirmStatus = confirmStatus
}
}
class YHResignConfirmIdentityModel: SmartCodable {
var type: Int = -1
var name: String = ""
var number: String = ""
var begin: String = ""
var end: String = ""
required init() {
}
enum CodingKeys: String, CodingKey {
case type = "type"
case name = "name"
case number = "number"
case begin = "begin"
case end = "end"
}
init(type: Int, name: String, number: String, begin: String, end: String) {
self.type = type
self.name = name
self.number = number
self.begin = begin
self.end = end
}
}
// MARK: - Info
class YHResignInfoConfirmFamilyModel: SmartCodable {
var id: Int = -1
var name: String = ""
var nameHistory: String = ""
var familyName: String = ""
var familyNameHistory: String = ""
var givenName: String = ""
var givenNameHistory: String = ""
var married: String = ""
var marriedHistory: String = ""
var nationalityType: Int = -1
var nationalityTypeHistory: Int = -1
var nationality: String = ""
var nationalityHistory: String = ""
var hkIdentityid: String = ""
var hkIdentityidHistory: String = ""
var identity: YHResignConfirmIdentityModel?
var occupationName: String = ""
var occupationNameHistory: String = ""
var hkAddress: String = ""
var hkAddressHistory: String = ""
// 自定义属性
var relation:Int = YHFamilyMemberRelationType.none.rawValue
// 是否检测编辑字段
var isCheck: Bool = false
required init() {
}
func getRelation() -> String {
if relation == YHFamilyMemberRelationType.mainApplicant.rawValue {
return "主申人"
} else if relation == YHFamilyMemberRelationType.spouse.rawValue {
return "配偶"
} else if relation == YHFamilyMemberRelationType.child.rawValue {
return "子女"
}
return ""
}
enum CodingKeys: String, CodingKey {
case id = "id"
case name = "name"
case nameHistory = "name_history"
case familyName = "family_name"
case familyNameHistory = "family_name_history"
case givenName = "given_name"
case givenNameHistory = "given_name_history"
case married = "married"
case marriedHistory = "married_history"
case nationalityType = "nationality_type"
case nationalityTypeHistory = "nationality_type_history"
case nationality = "nationality"
case nationalityHistory = "nationality_history"
case hkIdentityid = "hk_identity_id"
case hkIdentityidHistory = "hk_identity_id_history"
case identity = "identity"
case occupationName = "occupation_name"
case occupationNameHistory = "occupation_name_history"
case hkAddress = "hk_address"
case hkAddressHistory = "hk_address_history"
}
init(id: Int, name: String, nameHistory: String, familyName: String, familyNameHistory: String, givenName: String, givenNameHistory: String, married: String, marriedHistory: String, nationalityType: Int, nationalityTypeHistory: Int, nationality: String, nationalityHistory: String, hkIdentityid: String, hkIdentityidHistory: String, identity: YHResignConfirmIdentityModel, occupationName: String, occupationNameHistory: String, hkAddress: String, hkAddressHistory: String) {
self.id = id
self.name = name
self.nameHistory = nameHistory
self.familyName = familyName
self.familyNameHistory = familyNameHistory
self.givenName = givenName
self.givenNameHistory = givenNameHistory
self.married = married
self.marriedHistory = marriedHistory
self.nationalityType = nationalityType
self.nationalityTypeHistory = nationalityTypeHistory
self.nationality = nationality
self.nationalityHistory = nationalityHistory
self.hkIdentityid = hkIdentityid
self.hkIdentityidHistory = hkIdentityidHistory
self.identity = identity
self.occupationName = occupationName
self.occupationNameHistory = occupationNameHistory
self.hkAddress = hkAddress
self.hkAddressHistory = hkAddressHistory
}
}
......@@ -12,7 +12,7 @@ class YHResignFamilyMemberInfoCell: UITableViewCell {
static let cellReuseIdentifier = "YHResignFamilyMemberInfoCell"
func updateModel(_ model: YHApplicantInfoModel) {
func updateModel(_ model: YHResignInfoConfirmFamilyInfoModel) {
self.relationLabel.text = model.info.getRelation()
self.nameLabel.text = model.info.name
self.pinyinLabel.text = "\(model.info.familyName) \(model.info.givenName)"
......
//
// YHResignInfoConfirmIViewModel.swift
// galaxy
//
// Created by edy on 2024/10/14.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHResignInfoConfirmViewModel {
var listModel = YHResignInfoConfirmInfoListModel()
func getList(id: Int, callBack: @escaping (_ success: Bool,_ error: YHErrorModel?)->()) {
let params = ["id" : id]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.ResignInfoConfirm.getList
let _ = YHNetRequest.getRequest(url: strUrl, params:params) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
if json.code == 200 {
guard let dic = json.data?.peel as? [String : Any], let resultModel = YHResignInfoConfirmInfoListModel.deserialize(from: dic) else {
let err = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description())
callBack(false, err)
return
}
self.listModel = resultModel
callBack(true, nil)
} else {
let err = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg.isEmpty ? "" : json.msg)
self.listModel = YHResignInfoConfirmInfoListModel()
callBack(false,err)
}
} failBlock: { err in
self.listModel = YHResignInfoConfirmInfoListModel()
callBack(false,err)
}
}
func getList() -> [YHResignInfoConfirmFamilyInfoModel] {
var results = [YHResignInfoConfirmFamilyInfoModel]()
if let main = self.listModel.main {
main.info.relation = YHFamilyMemberRelationType.mainApplicant.rawValue
results.append(main)
}
if let spouse = listModel.spouse {
spouse.info.relation = YHFamilyMemberRelationType.spouse.rawValue
results.append(spouse)
}
for child in listModel.children {
child.info.relation = YHFamilyMemberRelationType.child.rawValue
results.append(child)
}
return results
}
}
......@@ -341,14 +341,6 @@ extension YHMyViewController : UITableViewDelegate, UITableViewDataSource {
return
}
// if true {
//
// YHResignAppointTipsView.alertView().show()
//
//// let vc = YHResignInfoConfirmViewController()
//// self.navigationController?.pushViewController(vc)
// return
// }
let item: PersonalModuleItem = items[indexPath.row]
switch item.type {
case .myCard://我的名片
......
......@@ -565,6 +565,13 @@ class YHAllApiName {
static let confirmInHK = "super-app/renewal/confirm-stay-hk"
}
// 续签信息确认
struct ResignInfoConfirm {
static let getList = "super-app/renewal/information-list"
static let confirmInfo = "super-app/renewal/information-confirm"
static let upate = "super-app/renewal/information-update"
}
// 在港记录
struct HKImmigrationRecords {
// 在港记录-汇总
......
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "背景头图@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "背景头图@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "续签在港递交指引@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "续签在港递交指引@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
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