Commit 9e4aac30 authored by David黄金龙's avatar David黄金龙

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

* 'qmas-1130' of http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS:
  收入记录预览
parents b58e610d c77ade4b
...@@ -598,6 +598,11 @@ ...@@ -598,6 +598,11 @@
04A7BD192BA441D400BD35A2 /* YHMyDocumentsUrlModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A7BD182BA441D400BD35A2 /* YHMyDocumentsUrlModel.swift */; }; 04A7BD192BA441D400BD35A2 /* YHMyDocumentsUrlModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A7BD182BA441D400BD35A2 /* YHMyDocumentsUrlModel.swift */; };
04A91E742CC6220900E5A079 /* YHCommonAlertView+AttributedMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A91E732CC6220900E5A079 /* YHCommonAlertView+AttributedMessage.swift */; }; 04A91E742CC6220900E5A079 /* YHCommonAlertView+AttributedMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A91E732CC6220900E5A079 /* YHCommonAlertView+AttributedMessage.swift */; };
04AA19FD2BB40D5C00C1CBBD /* Applegate(JPush).swift in Sources */ = {isa = PBXBuildFile; fileRef = 04AA19FC2BB40D5C00C1CBBD /* Applegate(JPush).swift */; }; 04AA19FD2BB40D5C00C1CBBD /* Applegate(JPush).swift in Sources */ = {isa = PBXBuildFile; fileRef = 04AA19FC2BB40D5C00C1CBBD /* Applegate(JPush).swift */; };
04AA868A2CEDFA5D0059A95C /* YHPreviewIncomeRecordViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04AA86892CEDFA5D0059A95C /* YHPreviewIncomeRecordViewController.swift */; };
04AA868C2CEE00560059A95C /* YHPreviewInfoNameAndDetailCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04AA868B2CEE00560059A95C /* YHPreviewInfoNameAndDetailCell.swift */; };
04AA868E2CEE03CF0059A95C /* YHPreviewInfoHeaderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04AA868D2CEE03CF0059A95C /* YHPreviewInfoHeaderCell.swift */; };
04AA86902CEE04690059A95C /* YHPreviewInfoSectionHeaderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04AA868F2CEE04690059A95C /* YHPreviewInfoSectionHeaderCell.swift */; };
04AA86922CEE0E270059A95C /* YHPreviewInfoIncomeTypeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04AA86912CEE0E270059A95C /* YHPreviewInfoIncomeTypeCell.swift */; };
04AAA8DC2BF5E5A200FE9FD5 /* YHEmptyDataView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04AAA8DB2BF5E5A200FE9FD5 /* YHEmptyDataView.swift */; }; 04AAA8DC2BF5E5A200FE9FD5 /* YHEmptyDataView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04AAA8DB2BF5E5A200FE9FD5 /* YHEmptyDataView.swift */; };
04AD31772C22DE6600DF5655 /* YHEditInterestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04AD31762C22DE6600DF5655 /* YHEditInterestViewController.swift */; }; 04AD31772C22DE6600DF5655 /* YHEditInterestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04AD31762C22DE6600DF5655 /* YHEditInterestViewController.swift */; };
04AD31792C23FFC700DF5655 /* YHInterestModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04AD31782C23FFC700DF5655 /* YHInterestModel.swift */; }; 04AD31792C23FFC700DF5655 /* YHInterestModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04AD31782C23FFC700DF5655 /* YHInterestModel.swift */; };
...@@ -1631,6 +1636,11 @@ ...@@ -1631,6 +1636,11 @@
04A7BD182BA441D400BD35A2 /* YHMyDocumentsUrlModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyDocumentsUrlModel.swift; sourceTree = "<group>"; }; 04A7BD182BA441D400BD35A2 /* YHMyDocumentsUrlModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyDocumentsUrlModel.swift; sourceTree = "<group>"; };
04A91E732CC6220900E5A079 /* YHCommonAlertView+AttributedMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "YHCommonAlertView+AttributedMessage.swift"; sourceTree = "<group>"; }; 04A91E732CC6220900E5A079 /* YHCommonAlertView+AttributedMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "YHCommonAlertView+AttributedMessage.swift"; sourceTree = "<group>"; };
04AA19FC2BB40D5C00C1CBBD /* Applegate(JPush).swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Applegate(JPush).swift"; sourceTree = "<group>"; }; 04AA19FC2BB40D5C00C1CBBD /* Applegate(JPush).swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Applegate(JPush).swift"; sourceTree = "<group>"; };
04AA86892CEDFA5D0059A95C /* YHPreviewIncomeRecordViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHPreviewIncomeRecordViewController.swift; sourceTree = "<group>"; };
04AA868B2CEE00560059A95C /* YHPreviewInfoNameAndDetailCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHPreviewInfoNameAndDetailCell.swift; sourceTree = "<group>"; };
04AA868D2CEE03CF0059A95C /* YHPreviewInfoHeaderCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHPreviewInfoHeaderCell.swift; sourceTree = "<group>"; };
04AA868F2CEE04690059A95C /* YHPreviewInfoSectionHeaderCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHPreviewInfoSectionHeaderCell.swift; sourceTree = "<group>"; };
04AA86912CEE0E270059A95C /* YHPreviewInfoIncomeTypeCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHPreviewInfoIncomeTypeCell.swift; sourceTree = "<group>"; };
04AAA8DB2BF5E5A200FE9FD5 /* YHEmptyDataView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHEmptyDataView.swift; sourceTree = "<group>"; }; 04AAA8DB2BF5E5A200FE9FD5 /* YHEmptyDataView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHEmptyDataView.swift; sourceTree = "<group>"; };
04AD31762C22DE6600DF5655 /* YHEditInterestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHEditInterestViewController.swift; sourceTree = "<group>"; }; 04AD31762C22DE6600DF5655 /* YHEditInterestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHEditInterestViewController.swift; sourceTree = "<group>"; };
04AD31782C23FFC700DF5655 /* YHInterestModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHInterestModel.swift; sourceTree = "<group>"; }; 04AD31782C23FFC700DF5655 /* YHInterestModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHInterestModel.swift; sourceTree = "<group>"; };
...@@ -2895,6 +2905,7 @@ ...@@ -2895,6 +2905,7 @@
045EEDAD2B9F171A0022A143 /* YHPreviewOtherInformationViewController.swift */, 045EEDAD2B9F171A0022A143 /* YHPreviewOtherInformationViewController.swift */,
045EEDAE2B9F171A0022A143 /* YHPreviewMainApplicantInfoViewController.swift */, 045EEDAE2B9F171A0022A143 /* YHPreviewMainApplicantInfoViewController.swift */,
045EEDAF2B9F171A0022A143 /* YHPreviewMainViewController.swift */, 045EEDAF2B9F171A0022A143 /* YHPreviewMainViewController.swift */,
04AA86892CEDFA5D0059A95C /* YHPreviewIncomeRecordViewController.swift */,
); );
path = C; path = C;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -2903,6 +2914,10 @@ ...@@ -2903,6 +2914,10 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
045EEDB12B9F171A0022A143 /* YHPreviewInfoCell.swift */, 045EEDB12B9F171A0022A143 /* YHPreviewInfoCell.swift */,
04AA868B2CEE00560059A95C /* YHPreviewInfoNameAndDetailCell.swift */,
04AA868D2CEE03CF0059A95C /* YHPreviewInfoHeaderCell.swift */,
04AA868F2CEE04690059A95C /* YHPreviewInfoSectionHeaderCell.swift */,
04AA86912CEE0E270059A95C /* YHPreviewInfoIncomeTypeCell.swift */,
045EEDB22B9F171A0022A143 /* YHPreviewInfoWorkSummaryView.swift */, 045EEDB22B9F171A0022A143 /* YHPreviewInfoWorkSummaryView.swift */,
045EEDB32B9F171A0022A143 /* YHPreviewInfoProjectItemView.swift */, 045EEDB32B9F171A0022A143 /* YHPreviewInfoProjectItemView.swift */,
045EEDB42B9F171A0022A143 /* YHPreviewInfoNameAndSubNameItemsView.swift */, 045EEDB42B9F171A0022A143 /* YHPreviewInfoNameAndSubNameItemsView.swift */,
...@@ -5641,6 +5656,7 @@ ...@@ -5641,6 +5656,7 @@
04B4B8D52C89CE5E00ED82BC /* YHButlerServiceMessage.swift in Sources */, 04B4B8D52C89CE5E00ED82BC /* YHButlerServiceMessage.swift in Sources */,
04A671592B9F18C800C1FB91 /* YHCertificateUploadSheetView.swift in Sources */, 04A671592B9F18C800C1FB91 /* YHCertificateUploadSheetView.swift in Sources */,
04B360E52C60B5D3001EB053 /* YHPrinciplePhotoCollectCell.swift in Sources */, 04B360E52C60B5D3001EB053 /* YHPrinciplePhotoCollectCell.swift in Sources */,
04AA86922CEE0E270059A95C /* YHPreviewInfoIncomeTypeCell.swift in Sources */,
0425E6422BA95B1B00A5E763 /* YHSchemeTableFooterView.swift in Sources */, 0425E6422BA95B1B00A5E763 /* YHSchemeTableFooterView.swift in Sources */,
045EEEBD2B9F171A0022A143 /* YHWorkExampleTypeView.swift in Sources */, 045EEEBD2B9F171A0022A143 /* YHWorkExampleTypeView.swift in Sources */,
049AB5EE2C0EF68700155DDF /* YHOrderTipsView.swift in Sources */, 049AB5EE2C0EF68700155DDF /* YHOrderTipsView.swift in Sources */,
...@@ -5707,6 +5723,7 @@ ...@@ -5707,6 +5723,7 @@
A58AC09D2BABD59600A30FA9 /* YHFileListModel.swift in Sources */, A58AC09D2BABD59600A30FA9 /* YHFileListModel.swift in Sources */,
045EEEFF2B9F171A0022A143 /* YHSaveAndSubmitView.swift in Sources */, 045EEEFF2B9F171A0022A143 /* YHSaveAndSubmitView.swift in Sources */,
045EEF0E2B9F171A0022A143 /* YHBasicInfoFillView.swift in Sources */, 045EEF0E2B9F171A0022A143 /* YHBasicInfoFillView.swift in Sources */,
04AA868E2CEE03CF0059A95C /* YHPreviewInfoHeaderCell.swift in Sources */,
044E31D12CBE65BA00500F8E /* YHResignInfoValidTimeItemView.swift in Sources */, 044E31D12CBE65BA00500F8E /* YHResignInfoValidTimeItemView.swift in Sources */,
04B4B8D72C8AE77C00ED82BC /* YHButlerServiceMessageHandler.swift in Sources */, 04B4B8D72C8AE77C00ED82BC /* YHButlerServiceMessageHandler.swift in Sources */,
04AF514E2BEB585C00009E3A /* YHVideoPlayerVC.swift in Sources */, 04AF514E2BEB585C00009E3A /* YHVideoPlayerVC.swift in Sources */,
...@@ -5745,6 +5762,7 @@ ...@@ -5745,6 +5762,7 @@
042092B32C9D4884001184F0 /* YHURLEncodeHelper.swift in Sources */, 042092B32C9D4884001184F0 /* YHURLEncodeHelper.swift in Sources */,
045EEEA32B9F171A0022A143 /* YHCompanyModel.swift in Sources */, 045EEEA32B9F171A0022A143 /* YHCompanyModel.swift in Sources */,
044EE22B2C91683800A2FE3A /* YHServiceCenterViewModel.swift in Sources */, 044EE22B2C91683800A2FE3A /* YHServiceCenterViewModel.swift in Sources */,
04AA868C2CEE00560059A95C /* YHPreviewInfoNameAndDetailCell.swift in Sources */,
0430E64E2C733477000511E2 /* YHAdopterIncomeDetailViewController.swift in Sources */, 0430E64E2C733477000511E2 /* YHAdopterIncomeDetailViewController.swift in Sources */,
045EEEC62B9F171A0022A143 /* YHOtherTextViewItemView.swift in Sources */, 045EEEC62B9F171A0022A143 /* YHOtherTextViewItemView.swift in Sources */,
04F2434B2C9BB70300DF2C74 /* YHHKRecordsSummaryItemCell.swift in Sources */, 04F2434B2C9BB70300DF2C74 /* YHHKRecordsSummaryItemCell.swift in Sources */,
...@@ -5912,6 +5930,7 @@ ...@@ -5912,6 +5930,7 @@
A59FD0712CBFAC7800BBED55 /* YHRangeDatePickerView2.swift in Sources */, A59FD0712CBFAC7800BBED55 /* YHRangeDatePickerView2.swift in Sources */,
A59FD0722CBFAC7800BBED55 /* YHRangeDatePickerSheetView2.swift in Sources */, A59FD0722CBFAC7800BBED55 /* YHRangeDatePickerSheetView2.swift in Sources */,
A59FD0732CBFAC7800BBED55 /* YHRangeDatePickerCell2.swift in Sources */, A59FD0732CBFAC7800BBED55 /* YHRangeDatePickerCell2.swift in Sources */,
04AA868A2CEDFA5D0059A95C /* YHPreviewIncomeRecordViewController.swift in Sources */,
045EEEB22B9F171A0022A143 /* YHWorkActionView.swift in Sources */, 045EEEB22B9F171A0022A143 /* YHWorkActionView.swift in Sources */,
04CA2BF02CB7A74C00F36DE7 /* YHResignUploadTravelHKViewController.swift in Sources */, 04CA2BF02CB7A74C00F36DE7 /* YHResignUploadTravelHKViewController.swift in Sources */,
A58AC09F2BAC05BA00A30FA9 /* YHFileListItemsView.swift in Sources */, A58AC09F2BAC05BA00A30FA9 /* YHFileListItemsView.swift in Sources */,
...@@ -6127,6 +6146,7 @@ ...@@ -6127,6 +6146,7 @@
045792172CBD046E00EBD99B /* YHResignUploadTravelPassportTableViewCell.swift in Sources */, 045792172CBD046E00EBD99B /* YHResignUploadTravelPassportTableViewCell.swift in Sources */,
044F393E2CB7827B007CA277 /* YHVisaRenewalGuideTipsCell.swift in Sources */, 044F393E2CB7827B007CA277 /* YHVisaRenewalGuideTipsCell.swift in Sources */,
045EEE942B9F171A0022A143 /* YHPreviewInfoQuestionAndAnswerItemView.swift in Sources */, 045EEE942B9F171A0022A143 /* YHPreviewInfoQuestionAndAnswerItemView.swift in Sources */,
04AA86902CEE04690059A95C /* YHPreviewInfoSectionHeaderCell.swift in Sources */,
04F5F86A2C1A95BB004A463C /* YHOtherServiceViewController.swift in Sources */, 04F5F86A2C1A95BB004A463C /* YHOtherServiceViewController.swift in Sources */,
0430E6762C74A4BE000511E2 /* YHAdopterMarryViewController.swift in Sources */, 0430E6762C74A4BE000511E2 /* YHAdopterMarryViewController.swift in Sources */,
A5B6ED782C27FC0B001B6732 /* Int+Extension.swift in Sources */, A5B6ED782C27FC0B001B6732 /* Int+Extension.swift in Sources */,
......
...@@ -24,8 +24,10 @@ class YHIncomeRecordListModel: SmartCodable { ...@@ -24,8 +24,10 @@ class YHIncomeRecordListModel: SmartCodable {
var income_id: Int = 0 var income_id: Int = 0
var company_name: String = "" var company_name: String = ""
var income_money: Double = 0 var income_money: Double = 0
var corporate_turnover: Double = 0
var fill_status: Bool = false var fill_status: Bool = false
var unfilled_count: Int = 0 var unfilled_count: Int = 0
var income_type: [Int] = []
required init() { required init() {
......
...@@ -288,11 +288,11 @@ extension YHIncomeDocumentationConfirmationCell { ...@@ -288,11 +288,11 @@ extension YHIncomeDocumentationConfirmationCell {
} }
} }
private class YHIncomeDocumentationView: UIView { class YHIncomeDocumentationView: UIView {
private lazy var infoDetailLabel: UILabel = { private lazy var infoDetailLabel: UILabel = {
let label = UILabel() let label = UILabel()
label.font = .PFSC_M(ofSize: 14) label.font = .PFSC_R(ofSize: 14)
label.textColor = .mainTextColor label.textColor = .mainTextColor
label.numberOfLines = 0 label.numberOfLines = 0
label.lineBreakMode = .byCharWrapping label.lineBreakMode = .byCharWrapping
...@@ -316,8 +316,9 @@ private class YHIncomeDocumentationView: UIView { ...@@ -316,8 +316,9 @@ private class YHIncomeDocumentationView: UIView {
fatalError("init(coder:) has not been implemented") fatalError("init(coder:) has not been implemented")
} }
func setupInfo(_ detail: String) { func setupInfo(_ detail: String, font: UIFont = .PFSC_R(ofSize: 14)) {
infoDetailLabel.text = detail infoDetailLabel.text = detail
infoDetailLabel.font = font
} }
private func setupUI() { private func setupUI() {
......
...@@ -25,7 +25,7 @@ class YHPreviewControllerHoldViewController: UIViewController { ...@@ -25,7 +25,7 @@ class YHPreviewControllerHoldViewController: UIViewController {
} }
} }
let arrItemTitles = ["主申请人信息","家庭成员信息","基本资料","学历/专业资格","工作经验","收入证明","其他信息"] let arrItemTitles = ["主申请人信息","家庭成员信息","基本资料","学历/专业资格","工作经验","收入记录","其他信息"]
var arrItemVCs : [YHPreviewBaseViewController] = [] var arrItemVCs : [YHPreviewBaseViewController] = []
var segmentedView : JXSegmentedView = JXSegmentedView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: 55)) var segmentedView : JXSegmentedView = JXSegmentedView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: 55))
lazy var segmentedDataSource: JXSegmentedBaseDataSource = { lazy var segmentedDataSource: JXSegmentedBaseDataSource = {
...@@ -80,8 +80,9 @@ class YHPreviewControllerHoldViewController: UIViewController { ...@@ -80,8 +80,9 @@ class YHPreviewControllerHoldViewController: UIViewController {
} }
do { do {
//收入证明 //for test hjl // 收入记录
let vc = YHPreviewOtherInformationViewController() let orderID = UserDefaults.standard.value(forKey: "orderIdForPreview") as? Int ?? 0
let vc = YHPreviewIncomeRecordViewController(orderId: orderID)
arrItemVCs.append(vc) arrItemVCs.append(vc)
} }
......
//
// YHPreviewIncomeRecordViewController.swift
// galaxy
//
// Created by alexzzw on 2024/11/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHPreviewIncomeRecordViewController: YHPreviewBaseViewController {
enum TableRow {
case infoHeader(_ title: String)
case infoSectionHeader(_ title: String)
case infoTitleAndDetail(_ title: String, _ detail: String)
case infoIncomeType(_ title: String, _ types: [String])
}
private lazy var datas: [TableRow] = []
private lazy var viewModel = YHIncomeRecordViewModel()
private var incomeModel = YHIncomeRecordCompleteModel()
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
requestData()
}
private let orderId: Int
init(orderId: Int) {
self.orderId = orderId
super.init(nibName: nil, bundle: nil)
}
@MainActor required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
extension YHPreviewIncomeRecordViewController {
private func setupUI() {
homeTableView.register(YHPreviewInfoHeaderCell.self, forCellReuseIdentifier: YHPreviewInfoHeaderCell.cellReuseIdentifier)
homeTableView.register(YHPreviewInfoNameAndDetailCell.self, forCellReuseIdentifier: YHPreviewInfoNameAndDetailCell.cellReuseIdentifier)
homeTableView.register(YHPreviewInfoSectionHeaderCell.self, forCellReuseIdentifier: YHPreviewInfoSectionHeaderCell.cellReuseIdentifier)
homeTableView.register(YHPreviewInfoIncomeTypeCell.self, forCellReuseIdentifier: YHPreviewInfoIncomeTypeCell.cellReuseIdentifier)
homeTableView.tableHeaderView = UIView(frame: CGRect(x: 16, y: 0, width: KScreenWidth - 32, height: 16))
homeTableView.tableFooterView = UIView(frame: CGRect(x: 16, y: 0, width: KScreenWidth - 32, height: 44))
}
private func currencyFormat(_ currencySymbol: String) -> NumberFormatter {
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.currencySymbol = currencySymbol
formatter.maximumFractionDigits = 0
return formatter
}
private func setupData() {
datas.removeAll()
datas.append(.infoHeader("收入情况"))
if incomeModel.income_over_100 == YHIncomeOver100.false.rawValue {
datas.append(.infoTitleAndDetail("前一年全年收入是否达港币100万元或以上:", "否"))
} else {
datas.append(.infoTitleAndDetail("前一年全年收入是否达港币100万元或以上:", "是"))
}
let currencyFmt = currencyFormat("")
let rate = incomeModel.rate > 0 ? incomeModel.rate : 0.92
var totalMoney: Double = 0
incomeModel.list.enumerated().forEach { index, model in
datas.append(.infoSectionHeader("收入\(index + 1)"))
datas.append(.infoTitleAndDetail("收入来源公司:", model.company_name))
let selectedTypes = model.income_type.compactMap {
YHIncomeType(rawValue: $0)
}
datas.append(.infoIncomeType("收入类型:", selectedTypes.map {
$0.nameString()
}))
if selectedTypes.contains(.incomeOfMainland) || selectedTypes.contains(.incomeOfHKCompanies) || selectedTypes.contains(.incomeOfMacauCompanies) || selectedTypes.contains(.incomeOfOtherOverseasCompanies) {
datas.append(.infoTitleAndDetail("公司营业额/人民币 (近一年):", currencyFmt.string(from: NSNumber(value: model.corporate_turnover)) ?? "0"))
}
datas.append(.infoTitleAndDetail("收入金额(港元):", currencyFmt.string(from: NSNumber(value: model.income_money / rate)) ?? "0"))
totalMoney += model.income_money
}
if totalMoney > 0, datas.count > 2 {
datas.insert(.infoTitleAndDetail("主申请人总收入(港元):", currencyFmt.string(from: NSNumber(value: totalMoney / rate)) ?? "0"), at: 2)
}
homeTableView.reloadData()
}
private func requestData() {
viewModel.getIncomeList(orderId: orderId) { [weak self] incomeModel, error in
guard let self = self else {
return
}
guard let incomeModel = incomeModel else {
printLog("YHPreviewIncomeRecordViewController: 请求失败")
if let errorMsg = error?.errorMsg, errorMsg.count > 0 {
YHHUD.flash(message: errorMsg)
}
self.datas = []
self.homeTableView.reloadData()
return
}
self.incomeModel = incomeModel
self.setupData()
}
}
}
// MARK: - UITableViewDelegate 和 UITableViewDataSource
extension YHPreviewIncomeRecordViewController {
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return datas.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard datas.count > indexPath.row else {
return UITableViewCell()
}
let tableRow = datas[indexPath.row]
switch tableRow {
case let .infoHeader(title):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHPreviewInfoHeaderCell.cellReuseIdentifier) as? YHPreviewInfoHeaderCell {
cell.setup(title: title)
return cell
}
case let .infoSectionHeader(title):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHPreviewInfoSectionHeaderCell.cellReuseIdentifier) as? YHPreviewInfoSectionHeaderCell {
cell.setup(title: title)
return cell
}
case let .infoTitleAndDetail(title, detail):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHPreviewInfoNameAndDetailCell.cellReuseIdentifier) as? YHPreviewInfoNameAndDetailCell {
cell.setup(title: title, detail: detail)
return cell
}
case let .infoIncomeType(title, docs):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHPreviewInfoIncomeTypeCell.cellReuseIdentifier) as? YHPreviewInfoIncomeTypeCell {
cell.setupCellInfo(title: title, documents: docs)
return cell
}
}
return UITableViewCell()
}
}
//
// YHPreviewInfoHeaderCell.swift
// galaxy
//
// Created by alexzzw on 2024/11/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHPreviewInfoHeaderCell: UITableViewCell {
static let cellReuseIdentifier = "YHPreviewInfoHeaderCell"
private lazy var infoNameLabel: UILabel = {
let label = UILabel(text: "--")
label.textColor = UIColor.mainTextColor
label.font = UIFont.PFSC_M(ofSize: 17)
return label
}()
private lazy var lineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
return view
}()
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 setup(title: String) {
infoNameLabel.text = title
}
private func setupUI() {
contentView.addSubview(infoNameLabel)
contentView.addSubview(lineView)
infoNameLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.top.equalToSuperview().offset(16)
make.bottom.equalToSuperview().offset(-12)
make.right.lessThanOrEqualToSuperview().offset(-18)
}
lineView.snp.makeConstraints { make in
make.left.equalToSuperview()
make.right.equalToSuperview()
make.bottom.equalToSuperview()
make.height.equalTo(1)
}
}
}
//
// YHPreviewInfoIncomeTypeCell.swift
// galaxy
//
// Created by alexzzw on 2024/11/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHPreviewInfoIncomeTypeCell: UITableViewCell {
static let cellReuseIdentifier = "YHPreviewInfoIncomeTypeCell"
private var documentationViews: [YHIncomeDocumentationView] = []
private var lastDocuments: [String] = []
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_R(ofSize: 14)
label.textColor = UIColor(hexString: "#8993A2")
return label
}()
private lazy var containerView: YHBaseDynamicCornerRadiusView = {
let view = YHBaseDynamicCornerRadiusView(cornerRadius: 3, corner: .allCorners)
view.backgroundColor = .contentBkgColor
return view
}()
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, documents: [String]) {
infoTitleLabel.text = title
if lastDocuments != documents || documentationViews.count != documents.count {
lastDocuments = documents
documentationViews.forEach {
$0.removeFromSuperview()
}
documentationViews.removeAll()
let count = documents.count
documents.enumerated().forEach { [weak self] index, title in
guard let self = self else {
return
}
let documentationView = YHIncomeDocumentationView()
documentationView.setupInfo(title, font: .PFSC_R(ofSize: 13))
self.documentationViews.append(documentationView)
self.containerView.addSubview(documentationView)
documentationView.snp.makeConstraints { make in
if index == 0 {
make.top.equalToSuperview().offset(16)
} else {
make.top.equalTo(self.documentationViews[index - 1].snp.bottom).offset(12)
}
make.left.equalToSuperview().offset(16)
make.right.lessThanOrEqualToSuperview().offset(-8)
if index == count - 1 {
make.bottom.equalToSuperview().offset(-16)
}
}
}
}
}
private func setupUI() {
contentView.addSubview(infoTitleLabel)
contentView.addSubview(containerView)
infoTitleLabel.snp.makeConstraints { make in
make.top.equalToSuperview().offset(8)
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
}
containerView.snp.makeConstraints { make in
make.left.equalTo(infoTitleLabel)
make.top.equalTo(infoTitleLabel.snp.bottom).offset(8)
make.right.equalToSuperview().offset(-18)
make.bottom.equalToSuperview().offset(-8)
}
}
}
//
// YHPreviewInfoNameAndDetailCell.swift
// galaxy
//
// Created by alexzzw on 2024/11/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHPreviewInfoNameAndDetailCell: UITableViewCell {
static let cellReuseIdentifier = "YHPreviewInfoNameAndDetailCell"
private lazy var infoNameLabel: UILabel = {
let label = UILabel(text: "--")
label.textColor = UIColor(hexString: "#8993A2")
label.font = UIFont.PFSC_R(ofSize: 14)
return label
}()
private lazy var infoSubtitleLabel: UILabel = {
let label = UILabel(text: "--")
label.textColor = UIColor.mainTextColor
label.font = UIFont.PFSC_R(ofSize: 14)
label.textAlignment = .right
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 setup(title: String, detail: String, topMargin: CGFloat = 8, bottomMargin: CGFloat = 8) {
infoNameLabel.text = title
infoSubtitleLabel.text = detail
infoSubtitleLabel.snp.remakeConstraints { make in
make.left.greaterThanOrEqualTo(infoNameLabel.snp.right).offset(10)
make.top.equalToSuperview().offset(topMargin)
make.right.equalToSuperview().offset(-18)
make.bottom.equalToSuperview().offset(-bottomMargin)
}
}
private func setupUI() {
contentView.addSubview(infoNameLabel)
contentView.addSubview(infoSubtitleLabel)
infoNameLabel.setContentCompressionResistancePriority(.required, for: .horizontal)
infoSubtitleLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
infoNameLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.centerY.equalTo(infoSubtitleLabel)
}
infoSubtitleLabel.snp.makeConstraints { make in
make.left.greaterThanOrEqualTo(infoNameLabel.snp.right).offset(10)
make.top.equalToSuperview().offset(8)
make.right.equalToSuperview().offset(-18)
make.bottom.equalToSuperview().offset(-8)
}
}
}
//
// YHPreviewInfoSectionHeaderCell.swift
// galaxy
//
// Created by alexzzw on 2024/11/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHPreviewInfoSectionHeaderCell: UITableViewCell {
static let cellReuseIdentifier = "YHPreviewInfoSectionHeaderCell"
private lazy var infoNameLabel: UILabel = {
let label = UILabel(text: "--")
label.textColor = UIColor.mainTextColor
label.font = UIFont.PFSC_M(ofSize: 14)
return label
}()
private lazy var lineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
return view
}()
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 setup(title: String) {
infoNameLabel.text = title
}
private func setupUI() {
contentView.addSubview(infoNameLabel)
contentView.addSubview(lineView)
infoNameLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.top.equalToSuperview().offset(16)
make.bottom.equalToSuperview().offset(-8)
make.right.lessThanOrEqualToSuperview().offset(-18)
}
lineView.snp.makeConstraints { make in
make.left.equalTo(infoNameLabel)
make.right.equalToSuperview().offset(-18)
make.top.equalToSuperview()
make.height.equalTo(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