Commit 898b81c6 authored by David黄金龙's avatar David黄金龙

处理电子签证 接口

parent e66c0eb5
...@@ -655,6 +655,8 @@ ...@@ -655,6 +655,8 @@
A5CA3F582C749E0100EB22F5 /* YHUploadCertificateDateItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5CA3F572C749E0100EB22F5 /* YHUploadCertificateDateItem.swift */; }; A5CA3F582C749E0100EB22F5 /* YHUploadCertificateDateItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5CA3F572C749E0100EB22F5 /* YHUploadCertificateDateItem.swift */; };
A5CA3F5A2C74B64A00EB22F5 /* YHSmallWhiteNoteTemplateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5CA3F592C74B64A00EB22F5 /* YHSmallWhiteNoteTemplateView.swift */; }; A5CA3F5A2C74B64A00EB22F5 /* YHSmallWhiteNoteTemplateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5CA3F592C74B64A00EB22F5 /* YHSmallWhiteNoteTemplateView.swift */; };
A5CA3F5C2C74C4C200EB22F5 /* YHHKCardTemplateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5CA3F5B2C74C4C200EB22F5 /* YHHKCardTemplateView.swift */; }; A5CA3F5C2C74C4C200EB22F5 /* YHHKCardTemplateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5CA3F5B2C74C4C200EB22F5 /* YHHKCardTemplateView.swift */; };
A5CA3F5F2C74D59B00EB22F5 /* YHUploadCertificateViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5CA3F5E2C74D59B00EB22F5 /* YHUploadCertificateViewModel.swift */; };
A5CA3F622C74D8BD00EB22F5 /* YHVisaPaymentListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5CA3F612C74D8BD00EB22F5 /* YHVisaPaymentListModel.swift */; };
A5D001212BAA9D99001F003C /* YHChoiceButtonHoldView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D001202BAA9D99001F003C /* YHChoiceButtonHoldView.swift */; }; A5D001212BAA9D99001F003C /* YHChoiceButtonHoldView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D001202BAA9D99001F003C /* YHChoiceButtonHoldView.swift */; };
A5D0012A2BABC84A001F003C /* YHFileListHeaerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D001272BABC84A001F003C /* YHFileListHeaerView.swift */; }; A5D0012A2BABC84A001F003C /* YHFileListHeaerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D001272BABC84A001F003C /* YHFileListHeaerView.swift */; };
A5D0012C2BABC84A001F003C /* YHFileListBottomView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D001292BABC84A001F003C /* YHFileListBottomView.swift */; }; A5D0012C2BABC84A001F003C /* YHFileListBottomView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D001292BABC84A001F003C /* YHFileListBottomView.swift */; };
...@@ -1387,6 +1389,8 @@ ...@@ -1387,6 +1389,8 @@
A5CA3F572C749E0100EB22F5 /* YHUploadCertificateDateItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHUploadCertificateDateItem.swift; sourceTree = "<group>"; }; A5CA3F572C749E0100EB22F5 /* YHUploadCertificateDateItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHUploadCertificateDateItem.swift; sourceTree = "<group>"; };
A5CA3F592C74B64A00EB22F5 /* YHSmallWhiteNoteTemplateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSmallWhiteNoteTemplateView.swift; sourceTree = "<group>"; }; A5CA3F592C74B64A00EB22F5 /* YHSmallWhiteNoteTemplateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSmallWhiteNoteTemplateView.swift; sourceTree = "<group>"; };
A5CA3F5B2C74C4C200EB22F5 /* YHHKCardTemplateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKCardTemplateView.swift; sourceTree = "<group>"; }; A5CA3F5B2C74C4C200EB22F5 /* YHHKCardTemplateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKCardTemplateView.swift; sourceTree = "<group>"; };
A5CA3F5E2C74D59B00EB22F5 /* YHUploadCertificateViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHUploadCertificateViewModel.swift; sourceTree = "<group>"; };
A5CA3F612C74D8BD00EB22F5 /* YHVisaPaymentListModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHVisaPaymentListModel.swift; sourceTree = "<group>"; };
A5D001202BAA9D99001F003C /* YHChoiceButtonHoldView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHChoiceButtonHoldView.swift; sourceTree = "<group>"; }; A5D001202BAA9D99001F003C /* YHChoiceButtonHoldView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHChoiceButtonHoldView.swift; sourceTree = "<group>"; };
A5D001272BABC84A001F003C /* YHFileListHeaerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHFileListHeaerView.swift; sourceTree = "<group>"; }; A5D001272BABC84A001F003C /* YHFileListHeaerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHFileListHeaerView.swift; sourceTree = "<group>"; };
A5D001292BABC84A001F003C /* YHFileListBottomView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHFileListBottomView.swift; sourceTree = "<group>"; }; A5D001292BABC84A001F003C /* YHFileListBottomView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHFileListBottomView.swift; sourceTree = "<group>"; };
...@@ -3246,6 +3250,8 @@ ...@@ -3246,6 +3250,8 @@
A57BFDE02C732A4700A78E51 /* VisaPayment(4电子签字缴费) */ = { A57BFDE02C732A4700A78E51 /* VisaPayment(4电子签字缴费) */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
A5CA3F642C7586C500EB22F5 /* M */,
A5CA3F632C7586BE00EB22F5 /* VM */,
A57BFDE22C732AA700A78E51 /* V */, A57BFDE22C732AA700A78E51 /* V */,
A57BFDE12C732A8300A78E51 /* C */, A57BFDE12C732A8300A78E51 /* C */,
); );
...@@ -3647,6 +3653,8 @@ ...@@ -3647,6 +3653,8 @@
A5CA3F4C2C74471C00EB22F5 /* UploadCertificate(7上传过关证件) */ = { A5CA3F4C2C74471C00EB22F5 /* UploadCertificate(7上传过关证件) */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
A5CA3F602C74D89500EB22F5 /* M */,
A5CA3F5D2C74D56E00EB22F5 /* VM */,
A5CA3F4E2C7447C700EB22F5 /* V */, A5CA3F4E2C7447C700EB22F5 /* V */,
A5CA3F4D2C7447BB00EB22F5 /* C */, A5CA3F4D2C7447BB00EB22F5 /* C */,
); );
...@@ -3674,6 +3682,36 @@ ...@@ -3674,6 +3682,36 @@
path = V; path = V;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
A5CA3F5D2C74D56E00EB22F5 /* VM */ = {
isa = PBXGroup;
children = (
);
path = VM;
sourceTree = "<group>";
};
A5CA3F602C74D89500EB22F5 /* M */ = {
isa = PBXGroup;
children = (
);
path = M;
sourceTree = "<group>";
};
A5CA3F632C7586BE00EB22F5 /* VM */ = {
isa = PBXGroup;
children = (
A5CA3F5E2C74D59B00EB22F5 /* YHUploadCertificateViewModel.swift */,
);
path = VM;
sourceTree = "<group>";
};
A5CA3F642C7586C500EB22F5 /* M */ = {
isa = PBXGroup;
children = (
A5CA3F612C74D8BD00EB22F5 /* YHVisaPaymentListModel.swift */,
);
path = M;
sourceTree = "<group>";
};
A5D001262BABC84A001F003C /* V */ = { A5D001262BABC84A001F003C /* V */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -4171,6 +4209,7 @@ ...@@ -4171,6 +4209,7 @@
045EEE992B9F171A0022A143 /* YHPreviewInfoHoldView.swift in Sources */, 045EEE992B9F171A0022A143 /* YHPreviewInfoHoldView.swift in Sources */,
045EEE7E2B9F171A0022A143 /* YHPersonInfoCellModel1.swift in Sources */, 045EEE7E2B9F171A0022A143 /* YHPersonInfoCellModel1.swift in Sources */,
047AA3DD2C4A6126009C4554 /* YHLifeViewController.swift in Sources */, 047AA3DD2C4A6126009C4554 /* YHLifeViewController.swift in Sources */,
A5CA3F5F2C74D59B00EB22F5 /* YHUploadCertificateViewModel.swift in Sources */,
04FD856C2C2153F000BEF9C5 /* YHMyEducationCell.swift in Sources */, 04FD856C2C2153F000BEF9C5 /* YHMyEducationCell.swift in Sources */,
A5DE0D3C2BB9016200976FE1 /* YHEmailInputAlertView.swift in Sources */, A5DE0D3C2BB9016200976FE1 /* YHEmailInputAlertView.swift in Sources */,
04256DE42C72E3FA00A37BA4 /* YHInfoItemOptionView.swift in Sources */, 04256DE42C72E3FA00A37BA4 /* YHInfoItemOptionView.swift in Sources */,
...@@ -4527,6 +4566,7 @@ ...@@ -4527,6 +4566,7 @@
043BA8752C241B38006EF02D /* YHAddFriendCardCell.swift in Sources */, 043BA8752C241B38006EF02D /* YHAddFriendCardCell.swift in Sources */,
A5C382CF2B5F9A9100C5E65C /* YHServiceCenterMainViewModel.swift in Sources */, A5C382CF2B5F9A9100C5E65C /* YHServiceCenterMainViewModel.swift in Sources */,
045EEEA52B9F171A0022A143 /* YHImageViewController.swift in Sources */, 045EEEA52B9F171A0022A143 /* YHImageViewController.swift in Sources */,
A5CA3F622C74D8BD00EB22F5 /* YHVisaPaymentListModel.swift in Sources */,
045EEEF32B9F171A0022A143 /* YHFamilyMemberInfoListVC.swift in Sources */, 045EEEF32B9F171A0022A143 /* YHFamilyMemberInfoListVC.swift in Sources */,
F8BAADA52C4FCE9C0074D6C3 /* YHUatHelperViewModel.swift in Sources */, F8BAADA52C4FCE9C0074D6C3 /* YHUatHelperViewModel.swift in Sources */,
0445E6B42BEA15C4003C52F9 /* YHAppVersionManager.swift in Sources */, 0445E6B42BEA15C4003C52F9 /* YHAppVersionManager.swift in Sources */,
......
...@@ -301,32 +301,32 @@ class YHShareOneCollectionViewCell: UICollectionViewCell { ...@@ -301,32 +301,32 @@ class YHShareOneCollectionViewCell: UICollectionViewCell {
make.center.equalToSuperview() make.center.equalToSuperview()
make.width.height.equalTo(17) make.width.height.equalTo(17)
} }
let qrString = YHBaseUrlManager.shared.curH5URL() + "superAppBridge.html#/evaluation?channel=lkhtj-app&customer_id=\(YHLoginManager.shared.userModel?.id ?? "")&scene_id=30"
if let qrCode = generateQRCode(from: YHBaseUrlManager.shared.curH5URL() + "superAppBridge.html#/evaluation?channel=lkhtj-app&customer_id=\(YHLoginManager.shared.userModel?.id ?? "")&scene_id=30") { if let qrCode = qrString.generateQRCode() {
// 可以将qrCode设置为UIImageView的image属性来显示二维码 // 可以将qrCode设置为UIImageView的image属性来显示二维码
imageView.image = qrCode imageView.image = qrCode
} }
} }
func generateQRCode(from string: String) -> UIImage? { // func generateQRCode(from string: String) -> UIImage? {
guard let data = string.data(using: .ascii, allowLossyConversion: false) else { // guard let data = string.data(using: .ascii, allowLossyConversion: false) else {
return nil // return nil
} // }
//
let filter = CIFilter(name: "CIQRCodeGenerator") // let filter = CIFilter(name: "CIQRCodeGenerator")
filter?.setValue(data, forKey: "inputMessage") // filter?.setValue(data, forKey: "inputMessage")
//
guard let outputImage = filter?.outputImage else { // guard let outputImage = filter?.outputImage else {
return nil // return nil
} // }
//
let context = CIContext() // let context = CIContext()
if let cgImage = context.createCGImage(outputImage, from: outputImage.extent) { // if let cgImage = context.createCGImage(outputImage, from: outputImage.extent) {
return UIImage(cgImage: cgImage) // return UIImage(cgImage: cgImage)
} // }
//
return nil // return nil
} // }
} }
class YHShareTwoCollectionViewCell: UICollectionViewCell { class YHShareTwoCollectionViewCell: UICollectionViewCell {
......
...@@ -9,8 +9,12 @@ ...@@ -9,8 +9,12 @@
import UIKit import UIKit
class YHVisaPaymentVC: YHBaseViewController { class YHVisaPaymentVC: YHBaseViewController {
let items : [String] = ["1","2","3"]
var items: [String] = ["1", "1","1"] //for test hjl
lazy var viewModel: YHVisaPaymentViewModel = {
let vm = YHVisaPaymentViewModel()
return vm
}()
lazy var tableView: UITableView = { lazy var tableView: UITableView = {
let tableView = UITableView(frame:.zero, style:.grouped) let tableView = UITableView(frame:.zero, style:.grouped)
...@@ -63,10 +67,24 @@ class YHVisaPaymentVC: YHBaseViewController { ...@@ -63,10 +67,24 @@ class YHVisaPaymentVC: YHBaseViewController {
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
setupUI() setupUI()
loadData()
} }
} }
private extension YHVisaPaymentVC { private extension YHVisaPaymentVC {
func loadData() {
let params: [String : Any] = ["order_id": 133874]
viewModel.getVisaPaymentList(params) { success, error in
if success {
} else {
}
self.tableView.reloadData()
}
}
func setupUI() { func setupUI() {
gk_navTitle = "签证缴费" gk_navTitle = "签证缴费"
gk_navBarAlpha = 1.0 gk_navBarAlpha = 1.0
...@@ -117,11 +135,13 @@ extension YHVisaPaymentVC: UITableViewDelegate, UITableViewDataSource { ...@@ -117,11 +135,13 @@ extension YHVisaPaymentVC: UITableViewDelegate, UITableViewDataSource {
let warningCell = tableView.dequeueReusableCell(withIdentifier: YHVisaPaymentTipsCell.cellReuseIdentifier, for: indexPath) let warningCell = tableView.dequeueReusableCell(withIdentifier: YHVisaPaymentTipsCell.cellReuseIdentifier, for: indexPath)
return warningCell return warningCell
} else if indexPath.section == 1 { } else if indexPath.section == 1 {
let approveCell = tableView.dequeueReusableCell(withIdentifier: YHVisaPayTypeCell.cellReuseIdentifier, for: indexPath) let approveCell = tableView.dequeueReusableCell(withIdentifier: YHVisaPayTypeCell.cellReuseIdentifier, for: indexPath) as! YHVisaPayTypeCell
approveCell.dataModel = self.viewModel.visaPaymentData
return approveCell return approveCell
} else if indexPath.section == 2 { } else if indexPath.section == 2 {
let approveCell = tableView.dequeueReusableCell(withIdentifier: YHPayMembersCell.cellReuseIdentifier, for: indexPath) let approveCell = tableView.dequeueReusableCell(withIdentifier: YHPayMembersCell.cellReuseIdentifier, for: indexPath) as! YHPayMembersCell
approveCell.dataModel = self.viewModel.visaPaymentData
return approveCell return approveCell
} else { } else {
......
//
// YHVisaPaymentListModel.swift
// galaxy
//
// Created by davidhuangA on 2024/8/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import SmartCodable
class YHVisaPaymentListModel: SmartCodable {
var payment_url : String = "" //支付地址url
var list : [YHVisaPaymentModel] = []
required init() {
}
}
class YHVisaPaymentModel : SmartCodable {
var id: Int = -1//
var type: String = ""//用户类型
var name: String = ""//用户姓名
var file_num : String = ""//档案号
var approval_date : String = ""//获批日期
var fee_hkd : Int = -1//缴费金额港币
var fee_rmb:String = "" //缴费金额人民币
var pay_status: Int = -1 //支付状态 7-待缴费 8-已缴费 9-电子签证已过期
var min_pay_time : String = ""//可缴费开始参考时间
var max_pay_time : String = ""//可缴费结束参考时间
var birthday : String = ""//生日
var receipt : String = ""//电子签证地址
var pay_time : String = "" // 缴费时间
var want_min_time : String = "" //意向开始时间
var want_max_time : String = "" //意向结束时间
var go_time : String = ""// 实际赴港时间
required init() {
}
}
...@@ -8,6 +8,12 @@ ...@@ -8,6 +8,12 @@
import UIKit import UIKit
class YHPayMemberContentItems: UIView { class YHPayMemberContentItems: UIView {
var dataModel : YHVisaPaymentModel? {
didSet {
updateUI()
}
}
//用来自动布局 //用来自动布局
lazy var fakeView: UIView = { lazy var fakeView: UIView = {
let view = UIView() let view = UIView()
...@@ -49,7 +55,10 @@ private extension YHPayMemberContentItems { ...@@ -49,7 +55,10 @@ private extension YHPayMemberContentItems {
extension YHPayMemberContentItems { extension YHPayMemberContentItems {
func updateUI( type : Int) { func updateUI() {
guard let model = dataModel else { return }
whiteContentView.removeSubviews() whiteContentView.removeSubviews()
removeSubviews() removeSubviews()
...@@ -67,13 +76,13 @@ extension YHPayMemberContentItems { ...@@ -67,13 +76,13 @@ extension YHPayMemberContentItems {
make.top.equalTo(kMargin) make.top.equalTo(kMargin)
make.left.right.equalToSuperview() make.left.right.equalToSuperview()
} }
item.updateUI(title: "档案号:",detail: "TQEN-03709888-23",showBtn: true) item.updateUI(title: "档案号:",detail: model.file_num,showBtn: true)
var lastView : UIView = item var lastView : UIView = item
//支付状态 7-待缴费 8-已缴费 9-电子签证已过期
if type == 1 || type == 2 { if model.pay_status == 7 || model.pay_status == 9 {
do { do {
let item = YHPayMemberContentItem() let item = YHPayMemberContentItem()
whiteContentView.addSubview(item) whiteContentView.addSubview(item)
...@@ -81,7 +90,7 @@ extension YHPayMemberContentItems { ...@@ -81,7 +90,7 @@ extension YHPayMemberContentItems {
make.top.equalTo(lastView.snp.bottom).offset(kMargin) make.top.equalTo(lastView.snp.bottom).offset(kMargin)
make.left.right.equalToSuperview() make.left.right.equalToSuperview()
} }
item.updateUI(title: "可缴费时间段:",detail: "2023.10.1 - 2023.11.20",showBtn: false) item.updateUI(title: "可缴费时间段:",detail: "\(model.min_pay_time) - \(model.max_pay_time)",showBtn: false)
lastView = item lastView = item
} }
...@@ -93,11 +102,11 @@ extension YHPayMemberContentItems { ...@@ -93,11 +102,11 @@ extension YHPayMemberContentItems {
make.top.equalTo(lastView.snp.bottom).offset(kMargin) make.top.equalTo(lastView.snp.bottom).offset(kMargin)
make.left.right.equalToSuperview() make.left.right.equalToSuperview()
} }
item.updateUI(title: "缴费金额:",detail: "230港币(≈211.89人民币)",showBtn: false) item.updateUI(title: "缴费金额:",detail: "\(model.fee_hkd)港币(≈\(model.fee_rmb)人民币)",showBtn: false)
lastView = item lastView = item
} }
} else if type == 3 { } else if model.pay_status == 8 {
do { do {
let item = YHPayMemberContentItem() let item = YHPayMemberContentItem()
...@@ -106,7 +115,7 @@ extension YHPayMemberContentItems { ...@@ -106,7 +115,7 @@ extension YHPayMemberContentItems {
make.top.equalTo(lastView.snp.bottom).offset(kMargin) make.top.equalTo(lastView.snp.bottom).offset(kMargin)
make.left.right.equalToSuperview() make.left.right.equalToSuperview()
} }
item.updateUI(title: "缴费金额:",detail: "230港币(≈211.89人民币)",showBtn: false) item.updateUI(title: "缴费金额:",detail: "\(model.fee_hkd)港币(≈\(model.fee_rmb)人民币)",showBtn: false)
lastView = item lastView = item
} }
...@@ -127,7 +136,13 @@ extension YHPayMemberContentItems { ...@@ -127,7 +136,13 @@ extension YHPayMemberContentItems {
make.top.equalTo(lastView.snp.bottom).offset(kMargin) make.top.equalTo(lastView.snp.bottom).offset(kMargin)
make.left.right.equalToSuperview() make.left.right.equalToSuperview()
} }
item.updateUI(title: "缴费电子签证:",detail: "Visa QMEN-0021813-22.pdf",oneLine: false,showBtn: true)
if model.receipt.isEmpty {
item.updateUI(title: "缴费电子签证:",detail: "暂未查询到结果",oneLine: false,showBtn: false)
} else {
item.updateUI(title: "缴费电子签证:",detail: model.receipt,oneLine: false,showBtn: true)
}
lastView = item lastView = item
} }
} }
......
...@@ -11,6 +11,13 @@ import AttributedString ...@@ -11,6 +11,13 @@ import AttributedString
class YHPayMemberItemsView: UIView { class YHPayMemberItemsView: UIView {
var dataModel : YHVisaPaymentModel? {
didSet {
updateUI()
}
}
lazy var sectionItem: YHPayMemberSectionItem = { lazy var sectionItem: YHPayMemberSectionItem = {
let view = YHPayMemberSectionItem() let view = YHPayMemberSectionItem()
return view return view
...@@ -47,7 +54,10 @@ private extension YHPayMemberItemsView { ...@@ -47,7 +54,10 @@ private extension YHPayMemberItemsView {
extension YHPayMemberItemsView { extension YHPayMemberItemsView {
func updateUI(type : Int = 1) { func updateUI() {
guard let model = dataModel else { return }
removeSubviews() removeSubviews()
addSubview(sectionItem) addSubview(sectionItem)
...@@ -55,7 +65,7 @@ extension YHPayMemberItemsView { ...@@ -55,7 +65,7 @@ extension YHPayMemberItemsView {
make.top.left.right.equalToSuperview() make.top.left.right.equalToSuperview()
make.height.equalTo(YHPayMemberSectionItem.viewH) make.height.equalTo(YHPayMemberSectionItem.viewH)
} }
sectionItem.updateUI(type: type) sectionItem.dataModel = model
addSubview(contentItems) addSubview(contentItems)
...@@ -64,7 +74,7 @@ extension YHPayMemberItemsView { ...@@ -64,7 +74,7 @@ extension YHPayMemberItemsView {
make.left.equalToSuperview() make.left.equalToSuperview()
make.right.equalToSuperview() make.right.equalToSuperview()
} }
contentItems.updateUI(type: type) contentItems.dataModel = model
addSubview(lineView) addSubview(lineView)
lineView.snp.makeConstraints { make in lineView.snp.makeConstraints { make in
...@@ -73,10 +83,10 @@ extension YHPayMemberItemsView { ...@@ -73,10 +83,10 @@ extension YHPayMemberItemsView {
make.height.equalTo(1) make.height.equalTo(1)
make.bottom.equalToSuperview() make.bottom.equalToSuperview()
} }
if type == 3 { // if type == 3 {
lineView.isHidden = true // lineView.isHidden = true
} else { // } else {
lineView.isHidden = false // lineView.isHidden = false
} // }
} }
} }
...@@ -11,6 +11,12 @@ import UIKit ...@@ -11,6 +11,12 @@ import UIKit
class YHPayMemberSectionItem: UIView { class YHPayMemberSectionItem: UIView {
static let viewH : CGFloat = 22.0 static let viewH : CGFloat = 22.0
var dataModel : YHVisaPaymentModel? {
didSet {
updateUI()
}
}
lazy var tagView: UIView = { lazy var tagView: UIView = {
let view = UIView() let view = UIView()
view.backgroundColor = .brandMainColor view.backgroundColor = .brandMainColor
...@@ -76,20 +82,26 @@ private extension YHPayMemberSectionItem { ...@@ -76,20 +82,26 @@ private extension YHPayMemberSectionItem {
extension YHPayMemberSectionItem { extension YHPayMemberSectionItem {
func updateUI(type : Int) { func updateUI() {
guard let model = dataModel else { return }
var txt = "待缴费" var txt = "待缴费"
var color : UIColor = UIColor.failColor var color : UIColor = UIColor.failColor
if type == 1 { //支付状态 7-待缴费 8-已缴费 9-电子签证已过期
if model.pay_status == 7 {
txt = "待缴费" txt = "待缴费"
color = .brandMainColor color = .brandMainColor
} else if type == 2 { } else if model.pay_status == 9 {
txt = "已过期" txt = "已过期"
color = .failColor color = .failColor
} else if type == 3 { } else if model.pay_status == 8 {
txt = "已缴费" txt = "已缴费"
color = .mainTextColor50 color = .mainTextColor50
} }
titleLabel.text = model.name
detailLabel.text = txt detailLabel.text = txt
detailLabel.textColor = color detailLabel.textColor = color
......
...@@ -13,6 +13,12 @@ class YHPayMembersCell: UITableViewCell { ...@@ -13,6 +13,12 @@ class YHPayMembersCell: UITableViewCell {
static let cellReuseIdentifier = "YHPayMembersCell" static let cellReuseIdentifier = "YHPayMembersCell"
var dataModel : YHVisaPaymentListModel? {
didSet {
updataUI()
}
}
lazy var whiteContentView: UIView = { lazy var whiteContentView: UIView = {
let view = UIView() let view = UIView()
view.backgroundColor = .white view.backgroundColor = .white
...@@ -107,32 +113,26 @@ private extension YHPayMembersCell { ...@@ -107,32 +113,26 @@ private extension YHPayMembersCell {
make.bottom.equalToSuperview() make.bottom.equalToSuperview()
} }
updateUI() //for test hjl
} }
} }
private extension YHPayMembersCell { private extension YHPayMembersCell {
func updateUI() {
func updataUI() {
guard let model = dataModel,model.list.count > 0 else { return }
for (index,item) in arrOtherView.enumerated() { for (index,item) in arrOtherView.enumerated() {
item.removeFromSuperview() item.removeFromSuperview()
} }
arrOtherView.removeAll() arrOtherView.removeAll()
//for test hjl
fakeView.snp.removeConstraints() fakeView.snp.removeConstraints()
let arr : [Int] = [1,2,3]//for test hjl
var lastView : UIView = tipsLable var lastView : UIView = tipsLable
for (index, item) in arr.enumerated() { for (index, item) in model.list.enumerated() {
let view = YHPayMemberItemsView() let view = YHPayMemberItemsView()
whiteContentView.addSubview(view) whiteContentView.addSubview(view)
view.snp.makeConstraints { make in view.snp.makeConstraints { make in
...@@ -140,7 +140,7 @@ private extension YHPayMembersCell { ...@@ -140,7 +140,7 @@ private extension YHPayMembersCell {
make.left.equalTo(kMargin) make.left.equalTo(kMargin)
make.right.equalToSuperview().offset(-kMargin) make.right.equalToSuperview().offset(-kMargin)
} }
view.updateUI(type: index + 1) view.dataModel = item
lastView = view lastView = view
arrOtherView.append(view) arrOtherView.append(view)
...@@ -155,5 +155,6 @@ private extension YHPayMembersCell { ...@@ -155,5 +155,6 @@ private extension YHPayMembersCell {
make.bottom.equalToSuperview() make.bottom.equalToSuperview()
} }
} }
} }
...@@ -14,6 +14,12 @@ class YHVisaPayTypeCell: UITableViewCell { ...@@ -14,6 +14,12 @@ class YHVisaPayTypeCell: UITableViewCell {
static let cellReuseIdentifier = "YHVisaPayTypeCell" static let cellReuseIdentifier = "YHVisaPayTypeCell"
var dataModel : YHVisaPaymentListModel? {
didSet {
updataUI()
}
}
lazy var whiteContentView: UIView = { lazy var whiteContentView: UIView = {
let view = UIView() let view = UIView()
view.backgroundColor = .white view.backgroundColor = .white
...@@ -24,6 +30,23 @@ class YHVisaPayTypeCell: UITableViewCell { ...@@ -24,6 +30,23 @@ class YHVisaPayTypeCell: UITableViewCell {
}() }()
lazy var linkLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
label.textColor = UIColor.brandMainColor
label.font = UIFont.PFSC_R(ofSize:12)
let linkTxt : String = "https://www.gov.hk/tc/residents/immigration/nonpermanent/onlinepaymentforevisa.htm"
return label
}()
lazy var qrCodeImageView : UIImageView = {
let qrCode : UIImageView = UIImageView()
qrCode.contentMode = .scaleAspectFill
qrCode.isUserInteractionEnabled = false
qrCode.addGestureRecognizer(longPress)
return qrCode
}()
/// 已添加的长按手势 /// 已添加的长按手势
private lazy var longPress: UILongPressGestureRecognizer = { private lazy var longPress: UILongPressGestureRecognizer = {
...@@ -45,6 +68,34 @@ class YHVisaPayTypeCell: UITableViewCell { ...@@ -45,6 +68,34 @@ class YHVisaPayTypeCell: UITableViewCell {
private extension YHVisaPayTypeCell { private extension YHVisaPayTypeCell {
func updataUI() {
guard let model = dataModel else { return }
let linkTxt : String = model.payment_url
let aa: ASAttributedString = .init(NSAttributedString(string: linkTxt), .font(UIFont.PFSC_R(ofSize: 12)),.foreground(UIColor.brandMainColor),.underline([.single], color: UIColor.brandMainColor),.action {
if let url = URL(string: linkTxt) {
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
// 显示一个提示,告知用户无法打开链接
print("无法打开链接")
}
}
})
linkLabel.attributed.text = aa
let qrString = linkTxt
if let qrCode = qrString.generateQRCode() {
// 可以将qrCode设置为UIImageView的image属性来显示二维码
self.qrCodeImageView.image = qrCode
self.qrCodeImageView.isUserInteractionEnabled = true
}
}
func saveImage(_ image: UIImage) { func saveImage(_ image: UIImage) {
// 确保应用有权访问相册 // 确保应用有权访问相册
PHPhotoLibrary.requestAuthorization { status in PHPhotoLibrary.requestAuthorization { status in
...@@ -143,27 +194,8 @@ private extension YHVisaPayTypeCell { ...@@ -143,27 +194,8 @@ private extension YHVisaPayTypeCell {
holdView.addSubview(linkLabel)
let link = UILabel() linkLabel.snp.makeConstraints { make in
link.numberOfLines = 0
link.textColor = UIColor.brandMainColor
link.font = UIFont.PFSC_R(ofSize:12)
let linkTxt : String = "https://www.gov.hk/tc/residents/immigration/nonpermanent/onlinepaymentforevisa.htm"
let aa: ASAttributedString = .init(NSAttributedString(string: linkTxt), .font(UIFont.PFSC_R(ofSize: 12)),.foreground(UIColor.brandMainColor),.underline([.single], color: UIColor.brandMainColor),.action {
if let url = URL(string: linkTxt) {
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
// 显示一个提示,告知用户无法打开链接
print("无法打开链接")
}
}
})
link.attributed.text = aa
holdView.addSubview(link)
link.snp.makeConstraints { make in
make.centerY.equalToSuperview() make.centerY.equalToSuperview()
make.left.equalTo(kMargin) make.left.equalTo(kMargin)
make.right.equalTo(-kMargin) make.right.equalTo(-kMargin)
...@@ -182,13 +214,10 @@ private extension YHVisaPayTypeCell { ...@@ -182,13 +214,10 @@ private extension YHVisaPayTypeCell {
make.height.equalTo(1) make.height.equalTo(1)
} }
let qrCode : UIImageView = UIImageView(image: UIImage(named: "visaPay_qr"))
qrCode.contentMode = .scaleAspectFill
qrCode.isUserInteractionEnabled = true
qrCode.addGestureRecognizer(longPress)
whiteContentView.addSubview(qrCode) whiteContentView.addSubview(qrCodeImageView)
qrCode.snp.makeConstraints { make in qrCodeImageView.snp.makeConstraints { make in
make.top.equalTo(line2.snp.bottom).offset(18) make.top.equalTo(line2.snp.bottom).offset(18)
make.right.equalTo(-kMargin) make.right.equalTo(-kMargin)
make.height.width.equalTo(86) make.height.width.equalTo(86)
...@@ -204,7 +233,7 @@ private extension YHVisaPayTypeCell { ...@@ -204,7 +233,7 @@ private extension YHVisaPayTypeCell {
whiteContentView.addSubview(label3) whiteContentView.addSubview(label3)
label3.snp.makeConstraints { make in label3.snp.makeConstraints { make in
make.top.equalTo(qrCode.snp.top).offset(12) make.top.equalTo(qrCodeImageView.snp.top).offset(12)
make.left.equalTo(kMargin) make.left.equalTo(kMargin)
make.height.equalTo(20) make.height.equalTo(20)
} }
...@@ -222,7 +251,7 @@ private extension YHVisaPayTypeCell { ...@@ -222,7 +251,7 @@ private extension YHVisaPayTypeCell {
label4.snp.makeConstraints { make in label4.snp.makeConstraints { make in
make.top.equalTo(label3.snp.bottom).offset(6) make.top.equalTo(label3.snp.bottom).offset(6)
make.left.equalTo(kMargin) make.left.equalTo(kMargin)
make.right.equalTo(qrCode.snp.left).offset(-kMargin) make.right.equalTo(qrCodeImageView.snp.left).offset(-kMargin)
} }
} }
......
//
// YHVisaPaymentViewModel.swift
// galaxy
//
// Created by davidhuangA on 2024/8/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHVisaPaymentViewModel: YHBaseViewModel {
//电子签字列表
var visaPaymentData : YHVisaPaymentListModel?
}
//请求接口
extension YHVisaPaymentViewModel {
//电子签字缴费列表
func getVisaPaymentList(_ params: [String : Any],callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.VisaPayment.paymentListApi
let _ = YHNetRequest.getRequest(url: strUrl,params: params) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
printLog("model 是 ==> \(json)")
if json.code == 200 {
let dic = json.data
guard let resultModel = YHVisaPaymentListModel.deserialize(dict: dic as? [AnyHashable : Any]) else {
callBackBlock(false,nil)
return
}
self.visaPaymentData = resultModel
callBackBlock(true,nil)
} else {
let err = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg.isEmpty ? "" : json.msg)
callBackBlock(false,err)
}
} failBlock: { err in
callBackBlock(false,err)
}
}
}
...@@ -255,4 +255,27 @@ extension String { ...@@ -255,4 +255,27 @@ extension String {
let regex = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$" let regex = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"
return range(of: regex, options: .regularExpression, range: nil, locale: nil) != nil return range(of: regex, options: .regularExpression, range: nil, locale: nil) != nil
} }
///字符串 生成二维码
func generateQRCode() -> UIImage? {
guard let data = self.data(using: .ascii, allowLossyConversion: false) else {
return nil
}
let filter = CIFilter(name: "CIQRCodeGenerator")
filter?.setValue(data, forKey: "inputMessage")
guard let outputImage = filter?.outputImage else {
return nil
}
let context = CIContext()
if let cgImage = context.createCGImage(outputImage, from: outputImage.extent) {
return UIImage(cgImage: cgImage)
}
return nil
}
} }
...@@ -8,6 +8,11 @@ ...@@ -8,6 +8,11 @@
class YHAllApiName { class YHAllApiName {
//办证段 - 签证缴费
struct VisaPayment {
//GetUserPaymentList 电子签证缴费列表
static let paymentListApi = "super-app/order/customer/service/payment"
}
//灰度功能接口 //灰度功能接口
struct Uat { struct Uat {
......
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