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

收入记录相关接口调试

parent fc3de8cb
......@@ -50,6 +50,10 @@
04307B932D1AB66100ED8E8D /* YHGCPreviewWorkExpViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B892D1AB66100ED8E8D /* YHGCPreviewWorkExpViewController.swift */; };
04307B962D1BAFD400ED8E8D /* YHGCIncomeRecordViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B952D1BAFD400ED8E8D /* YHGCIncomeRecordViewModel.swift */; };
04307B982D1BB1AD00ED8E8D /* YHGCIncomeRecordWorkExperienceViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B972D1BB1AD00ED8E8D /* YHGCIncomeRecordWorkExperienceViewModel.swift */; };
04307B9B2D1CF5EE00ED8E8D /* YHGCIncomeRecordSaveWorkModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B9A2D1CF5EE00ED8E8D /* YHGCIncomeRecordSaveWorkModel.swift */; };
04307B9D2D1D48E700ED8E8D /* YHGCIncomeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B9C2D1D48E700ED8E8D /* YHGCIncomeType.swift */; };
04307B9F2D1D4B3600ED8E8D /* YHGCIncomeTypeSelectViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B9E2D1D4B3600ED8E8D /* YHGCIncomeTypeSelectViewController.swift */; };
04307BA12D1D4B9500ED8E8D /* YHGCIncomeTypeSelectModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307BA02D1D4B9500ED8E8D /* YHGCIncomeTypeSelectModel.swift */; };
045C0F7F2D12CA5F00BD2DC0 /* submit_page_scroll.gif in Resources */ = {isa = PBXBuildFile; fileRef = 045C0F4F2D12CA5E00BD2DC0 /* submit_page_scroll.gif */; };
045C0F802D12CA5F00BD2DC0 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 045C0F762D12CA5E00BD2DC0 /* Localizable.xcstrings */; };
045C0F812D12CA5F00BD2DC0 /* img_0.png in Resources */ = {isa = PBXBuildFile; fileRef = 045C0F5E2D12CA5E00BD2DC0 /* img_0.png */; };
......@@ -1252,6 +1256,10 @@
04307B892D1AB66100ED8E8D /* YHGCPreviewWorkExpViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCPreviewWorkExpViewController.swift; sourceTree = "<group>"; };
04307B952D1BAFD400ED8E8D /* YHGCIncomeRecordViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCIncomeRecordViewModel.swift; sourceTree = "<group>"; };
04307B972D1BB1AD00ED8E8D /* YHGCIncomeRecordWorkExperienceViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCIncomeRecordWorkExperienceViewModel.swift; sourceTree = "<group>"; };
04307B9A2D1CF5EE00ED8E8D /* YHGCIncomeRecordSaveWorkModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCIncomeRecordSaveWorkModel.swift; sourceTree = "<group>"; };
04307B9C2D1D48E700ED8E8D /* YHGCIncomeType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCIncomeType.swift; sourceTree = "<group>"; };
04307B9E2D1D4B3600ED8E8D /* YHGCIncomeTypeSelectViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCIncomeTypeSelectViewController.swift; sourceTree = "<group>"; };
04307BA02D1D4B9500ED8E8D /* YHGCIncomeTypeSelectModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCIncomeTypeSelectModel.swift; sourceTree = "<group>"; };
045C09A12D12C2A800BD2DC0 /* YHGCMineSchemeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCMineSchemeViewController.swift; sourceTree = "<group>"; };
045C0A142D12CA5E00BD2DC0 /* YHBaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBaseViewController.swift; sourceTree = "<group>"; };
045C0A152D12CA5E00BD2DC0 /* YHBaseViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBaseViewModel.swift; sourceTree = "<group>"; };
......@@ -2607,6 +2615,16 @@
path = VM;
sourceTree = "<group>";
};
04307B992D1CF5AC00ED8E8D /* M */ = {
isa = PBXGroup;
children = (
04307B9A2D1CF5EE00ED8E8D /* YHGCIncomeRecordSaveWorkModel.swift */,
04307B9C2D1D48E700ED8E8D /* YHGCIncomeType.swift */,
04307BA02D1D4B9500ED8E8D /* YHGCIncomeTypeSelectModel.swift */,
);
path = M;
sourceTree = "<group>";
};
045C0A182D12CA5E00BD2DC0 /* C */ = {
isa = PBXGroup;
children = (
......@@ -6120,6 +6138,7 @@
children = (
047A968A2D16AA410033BB4E /* YHGCIncomeRecordViewController.swift */,
047A968B2D16AA410033BB4E /* YHGCIncomeRecordWorkExperienceViewController.swift */,
04307B9E2D1D4B3600ED8E8D /* YHGCIncomeTypeSelectViewController.swift */,
);
path = C;
sourceTree = "<group>";
......@@ -6127,6 +6146,7 @@
047A968E2D16AA410033BB4E /* IncomeRecord(收入记录) */ = {
isa = PBXGroup;
children = (
04307B992D1CF5AC00ED8E8D /* M */,
04307B942D1BAE8800ED8E8D /* VM */,
047A96942D1900D00033BB4E /* V */,
047A968D2D16AA410033BB4E /* C */,
......@@ -7188,6 +7208,7 @@
045C114A2D12CA5F00BD2DC0 /* YHAdopterCardModel.swift in Sources */,
045C114B2D12CA5F00BD2DC0 /* YHDocumentMessageTableViewCell.swift in Sources */,
045C114C2D12CA5F00BD2DC0 /* YHHUDSuccessView.swift in Sources */,
04307B9D2D1D48E700ED8E8D /* YHGCIncomeType.swift in Sources */,
045C114D2D12CA5F00BD2DC0 /* YHVisaRenewalPayContentCell.swift in Sources */,
045C114E2D12CA5F00BD2DC0 /* YHMyPermissionSettingVC.swift in Sources */,
045C114F2D12CA5F00BD2DC0 /* YHAdopterIncomeTableViewCell.swift in Sources */,
......@@ -7461,6 +7482,7 @@
045C12452D12CA5F00BD2DC0 /* YHHUDErrorView.swift in Sources */,
045C12462D12CA5F00BD2DC0 /* YHPrincleViewModel.swift in Sources */,
045C12472D12CA5F00BD2DC0 /* YHUploadCertificateListModel.swift in Sources */,
04307B9B2D1CF5EE00ED8E8D /* YHGCIncomeRecordSaveWorkModel.swift in Sources */,
04307B682D19911800ED8E8D /* YHIncomeInfoEditCell.swift in Sources */,
045C12482D12CA5F00BD2DC0 /* YHResignUploadDetailModel.swift in Sources */,
045C12492D12CA5F00BD2DC0 /* UIApplication+Extension.swift in Sources */,
......@@ -7616,6 +7638,7 @@
045C12D82D12CA5F00BD2DC0 /* YHSubmitAllInfoSuccessAlertView.swift in Sources */,
045C12D92D12CA5F00BD2DC0 /* YHPayMemberSectionItem.swift in Sources */,
045C12DA2D12CA5F00BD2DC0 /* YHPickTimeHoldView.swift in Sources */,
04307B9F2D1D4B3600ED8E8D /* YHGCIncomeTypeSelectViewController.swift in Sources */,
045C12DB2D12CA5F00BD2DC0 /* YHServiceOrderInIncubationView.swift in Sources */,
045C12DC2D12CA5F00BD2DC0 /* YHUatHelperViewModel.swift in Sources */,
045C12DD2D12CA5F00BD2DC0 /* YHServiceCenterViewModel.swift in Sources */,
......@@ -7686,6 +7709,7 @@
045C13192D12CA5F00BD2DC0 /* YHQuestionAndAnswerViewController.swift in Sources */,
045C131A2D12CA5F00BD2DC0 /* YHInvitationWithGiftsShareView.swift in Sources */,
045C131B2D12CA5F00BD2DC0 /* YHRangeDatePickerView2.swift in Sources */,
04307BA12D1D4B9500ED8E8D /* YHGCIncomeTypeSelectModel.swift in Sources */,
045C131C2D12CA5F00BD2DC0 /* YHLookResignResultPrivateView.swift in Sources */,
045C131D2D12CA5F00BD2DC0 /* YHHKPlanItemView.swift in Sources */,
045C131E2D12CA5F00BD2DC0 /* YHInvatationShareViewController.swift in Sources */,
......
......@@ -44,7 +44,7 @@ enum YHIncomeType: Int, CaseIterable {
case .businessIncome:
return "个体工商户/合伙企业/独资企业经营所得收入"
case .incomeOfOtherOverseasCompanies:
return "其他境外公司收入(持股50%及以上"
return "其他境外公司收入(持股50%及以上)"
}
}
......
......@@ -56,8 +56,8 @@ class YHEmploymentVerificationAvailableCell: YHResignDocumentCell {
}
extension YHEmploymentVerificationAvailableCell {
private func updateContentState(_ isBlank: Bool) {
if isBlank {
private func updateContentState(_ isNotBlank: Bool) {
if !isNotBlank {
infoDetailLabel.text = "请选择"
infoDetailLabel.font = .PFSC_R(ofSize: 14)
infoDetailLabel.textColor = UIColor(hexString: "#B9C1CC")
......
......@@ -125,7 +125,7 @@ extension YHGCMineSchemeViewController {
let industry = model.industry.defaultStringIfEmpty()
let model1 = YHScemeItemModel(title: "职业界别", mainMessage: "根据您目前给来的材料,初步建议您申请的行业:" + industry, lightMessage: industry, subMessage: "后续会根据您文书准备的补充情况来最终确定,如有修改会再告知您。", lightFont: UIFont.PFSC_B(ofSize: 16), hideTopLine: true)
let contentStr = model.content.reduce("") { partialResult, current in
partialResult + "\n" + current
partialResult.count > 0 ? partialResult + "\n" + current : partialResult + current
}
let model2 = YHScemeItemModel(title: "资料清单", buttonTitle: "资料清单", mainMessage: "这是您的资料清单,请您前往查看。请您在1-2周内上传基础类证件哦,需要重新办理的可以晚些提供。需要注意的点如下:", lightMessage: "1-2周内", subMessage: "按照您填报的学历信息, 证明文件如下:\(contentStr)")
self.dataSource = [model1, model2]
......
......@@ -19,8 +19,8 @@ class YHGCIncomeRecordViewController: YHBaseViewController {
case totalIncome(_ money: ASAttributedString)
case consentForHKTravel(_ title: String, _ detail: ASAttributedString, _ question: String)
case questionSelect(_ question: String)
case employmentVerification(_ employments: [YHWorkItemListModel], _ selectedId: Int?)
case workingHoursStatement(_ placeholder: String, _ detail: ASAttributedString, _ content: String)
case employmentVerification //(_ employments: [YHWorkItemListModel], _ selectedId: Int?)
case workingHoursStatement(_ placeholder: String, _ detail: ASAttributedString)
}
private lazy var datas: [[TableRow]] = []
......@@ -185,8 +185,9 @@ extension YHGCIncomeRecordViewController {
let income = Double(companyModel.income ?? "") ?? 0
money += income
let moneyStr = income == 0 ? "" : "约" + (hkdFormatter.string(from: NSNumber(value: income / rate)) ?? "0") + "港币"
let vacantNum = companyModel.vacant_num ?? 0
let timeStr: String = vacantNum == 0 ? "已填写" : "有\(vacantNum)项未填写"
// let vacantNum = companyModel.vacant_num ?? 0
// let timeStr: String = vacantNum == 0 ? "已填写" : "有\(vacantNum)项未填写"
let timeStr: String = (companyModel.entry_time ?? "") + "-" + (companyModel.departure_time ?? "")
let incomeItem: TableRow = .incomeItem(companyModel.company_name ?? "", moneyStr, timeStr, companyModel.id ?? 0, index != listCount - 1)
firstSection.append(incomeItem)
}
......@@ -200,7 +201,7 @@ extension YHGCIncomeRecordViewController {
if viewModel.mainModel.has_work_time_overlap == 1 {
let tipsIcon = ASAttributedString.init(.image(UIImage(named: "red_dot_6") ?? UIImage(), .custom(.offset(CGPoint(x: 0, y: 1)), size: .init(width: 6, height: 6))))
let tips: ASAttributedString = tipsIcon + .init(string: " 检测到您的", .font(.PFSC_R(ofSize: 13)), .foreground(UIColor(hexString: "#8993A2") ?? .gray)) + .init(string: "工作时间有重叠", .font(.PFSC_R(ofSize: 13)), .foreground(UIColor.failColor)) + .init(string: "。请确认是否正确填报,若填报无误请在此处说明工作时间重叠的原因~", .font(.PFSC_R(ofSize: 13)), .foreground(UIColor(hexString: "#8993A2") ?? .gray))
secondSection.append(.workingHoursStatement("如:工作时间灵活,可自由安排", tips, viewModel.mainModel.why_work_time_overlap))
secondSection.append(.workingHoursStatement("如:工作时间灵活,可自由安排", tips))
}
var thirdSection: [TableRow] = []
......@@ -218,8 +219,9 @@ extension YHGCIncomeRecordViewController {
})
thirdSection.append(.consentForHKTravel("赴港同意书提供", detail + actionStr, "在职公司是否可以提供赴港同意书"))
if viewModel.mainModel.has_company_consent == 1 {
let id = viewModel.mainModel.consent_work_id > 0 ? viewModel.mainModel.consent_work_id : nil
thirdSection.append(.employmentVerification(viewModel.listModel, id))
//let id = viewModel.mainModel.consent_work_id > 0 ? viewModel.mainModel.consent_work_id : nil
// thirdSection.append(.employmentVerification(viewModel.listModel, id))
thirdSection.append(.employmentVerification)
} else {
thirdSection.append(.questionSelect("人才中心是否可以提供赴港同意书"))
}
......@@ -354,7 +356,7 @@ extension YHGCIncomeRecordViewController: UITableViewDelegate, UITableViewDataSo
guard let self = self else {
return
}
let ctl = YHGCIncomeRecordWorkExperienceViewController(incomeId: 0)
let ctl = YHGCIncomeRecordWorkExperienceViewController(incomeId: 0, orderId: self.orderId)
ctl.submitSuccess = { [weak self] in
guard let self = self else {
return
......@@ -396,17 +398,30 @@ extension YHGCIncomeRecordViewController: UITableViewDelegate, UITableViewDataSo
return cell
}
case let .employmentVerification(employments, selectedId):
case .employmentVerification://(employments, selectedId):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHEmploymentVerificationAvailableCell.cellReuseIdentifier) as? YHEmploymentVerificationAvailableCell {
let employments = viewModel.listModel
let selectedId = viewModel.mainModel.consent_work_id > 0 ? viewModel.mainModel.consent_work_id : nil
let selectedEmployment = employments.first { model in
model.id == selectedId
}
cell.setupCellInfo(detail: selectedEmployment?.company_name)
return cell
}
case let .workingHoursStatement(placeholder, tips, content):
case let .workingHoursStatement(placeholder, tips):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHWorkingHoursStatementCell.cellReuseIdentifier) as? YHWorkingHoursStatementCell {
let content = viewModel.mainModel.why_work_time_overlap
cell.setupCellInfo(placeholder: placeholder, remark: content, detail: tips, isShowBottomLine: false)
cell.textDidExceedsMaxLimit = { maxCount in
YHHUD.flash(message: "不可超过\(maxCount)字")
}
cell.textViewDidChanged = { [weak self] textView in
guard let self = self else {
return
}
self.viewModel.mainModel.why_work_time_overlap = textView.text
}
return cell
}
}
......@@ -436,7 +451,7 @@ extension YHGCIncomeRecordViewController: UITableViewDelegate, UITableViewDataSo
}
let tableRow = sectionArr[indexPath.row]
if case let .incomeItem(_, _, _, incomeId, _) = tableRow {
let ctl = YHGCIncomeRecordWorkExperienceViewController(incomeId: incomeId)
let ctl = YHGCIncomeRecordWorkExperienceViewController(incomeId: incomeId, orderId: orderId)
ctl.submitSuccess = { [weak self] in
guard let self = self else {
return
......@@ -444,7 +459,10 @@ extension YHGCIncomeRecordViewController: UITableViewDelegate, UITableViewDataSo
self.requestData(isNeedLoading: true)
}
navigationController?.pushViewController(ctl, animated: true)
} else if case let .employmentVerification(employments, selectedId) = tableRow {
} else if case .employmentVerification = tableRow {
let employments = viewModel.listModel
let selectedId = viewModel.mainModel.consent_work_id > 0 ? viewModel.mainModel.consent_work_id : nil
guard employments.count > 1 else {
return
}
......@@ -454,8 +472,12 @@ extension YHGCIncomeRecordViewController: UITableViewDelegate, UITableViewDataSo
let firstIndex = employments.firstIndex { model in
model.id == selectedId
}
YHDynamicSheetPickerView.show(dataSource: companies, title: "选择可提供的在职公司", selectIndex: firstIndex ?? 0) { index in
//
YHDynamicSheetPickerView.show(dataSource: companies, title: "选择可提供的在职公司", selectIndex: firstIndex ?? 0) { [weak self] index in
guard let self = self else {
return
}
self.viewModel.mainModel.consent_work_id = employments[index].id ?? 0
self.tableView.reloadRows(at: [indexPath], with: .automatic)
}
}
}
......
//
// YHGCIncomeTypeSelectViewController.swift
// galaxy
//
// Created by alexzzw on 2024/12/26.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHGCIncomeTypeSelectViewController: YHBaseViewController {
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize: 17)
label.textColor = .mainTextColor
label.text = "选择收入类型(多选)"
return label
}()
private lazy var closeButton: UIButton = {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "work_example_close"), for: .normal)
button.addTarget(self, action: #selector(closeButtonClicked), for: .touchUpInside)
return button
}()
private lazy var topLineView: UIView = {
let view = UIView()
view.backgroundColor = UIColor(hexString: "#F0F0F0")
return view
}()
private lazy var tableView: UITableView = {
let view = UITableView(frame: .zero, style: .grouped)
view.estimatedSectionHeaderHeight = 0.01
view.estimatedSectionFooterHeight = 12
view.sectionHeaderHeight = 0.01
view.sectionFooterHeight = 12
view.backgroundColor = .white
view.contentInsetAdjustmentBehavior = .never
view.separatorStyle = .none
view.rowHeight = UITableView.automaticDimension
view.estimatedRowHeight = 52.0
view.dataSource = self
view.delegate = self
view.showsVerticalScrollIndicator = false
view.register(YHIncomeTypePopViewSelectCell.self, forCellReuseIdentifier: YHIncomeTypePopViewSelectCell.cellReuseIdentifier)
return view
}()
private lazy var sureButton: UIButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 16)
button.setTitle("确认", for: .normal)
button.setTitle("确认", for: .highlighted)
button.setTitleColor(UIColor(hex: 0xFFFFFF), for: .normal)
button.setTitleColor(UIColor(hex: 0xFFFFFF), for: .highlighted)
button.setTitleColor(UIColor(hex: 0xFFFFFF), for: .disabled)
button.addTarget(self, action: #selector(clickSureButton), for: .touchUpInside)
button.layer.cornerRadius = kCornerRadius3
button.clipsToBounds = true
button.backgroundColor = .brandMainColor
return button
}()
private lazy var bottomView: UIView = {
let view = UIView()
view.backgroundColor = .white
return view
}()
private lazy var datas: [YHGCIncomeTypeSelectModel] = {
YHGCIncomeType.allCases.map {
YHGCIncomeTypeSelectModel(type: $0, isSelected: false)
}
}()
var sureButtonEvent: (([YHGCIncomeType]) -> Void)?
private var selectedTypes: [YHGCIncomeType] = []
init(selectedTypes: [YHGCIncomeType]) {
self.selectedTypes = selectedTypes
super.init(nibName: nil, bundle: nil)
}
@MainActor required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
setupDatas()
}
@objc private func clickSureButton() {
sureButtonEvent?(selectedTypes.sorted(by: { $0.rawValue < $1.rawValue }))
dismiss(animated: true)
}
@objc private func closeButtonClicked() {
dismiss(animated: true)
}
private func setupUI() {
gk_navBarAlpha = 0
gk_navigationBar.isHidden = true
view.backgroundColor = UIColor.white
view.addSubview(infoTitleLabel)
view.addSubview(closeButton)
view.addSubview(topLineView)
view.addSubview(tableView)
view.addSubview(bottomView)
bottomView.addSubview(sureButton)
infoTitleLabel.snp.makeConstraints { make in
make.top.equalToSuperview().offset(16)
make.centerX.equalToSuperview()
}
closeButton.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-21)
make.height.width.equalTo(24)
make.centerY.equalTo(infoTitleLabel)
}
topLineView.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-21)
make.left.equalToSuperview().offset(21)
make.height.equalTo(0.5)
make.top.equalTo(infoTitleLabel.snp.bottom).offset(12)
}
bottomView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.bottom.equalTo(view.safeAreaLayoutGuide.snp.bottom)
make.height.equalTo(64)
}
sureButton.snp.makeConstraints { make in
make.left.equalToSuperview().offset(kMargin)
make.right.equalToSuperview().offset(-kMargin)
make.centerY.equalToSuperview()
make.height.equalTo(48)
}
tableView.snp.makeConstraints { make in
make.left.equalToSuperview()
make.right.equalToSuperview()
make.top.equalTo(topLineView.snp.bottom).offset(12)
make.bottom.equalTo(bottomView.snp.top)
}
tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: CGFloat.leastNonzeroMagnitude))
tableView.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: 20))
preferredContentSize = CGSize(width: KScreenWidth, height: KScreenHeight - k_Height_NavigationtBarAndStatuBar - 44)
}
private func setupDatas() {
datas.forEach { [weak self] model in
guard let self = self else {
return
}
if self.selectedTypes.contains(model.type) {
model.isSelected = true
}
}
}
}
extension YHGCIncomeTypeSelectViewController: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return datas.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
guard datas.count > section else {
return 0
}
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard datas.count > indexPath.section else {
return UITableViewCell()
}
let model = datas[indexPath.section]
if let cell = tableView.dequeueReusableCell(withIdentifier: YHIncomeTypePopViewSelectCell.cellReuseIdentifier) as? YHIncomeTypePopViewSelectCell {
cell.setupCellInfo(title: model.type.nameString(), isSelected: model.isSelected)
return cell
}
return UITableViewCell()
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return UIView()
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 0
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView()
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 12.0
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: false)
guard datas.count > indexPath.section else {
return
}
let model = datas[indexPath.section]
model.isSelected.toggle()
if model.isSelected {
if !selectedTypes.contains(model.type) {
selectedTypes.append(model.type)
}
} else {
if let index = selectedTypes.firstIndex(where: { type in
type == model.type
}) {
selectedTypes.remove(at: index)
}
}
tableView.reloadRows(at: [indexPath], with: .automatic)
}
}
//
// YHGCIncomeRecordSaveWorkModel.swift
// galaxy
//
// Created by alexzzw on 2024/12/26.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import SmartCodable
class YHGCIncomeRecordSaveWorkModel: SmartCodable {
var id: Int = 0
required init() {
}
}
//
// YHGCIncomeType.swift
// galaxy
//
// Created by alexzzw on 2024/12/26.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import Foundation
//高A使用 收入类型 1 工资薪金所得及全年一次性奖金; 2 上市公司股票期权或股权收入; 3 持股公司分红收入; 4 个体工商户/合伙企业/独资企业经营所得收入; 5 股权转让收入; 6 内地公司收入(持股50%及以上); 7 香港公司收入(持股50%及以上); 8 其他境外公司收入(持股50%及以上); 10 澳门公司收入(持股50%及以上)
enum YHGCIncomeType: Int, CaseIterable {
case salaryIncomeAndBonus = 1
case stockOrEquityIncome = 2
case dividendIncome = 3
case businessIncome = 4
case equityTransferIncome = 5
case incomeOfMainland = 6
case incomeOfHKCompanies = 7
case incomeOfOtherOverseasCompanies = 8
case incomeOfMacauCompanies = 10
func nameString() -> String {
switch self {
case .incomeOfMainland:
return "内地公司收入(持股50%及以上)"
case .incomeOfHKCompanies:
return "香港公司收入(持股50%及以上)"
case .incomeOfMacauCompanies:
return "澳门公司收入(持股50%及以上)"
case .stockOrEquityIncome:
return "上市公司股票期权或股权收入"
case .salaryIncomeAndBonus:
return "工资薪金所得及全年一次性奖金"
case .dividendIncome:
return "持股公司分红收入"
case .equityTransferIncome:
return "股权转让收入"
case .businessIncome:
return "个体工商户/合伙企业/独资企业经营所得收入"
case .incomeOfOtherOverseasCompanies:
return "其他境外公司收入(持股50%及以上)"
}
}
}
//
// YHGCIncomeTypeSelectModel.swift
// galaxy
//
// Created by alexzzw on 2024/12/26.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHGCIncomeTypeSelectModel: NSObject {
var isSelected: Bool = false
var type: YHGCIncomeType = .businessIncome
init(type: YHGCIncomeType, isSelected: Bool) {
self.type = type
self.isSelected = isSelected
}
}
......@@ -11,7 +11,8 @@ import UIKit
class YHIncomeDateTillNowCell: YHResignDocumentCell {
static let cellReuseIdentifier = "YHIncomeDateTillNowCell"
var tillNowButtonEvent: (() -> Void)?
var tillNowButtonEvent: ((Bool) -> Void)?
private var placeholder: String = ""
private lazy var dotIcon: UIImageView = {
let imageView = UIImageView(image: UIImage(named: "red_dot_6"))
......@@ -71,8 +72,9 @@ class YHIncomeDateTillNowCell: YHResignDocumentCell {
fatalError("init(coder:) has not been implemented")
}
func setupCellInfo(title: String, detail: String?, placeholder: String = "请选择", showBottomLine: Bool = true, tillNow: Bool, needShowFailButton: Bool) {
func setupCellInfo(title: String, detail: String?, placeholder: String = "请选择", showBottomLine: Bool = true, needShowFailButton: Bool) {
infoTitleLabel.text = title
self.placeholder = placeholder
updateContentState(detail: detail, placeholder: placeholder)
bottomLineView.isHidden = !showBottomLine
infoFailLabel.text = placeholder
......@@ -82,7 +84,10 @@ class YHIncomeDateTillNowCell: YHResignDocumentCell {
extension YHIncomeDateTillNowCell {
@objc private func tillNowButtonClicked() {
tillNowButtonEvent?()
tillNowButton.isSelected.toggle()
tillNowButtonEvent?(tillNowButton.isSelected)
let detail: String? = tillNowButton.isSelected ? "至今" : nil
updateContentState(detail: detail, placeholder: self.placeholder)
}
private func updateFailLabel(_ needShowFailButton: Bool) {
......@@ -121,10 +126,57 @@ extension YHIncomeDateTillNowCell {
infoDetailLabel.font = .PFSC_M(ofSize: 14)
infoDetailLabel.textColor = UIColor.mainTextColor
infoDetailLabel.text = detail
if detail == "至今" {
tillNowButton.isSelected = true
infoDetailLabel.isHidden = true
tillNowButton.snp.remakeConstraints { make in
make.centerY.equalTo(infoTitleLabel)
make.left.equalToSuperview().offset(147)
make.width.equalTo(50)
make.height.equalTo(30)
}
infoDetailLabel.snp.remakeConstraints { make in
make.top.equalToSuperview().offset(16)
make.bottom.equalToSuperview().offset(-16)
make.left.equalToSuperview().offset(147)
}
} else {
infoDetailLabel.isHidden = false
tillNowButton.isSelected = false
tillNowButton.snp.remakeConstraints { make in
make.centerY.equalTo(infoTitleLabel)
make.right.equalToSuperview().offset(-18)
make.width.equalTo(50)
make.height.equalTo(30)
}
infoDetailLabel.snp.remakeConstraints { make in
make.top.equalToSuperview().offset(16)
make.bottom.equalToSuperview().offset(-16)
make.left.equalToSuperview().offset(147)
make.right.lessThanOrEqualTo(tillNowButton.snp.left).offset(-18)
}
}
} else {
infoDetailLabel.isHidden = false
tillNowButton.isSelected = false
infoDetailLabel.text = placeholder
infoDetailLabel.font = .PFSC_R(ofSize: 14)
infoDetailLabel.textColor = UIColor(hexString: "#B9C1CC")
tillNowButton.snp.remakeConstraints { make in
make.centerY.equalTo(infoTitleLabel)
make.right.equalToSuperview().offset(-18)
make.width.equalTo(50)
make.height.equalTo(30)
}
infoDetailLabel.snp.remakeConstraints { make in
make.top.equalToSuperview().offset(16)
make.bottom.equalToSuperview().offset(-16)
make.left.equalToSuperview().offset(147)
make.right.lessThanOrEqualTo(tillNowButton.snp.left).offset(-18)
}
}
}
......
......@@ -96,28 +96,4 @@ class YHGCIncomeRecordViewModel: YHBaseViewModel {
callBackBlock(false, err)
}
}
// 创建新的是否可用
// func requestCreateNewWork(_ orderId: Int, callBackBlock: @escaping (_ success: Int, _ error: YHErrorModel?) -> Void) {
// let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.createNewWork
// let params: [String: Any] = ["order_id": orderId]
//
// _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, _ in
// // 1. json字符串 转 对象
// guard let self = self else { return }
// if json.code == 200 {
// guard let dic = json.data?.peel as? [String: Any], let result = YHWorkExperienceDetailModel.deserialize(from: dic) else {
// callBackBlock(0, nil)
// return
// }
// self.workId = result.work_id
// callBackBlock(result.work_id, nil)
// } else {
// let error: YHErrorModel = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg)
// callBackBlock(0, error)
// }
// } failBlock: { err in
// callBackBlock(0, err)
// }
// }
}
......@@ -10,12 +10,13 @@ import UIKit
class YHGCIncomeRecordWorkExperienceViewModel: YHBaseViewModel {
var position: YHGCWorkExperienceModel = YHGCWorkExperienceModel()
var saveWorkModel: YHGCIncomeRecordSaveWorkModel = YHGCIncomeRecordSaveWorkModel()
override init() {
super.init()
}
func requestWorkPositionDetail(_ workId: Int, _ orderID: Int, callBackBlock: @escaping (_ success: Bool?, _ error: YHErrorModel?) -> Void) {
func requestWorkPositionDetail(_ workId: Int, _ orderID: Int, callBackBlock: @escaping (_ success: Bool, _ error: YHErrorModel?) -> Void) {
let param: [String: Any] = ["id": workId, "order_id": orderID]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.gcworkDetail
_ = YHNetRequest.getRequest(url: strUrl, params: param) { [weak self] json, _ in
......@@ -37,10 +38,9 @@ class YHGCIncomeRecordWorkExperienceViewModel: YHBaseViewModel {
}
}
func saveWorkPosition(callBackBlock: @escaping (_ success: Bool?, _ error: YHErrorModel?) -> Void) {
func saveWorkPosition(callBackBlock: @escaping (_ success: Bool, _ error: YHErrorModel?) -> Void) {
let address = ["area": position.location.area,
"country": position.location.country,
"details": position.location.details,
"foreign": position.location.foreign] as [String: Any]
let params: [String: Any] = ["id": position.id,
"order_id": position.order_id,
......@@ -51,15 +51,22 @@ class YHGCIncomeRecordWorkExperienceViewModel: YHBaseViewModel {
"has_work_certificate": position.has_work_certificate,
"company_type": position.company_type,
"company_type_other": position.company_type_other,
"location": address]
"location_aboard": position.location_aboard,
"location": address,
"type_of_income": position.type_of_income,
"income": position.income,
"turnover": position.turnover,
"verify": 1]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.gcWorkSave
_ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, _ in
guard let self = self else { return }
if json.code == 200 {
guard let dic = json.data?.peel as? [String: Any], let result = YHWorkExperiencePositionModel.deserialize(from: dic) else {
guard let dic = json.data?.peel as? [String: Any], let result = YHGCIncomeRecordSaveWorkModel.deserialize(from: dic) else {
callBackBlock(false, nil)
return
}
self.saveWorkModel = result
self.position.id = result.id
callBackBlock(true, nil)
} else {
let error: YHErrorModel = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg)
......
......@@ -26,7 +26,7 @@ class YHGCWorkExperienceModel: SmartCodable {
var turnover: String = ""
/// 高A使用 收入类型 1 工资薪金所得及全年一次性奖金; 2 上市公司股票期权或股权收入; 3 持股公司分红收入; 4 个体工商户/合伙企业/独资企业经营所得收入; 5
/// 股权转让收入; 6 内地公司收入(持股50%及以上); 7 香港公司收入(持股50%及以上); 8 其他境外公司收入(持股50%及以上); 10 澳门公司收入(持股50%及以上)
var typeOfIncome: [Int] = []
var type_of_income: [Int] = []
/// 高A使用 收入金额
var income: String = ""
......
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