Commit 54bddd77 authored by Alex朱枝文's avatar Alex朱枝文

高才申请类别弹窗

parent 15fc65d2
...@@ -598,6 +598,7 @@ ...@@ -598,6 +598,7 @@
04B4018C2CE1D236005C61A9 /* YHGCApplicationTypeSelectCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B4018B2CE1D236005C61A9 /* YHGCApplicationTypeSelectCell.swift */; }; 04B4018C2CE1D236005C61A9 /* YHGCApplicationTypeSelectCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B4018B2CE1D236005C61A9 /* YHGCApplicationTypeSelectCell.swift */; };
04B4018F2CE1E6DB005C61A9 /* YHGCApplicationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B4018E2CE1E6DB005C61A9 /* YHGCApplicationType.swift */; }; 04B4018F2CE1E6DB005C61A9 /* YHGCApplicationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B4018E2CE1E6DB005C61A9 /* YHGCApplicationType.swift */; };
04B401912CE20360005C61A9 /* YHGCApplicationModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B401902CE20360005C61A9 /* YHGCApplicationModel.swift */; }; 04B401912CE20360005C61A9 /* YHGCApplicationModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B401902CE20360005C61A9 /* YHGCApplicationModel.swift */; };
04B401932CE22EF0005C61A9 /* YHGCVisaProgramPopVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B401922CE22EF0005C61A9 /* YHGCVisaProgramPopVC.swift */; };
04B4B8D52C89CE5E00ED82BC /* YHButlerServiceMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B4B8D42C89CE5E00ED82BC /* YHButlerServiceMessage.swift */; }; 04B4B8D52C89CE5E00ED82BC /* YHButlerServiceMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B4B8D42C89CE5E00ED82BC /* YHButlerServiceMessage.swift */; };
04B4B8D72C8AE77C00ED82BC /* YHButlerServiceMessageHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B4B8D62C8AE77C00ED82BC /* YHButlerServiceMessageHandler.swift */; }; 04B4B8D72C8AE77C00ED82BC /* YHButlerServiceMessageHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B4B8D62C8AE77C00ED82BC /* YHButlerServiceMessageHandler.swift */; };
04B4B8DC2C90696E00ED82BC /* YHResignDocumentManagementVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B4B8DB2C90696E00ED82BC /* YHResignDocumentManagementVC.swift */; }; 04B4B8DC2C90696E00ED82BC /* YHResignDocumentManagementVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04B4B8DB2C90696E00ED82BC /* YHResignDocumentManagementVC.swift */; };
...@@ -1579,6 +1580,7 @@ ...@@ -1579,6 +1580,7 @@
04B4018B2CE1D236005C61A9 /* YHGCApplicationTypeSelectCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCApplicationTypeSelectCell.swift; sourceTree = "<group>"; }; 04B4018B2CE1D236005C61A9 /* YHGCApplicationTypeSelectCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCApplicationTypeSelectCell.swift; sourceTree = "<group>"; };
04B4018E2CE1E6DB005C61A9 /* YHGCApplicationType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCApplicationType.swift; sourceTree = "<group>"; }; 04B4018E2CE1E6DB005C61A9 /* YHGCApplicationType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCApplicationType.swift; sourceTree = "<group>"; };
04B401902CE20360005C61A9 /* YHGCApplicationModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCApplicationModel.swift; sourceTree = "<group>"; }; 04B401902CE20360005C61A9 /* YHGCApplicationModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCApplicationModel.swift; sourceTree = "<group>"; };
04B401922CE22EF0005C61A9 /* YHGCVisaProgramPopVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCVisaProgramPopVC.swift; sourceTree = "<group>"; };
04B4B8D42C89CE5E00ED82BC /* YHButlerServiceMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHButlerServiceMessage.swift; sourceTree = "<group>"; }; 04B4B8D42C89CE5E00ED82BC /* YHButlerServiceMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHButlerServiceMessage.swift; sourceTree = "<group>"; };
04B4B8D62C8AE77C00ED82BC /* YHButlerServiceMessageHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHButlerServiceMessageHandler.swift; sourceTree = "<group>"; }; 04B4B8D62C8AE77C00ED82BC /* YHButlerServiceMessageHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHButlerServiceMessageHandler.swift; sourceTree = "<group>"; };
04B4B8DB2C90696E00ED82BC /* YHResignDocumentManagementVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHResignDocumentManagementVC.swift; sourceTree = "<group>"; }; 04B4B8DB2C90696E00ED82BC /* YHResignDocumentManagementVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHResignDocumentManagementVC.swift; sourceTree = "<group>"; };
...@@ -3976,6 +3978,7 @@ ...@@ -3976,6 +3978,7 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
04B401892CE1D0C6005C61A9 /* YHGCApplicationTypeController.swift */, 04B401892CE1D0C6005C61A9 /* YHGCApplicationTypeController.swift */,
04B401922CE22EF0005C61A9 /* YHGCVisaProgramPopVC.swift */,
); );
path = C; path = C;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -5970,6 +5973,7 @@ ...@@ -5970,6 +5973,7 @@
04256E192C75BD2700A37BA4 /* YHVisaPaymentViewModel.swift in Sources */, 04256E192C75BD2700A37BA4 /* YHVisaPaymentViewModel.swift in Sources */,
04754A952B96FF3D00F8ADCA /* UITextField+Extension.swift in Sources */, 04754A952B96FF3D00F8ADCA /* UITextField+Extension.swift in Sources */,
04256DD02C7041C700A37BA4 /* YHInfoItemView.swift in Sources */, 04256DD02C7041C700A37BA4 /* YHInfoItemView.swift in Sources */,
04B401932CE22EF0005C61A9 /* YHGCVisaProgramPopVC.swift in Sources */,
A5ACE9312B4564F7002C94D2 /* YHPersonalCenterCell.swift in Sources */, A5ACE9312B4564F7002C94D2 /* YHPersonalCenterCell.swift in Sources */,
0430E6562C7342AB000511E2 /* YHAdopterIncomeFileCountTableViewCell.swift in Sources */, 0430E6562C7342AB000511E2 /* YHAdopterIncomeFileCountTableViewCell.swift in Sources */,
045EEE9A2B9F171A0022A143 /* YHWorkIntroductionViewModel.swift in Sources */, 045EEE9A2B9F171A0022A143 /* YHWorkIntroductionViewModel.swift in Sources */,
......
...@@ -33,7 +33,7 @@ class YHGCApplicationTypeController: YHBaseViewController { ...@@ -33,7 +33,7 @@ class YHGCApplicationTypeController: YHBaseViewController {
}() }()
private lazy var tableView: UITableView = { private lazy var tableView: UITableView = {
let view = UITableView(frame: .zero, style: .grouped) let view = UITableView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: KScreenHeight), style: .grouped)
view.estimatedSectionHeaderHeight = 0.01 view.estimatedSectionHeaderHeight = 0.01
view.estimatedSectionFooterHeight = 20 view.estimatedSectionFooterHeight = 20
view.sectionHeaderHeight = 0.01 view.sectionHeaderHeight = 0.01
...@@ -66,9 +66,7 @@ class YHGCApplicationTypeController: YHBaseViewController { ...@@ -66,9 +66,7 @@ class YHGCApplicationTypeController: YHBaseViewController {
button.addTarget(self, action: #selector(clickSubmitButton), for: .touchUpInside) button.addTarget(self, action: #selector(clickSubmitButton), for: .touchUpInside)
button.layer.cornerRadius = kCornerRadius3 button.layer.cornerRadius = kCornerRadius3
button.clipsToBounds = true button.clipsToBounds = true
let isEnable = YHVisaRenewalGuideVC.didShowGuide button.backgroundColor = .brandMainColor
button.backgroundColor = isEnable ? .brandMainColor : UIColor(hex: 0xB7C0CC, alpha: 1.0)
button.isEnabled = isEnable
return button return button
}() }()
...@@ -87,7 +85,17 @@ class YHGCApplicationTypeController: YHBaseViewController { ...@@ -87,7 +85,17 @@ class YHGCApplicationTypeController: YHBaseViewController {
extension YHGCApplicationTypeController { extension YHGCApplicationTypeController {
@objc private func clickSubmitButton() { @objc private func clickSubmitButton() {
// guard let model = datas.flatMap({ $0 }).first(where: { model in
model.isSelected == true
}) else {
YHHUD.flash(message: "请选择申请类别")
return
}
YHCommonAlertView.show("", "确定是否提交申请类别?提交后将不能修改", "取消", "确认", fullGuestureEnable: false) {
//
} callBack: {
//
}
} }
private func setupUI() { private func setupUI() {
...@@ -99,9 +107,10 @@ extension YHGCApplicationTypeController { ...@@ -99,9 +107,10 @@ extension YHGCApplicationTypeController {
view.addSubview(tableView) view.addSubview(tableView)
view.addSubview(bottomView) view.addSubview(bottomView)
bottomView.addSubview(submitButton) bottomView.addSubview(submitButton)
let ratio = 318.0 / 375.0
bgIcon.snp.makeConstraints { make in bgIcon.snp.makeConstraints { make in
make.top.left.right.equalToSuperview() make.top.left.right.equalToSuperview()
make.height.equalTo(bgIcon).multipliedBy(1) make.height.equalTo(bgIcon).multipliedBy(ratio)
} }
bottomView.snp.makeConstraints { make in bottomView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview() make.left.right.bottom.equalToSuperview()
...@@ -123,6 +132,17 @@ extension YHGCApplicationTypeController { ...@@ -123,6 +132,17 @@ extension YHGCApplicationTypeController {
} }
tableView.tableHeaderView = headerView tableView.tableHeaderView = headerView
} }
private func showPopVC(type: YHGCApplicationType) {
let vc = YHGCVisaProgramPopVC(type: type)
let pc = YHBottomPresentationController(presentedViewController: vc, presenting: self)
pc.customRadius = 8.0
vc.transitioningDelegate = pc
vc.sureButtonEvent = { [weak vc] in
vc?.dismiss(animated: true)
}
present(vc, animated: true, completion: nil)
}
} }
extension YHGCApplicationTypeController: UITableViewDelegate, UITableViewDataSource { extension YHGCApplicationTypeController: UITableViewDelegate, UITableViewDataSource {
...@@ -149,6 +169,9 @@ extension YHGCApplicationTypeController: UITableViewDelegate, UITableViewDataSou ...@@ -149,6 +169,9 @@ extension YHGCApplicationTypeController: UITableViewDelegate, UITableViewDataSou
let model = sectionArr[indexPath.row] let model = sectionArr[indexPath.row]
if let cell = tableView.dequeueReusableCell(withIdentifier: YHGCApplicationTypeSelectCell.cellReuseIdentifier) as? YHGCApplicationTypeSelectCell { if let cell = tableView.dequeueReusableCell(withIdentifier: YHGCApplicationTypeSelectCell.cellReuseIdentifier) as? YHGCApplicationTypeSelectCell {
cell.setupCellInfo(type: model.type, isCurrentSelected: model.isSelected) cell.setupCellInfo(type: model.type, isCurrentSelected: model.isSelected)
cell.actionBtnEvent = { [weak self] in
self?.showPopVC(type: model.type)
}
return cell return cell
} }
return UITableViewCell() return UITableViewCell()
......
//
// YHGCVisaProgramPopVC.swift
// galaxy
//
// Created by alexzzw on 2024/11/11.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import AttributedString
class YHGCVisaProgramPopVC: YHBaseViewController {
private lazy var topProgramIcon: UIImageView = {
let view = UIImageView()
return view
}()
private lazy var sureButton: UIButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 16)
button.setTitle("我已知悉,确认", for: .normal)
button.setTitle("我已知悉,确认", for: .highlighted)
button.setTitleColor( UIColor(hex:0xffffff), for: .normal)
button.setTitleColor( UIColor(hex:0xffffff), for: .highlighted)
button.addTarget(self, action: #selector(clickSureButton), for: .touchUpInside)
button.layer.cornerRadius = kCornerRadius3
button.clipsToBounds = true
button.backgroundColor = .brandMainColor
return button
}()
private lazy var infoDetailLabel: UILabel = {
let label = UILabel()
label.textColor = .mainTextColor
label.font = .PFSC_R(ofSize: 14)
label.lineBreakMode = .byCharWrapping
label.numberOfLines = 0
return label
}()
private lazy var subContainerView: YHBaseDynamicCornerRadiusView = {
let view = YHBaseDynamicCornerRadiusView(cornerRadius: 4, corner: .allCorners)
view.backgroundColor = .contentBkgColor
return view
}()
private lazy var infoMarkLabel: UILabel = {
let label = UILabel()
label.textColor = UIColor(hexString: "#6D788A")
label.font = .PFSC_R(ofSize: 14)
label.lineBreakMode = .byCharWrapping
label.numberOfLines = 0
return label
}()
var sureButtonEvent: (() -> Void)?
private let type: YHGCApplicationType
init(type: YHGCApplicationType) {
self.type = type
super.init(nibName: nil, bundle: nil)
}
@MainActor required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
}
}
extension YHGCVisaProgramPopVC {
@objc private func clickSureButton() {
sureButtonEvent?()
}
private func setupUI() {
gk_navBarAlpha = 0
gk_navigationBar.isHidden = true
view.backgroundColor = UIColor.white
view.addSubview(topProgramIcon)
view.addSubview(sureButton)
view.addSubview(infoDetailLabel)
view.addSubview(subContainerView)
subContainerView.addSubview(infoMarkLabel)
let ratio = 143.0 / 375.0
topProgramIcon.snp.makeConstraints { make in
make.top.left.right.equalToSuperview()
make.height.equalTo(topProgramIcon.snp.width).multipliedBy(ratio)
}
let widthRatio = KScreenWidth / 375.0
infoDetailLabel.snp.makeConstraints { make in
make.top.equalToSuperview().offset(124.0 * widthRatio)
make.left.equalToSuperview().offset(20 * widthRatio)
make.right.equalToSuperview().offset(-20 * widthRatio)
}
subContainerView.snp.makeConstraints { make in
make.top.equalTo(infoDetailLabel.snp.bottom).offset(20.0 * widthRatio)
make.left.equalToSuperview().offset(20 * widthRatio)
make.right.equalToSuperview().offset(-20 * widthRatio)
}
infoMarkLabel.snp.makeConstraints { make in
make.top.equalToSuperview().offset(16.0 * widthRatio)
make.left.equalToSuperview().offset(16 * widthRatio)
make.right.equalToSuperview().offset(-16 * widthRatio)
make.bottom.equalToSuperview().offset(-16.0 * widthRatio)
}
sureButton.snp.makeConstraints { make in
make.top.greaterThanOrEqualTo(subContainerView.snp.bottom).offset(10)
make.left.equalToSuperview().offset(kMargin * widthRatio)
make.right.equalToSuperview().offset(-kMargin * widthRatio)
make.bottom.equalTo(view.safeAreaLayoutGuide.snp.bottom).offset(-10 * widthRatio)
make.height.equalTo(48)
}
topProgramIcon.image = UIImage(named: type.programIconTitle())
infoDetailLabel.text = type.detailText()
infoMarkLabel.attributed.text = type.attributedTips()
preferredContentSize = CGSize(width: KScreenWidth, height: 452 * widthRatio)
}
}
private extension YHGCApplicationType {
func programIconTitle() -> String {
switch self {
case .typeA:
return "gc_visa_program_a"
case .typeB:
return "gc_visa_program_b"
case .typeC:
return "gc_visa_program_c"
}
}
func detailText() -> String {
switch self {
case .typeA:
return "在紧接申请前一年,全年收入达港币250万元或以上(或等值外币) 的人士"
case .typeB:
return "4个指定榜单中的世界百强大学的学士学位毕业生(以入境处内置榜单为准),且过去5年累积有不低于3年的工作经验"
case .typeC:
return "过去5年在4个指定榜单中的世界百强大学取得学士学位(以入境处内置榜单为准),但累积工作经验不足3年"
}
}
func attributedTips() -> ASAttributedString {
switch self {
case .typeA:
let attr1: ASAttributedString = .init(string: "注:必须是", .font(UIFont.PFSC_R(ofSize: 14)), .foreground(UIColor(hexString: "#6D788A") ?? UIColor.gray))
let attr2: ASAttributedString = .init(string: "课税收入", .font(UIFont.PFSC_B(ofSize: 14)), .foreground(UIColor.brandMainColor))
let attr3: ASAttributedString = .init(string: ",享受税收优惠、免税的收入,不计算在内", .font(UIFont.PFSC_R(ofSize: 14)), .foreground(UIColor(hexString: "#6D788A") ?? UIColor.gray))
return attr1 + attr2 + attr3
case .typeB:
let attr1: ASAttributedString = .init(string: "注:必须是", .font(UIFont.PFSC_R(ofSize: 14)), .foreground(UIColor(hexString: "#6D788A") ?? UIColor.gray))
let attr2: ASAttributedString = .init(string: "紧接申请", .font(UIFont.PFSC_B(ofSize: 14)), .foreground(UIColor.brandMainColor))
let attr3: ASAttributedString = .init(string: "的前五年,累积工作经验不低于三年", .font(UIFont.PFSC_R(ofSize: 14)), .foreground(UIColor(hexString: "#6D788A") ?? UIColor.gray))
return attr1 + attr2 + attr3
case .typeC:
let attr1: ASAttributedString = .init(string: "注:", .font(UIFont.PFSC_R(ofSize: 14)), .foreground(UIColor(hexString: "#6D788A") ?? UIColor.gray))
let attr2: ASAttributedString = .init(string: "不适用于", .font(UIFont.PFSC_B(ofSize: 14)), .foreground(UIColor.brandMainColor))
let attr3: ASAttributedString = .init(string: "在港修读全日制经本地评审课程而获得学士学位的非本地生", .font(UIFont.PFSC_R(ofSize: 14)), .foreground(UIColor(hexString: "#6D788A") ?? UIColor.gray))
return attr1 + attr2 + attr3
}
}
}
...@@ -116,7 +116,7 @@ extension YHGCApplicationTypeSelectCell { ...@@ -116,7 +116,7 @@ extension YHGCApplicationTypeSelectCell {
make.top.equalToSuperview().offset(20) make.top.equalToSuperview().offset(20)
make.left.equalToSuperview().offset(20) make.left.equalToSuperview().offset(20)
make.width.equalTo(88) make.width.equalTo(88)
make.height.equalTo(108) make.height.equalTo(108).priority(.high)
make.bottom.lessThanOrEqualToSuperview().offset(-20) make.bottom.lessThanOrEqualToSuperview().offset(-20)
} }
...@@ -139,7 +139,7 @@ extension YHGCApplicationTypeSelectCell { ...@@ -139,7 +139,7 @@ extension YHGCApplicationTypeSelectCell {
actionBtn.snp.makeConstraints { make in actionBtn.snp.makeConstraints { make in
make.left.equalTo(infoTitleLabel.snp.left) make.left.equalTo(infoTitleLabel.snp.left)
make.top.greaterThanOrEqualTo(infoDetailLabel.snp.bottom).offset(0) make.top.greaterThanOrEqualTo(infoDetailLabel.snp.bottom).offset(0).priority(.high)
make.bottom.equalTo(iconView.snp.bottom) make.bottom.equalTo(iconView.snp.bottom)
} }
......
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "gc_visa_program_a@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "gc_visa_program_a@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "gc_visa_program_b@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "gc_visa_program_b@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "gc_visa_program_c@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "gc_visa_program_c@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