Commit cfec4509 authored by Alex朱枝文's avatar Alex朱枝文

续签申请缴费调整

parent 7efc138d
...@@ -36,6 +36,8 @@ ...@@ -36,6 +36,8 @@
0411CF1A2D22960900644D35 /* YHGCWorkExperienceListReasonTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CF192D22960900644D35 /* YHGCWorkExperienceListReasonTableViewCell.swift */; }; 0411CF1A2D22960900644D35 /* YHGCWorkExperienceListReasonTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CF192D22960900644D35 /* YHGCWorkExperienceListReasonTableViewCell.swift */; };
0411CF1C2D2BA99500644D35 /* YHGCWorkExperienceListTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CF1B2D2BA99500644D35 /* YHGCWorkExperienceListTableViewCell.swift */; }; 0411CF1C2D2BA99500644D35 /* YHGCWorkExperienceListTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CF1B2D2BA99500644D35 /* YHGCWorkExperienceListTableViewCell.swift */; };
041938712D2B722D00C7A52A /* YHGCCollegeSearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041938702D2B722D00C7A52A /* YHGCCollegeSearchViewController.swift */; }; 041938712D2B722D00C7A52A /* YHGCCollegeSearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041938702D2B722D00C7A52A /* YHGCCollegeSearchViewController.swift */; };
041CCDF72D7ED9030015E7BC /* YHHKVisaRenewalPaymentInfoList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041CCDF62D7ED9030015E7BC /* YHHKVisaRenewalPaymentInfoList.swift */; };
041CCDF92D7EE8B90015E7BC /* YHVisaRenewalPayMemberCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041CCDF82D7EE8B90015E7BC /* YHVisaRenewalPayMemberCell.swift */; };
04307B662D1942F500ED8E8D /* YHDynamicSheetPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B652D1942F500ED8E8D /* YHDynamicSheetPickerView.swift */; }; 04307B662D1942F500ED8E8D /* YHDynamicSheetPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B652D1942F500ED8E8D /* YHDynamicSheetPickerView.swift */; };
04307B682D19911800ED8E8D /* YHIncomeInfoEditCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B672D19911800ED8E8D /* YHIncomeInfoEditCell.swift */; }; 04307B682D19911800ED8E8D /* YHIncomeInfoEditCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B672D19911800ED8E8D /* YHIncomeInfoEditCell.swift */; };
04307B6A2D1A4C6500ED8E8D /* YHIncomeInfoSelectCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B692D1A4C6500ED8E8D /* YHIncomeInfoSelectCell.swift */; }; 04307B6A2D1A4C6500ED8E8D /* YHIncomeInfoSelectCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B692D1A4C6500ED8E8D /* YHIncomeInfoSelectCell.swift */; };
...@@ -1286,6 +1288,8 @@ ...@@ -1286,6 +1288,8 @@
0411CF192D22960900644D35 /* YHGCWorkExperienceListReasonTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCWorkExperienceListReasonTableViewCell.swift; sourceTree = "<group>"; }; 0411CF192D22960900644D35 /* YHGCWorkExperienceListReasonTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCWorkExperienceListReasonTableViewCell.swift; sourceTree = "<group>"; };
0411CF1B2D2BA99500644D35 /* YHGCWorkExperienceListTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCWorkExperienceListTableViewCell.swift; sourceTree = "<group>"; }; 0411CF1B2D2BA99500644D35 /* YHGCWorkExperienceListTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCWorkExperienceListTableViewCell.swift; sourceTree = "<group>"; };
041938702D2B722D00C7A52A /* YHGCCollegeSearchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCCollegeSearchViewController.swift; sourceTree = "<group>"; }; 041938702D2B722D00C7A52A /* YHGCCollegeSearchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCCollegeSearchViewController.swift; sourceTree = "<group>"; };
041CCDF62D7ED9030015E7BC /* YHHKVisaRenewalPaymentInfoList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKVisaRenewalPaymentInfoList.swift; sourceTree = "<group>"; };
041CCDF82D7EE8B90015E7BC /* YHVisaRenewalPayMemberCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHVisaRenewalPayMemberCell.swift; sourceTree = "<group>"; };
04307B652D1942F500ED8E8D /* YHDynamicSheetPickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHDynamicSheetPickerView.swift; sourceTree = "<group>"; }; 04307B652D1942F500ED8E8D /* YHDynamicSheetPickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHDynamicSheetPickerView.swift; sourceTree = "<group>"; };
04307B672D19911800ED8E8D /* YHIncomeInfoEditCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHIncomeInfoEditCell.swift; sourceTree = "<group>"; }; 04307B672D19911800ED8E8D /* YHIncomeInfoEditCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHIncomeInfoEditCell.swift; sourceTree = "<group>"; };
04307B692D1A4C6500ED8E8D /* YHIncomeInfoSelectCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHIncomeInfoSelectCell.swift; sourceTree = "<group>"; }; 04307B692D1A4C6500ED8E8D /* YHIncomeInfoSelectCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHIncomeInfoSelectCell.swift; sourceTree = "<group>"; };
...@@ -4335,6 +4339,7 @@ ...@@ -4335,6 +4339,7 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
045C0CB42D12CA5E00BD2DC0 /* YHHKVisaRenewalPaymentList.swift */, 045C0CB42D12CA5E00BD2DC0 /* YHHKVisaRenewalPaymentList.swift */,
041CCDF62D7ED9030015E7BC /* YHHKVisaRenewalPaymentInfoList.swift */,
045C0CB52D12CA5E00BD2DC0 /* YHHKVisaRenewalPersonType.swift */, 045C0CB52D12CA5E00BD2DC0 /* YHHKVisaRenewalPersonType.swift */,
045C0CB62D12CA5E00BD2DC0 /* YHVisaRenewalItemDetailType.swift */, 045C0CB62D12CA5E00BD2DC0 /* YHVisaRenewalItemDetailType.swift */,
045C0CB72D12CA5E00BD2DC0 /* YHVisaRenewalPaymentStatus.swift */, 045C0CB72D12CA5E00BD2DC0 /* YHVisaRenewalPaymentStatus.swift */,
...@@ -4361,6 +4366,7 @@ ...@@ -4361,6 +4366,7 @@
045C0CC62D12CA5E00BD2DC0 /* YHVisaRenewalPayMethodQrcodeCell.swift */, 045C0CC62D12CA5E00BD2DC0 /* YHVisaRenewalPayMethodQrcodeCell.swift */,
045C0CC72D12CA5E00BD2DC0 /* YHVisaRenewalPayMethodUrlCell.swift */, 045C0CC72D12CA5E00BD2DC0 /* YHVisaRenewalPayMethodUrlCell.swift */,
045C0CC82D12CA5E00BD2DC0 /* YHVisaRenewalPayOccupyingSpaceCell.swift */, 045C0CC82D12CA5E00BD2DC0 /* YHVisaRenewalPayOccupyingSpaceCell.swift */,
041CCDF82D7EE8B90015E7BC /* YHVisaRenewalPayMemberCell.swift */,
045C0CC92D12CA5E00BD2DC0 /* YHVisaRenewalPayStatusCell.swift */, 045C0CC92D12CA5E00BD2DC0 /* YHVisaRenewalPayStatusCell.swift */,
045C0CCA2D12CA5E00BD2DC0 /* YHVisaRenewalPayTipsCell.swift */, 045C0CCA2D12CA5E00BD2DC0 /* YHVisaRenewalPayTipsCell.swift */,
045C0CCB2D12CA5E00BD2DC0 /* YHVisaRenewalResidenceActionCell.swift */, 045C0CCB2D12CA5E00BD2DC0 /* YHVisaRenewalResidenceActionCell.swift */,
...@@ -7298,6 +7304,7 @@ ...@@ -7298,6 +7304,7 @@
045C111B2D12CA5F00BD2DC0 /* YHSegmentView.swift in Sources */, 045C111B2D12CA5F00BD2DC0 /* YHSegmentView.swift in Sources */,
045C111C2D12CA5F00BD2DC0 /* YHCertificateFilterView.swift in Sources */, 045C111C2D12CA5F00BD2DC0 /* YHCertificateFilterView.swift in Sources */,
045C111D2D12CA5F00BD2DC0 /* YHResignInfoValidTimeItemView.swift in Sources */, 045C111D2D12CA5F00BD2DC0 /* YHResignInfoValidTimeItemView.swift in Sources */,
041CCDF72D7ED9030015E7BC /* YHHKVisaRenewalPaymentInfoList.swift in Sources */,
045C111E2D12CA5F00BD2DC0 /* YHPreviewAcademicAndProfessionalQualificationViewController.swift in Sources */, 045C111E2D12CA5F00BD2DC0 /* YHPreviewAcademicAndProfessionalQualificationViewController.swift in Sources */,
045C111F2D12CA5F00BD2DC0 /* YHWorkExperienceTableViewCell.swift in Sources */, 045C111F2D12CA5F00BD2DC0 /* YHWorkExperienceTableViewCell.swift in Sources */,
04307BAA2D1FF74500ED8E8D /* YHRecommendLiveListModel.swift in Sources */, 04307BAA2D1FF74500ED8E8D /* YHRecommendLiveListModel.swift in Sources */,
...@@ -7537,6 +7544,7 @@ ...@@ -7537,6 +7544,7 @@
045C11EC2D12CA5F00BD2DC0 /* YHMyDocumentsListViewController.swift in Sources */, 045C11EC2D12CA5F00BD2DC0 /* YHMyDocumentsListViewController.swift in Sources */,
045C11ED2D12CA5F00BD2DC0 /* YHCertificateEntryBottomView.swift in Sources */, 045C11ED2D12CA5F00BD2DC0 /* YHCertificateEntryBottomView.swift in Sources */,
045C11EE2D12CA5F00BD2DC0 /* YHAppointItem.swift in Sources */, 045C11EE2D12CA5F00BD2DC0 /* YHAppointItem.swift in Sources */,
041CCDF92D7EE8B90015E7BC /* YHVisaRenewalPayMemberCell.swift in Sources */,
045C11EF2D12CA5F00BD2DC0 /* YHResignUploadTravelCardDetailViewModel.swift in Sources */, 045C11EF2D12CA5F00BD2DC0 /* YHResignUploadTravelCardDetailViewModel.swift in Sources */,
045C11F02D12CA5F00BD2DC0 /* YHFamilyGroupModel.swift in Sources */, 045C11F02D12CA5F00BD2DC0 /* YHFamilyGroupModel.swift in Sources */,
045C11F12D12CA5F00BD2DC0 /* YHHomeAlertViewManager.swift in Sources */, 045C11F12D12CA5F00BD2DC0 /* YHHomeAlertViewManager.swift in Sources */,
......
...@@ -8,18 +8,17 @@ ...@@ -8,18 +8,17 @@
import UIKit import UIKit
import UIKit
import AttributedString import AttributedString
import SafariServices
import Photos import Photos
import SafariServices
import UIKit
class YHHKVisaRenewalApplicationVC: YHBaseViewController { class YHHKVisaRenewalApplicationVC: YHBaseViewController {
private lazy var headerView: YHHKVisaRenewalApplicationHeader = { private lazy var headerView: YHHKVisaRenewalApplicationHeader = {
let view = YHHKVisaRenewalApplicationHeader(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: YHHKVisaRenewalApplicationHeader.viewHeight)) let view = YHHKVisaRenewalApplicationHeader(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: YHHKVisaRenewalApplicationHeader.viewHeight))
return view return view
}() }()
private lazy var tableView: UITableView = { private lazy var tableView: UITableView = {
let view = UITableView(frame: .zero, style: .grouped) let view = UITableView(frame: .zero, style: .grouped)
view.estimatedSectionHeaderHeight = 16.0 view.estimatedSectionHeaderHeight = 16.0
...@@ -34,52 +33,38 @@ class YHHKVisaRenewalApplicationVC: YHBaseViewController { ...@@ -34,52 +33,38 @@ class YHHKVisaRenewalApplicationVC: YHBaseViewController {
view.dataSource = self view.dataSource = self
view.delegate = self view.delegate = self
view.showsVerticalScrollIndicator = false view.showsVerticalScrollIndicator = false
view.register(YHVisaRenewalSectionHeaderCell.self, forCellReuseIdentifier: YHVisaRenewalSectionHeaderCell.cellReuseIdentifier) view.register(YHVisaRenewalSectionHeaderCell.self, forCellReuseIdentifier: YHVisaRenewalSectionHeaderCell.cellReuseIdentifier)
view.register(YHVisaRenewalTipsCell.self, forCellReuseIdentifier: YHVisaRenewalTipsCell.cellReuseIdentifier)
view.register(YHVisaRenewalResidenceActionCell.self, forCellReuseIdentifier: YHVisaRenewalResidenceActionCell.cellReuseIdentifier)
view.register(YHVisaRenewalPayMethodUrlCell.self, forCellReuseIdentifier: YHVisaRenewalPayMethodUrlCell.cellReuseIdentifier) view.register(YHVisaRenewalPayMethodUrlCell.self, forCellReuseIdentifier: YHVisaRenewalPayMethodUrlCell.cellReuseIdentifier)
view.register(YHVisaRenewalPayMethodQrcodeCell.self, forCellReuseIdentifier: YHVisaRenewalPayMethodQrcodeCell.cellReuseIdentifier) view.register(YHVisaRenewalPayMethodQrcodeCell.self, forCellReuseIdentifier: YHVisaRenewalPayMethodQrcodeCell.cellReuseIdentifier)
view.register(YHVisaRenewalPayOccupyingSpaceCell.self, forCellReuseIdentifier: YHVisaRenewalPayOccupyingSpaceCell.cellReuseIdentifier) view.register(YHVisaRenewalPayOccupyingSpaceCell.self, forCellReuseIdentifier: YHVisaRenewalPayOccupyingSpaceCell.cellReuseIdentifier)
view.register(YHVisaRenewalPayStatusCell.self, forCellReuseIdentifier: YHVisaRenewalPayStatusCell.cellReuseIdentifier) view.register(YHVisaRenewalPayMemberCell.self, forCellReuseIdentifier: YHVisaRenewalPayMemberCell.cellReuseIdentifier)
view.register(YHVisaRenewalPayInfoCell.self, forCellReuseIdentifier: YHVisaRenewalPayInfoCell.cellReuseIdentifier) view.register(YHVisaRenewalPayInfoCell.self, forCellReuseIdentifier: YHVisaRenewalPayInfoCell.cellReuseIdentifier)
view.register(YHVisaRenewalPayContentCell.self, forCellReuseIdentifier: YHVisaRenewalPayContentCell.cellReuseIdentifier) view.register(YHVisaRenewalPayContentCell.self, forCellReuseIdentifier: YHVisaRenewalPayContentCell.cellReuseIdentifier)
view.register(YHVisaRenewalPayTipsCell.self, forCellReuseIdentifier: YHVisaRenewalPayTipsCell.cellReuseIdentifier)
return view return view
}() }()
private lazy var datas: [[YHVisaRenewalItemDetailType]] = [] private lazy var datas: [[YHVisaRenewalInfoItemDetailType]] = []
private lazy var viewModel = YHHKVisaRenewalPaymentViewModel() private lazy var viewModel = YHHKVisaRenewalPaymentViewModel()
private var orderId: Int = 0
private var renewalId: Int = 0
private var id: Int = 0 private var id: Int = 0
private var isEdit: Int = 0 private var isEdit: Int = 0
init(id: Int, isEdit: Int) { init(id: Int, isEdit: Int) {
self.id = id self.id = id
self.isEdit = isEdit self.isEdit = isEdit
super.init(nibName: nil, bundle: nil) super.init(nibName: nil, bundle: nil)
} }
init(orderId: Int, renewalId: Int) {
self.orderId = orderId
self.renewalId = renewalId
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) { required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented") fatalError("init(coder:) has not been implemented")
} }
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
setupUI() setupUI()
} }
override func viewWillAppear(_ animated: Bool) { override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated) super.viewWillAppear(animated)
requestData() requestData()
...@@ -87,40 +72,29 @@ class YHHKVisaRenewalApplicationVC: YHBaseViewController { ...@@ -87,40 +72,29 @@ class YHHKVisaRenewalApplicationVC: YHBaseViewController {
} }
extension YHHKVisaRenewalApplicationVC { extension YHHKVisaRenewalApplicationVC {
@objc private func clickGuideButton() {
showGuideVC()
}
@objc private func clickSureButton() {
let vc = YHResignUploadTravelCardListViewController()
vc.orderId = orderId
vc.batchId = renewalId
navigationController?.pushViewController(vc)
}
private func setupUI() { private func setupUI() {
gk_navTitle = "续签申请缴费" gk_navTitle = "续签申请缴费"
gk_navBarAlpha = 1.0 gk_navBarAlpha = 1.0
gk_navBackgroundColor = .white gk_navBackgroundColor = .white
view.backgroundColor = UIColor.contentBkgColor view.backgroundColor = UIColor.contentBkgColor
view.addSubview(tableView) view.addSubview(tableView)
tableView.snp.makeConstraints { make in tableView.snp.makeConstraints { make in
make.left.equalToSuperview() make.left.equalToSuperview()
make.right.equalToSuperview() make.right.equalToSuperview()
make.top.equalTo(k_Height_NavigationtBarAndStatuBar) make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
make.bottom.equalToSuperview() make.bottom.equalToSuperview()
} }
tableView.tableFooterView = UIView(frame: CGRect.init(x: 0, y: 0, width: KScreenWidth, height: kMargin)) tableView.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: kMargin))
tableView.tableHeaderView = headerView tableView.tableHeaderView = headerView
} }
private func requestData(isNeedLoading: Bool = false) { private func requestData(isNeedLoading: Bool = false) {
if isNeedLoading { if isNeedLoading {
YHHUD.show(.progress(message: "加载中...")) YHHUD.show(.progress(message: "加载中..."))
} }
viewModel.getPaymentList(orderId: orderId, renewalId: renewalId) { [weak self] paymentListModel, error in viewModel.getPaymentInfo(id: id, isEdit: isEdit) { [weak self] paymentListModel, error in
guard let self = self else { guard let self = self else {
return return
} }
...@@ -136,107 +110,33 @@ extension YHHKVisaRenewalApplicationVC { ...@@ -136,107 +110,33 @@ extension YHHKVisaRenewalApplicationVC {
self.tableView.reloadData() self.tableView.reloadData()
return return
} }
var sections: [[YHVisaRenewalItemDetailType]] = [] var sections: [[YHVisaRenewalInfoItemDetailType]] = []
var paymentMembers: [YHVisaRenewalItemDetailType] = [] var paymentMembers: [YHVisaRenewalInfoItemDetailType] = []
paymentListModel.list.forEach { [weak self] person in paymentListModel.list.forEach { [weak self] person in
guard let self = self else { guard let self = self else {
return return
} }
guard let presenceStatus = YHVisaRenewalPresenceStatus(rawValue: person.confirm_hk_status) else { return } paymentMembers.append(.occupyingSpace)
guard let paymentStatus = YHVisaRenewalPaymentStatus(rawValue: person.pay_status) else { paymentMembers.append(.subHeader(person.name))
return paymentMembers.append(.subInfo("临时档案号:", person.file_num, "复制", .top, nil, false, { [weak self] in
} guard let self = self else {
switch paymentStatus { return
case .pendingPayment:
paymentMembers.append(.occupyingSpace)
paymentMembers.append(.subHeader(person.name, .pendingPayment))
switch presenceStatus {
case .approvalPending:
paymentMembers.append(.subRemark("续签申请暂未正式获批,请耐心等待"))
case .confirmingPresence:
paymentMembers.append(.subInfo("临时档案号:", "-", nil))
paymentMembers.append(.subInfo("可缴费时间段:", "\(person.min_pay_time) - \(person.max_pay_time)", nil))
if person.fee_money.count > 0 {
paymentMembers.append(.subInfo("缴费金额:", "\(person.fee_money)", nil))
} else {
paymentMembers.append(.subInfo("缴费金额:", "\(person.fee_hkd)港币(≈\(person.fee_rmb)人民币)", nil))
}
paymentMembers.append(.subRemark("请先确认用户完成确认在港"))
case .confirmedPresence:
paymentMembers.append(.subInfo("临时档案号:", person.file_num, "复制", .mid, nil, false, { [weak self] in
guard let self = self else {
return
}
self.copyToPasteBoard(person.file_num, message: "已复制档案号")
}))
paymentMembers.append(.subInfo("可缴费时间段:", "\(person.min_pay_time) - \(person.max_pay_time)", nil))
if person.fee_money.count > 0 {
paymentMembers.append(.subInfo("缴费金额:", "\(person.fee_money)", nil))
} else {
paymentMembers.append(.subInfo("缴费金额:", "\(person.fee_hkd)港币(≈\(person.fee_rmb)人民币)", nil))
}
paymentMembers.append(.subRemark("请复制档案号去港府官网缴费"))
}
case .paid:
var fileName = person.receipt
if fileName.count > 0, let url = URL(string: fileName) {
fileName = url.lastPathComponent
}
paymentMembers.append(.occupyingSpace)
paymentMembers.append(.subHeader(person.name, .paid))
paymentMembers.append(.subInfo("临时档案号:", person.file_num, "复制", .mid, 12, true, { [weak self] in
guard let self = self else {
return
}
self.copyToPasteBoard(person.file_num, message: "已复制档案号")
}))
if person.fee_money.count > 0 {
paymentMembers.append(.subInfo("缴费金额:", "\(person.fee_money)", nil))
} else {
paymentMembers.append(.subInfo("缴费金额:", "\(person.fee_hkd)港币(≈\(person.fee_rmb)人民币)", nil))
}
paymentMembers.append(.subContent("缴费电子签证:", fileName, "查看", .bottom, { [weak self] in
guard let self = self else {
return
}
self.gotoPreview(person.receipt)
}))
case .expired:
paymentMembers.append(.occupyingSpace)
paymentMembers.append(.subHeader(person.name, .expired))
paymentMembers.append(.subInfo("临时档案号:", person.file_num, "复制", .mid, nil, false, { [weak self] in
guard let self = self else {
return
}
self.copyToPasteBoard(person.file_num, message: "已复制档案号")
}))
paymentMembers.append(.subInfo("可缴费时间段:", "\(person.min_pay_time) - \(person.max_pay_time)", nil))
if person.fee_money.count > 0 {
paymentMembers.append(.subInfo("缴费金额:", "\(person.fee_money)", nil))
} else {
paymentMembers.append(.subInfo("缴费金额:", "\(person.fee_hkd)港币(≈\(person.fee_rmb)人民币)", nil))
} }
case .pendingApproval: self.copyToPasteBoard(person.file_num, message: "已复制临时档案号")
paymentMembers.append(.occupyingSpace) }))
paymentMembers.append(.subHeader(person.name, .pendingApproval)) paymentMembers.append(.subInfo("申请人出生日期:", "\(person.birthday)", nil))
paymentMembers.append(.subRemark("续签申请暂未正式获批,请耐心等待")) paymentMembers.append(.subInfo("缴费金额:", "\(person.fee_money)", nil, .bottom))
}
} }
if paymentMembers.count > 0 { if paymentMembers.count > 0 {
paymentMembers.append(.occupyingSpace) paymentMembers.append(.occupyingSpace)
} }
let payMethodTips: ASAttributedString = .init(string: "提示:", .foreground(UIColor.yhOrangeColor)) + .init(string: "请先到下方“缴费成员”处") + .init(string: "复制档案号", .foreground(UIColor.yhOrangeColor)) + .init(string: "再缴费")
let webPageUrl = paymentListModel.payment_url let webPageUrl = paymentListModel.payment_url
if webPageUrl.count > 0, URL(string: webPageUrl) != nil { if webPageUrl.count > 0, URL(string: webPageUrl) != nil {
let payMethodSection: [YHVisaRenewalItemDetailType] = [.sectionHeader("港府官网缴费方式", "缴费遇到问题?", { [weak self] in let payMethodSection: [YHVisaRenewalInfoItemDetailType] = [.sectionHeader("港府官网缴费方式", "", {
guard let self = self else { }), .payMethodUrl("方式一", "点击下方链接,跳转浏览器,进入港府官网操作缴费", webPageUrl, { [weak self] in
return
}
printLog("缴费遇到问题")
self.showTroubleshootingGuideVC()
}), .tips(payMethodTips), .payMethodUrl("方式一", "点击下方链接,跳转浏览器,进入港府官网操作缴费", webPageUrl, { [weak self] in
guard let self = self else { guard let self = self else {
return return
} }
...@@ -245,11 +145,7 @@ extension YHHKVisaRenewalApplicationVC { ...@@ -245,11 +145,7 @@ extension YHHKVisaRenewalApplicationVC {
}), .payMethodQrcode("方式二", "用其他设备直接扫码,或长按保存图片,通过微信识别打开", webPageUrl)] }), .payMethodQrcode("方式二", "用其他设备直接扫码,或长按保存图片,通过微信识别打开", webPageUrl)]
sections.append(payMethodSection) sections.append(payMethodSection)
} }
var payMembersSection: [YHVisaRenewalItemDetailType] = [.sectionHeader("缴费成员", "电子签证范例", { [weak self] in var payMembersSection: [YHVisaRenewalInfoItemDetailType] = [.sectionHeader("缴费成员", "", {
guard let self = self else {
return
}
self.gotoPreview(paymentListModel.evisa_example_url)
})] })]
payMembersSection.append(contentsOf: paymentMembers) payMembersSection.append(contentsOf: paymentMembers)
sections.append(payMembersSection) sections.append(payMembersSection)
...@@ -257,7 +153,7 @@ extension YHHKVisaRenewalApplicationVC { ...@@ -257,7 +153,7 @@ extension YHHKVisaRenewalApplicationVC {
self.tableView.reloadData() self.tableView.reloadData()
} }
} }
private func showAlertView(confirmBlock: (() -> Void)?) { private func showAlertView(confirmBlock: (() -> Void)?) {
let alert = YHVisaRenewalPayConfirmingPresenceAlertView.alertView() let alert = YHVisaRenewalPayConfirmingPresenceAlertView.alertView()
alert.confirmBlock = { alert.confirmBlock = {
...@@ -265,18 +161,7 @@ extension YHHKVisaRenewalApplicationVC { ...@@ -265,18 +161,7 @@ extension YHHKVisaRenewalApplicationVC {
} }
alert.show() alert.show()
} }
private func showGuideVC() {
let vc = YHVisaRenewalGuideVC()
let pc = YHBottomPresentationController(presentedViewController: vc, presenting: self)
pc.customRadius = 16.0
vc.transitioningDelegate = pc
vc.sureButtonEvent = { [weak vc] in
vc?.dismiss(animated: true)
}
present(vc, animated: true, completion: nil)
}
private func gotoWebVC(_ urlString: String) { private func gotoWebVC(_ urlString: String) {
guard let url = URL(string: urlString) else { guard let url = URL(string: urlString) else {
printLog("无法打开链接") printLog("无法打开链接")
...@@ -290,7 +175,7 @@ extension YHHKVisaRenewalApplicationVC { ...@@ -290,7 +175,7 @@ extension YHHKVisaRenewalApplicationVC {
YHHUD.flash(message: "无法打开链接") YHHUD.flash(message: "无法打开链接")
} }
} }
private func gotoPreview(_ urlString: String) { private func gotoPreview(_ urlString: String) {
YHHUD.show(.progress(message: "加载中...")) YHHUD.show(.progress(message: "加载中..."))
viewModel.getRealUsefulUrl(urlString) { [weak self] resultUrl in viewModel.getRealUsefulUrl(urlString) { [weak self] resultUrl in
...@@ -302,24 +187,13 @@ extension YHHKVisaRenewalApplicationVC { ...@@ -302,24 +187,13 @@ extension YHHKVisaRenewalApplicationVC {
self.present(safariViewController, animated: true, completion: nil) self.present(safariViewController, animated: true, completion: nil)
} }
} }
private func showTroubleshootingGuideVC() {
let vc = YHVisaRenewalTroubleshootingGuideVC()
let pc = YHBottomPresentationController(presentedViewController: vc, presenting: self)
pc.customRadius = 16.0
vc.transitioningDelegate = pc
vc.sureButtonEvent = { [weak vc] in
vc?.dismiss(animated: true)
}
present(vc, animated: true, completion: nil)
}
private func copyToPasteBoard(_ text: String, message: String = "复制成功") { private func copyToPasteBoard(_ text: String, message: String = "复制成功") {
let pasteBoard = UIPasteboard.general let pasteBoard = UIPasteboard.general
pasteBoard.string = text pasteBoard.string = text
YHHUD.flash(message: message) YHHUD.flash(message: message)
} }
private func saveImage(_ image: UIImage) { private func saveImage(_ image: UIImage) {
// 确保应用有权访问相册 // 确保应用有权访问相册
PHPhotoLibrary.requestAuthorization { status in PHPhotoLibrary.requestAuthorization { status in
...@@ -335,7 +209,7 @@ extension YHHKVisaRenewalApplicationVC { ...@@ -335,7 +209,7 @@ extension YHHKVisaRenewalApplicationVC {
} }
} }
} }
@objc func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeMutableRawPointer?) { @objc func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeMutableRawPointer?) {
// 保存完成后的处理逻辑 // 保存完成后的处理逻辑
if let error = error { if let error = error {
...@@ -343,18 +217,17 @@ extension YHHKVisaRenewalApplicationVC { ...@@ -343,18 +217,17 @@ extension YHHKVisaRenewalApplicationVC {
YHHUD.flash(message: "保存失败") YHHUD.flash(message: "保存失败")
} else { } else {
printLog("保存照片成功") printLog("保存照片成功")
YHHUD.flash(message: "保存成功") YHHUD.flash(message: "保存成功")
} }
} }
} }
extension YHHKVisaRenewalApplicationVC: UITableViewDelegate, UITableViewDataSource { extension YHHKVisaRenewalApplicationVC: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int { func numberOfSections(in tableView: UITableView) -> Int {
return datas.count return datas.count
} }
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
guard datas.count > section else { guard datas.count > section else {
return 0 return 0
...@@ -362,7 +235,7 @@ extension YHHKVisaRenewalApplicationVC: UITableViewDelegate, UITableViewDataSour ...@@ -362,7 +235,7 @@ extension YHHKVisaRenewalApplicationVC: UITableViewDelegate, UITableViewDataSour
let sectionArr = datas[section] let sectionArr = datas[section]
return sectionArr.count return sectionArr.count
} }
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard datas.count > indexPath.section else { guard datas.count > indexPath.section else {
return UITableViewCell() return UITableViewCell()
...@@ -372,7 +245,7 @@ extension YHHKVisaRenewalApplicationVC: UITableViewDelegate, UITableViewDataSour ...@@ -372,7 +245,7 @@ extension YHHKVisaRenewalApplicationVC: UITableViewDelegate, UITableViewDataSour
return UITableViewCell() return UITableViewCell()
} }
let row = sectionArr[indexPath.row] let row = sectionArr[indexPath.row]
switch row { switch row {
case let .sectionHeader(title, actionTitle, action): case let .sectionHeader(title, actionTitle, action):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHVisaRenewalSectionHeaderCell.cellReuseIdentifier) as? YHVisaRenewalSectionHeaderCell { if let cell = tableView.dequeueReusableCell(withIdentifier: YHVisaRenewalSectionHeaderCell.cellReuseIdentifier) as? YHVisaRenewalSectionHeaderCell {
...@@ -382,19 +255,6 @@ extension YHHKVisaRenewalApplicationVC: UITableViewDelegate, UITableViewDataSour ...@@ -382,19 +255,6 @@ extension YHHKVisaRenewalApplicationVC: UITableViewDelegate, UITableViewDataSour
} }
return cell return cell
} }
case let .tips(detail):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHVisaRenewalTipsCell.cellReuseIdentifier) as? YHVisaRenewalTipsCell {
cell.setupCellInfo(detail: detail)
return cell
}
case let .residenceAction(title, status, cellType, action):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHVisaRenewalResidenceActionCell.cellReuseIdentifier) as? YHVisaRenewalResidenceActionCell {
cell.setupCellInfo(title: title, presenceStatus: status, cellType: cellType)
cell.rightButtonEvent = {
action?()
}
return cell
}
case let .payMethodUrl(title, detail, url, action): case let .payMethodUrl(title, detail, url, action):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHVisaRenewalPayMethodUrlCell.cellReuseIdentifier) as? YHVisaRenewalPayMethodUrlCell { if let cell = tableView.dequeueReusableCell(withIdentifier: YHVisaRenewalPayMethodUrlCell.cellReuseIdentifier) as? YHVisaRenewalPayMethodUrlCell {
cell.setupCellInfo(title: title, tips: detail, url: url) cell.setupCellInfo(title: title, tips: detail, url: url)
...@@ -411,9 +271,9 @@ extension YHHKVisaRenewalApplicationVC: UITableViewDelegate, UITableViewDataSour ...@@ -411,9 +271,9 @@ extension YHHKVisaRenewalApplicationVC: UITableViewDelegate, UITableViewDataSour
} }
return cell return cell
} }
case let .subHeader(title, status): case let .subHeader(title):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHVisaRenewalPayStatusCell.cellReuseIdentifier) as? YHVisaRenewalPayStatusCell { if let cell = tableView.dequeueReusableCell(withIdentifier: YHVisaRenewalPayMemberCell.cellReuseIdentifier) as? YHVisaRenewalPayMemberCell {
cell.setupCellInfo(title: title, status: status) cell.setupCellInfo(title: title)
return cell return cell
} }
case let .subInfo(title, detail, actionTitle, cellType, defaultMargin, showBottomLine, action): case let .subInfo(title, detail, actionTitle, cellType, defaultMargin, showBottomLine, action):
...@@ -432,11 +292,6 @@ extension YHHKVisaRenewalApplicationVC: UITableViewDelegate, UITableViewDataSour ...@@ -432,11 +292,6 @@ extension YHHKVisaRenewalApplicationVC: UITableViewDelegate, UITableViewDataSour
} }
return cell return cell
} }
case let .subRemark(detail):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHVisaRenewalPayTipsCell.cellReuseIdentifier) as? YHVisaRenewalPayTipsCell {
cell.setupCellInfo(detail: detail)
return cell
}
case .occupyingSpace: case .occupyingSpace:
if let cell = tableView.dequeueReusableCell(withIdentifier: YHVisaRenewalPayOccupyingSpaceCell.cellReuseIdentifier) as? YHVisaRenewalPayOccupyingSpaceCell { if let cell = tableView.dequeueReusableCell(withIdentifier: YHVisaRenewalPayOccupyingSpaceCell.cellReuseIdentifier) as? YHVisaRenewalPayOccupyingSpaceCell {
let isBottom = indexPath.row == sectionArr.count - 1 let isBottom = indexPath.row == sectionArr.count - 1
...@@ -445,32 +300,30 @@ extension YHHKVisaRenewalApplicationVC: UITableViewDelegate, UITableViewDataSour ...@@ -445,32 +300,30 @@ extension YHHKVisaRenewalApplicationVC: UITableViewDelegate, UITableViewDataSour
} }
} }
return UITableViewCell() return UITableViewCell()
} }
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension return UITableView.automaticDimension
} }
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
} }
private func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> CGFloat { private func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> CGFloat {
return 16.0 return 16.0
} }
private func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> CGFloat { private func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> CGFloat {
return 0.01 return 0.01
} }
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = UIView() let view = UIView()
return view return view
} }
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let view = UIView() let view = UIView()
return view return view
} }
} }
//
// YHHKVisaRenewalPaymentInfoList.swift
// galaxy
//
// Created by alexzzw on 2025/3/10.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import Foundation
import SmartCodable
class YHHKVisaRenewalPaymentInfoList: SmartCodable {
var payment_url: String = ""
var list: [YHHKVisaRenewalPaymentInfoItem] = []
required init() {
}
}
class YHHKVisaRenewalPaymentInfoItem: SmartCodable {
// 用户姓名
var name: String = ""
// 档案号
var file_num: String = ""
// 出生日期
var birthday: String = ""
// 缴费金额,2025-2-26之后的用区间
var fee_money: String = ""
required init() {
}
}
...@@ -21,3 +21,13 @@ enum YHVisaRenewalItemDetailType { ...@@ -21,3 +21,13 @@ enum YHVisaRenewalItemDetailType {
case subRemark(_ remark: String) case subRemark(_ remark: String)
case occupyingSpace case occupyingSpace
} }
enum YHVisaRenewalInfoItemDetailType {
case sectionHeader(_ title: String, _ actionTitle: String? = nil, _ action: (() -> Void)? = nil)
case payMethodUrl(_ title: String, _ tips: String, _ url: String, _ action: (() -> Void)? = nil)
case payMethodQrcode(_ title: String, _ tips: String, _ qrcodeUrl: String)
case subHeader(_ title: String)
case subInfo(_ title: String, _ detail: String, _ actionTitle: String? = nil, _ cellType: YHResignRoundCellType = .mid, _ defaultMargin: CGFloat? = nil, _ showBottomLine: Bool = false, _ action: (() -> Void)? = nil)
case subContent(_ title: String, _ detail: String, _ actionTitle: String? = nil, _ cellType: YHResignRoundCellType = .mid, _ action: (() -> Void)? = nil)
case occupyingSpace
}
//
// YHVisaRenewalPayMemberCell.swift
// galaxy
//
// Created by alexzzw on 2025/3/10.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHVisaRenewalPayMemberCell: YHResignDocumentCell {
static let cellReuseIdentifier = "YHVisaRenewalPayMemberCell"
private lazy var iconView: UIView = {
let view = UIView()
view.backgroundColor = .brandMainColor
return view
}()
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize: 15)
label.textColor = .mainTextColor
return label
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupCellInfo(title: String) {
infoTitleLabel.text = title
}
}
extension YHVisaRenewalPayMemberCell {
private func setupUI() {
updateCellCorner(.mid)
subContainerView.addSubview(iconView)
subContainerView.addSubview(infoTitleLabel)
iconView.setContentCompressionResistancePriority(.required, for: .horizontal)
infoTitleLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
iconView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.width.equalTo(4)
make.height.equalTo(15)
make.centerY.equalTo(infoTitleLabel)
}
infoTitleLabel.snp.makeConstraints { make in
make.left.equalTo(iconView.snp.right).offset(12)
make.top.equalToSuperview().offset(20)
make.bottom.equalToSuperview().offset(-16)
make.right.equalToSuperview().offset(-18)
}
}
}
...@@ -55,4 +55,30 @@ class YHHKVisaRenewalPaymentViewModel: YHBaseViewModel { ...@@ -55,4 +55,30 @@ class YHHKVisaRenewalPaymentViewModel: YHBaseViewModel {
callBackBlock(false, err) callBackBlock(false, err)
} }
} }
func getPaymentInfo(id: Int, isEdit: Int, callBackBlock: @escaping (_ paymentListModel: YHHKVisaRenewalPaymentInfoList?, _ error: YHErrorModel?) -> () ) {
let params: [String : Any] = ["id": id,
"is_edit": isEdit
]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.ResignVisa.paymentInfo
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { json, code in
//1. json字符串 转 对象
printLog("model 是 ==> \(json)")
if json.code == 200 {
guard let dic = json.data?.peel as? [String : Any], let resultModel = YHHKVisaRenewalPaymentInfoList.deserialize(from: dic) else {
let err = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description())
callBackBlock(nil, err)
return
}
callBackBlock(resultModel, nil)
} else {
let err = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg.isEmpty ? "" : json.msg)
callBackBlock(nil, err)
}
} failBlock: { err in
callBackBlock(nil, err)
}
}
} }
...@@ -670,6 +670,8 @@ class YHAllApiName { ...@@ -670,6 +670,8 @@ class YHAllApiName {
static let paymentList = "super-app/renewal-visa/payment-list" static let paymentList = "super-app/renewal-visa/payment-list"
// 确认在港 // 确认在港
static let confirmInHK = "super-app/renewal-visa/confirm-in-hk" static let confirmInHK = "super-app/renewal-visa/confirm-in-hk"
// 续签缴费信息
static let paymentInfo = "super-app/order/customer/payment"
} }
//续签旅行证件 //续签旅行证件
......
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