Commit 36e7b262 authored by Alex朱枝文's avatar Alex朱枝文

收入记录部分接口调试

parent 82893b8d
...@@ -40,6 +40,8 @@ ...@@ -40,6 +40,8 @@
04307B902D1AB66100ED8E8D /* YHGCPreviewMainApplicantInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B862D1AB66100ED8E8D /* YHGCPreviewMainApplicantInfoViewController.swift */; }; 04307B902D1AB66100ED8E8D /* YHGCPreviewMainApplicantInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B862D1AB66100ED8E8D /* YHGCPreviewMainApplicantInfoViewController.swift */; };
04307B912D1AB66100ED8E8D /* YHGCPreviewIncomeRecordViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B852D1AB66100ED8E8D /* YHGCPreviewIncomeRecordViewController.swift */; }; 04307B912D1AB66100ED8E8D /* YHGCPreviewIncomeRecordViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B852D1AB66100ED8E8D /* YHGCPreviewIncomeRecordViewController.swift */; };
04307B932D1AB66100ED8E8D /* YHGCPreviewWorkExpViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B892D1AB66100ED8E8D /* YHGCPreviewWorkExpViewController.swift */; }; 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 */; };
045C0F7F2D12CA5F00BD2DC0 /* submit_page_scroll.gif in Resources */ = {isa = PBXBuildFile; fileRef = 045C0F4F2D12CA5E00BD2DC0 /* submit_page_scroll.gif */; }; 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 */; }; 045C0F802D12CA5F00BD2DC0 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 045C0F762D12CA5E00BD2DC0 /* Localizable.xcstrings */; };
045C0F812D12CA5F00BD2DC0 /* img_0.png in Resources */ = {isa = PBXBuildFile; fileRef = 045C0F5E2D12CA5E00BD2DC0 /* img_0.png */; }; 045C0F812D12CA5F00BD2DC0 /* img_0.png in Resources */ = {isa = PBXBuildFile; fileRef = 045C0F5E2D12CA5E00BD2DC0 /* img_0.png */; };
...@@ -1232,6 +1234,8 @@ ...@@ -1232,6 +1234,8 @@
04307B862D1AB66100ED8E8D /* YHGCPreviewMainApplicantInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCPreviewMainApplicantInfoViewController.swift; sourceTree = "<group>"; }; 04307B862D1AB66100ED8E8D /* YHGCPreviewMainApplicantInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCPreviewMainApplicantInfoViewController.swift; sourceTree = "<group>"; };
04307B882D1AB66100ED8E8D /* YHGCPreviewOtherInformationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCPreviewOtherInformationViewController.swift; sourceTree = "<group>"; }; 04307B882D1AB66100ED8E8D /* YHGCPreviewOtherInformationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCPreviewOtherInformationViewController.swift; sourceTree = "<group>"; };
04307B892D1AB66100ED8E8D /* YHGCPreviewWorkExpViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCPreviewWorkExpViewController.swift; sourceTree = "<group>"; }; 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>"; };
045C09A12D12C2A800BD2DC0 /* YHGCMineSchemeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCMineSchemeViewController.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>"; }; 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>"; }; 045C0A152D12CA5E00BD2DC0 /* YHBaseViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBaseViewModel.swift; sourceTree = "<group>"; };
...@@ -2571,6 +2575,15 @@ ...@@ -2571,6 +2575,15 @@
path = C; path = C;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
04307B942D1BAE8800ED8E8D /* VM */ = {
isa = PBXGroup;
children = (
04307B952D1BAFD400ED8E8D /* YHGCIncomeRecordViewModel.swift */,
04307B972D1BB1AD00ED8E8D /* YHGCIncomeRecordWorkExperienceViewModel.swift */,
);
path = VM;
sourceTree = "<group>";
};
045C0A182D12CA5E00BD2DC0 /* C */ = { 045C0A182D12CA5E00BD2DC0 /* C */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -6090,6 +6103,7 @@ ...@@ -6090,6 +6103,7 @@
047A968E2D16AA410033BB4E /* IncomeRecord(收入记录) */ = { 047A968E2D16AA410033BB4E /* IncomeRecord(收入记录) */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
04307B942D1BAE8800ED8E8D /* VM */,
047A96942D1900D00033BB4E /* V */, 047A96942D1900D00033BB4E /* V */,
047A968D2D16AA410033BB4E /* C */, 047A968D2D16AA410033BB4E /* C */,
); );
...@@ -6755,6 +6769,7 @@ ...@@ -6755,6 +6769,7 @@
045C0FDE2D12CA5F00BD2DC0 /* YHMainInformationModel.swift in Sources */, 045C0FDE2D12CA5F00BD2DC0 /* YHMainInformationModel.swift in Sources */,
045C0FDF2D12CA5F00BD2DC0 /* YHCertificateFilterButton.swift in Sources */, 045C0FDF2D12CA5F00BD2DC0 /* YHCertificateFilterButton.swift in Sources */,
045C0FE02D12CA5F00BD2DC0 /* YHVODPlayerViewController.swift in Sources */, 045C0FE02D12CA5F00BD2DC0 /* YHVODPlayerViewController.swift in Sources */,
04307B962D1BAFD400ED8E8D /* YHGCIncomeRecordViewModel.swift in Sources */,
045C0FE12D12CA5F00BD2DC0 /* YHFormItemOnlyDoubleChoiceCell.swift in Sources */, 045C0FE12D12CA5F00BD2DC0 /* YHFormItemOnlyDoubleChoiceCell.swift in Sources */,
045C0FE22D12CA5F00BD2DC0 /* YHEditInterestViewController.swift in Sources */, 045C0FE22D12CA5F00BD2DC0 /* YHEditInterestViewController.swift in Sources */,
045C0FE32D12CA5F00BD2DC0 /* YHResignConfirmInfoListViewController.swift in Sources */, 045C0FE32D12CA5F00BD2DC0 /* YHResignConfirmInfoListViewController.swift in Sources */,
...@@ -6765,6 +6780,7 @@ ...@@ -6765,6 +6780,7 @@
045C0FE82D12CA5F00BD2DC0 /* YHActivityApplyInfoItemView.swift in Sources */, 045C0FE82D12CA5F00BD2DC0 /* YHActivityApplyInfoItemView.swift in Sources */,
045C0FE92D12CA5F00BD2DC0 /* YHVisaRenewalItemDetailType.swift in Sources */, 045C0FE92D12CA5F00BD2DC0 /* YHVisaRenewalItemDetailType.swift in Sources */,
045C0FEA2D12CA5F00BD2DC0 /* YHPrivacyAlertView.swift in Sources */, 045C0FEA2D12CA5F00BD2DC0 /* YHPrivacyAlertView.swift in Sources */,
04307B982D1BB1AD00ED8E8D /* YHGCIncomeRecordWorkExperienceViewModel.swift in Sources */,
045C0FEB2D12CA5F00BD2DC0 /* YHAIListModel.swift in Sources */, 045C0FEB2D12CA5F00BD2DC0 /* YHAIListModel.swift in Sources */,
045C0FEC2D12CA5F00BD2DC0 /* YHPreviewInfoHeaderCell.swift in Sources */, 045C0FEC2D12CA5F00BD2DC0 /* YHPreviewInfoHeaderCell.swift in Sources */,
045C0FED2D12CA5F00BD2DC0 /* YHMainApplicantInformationViewController.swift in Sources */, 045C0FED2D12CA5F00BD2DC0 /* YHMainApplicantInformationViewController.swift in Sources */,
......
...@@ -23,6 +23,8 @@ class YHConfigModel : SmartCodable { ...@@ -23,6 +23,8 @@ class YHConfigModel : SmartCodable {
var is_integral_open : Bool = false //条件控制哈 PingGuoShenHe true - 展示 false - hidden var is_integral_open : Bool = false //条件控制哈 PingGuoShenHe true - 展示 false - hidden
// var is_recharge_order_open : Bool = false //双十一banner开关 //`is_recharge_order_open` int NOT NULL DEFAULT '0' COMMENT '1 开启 0关闭', // var is_recharge_order_open : Bool = false //双十一banner开关 //`is_recharge_order_open` int NOT NULL DEFAULT '0' COMMENT '1 开启 0关闭',
// 人民币-港币的汇率
var rate: String = ""
required init() { required init() {
} }
......
...@@ -42,6 +42,8 @@ class YHIncomeRecordItemCell: YHResignDocumentCell { ...@@ -42,6 +42,8 @@ class YHIncomeRecordItemCell: YHResignDocumentCell {
private lazy var deleteButton: UIButton = { private lazy var deleteButton: UIButton = {
let button = UIButton(type: .custom) let button = UIButton(type: .custom)
button.setTitle("删除", for: .normal) button.setTitle("删除", for: .normal)
button.setTitleColor(UIColor.failColor, for: .normal)
button.titleLabel?.font = .PFSC_R(ofSize: 14)
button.addTarget(self, action: #selector(deleteButtonDidClick(_:)), for: .touchUpInside) button.addTarget(self, action: #selector(deleteButtonDidClick(_:)), for: .touchUpInside)
return button return button
}() }()
...@@ -68,25 +70,11 @@ class YHIncomeRecordItemCell: YHResignDocumentCell { ...@@ -68,25 +70,11 @@ class YHIncomeRecordItemCell: YHResignDocumentCell {
if isEditing { if isEditing {
rightLabel.isHidden = true rightLabel.isHidden = true
rightArrowIcon.isHidden = true rightArrowIcon.isHidden = true
deleteButton.isHidden = true deleteButton.isHidden = false
bottomLineView.snp.remakeConstraints { make in
make.bottom.equalToSuperview()
make.left.equalToSuperview().offset(18)
make.right.equalToSuperview().offset(-18)
make.height.equalTo(0.5)
make.top.equalTo(infoDetailLabel.snp.bottom).offset(16)
}
} else { } else {
rightLabel.isHidden = false rightLabel.isHidden = false
rightArrowIcon.isHidden = false rightArrowIcon.isHidden = false
deleteButton.isHidden = true deleteButton.isHidden = true
bottomLineView.snp.remakeConstraints { make in
make.bottom.equalToSuperview()
make.left.equalToSuperview().offset(18)
make.right.equalToSuperview().offset(-18)
make.height.equalTo(0.5)
make.top.equalTo(infoDetailLabel.snp.bottom).offset(16)
}
} }
bottomLineView.isHidden = !showBottomLine bottomLineView.isHidden = !showBottomLine
......
...@@ -24,13 +24,16 @@ class YHIncomeRecordSummaryCell: YHResignDocumentCell { ...@@ -24,13 +24,16 @@ class YHIncomeRecordSummaryCell: YHResignDocumentCell {
let label = UILabel() let label = UILabel()
label.font = .PFSC_R(ofSize: 12) label.font = .PFSC_R(ofSize: 12)
label.textColor = UIColor(hexString: "#8993A2") label.textColor = UIColor(hexString: "#8993A2")
label.text = "(仅申报近12个月应纳税收入总额))" label.text = "(仅申报近12个月应纳税收入总额)"
return label return label
}() }()
private lazy var rightButton: UIButton = { private lazy var rightButton: UIButton = {
let button = UIButton(type: .custom) let button = UIButton(type: .custom)
button.setImage(UIImage(named: "work_more"), for: .normal) button.setTitle("编辑", for: .normal)
button.setTitle("取消编辑", for: .selected)
button.setTitleColor(.brandMainColor, for: .normal)
button.titleLabel?.font = .PFSC_R(ofSize: 14)
button.addTarget(self, action: #selector(rightButtonDidClick(_:)), for: .touchUpInside) button.addTarget(self, action: #selector(rightButtonDidClick(_:)), for: .touchUpInside)
return button return button
}() }()
...@@ -64,14 +67,20 @@ extension YHIncomeRecordSummaryCell { ...@@ -64,14 +67,20 @@ extension YHIncomeRecordSummaryCell {
} }
private func updateRightButtonState(_ isEditing: Bool) { private func updateRightButtonState(_ isEditing: Bool) {
rightButton.isSelected = isEditing
if isEditing { if isEditing {
rightButton.setImage(nil, for: .normal) rightButton.snp.remakeConstraints { make in
rightButton.setTitle("取消操作", for: .normal) make.right.equalToSuperview().offset(-18)
rightButton.setTitleColor(.brandMainColor, for: .normal) make.top.equalToSuperview().offset(16)
rightButton.titleLabel?.font = .PFSC_R(ofSize: 14) make.width.equalTo(56)
make.height.equalTo(24)
}
} else { } else {
rightButton.setImage(UIImage(named: "work_more"), for: .normal) rightButton.snp.remakeConstraints { make in
rightButton.setTitle(nil, for: .normal) make.right.equalToSuperview().offset(-18)
make.top.equalToSuperview().offset(16)
make.width.height.equalTo(28)
}
} }
} }
......
...@@ -56,8 +56,10 @@ class YHTotalIncomeCell: YHResignDocumentCell { ...@@ -56,8 +56,10 @@ class YHTotalIncomeCell: YHResignDocumentCell {
fatalError("init(coder:) has not been implemented") fatalError("init(coder:) has not been implemented")
} }
func setupCellInfo(detail: ASAttributedString) { func setupCellInfo(detail: ASAttributedString, cellType: YHResignRoundCellType = .bottom, showTopLine: Bool = true) {
infoDetailLabel.attributed.text = detail infoDetailLabel.attributed.text = detail
updateCellCorner(cellType)
topLineView.isHidden = !showTopLine
} }
} }
......
...@@ -11,7 +11,7 @@ import UIKit ...@@ -11,7 +11,7 @@ import UIKit
class YHWorkingHoursStatementCell: YHResignDocumentCell { class YHWorkingHoursStatementCell: YHResignDocumentCell {
static let cellReuseIdentifier = "YHWorkingHoursStatementCell" static let cellReuseIdentifier = "YHWorkingHoursStatementCell"
private let maxCount = 200 private let maxCount = 1000
var textViewDidChanged: ((UITextView) -> Void)? var textViewDidChanged: ((UITextView) -> Void)?
var textDidExceedsMaxLimit: ((Int) -> Void)? var textDidExceedsMaxLimit: ((Int) -> Void)?
...@@ -77,6 +77,7 @@ class YHWorkingHoursStatementCell: YHResignDocumentCell { ...@@ -77,6 +77,7 @@ class YHWorkingHoursStatementCell: YHResignDocumentCell {
func setupCellInfo(placeholder: String, remark: String?, detail: ASAttributedString, isShowBottomLine: Bool) { func setupCellInfo(placeholder: String, remark: String?, detail: ASAttributedString, isShowBottomLine: Bool) {
editTipsLabel.text = placeholder editTipsLabel.text = placeholder
editTipsLabel.isHidden = remark?.isEmpty == false
remarkTextView.text = remark remarkTextView.text = remark
infoDetailLabel.attributed.text = detail infoDetailLabel.attributed.text = detail
bottomLineView.isHidden = !isShowBottomLine bottomLineView.isHidden = !isShowBottomLine
...@@ -85,7 +86,7 @@ class YHWorkingHoursStatementCell: YHResignDocumentCell { ...@@ -85,7 +86,7 @@ class YHWorkingHoursStatementCell: YHResignDocumentCell {
extension YHWorkingHoursStatementCell { extension YHWorkingHoursStatementCell {
private func setupUI() { private func setupUI() {
updateCellCorner(.bottom) updateCellCorner(.single)
subContainerView.addSubview(infoDetailLabel) subContainerView.addSubview(infoDetailLabel)
subContainerView.addSubview(remarkTextViewContainer) subContainerView.addSubview(remarkTextViewContainer)
subContainerView.addSubview(bottomLineView) subContainerView.addSubview(bottomLineView)
......
...@@ -235,7 +235,7 @@ extension YHGCIncomeRecordWorkExperienceViewController { ...@@ -235,7 +235,7 @@ extension YHGCIncomeRecordWorkExperienceViewController {
firstSection.append(.inputMoney("收入金额", "约\(hkdFmt.string(from: NSNumber(value: companyModel.income_money / rate)) ?? "0")港币", rmbFmt.string(from: NSNumber(value: companyModel.income_money)) ?? "0", false, true, true)) firstSection.append(.inputMoney("收入金额", "约\(hkdFmt.string(from: NSNumber(value: companyModel.income_money / rate)) ?? "0")港币", rmbFmt.string(from: NSNumber(value: companyModel.income_money)) ?? "0", false, true, true))
firstSection.append(.inputRemark("注:按1港币≈\(rate)人民币计算,实际金额按递交时入境处给出的汇率为准")) firstSection.append(.inputRemark("注:按1港币≈\(rate)人民币计算,实际金额按递交时入境处给出的汇率为准"))
let secondSection: [TableRow] = [.header("企业信息"), .infoSelect("派国家/地区", nil, "请选择"), .infoSelect("派薪城市", nil, "请选择"), .infoEdit("职位", nil, "请输入"), .infoSelect("入职年月", nil, "请选择"), .infoTillNowSelect("离职年月", nil, "请选择", true), .infoCheckbox("是否可以提供工作证明"), .infoSelect("职业界别", nil, "请选择"), .infoEdit("具体职业界别", nil, "请输入")] let secondSection: [TableRow] = [.header("企业信息"), .infoSelect("派国家/地区", nil, "请选择"), .infoSelect("派薪城市", nil, "请选择"), .infoEdit("职位", nil, "请输入"), .infoSelect("入职年月", nil, "请选择"), .infoTillNowSelect("离职年月", nil, "请选择", true), .infoCheckbox("是否可以提供工作证明"), .infoSelect("职业界别", nil, "请选择"), .infoEdit("具体职业界别", nil, "请输入")]
let tips: ASAttributedString = .init(string: "备注:为了进一步确认您的具体信息,如有相关", .font(.PFSC_R(ofSize: 13)), .foreground(UIColor(hexString: "#8993A2") ?? .gray)) + .init(string: "工作/收入证明文件", .font(.PFSC_R(ofSize: 13)), .foreground(UIColor.brandMainColor)) + .init(string: ",请优先在列表上传。", .font(.PFSC_R(ofSize: 13)), .foreground(UIColor(hexString: "#8993A2") ?? .gray)) let tips: ASAttributedString = .init(string: "备注:为了进一步确认您的具体信息,如有相关", .font(.PFSC_R(ofSize: 13)), .foreground(UIColor(hexString: "#8993A2") ?? .gray)) + .init(string: "工作/收入证明文件", .font(.PFSC_R(ofSize: 13)), .foreground(UIColor.brandMainColor)) + .init(string: ",请优先在列表上传。", .font(.PFSC_R(ofSize: 13)), .foreground(UIColor(hexString: "#8993A2") ?? .gray))
let thirdSection: [TableRow] = [.header("工作证件(选填)"), .incomeTips(tips), .uploadWorkId("上传工作证件", "去上传")] let thirdSection: [TableRow] = [.header("工作证件(选填)"), .incomeTips(tips), .uploadWorkId("上传工作证件", "去上传")]
...@@ -541,6 +541,36 @@ extension YHGCIncomeRecordWorkExperienceViewController: UITableViewDelegate, UIT ...@@ -541,6 +541,36 @@ extension YHGCIncomeRecordWorkExperienceViewController: UITableViewDelegate, UIT
// //
} }
navigationController?.pushViewController(vc) navigationController?.pushViewController(vc)
} else if case let .infoSelect(title, _, _) = tableRow {
if title == "派薪国家/地区" {
let vc = YHSelectCountryViewController()
vc.backLocationStringController = { (country) in
//self.dataSource?.message = country
//
}
navigationController?.pushViewController(vc)
} else if title == "入职年月" {
let title = "选择入职年月"
let lastIsTaday = true
YHDatePickView.show(type: .yyyymm, title: title, lastIsTaday: lastIsTaday, currentDay: "") { date in
//
}
} else if title == "职业界别" {
YHOtherPickerView.show(type: .position, selectTitle: "") {[weak self] data in
guard let self = self else { return }
// data.title
//
}
}
} else if case let .infoTillNowSelect(title, _, _, _) = tableRow {
if title == "离职年月" {
let title = "选择离职年月"
let lastIsTaday = true
YHDatePickView.show(type: .yyyymm, title: title, lastIsTaday: lastIsTaday, currentDay: "") { date in
//
}
}
} }
} }
} }
......
//
// YHGCIncomeRecordViewModel.swift
// galaxy
//
// Created by alexzzw on 2024/12/25.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHGCIncomeRecordViewModel: YHBaseViewModel {
// MARK: - 表单状态
enum FormState {
case viewing
case editing
}
var mainModel: YHGCWorkModel = YHGCWorkModel()
var listModel: [YHWorkItemListModel] = []
var workId: Int = 0
private(set) var formState: FormState = .viewing
// 切换编辑状态
func toggleEditingState() {
switch formState {
case .viewing:
formState = .editing
case .editing:
formState = .viewing
}
}
override init() {
super.init()
}
func requestWorkList(_ orderId: Int, callBackBlock: @escaping (_ success: YHGCWorkModel?, _ error: YHErrorModel?) -> Void) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.gclist
let params: [String: Any] = ["order_id": orderId]
_ = YHNetRequest.getRequest(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 = YHGCWorkModel.deserialize(from: dic) else {
callBackBlock(nil, nil)
return
}
self.mainModel = result
self.listModel = result.list ?? []
callBackBlock(self.mainModel, nil)
} else {
let error: YHErrorModel = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg)
callBackBlock(nil, error)
}
} failBlock: { err in
callBackBlock(nil, err)
}
}
func requestDeleteWorkExperience(_ id: Int, _ orderId: Int, callBackBlock: @escaping (_ success: Bool, _ error: YHErrorModel?) -> Void) {
let params: [String: Any] = ["id": id, "order_id": orderId]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.del
_ = YHNetRequest.postRequest(url: strUrl, params: params) { json, _ in
// 1. json字符串 转 对象
if json.code == 200 {
callBackBlock(true, nil)
} else {
let error: YHErrorModel = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error)
}
} failBlock: { err in
callBackBlock(false, err)
}
}
func requestWorkTimeRemarkWorkExperience(_ orderId: Int, _ isSubmit: Bool = true, callBackBlock: @escaping (_ success: Bool, _ error: YHErrorModel?) -> Void) {
let params: [String: Any] = ["order_id": orderId,
"has_company_consent": mainModel.has_company_consent,
"consent_work_id": mainModel.consent_work_id,
"has_center_consent": mainModel.has_center_consent,
"why_work_time_overlap": mainModel.why_work_time_overlap,
"has_work_experience": mainModel.has_work_experience,
"is_submit": isSubmit]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.saveAll
_ = YHNetRequest.postRequest(url: strUrl, params: params) { json, _ in
// 1. json字符串 转 对象
if json.code == 200 {
callBackBlock(true, nil)
} else {
let error: YHErrorModel = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error)
}
} failBlock: { err in
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)
// }
// }
}
//
// YHGCIncomeRecordWorkExperienceViewModel.swift
// galaxy
//
// Created by alexzzw on 2024/12/25.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHGCIncomeRecordWorkExperienceViewModel: YHBaseViewModel {
var position: YHGCWorkExperienceModel = YHGCWorkExperienceModel()
override init() {
super.init()
}
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
// 1. json字符串 转 对象
guard let self = self else { return }
if json.code == 200 {
guard let dic = json.data?.peel as? [String: Any], let result = YHGCWorkExperienceModel.deserialize(from: dic) else {
callBackBlock(false, nil)
return
}
self.position = result
callBackBlock(true, nil)
} else {
let error: YHErrorModel = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error)
}
} failBlock: { err in
callBackBlock(false, err)
}
}
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,
"company_name": position.company_name,
"entry_time": position.entry_time,
"departure_time": position.departure_time,
"position": position.position,
"has_work_certificate": position.has_work_certificate,
"company_type": position.company_type,
"company_type_other": position.company_type_other,
"location": address]
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 {
callBackBlock(false, nil)
return
}
callBackBlock(true, nil)
} else {
let error: YHErrorModel = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error)
}
} failBlock: { err in
callBackBlock(false, err)
}
}
}
...@@ -21,6 +21,190 @@ class YHGCWorkExperienceModel: SmartCodable { ...@@ -21,6 +21,190 @@ class YHGCWorkExperienceModel: SmartCodable {
var company_type: String = "" var company_type: String = ""
var company_type_other: String = "" var company_type_other: String = ""
var location: YHAddress = YHAddress() var location: YHAddress = YHAddress()
/// 公司近一年的营业额 对于高A,仅当收入类型包含 6/7/8/10 时,该字段才有效
var turnover: String = ""
/// 高A使用 收入类型 1 工资薪金所得及全年一次性奖金; 2 上市公司股票期权或股权收入; 3 持股公司分红收入; 4 个体工商户/合伙企业/独资企业经营所得收入; 5
/// 股权转让收入; 6 内地公司收入(持股50%及以上); 7 香港公司收入(持股50%及以上); 8 其他境外公司收入(持股50%及以上); 10 澳门公司收入(持股50%及以上)
var typeOfIncome: [Int] = []
/// 高A使用 收入金额
var income: String = ""
required init() { required init() {
} }
} }
/*
/// 工作经历-详情-具体数据
// MARK: - InfoflowWorkDetailData
struct InfoflowWorkDetailData {
/// 行政架构级别
var administrativeLevel: Int?
/// 公司业务性质/范畴/所属行业
var businessNature: String?
/// 工作经验备注
var businessRemark: String?
/// 用人单位介绍
var companyIntroduce: String?
/// 高管在企业管理人数规模
var companyManageTotal: String?
/// 企业人数规模
var companyMemberTotal: String?
/// 公司名称
var companyName: String?
/// 高才使用 职业界别
var companyType: String?
/// 高才使用 其他职业界别
var companyTypeOther: String?
/// 用人单位官网
var companyWebsite: String?
/// 创建来源(rpc.rpc_app.id)
var createFromAppid: Int?
/// 创建时间
var createdAt: String?
/// 用户中心对应模块的id
var customerCenterid: Int?
/// 删除时间
var deletedAt: String?
/// 离职时间
var departureTime: String?
/// 职责性质
var duty: String?
/// 入职时间
var entryTime: String?
/// 高管证明文件
var executivesCertificate: String?
/// 简历/工作总结附件
var file: [InfoflowWorkDetaiFile]?
/// 高才使用 是否能提供工作证明 0 未知 1 是 2 否
var hasWorkCertificate: Int?
/// 工作亮点
var highlights: String?
/// 工作经历id 只在返回工作经历详情时才必需,保存工作经历时非必需
var id: Int?
/// 高A使用 收入金额
var income: String?
/// 雇主所属机构性质
var industry: String?
/// 国际工作经验0没有1有
var internationalWorkExperience: Int?
/// 是否高管? 1是 2否
var isExecutives: Int?
/// 是否名企 0.否 1.是
var isFamousEnterprise: Int?
/// 是否项目详细介绍
var isProjectIntroduction: Int?
/// 是否展示 1是0否 保存工作经历时非必需,不传则默认1
var isShow: Int?
/// 是否合成 1合成 2不合成
var isSynthetic: Int?
var location: InfoflowWorkDetaiLocation?
/// 工作地点 0-国内 1-国外 2-未知
var locationAboard: Int?
/// 是否重要项目负责人 0-未知;1-是;2-否
var masterOfImportantProject: Int?
/// 是否符合清单 1-是;0-否
var matchListing: Int?
/// 是否不需要上传简历/工作总结附件
var notNeedUploadFile: Int?
/// 老CRM的order_child表id
var oldid: Int?
/// 操作人英文
var operatorEnglishName: String?
/// 操作人ID
var operatorid: Int?
/// 操作人中文
var operatorName: String?
/// 订单id
var orderid: Int?
/// 职位
var position: String?
/// 职位水平(1.高级经理人2.中级经理人3.初级经理人4.专业人士5.半专业人士6.其他)
var professionalLevel: Int?
/// 职业水平其他
var professionalOther: String?
/// 工作经历项目
var projects: [InfoflowWorkDetaiProject]?
/// 备注
var remark: String?
/// 工作信息填写进度:0:基本信息 1:工作职责 2:工作亮点 3:简历/总结
var step: Int?
/// 高管任职结束时间
var topManagerEndAt: String?
/// 高管任职开始时间
var topManagerStartAt: String?
/// 公司近一年的营业额 对于高A,仅当收入类型包含 6/7/8/10 时,该字段才有效
var turnover: String?
/// 高A使用 收入类型 1 工资薪金所得及全年一次性奖金; 2 上市公司股票期权或股权收入; 3 持股公司分红收入; 4 个体工商户/合伙企业/独资企业经营所得收入; 5
/// 股权转让收入; 6 内地公司收入(持股50%及以上); 7 香港公司收入(持股50%及以上); 8 其他境外公司收入(持股50%及以上); 10 澳门公司收入(持股50%及以上)
var typeOfIncome: [Int]?
/// 更新来源(rpc.rpc_app.id)
var updateFromAppid: Int?
/// 更新时间
var updatedAt: String?
/// 是否校验数据准确性 0-不检验;1-校验 (只在保存工作经历时才必需,返回工作经历详情数据时非必需)
var verify: Int?
/// 工作职责
var wduty: String?
/// 工作证明文件
var workCertificate: String?
}
/// 工作经历-详情-简历/工作总结附件
// MARK: - InfoflowWorkDetaiFile
struct InfoflowWorkDetaiFile {
/// 文件名
var fileName: String?
/// 文件地址
var fileUrl: String?
/// 上传时间
var uploadedAt: String?
}
/// 工作经历-详情-位置信息
// MARK: - InfoflowWorkDetaiLocation
struct InfoflowWorkDetaiLocation {
/// 省市
var area: [String]?
/// 国家
var country: String?
/// 详细
var details: String?
/// 国外具体地址
var foreign: String?
}
/// 工作经历-详情-项目信息
// MARK: - InfoflowWorkDetaiProject
struct InfoflowWorkDetaiProject {
/// 来源
var createFromAppid: Int?
/// 创建时间
var createdAt: String?
/// 用户中心对应模块的id
var customerCenterid: Int?
/// 删除时间
var deletedAt: String?
/// 项目ID
var id: Int?
/// 订单id
var orderid: Int?
/// 工作项目结束时间
var projectEndTime: String?
/// 工作项目亮点
var projectHighlights: String?
/// 项目名称
var projectName: String?
/// 工作项目开始时间
var projectStartTime: String?
/// 更新来源
var updateFromAppid: Int?
/// 更新时间
var updatedAt: String?
/// 工作经验ID
var workid: Int?
}
*/
...@@ -11,6 +11,7 @@ import SmartCodable ...@@ -11,6 +11,7 @@ import SmartCodable
class YHGCWorkModel: SmartCodable { class YHGCWorkModel: SmartCodable {
var count: Int? var count: Int?
// 高才使用 是否有工作时间重叠期 0-否 1-是
var has_work_time_overlap: Int = 0 var has_work_time_overlap: Int = 0
var has_work_time_empty: Int = 0 var has_work_time_empty: Int = 0
var work_time_overlap_remark: String = "" //重叠期 var work_time_overlap_remark: String = "" //重叠期
......
...@@ -354,7 +354,7 @@ class YHLivePlayerViewController: YHBasePlayerViewController { ...@@ -354,7 +354,7 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
guard let self = self else { return } guard let self = self else { return }
if let error = error, retryCount <= self.maxRetryCount { if let error = error, retryCount <= self.maxRetryCount {
printLog("joinChatRoom: \(error)") printLog("joinChatRoom: \(error)")
DispatchQueue.main.asyncAfter(deadline: .now() + TimeInterval(5 * (retryCount + 1))) { DispatchQueue.main.asyncAfter(deadline: .now() + TimeInterval(5 * retryCount)) {
YHIMHelper.shared.registerAndLoginCurrentUser { _ in YHIMHelper.shared.registerAndLoginCurrentUser { _ in
joinRoom(retryCount: retryCount + 1) joinRoom(retryCount: retryCount + 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