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

收入记录相关接口调试

parent fc3de8cb
...@@ -50,6 +50,10 @@ ...@@ -50,6 +50,10 @@
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 */; }; 04307B962D1BAFD400ED8E8D /* YHGCIncomeRecordViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B952D1BAFD400ED8E8D /* YHGCIncomeRecordViewModel.swift */; };
04307B982D1BB1AD00ED8E8D /* YHGCIncomeRecordWorkExperienceViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04307B972D1BB1AD00ED8E8D /* YHGCIncomeRecordWorkExperienceViewModel.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 */; }; 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 */; };
...@@ -1252,6 +1256,10 @@ ...@@ -1252,6 +1256,10 @@
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>"; }; 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>"; }; 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>"; }; 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>"; };
...@@ -2607,6 +2615,16 @@ ...@@ -2607,6 +2615,16 @@
path = VM; path = VM;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
04307B992D1CF5AC00ED8E8D /* M */ = {
isa = PBXGroup;
children = (
04307B9A2D1CF5EE00ED8E8D /* YHGCIncomeRecordSaveWorkModel.swift */,
04307B9C2D1D48E700ED8E8D /* YHGCIncomeType.swift */,
04307BA02D1D4B9500ED8E8D /* YHGCIncomeTypeSelectModel.swift */,
);
path = M;
sourceTree = "<group>";
};
045C0A182D12CA5E00BD2DC0 /* C */ = { 045C0A182D12CA5E00BD2DC0 /* C */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -6120,6 +6138,7 @@ ...@@ -6120,6 +6138,7 @@
children = ( children = (
047A968A2D16AA410033BB4E /* YHGCIncomeRecordViewController.swift */, 047A968A2D16AA410033BB4E /* YHGCIncomeRecordViewController.swift */,
047A968B2D16AA410033BB4E /* YHGCIncomeRecordWorkExperienceViewController.swift */, 047A968B2D16AA410033BB4E /* YHGCIncomeRecordWorkExperienceViewController.swift */,
04307B9E2D1D4B3600ED8E8D /* YHGCIncomeTypeSelectViewController.swift */,
); );
path = C; path = C;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -6127,6 +6146,7 @@ ...@@ -6127,6 +6146,7 @@
047A968E2D16AA410033BB4E /* IncomeRecord(收入记录) */ = { 047A968E2D16AA410033BB4E /* IncomeRecord(收入记录) */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
04307B992D1CF5AC00ED8E8D /* M */,
04307B942D1BAE8800ED8E8D /* VM */, 04307B942D1BAE8800ED8E8D /* VM */,
047A96942D1900D00033BB4E /* V */, 047A96942D1900D00033BB4E /* V */,
047A968D2D16AA410033BB4E /* C */, 047A968D2D16AA410033BB4E /* C */,
...@@ -7188,6 +7208,7 @@ ...@@ -7188,6 +7208,7 @@
045C114A2D12CA5F00BD2DC0 /* YHAdopterCardModel.swift in Sources */, 045C114A2D12CA5F00BD2DC0 /* YHAdopterCardModel.swift in Sources */,
045C114B2D12CA5F00BD2DC0 /* YHDocumentMessageTableViewCell.swift in Sources */, 045C114B2D12CA5F00BD2DC0 /* YHDocumentMessageTableViewCell.swift in Sources */,
045C114C2D12CA5F00BD2DC0 /* YHHUDSuccessView.swift in Sources */, 045C114C2D12CA5F00BD2DC0 /* YHHUDSuccessView.swift in Sources */,
04307B9D2D1D48E700ED8E8D /* YHGCIncomeType.swift in Sources */,
045C114D2D12CA5F00BD2DC0 /* YHVisaRenewalPayContentCell.swift in Sources */, 045C114D2D12CA5F00BD2DC0 /* YHVisaRenewalPayContentCell.swift in Sources */,
045C114E2D12CA5F00BD2DC0 /* YHMyPermissionSettingVC.swift in Sources */, 045C114E2D12CA5F00BD2DC0 /* YHMyPermissionSettingVC.swift in Sources */,
045C114F2D12CA5F00BD2DC0 /* YHAdopterIncomeTableViewCell.swift in Sources */, 045C114F2D12CA5F00BD2DC0 /* YHAdopterIncomeTableViewCell.swift in Sources */,
...@@ -7461,6 +7482,7 @@ ...@@ -7461,6 +7482,7 @@
045C12452D12CA5F00BD2DC0 /* YHHUDErrorView.swift in Sources */, 045C12452D12CA5F00BD2DC0 /* YHHUDErrorView.swift in Sources */,
045C12462D12CA5F00BD2DC0 /* YHPrincleViewModel.swift in Sources */, 045C12462D12CA5F00BD2DC0 /* YHPrincleViewModel.swift in Sources */,
045C12472D12CA5F00BD2DC0 /* YHUploadCertificateListModel.swift in Sources */, 045C12472D12CA5F00BD2DC0 /* YHUploadCertificateListModel.swift in Sources */,
04307B9B2D1CF5EE00ED8E8D /* YHGCIncomeRecordSaveWorkModel.swift in Sources */,
04307B682D19911800ED8E8D /* YHIncomeInfoEditCell.swift in Sources */, 04307B682D19911800ED8E8D /* YHIncomeInfoEditCell.swift in Sources */,
045C12482D12CA5F00BD2DC0 /* YHResignUploadDetailModel.swift in Sources */, 045C12482D12CA5F00BD2DC0 /* YHResignUploadDetailModel.swift in Sources */,
045C12492D12CA5F00BD2DC0 /* UIApplication+Extension.swift in Sources */, 045C12492D12CA5F00BD2DC0 /* UIApplication+Extension.swift in Sources */,
...@@ -7616,6 +7638,7 @@ ...@@ -7616,6 +7638,7 @@
045C12D82D12CA5F00BD2DC0 /* YHSubmitAllInfoSuccessAlertView.swift in Sources */, 045C12D82D12CA5F00BD2DC0 /* YHSubmitAllInfoSuccessAlertView.swift in Sources */,
045C12D92D12CA5F00BD2DC0 /* YHPayMemberSectionItem.swift in Sources */, 045C12D92D12CA5F00BD2DC0 /* YHPayMemberSectionItem.swift in Sources */,
045C12DA2D12CA5F00BD2DC0 /* YHPickTimeHoldView.swift in Sources */, 045C12DA2D12CA5F00BD2DC0 /* YHPickTimeHoldView.swift in Sources */,
04307B9F2D1D4B3600ED8E8D /* YHGCIncomeTypeSelectViewController.swift in Sources */,
045C12DB2D12CA5F00BD2DC0 /* YHServiceOrderInIncubationView.swift in Sources */, 045C12DB2D12CA5F00BD2DC0 /* YHServiceOrderInIncubationView.swift in Sources */,
045C12DC2D12CA5F00BD2DC0 /* YHUatHelperViewModel.swift in Sources */, 045C12DC2D12CA5F00BD2DC0 /* YHUatHelperViewModel.swift in Sources */,
045C12DD2D12CA5F00BD2DC0 /* YHServiceCenterViewModel.swift in Sources */, 045C12DD2D12CA5F00BD2DC0 /* YHServiceCenterViewModel.swift in Sources */,
...@@ -7686,6 +7709,7 @@ ...@@ -7686,6 +7709,7 @@
045C13192D12CA5F00BD2DC0 /* YHQuestionAndAnswerViewController.swift in Sources */, 045C13192D12CA5F00BD2DC0 /* YHQuestionAndAnswerViewController.swift in Sources */,
045C131A2D12CA5F00BD2DC0 /* YHInvitationWithGiftsShareView.swift in Sources */, 045C131A2D12CA5F00BD2DC0 /* YHInvitationWithGiftsShareView.swift in Sources */,
045C131B2D12CA5F00BD2DC0 /* YHRangeDatePickerView2.swift in Sources */, 045C131B2D12CA5F00BD2DC0 /* YHRangeDatePickerView2.swift in Sources */,
04307BA12D1D4B9500ED8E8D /* YHGCIncomeTypeSelectModel.swift in Sources */,
045C131C2D12CA5F00BD2DC0 /* YHLookResignResultPrivateView.swift in Sources */, 045C131C2D12CA5F00BD2DC0 /* YHLookResignResultPrivateView.swift in Sources */,
045C131D2D12CA5F00BD2DC0 /* YHHKPlanItemView.swift in Sources */, 045C131D2D12CA5F00BD2DC0 /* YHHKPlanItemView.swift in Sources */,
045C131E2D12CA5F00BD2DC0 /* YHInvatationShareViewController.swift in Sources */, 045C131E2D12CA5F00BD2DC0 /* YHInvatationShareViewController.swift in Sources */,
......
...@@ -44,7 +44,7 @@ enum YHIncomeType: Int, CaseIterable { ...@@ -44,7 +44,7 @@ enum YHIncomeType: Int, CaseIterable {
case .businessIncome: case .businessIncome:
return "个体工商户/合伙企业/独资企业经营所得收入" return "个体工商户/合伙企业/独资企业经营所得收入"
case .incomeOfOtherOverseasCompanies: case .incomeOfOtherOverseasCompanies:
return "其他境外公司收入(持股50%及以上" return "其他境外公司收入(持股50%及以上)"
} }
} }
......
...@@ -56,8 +56,8 @@ class YHEmploymentVerificationAvailableCell: YHResignDocumentCell { ...@@ -56,8 +56,8 @@ class YHEmploymentVerificationAvailableCell: YHResignDocumentCell {
} }
extension YHEmploymentVerificationAvailableCell { extension YHEmploymentVerificationAvailableCell {
private func updateContentState(_ isBlank: Bool) { private func updateContentState(_ isNotBlank: Bool) {
if isBlank { if !isNotBlank {
infoDetailLabel.text = "请选择" infoDetailLabel.text = "请选择"
infoDetailLabel.font = .PFSC_R(ofSize: 14) infoDetailLabel.font = .PFSC_R(ofSize: 14)
infoDetailLabel.textColor = UIColor(hexString: "#B9C1CC") infoDetailLabel.textColor = UIColor(hexString: "#B9C1CC")
......
...@@ -125,7 +125,7 @@ extension YHGCMineSchemeViewController { ...@@ -125,7 +125,7 @@ extension YHGCMineSchemeViewController {
let industry = model.industry.defaultStringIfEmpty() let industry = model.industry.defaultStringIfEmpty()
let model1 = YHScemeItemModel(title: "职业界别", mainMessage: "根据您目前给来的材料,初步建议您申请的行业:" + industry, lightMessage: industry, subMessage: "后续会根据您文书准备的补充情况来最终确定,如有修改会再告知您。", lightFont: UIFont.PFSC_B(ofSize: 16), hideTopLine: true) 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 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)") let model2 = YHScemeItemModel(title: "资料清单", buttonTitle: "资料清单", mainMessage: "这是您的资料清单,请您前往查看。请您在1-2周内上传基础类证件哦,需要重新办理的可以晚些提供。需要注意的点如下:", lightMessage: "1-2周内", subMessage: "按照您填报的学历信息, 证明文件如下:\(contentStr)")
self.dataSource = [model1, model2] self.dataSource = [model1, model2]
......
...@@ -19,8 +19,8 @@ class YHGCIncomeRecordViewController: YHBaseViewController { ...@@ -19,8 +19,8 @@ class YHGCIncomeRecordViewController: YHBaseViewController {
case totalIncome(_ money: ASAttributedString) case totalIncome(_ money: ASAttributedString)
case consentForHKTravel(_ title: String, _ detail: ASAttributedString, _ question: String) case consentForHKTravel(_ title: String, _ detail: ASAttributedString, _ question: String)
case questionSelect(_ question: String) case questionSelect(_ question: String)
case employmentVerification(_ employments: [YHWorkItemListModel], _ selectedId: Int?) case employmentVerification //(_ employments: [YHWorkItemListModel], _ selectedId: Int?)
case workingHoursStatement(_ placeholder: String, _ detail: ASAttributedString, _ content: String) case workingHoursStatement(_ placeholder: String, _ detail: ASAttributedString)
} }
private lazy var datas: [[TableRow]] = [] private lazy var datas: [[TableRow]] = []
...@@ -185,8 +185,9 @@ extension YHGCIncomeRecordViewController { ...@@ -185,8 +185,9 @@ extension YHGCIncomeRecordViewController {
let income = Double(companyModel.income ?? "") ?? 0 let income = Double(companyModel.income ?? "") ?? 0
money += income money += income
let moneyStr = income == 0 ? "" : "约" + (hkdFormatter.string(from: NSNumber(value: income / rate)) ?? "0") + "港币" let moneyStr = income == 0 ? "" : "约" + (hkdFormatter.string(from: NSNumber(value: income / rate)) ?? "0") + "港币"
let vacantNum = companyModel.vacant_num ?? 0 // let vacantNum = companyModel.vacant_num ?? 0
let timeStr: String = vacantNum == 0 ? "已填写" : "有\(vacantNum)项未填写" // 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) let incomeItem: TableRow = .incomeItem(companyModel.company_name ?? "", moneyStr, timeStr, companyModel.id ?? 0, index != listCount - 1)
firstSection.append(incomeItem) firstSection.append(incomeItem)
} }
...@@ -200,7 +201,7 @@ extension YHGCIncomeRecordViewController { ...@@ -200,7 +201,7 @@ extension YHGCIncomeRecordViewController {
if viewModel.mainModel.has_work_time_overlap == 1 { 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 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)) 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] = [] var thirdSection: [TableRow] = []
...@@ -218,8 +219,9 @@ extension YHGCIncomeRecordViewController { ...@@ -218,8 +219,9 @@ extension YHGCIncomeRecordViewController {
}) })
thirdSection.append(.consentForHKTravel("赴港同意书提供", detail + actionStr, "在职公司是否可以提供赴港同意书")) thirdSection.append(.consentForHKTravel("赴港同意书提供", detail + actionStr, "在职公司是否可以提供赴港同意书"))
if viewModel.mainModel.has_company_consent == 1 { if viewModel.mainModel.has_company_consent == 1 {
let id = viewModel.mainModel.consent_work_id > 0 ? viewModel.mainModel.consent_work_id : nil //let id = viewModel.mainModel.consent_work_id > 0 ? viewModel.mainModel.consent_work_id : nil
thirdSection.append(.employmentVerification(viewModel.listModel, id)) // thirdSection.append(.employmentVerification(viewModel.listModel, id))
thirdSection.append(.employmentVerification)
} else { } else {
thirdSection.append(.questionSelect("人才中心是否可以提供赴港同意书")) thirdSection.append(.questionSelect("人才中心是否可以提供赴港同意书"))
} }
...@@ -354,7 +356,7 @@ extension YHGCIncomeRecordViewController: UITableViewDelegate, UITableViewDataSo ...@@ -354,7 +356,7 @@ extension YHGCIncomeRecordViewController: UITableViewDelegate, UITableViewDataSo
guard let self = self else { guard let self = self else {
return return
} }
let ctl = YHGCIncomeRecordWorkExperienceViewController(incomeId: 0) let ctl = YHGCIncomeRecordWorkExperienceViewController(incomeId: 0, orderId: self.orderId)
ctl.submitSuccess = { [weak self] in ctl.submitSuccess = { [weak self] in
guard let self = self else { guard let self = self else {
return return
...@@ -396,17 +398,30 @@ extension YHGCIncomeRecordViewController: UITableViewDelegate, UITableViewDataSo ...@@ -396,17 +398,30 @@ extension YHGCIncomeRecordViewController: UITableViewDelegate, UITableViewDataSo
return cell return cell
} }
case let .employmentVerification(employments, selectedId): case .employmentVerification://(employments, selectedId):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHEmploymentVerificationAvailableCell.cellReuseIdentifier) as? YHEmploymentVerificationAvailableCell { 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 let selectedEmployment = employments.first { model in
model.id == selectedId model.id == selectedId
} }
cell.setupCellInfo(detail: selectedEmployment?.company_name) cell.setupCellInfo(detail: selectedEmployment?.company_name)
return cell return cell
} }
case let .workingHoursStatement(placeholder, tips, content): case let .workingHoursStatement(placeholder, tips):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHWorkingHoursStatementCell.cellReuseIdentifier) as? YHWorkingHoursStatementCell { 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.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 return cell
} }
} }
...@@ -436,7 +451,7 @@ extension YHGCIncomeRecordViewController: UITableViewDelegate, UITableViewDataSo ...@@ -436,7 +451,7 @@ extension YHGCIncomeRecordViewController: UITableViewDelegate, UITableViewDataSo
} }
let tableRow = sectionArr[indexPath.row] let tableRow = sectionArr[indexPath.row]
if case let .incomeItem(_, _, _, incomeId, _) = tableRow { if case let .incomeItem(_, _, _, incomeId, _) = tableRow {
let ctl = YHGCIncomeRecordWorkExperienceViewController(incomeId: incomeId) let ctl = YHGCIncomeRecordWorkExperienceViewController(incomeId: incomeId, orderId: orderId)
ctl.submitSuccess = { [weak self] in ctl.submitSuccess = { [weak self] in
guard let self = self else { guard let self = self else {
return return
...@@ -444,7 +459,10 @@ extension YHGCIncomeRecordViewController: UITableViewDelegate, UITableViewDataSo ...@@ -444,7 +459,10 @@ extension YHGCIncomeRecordViewController: UITableViewDelegate, UITableViewDataSo
self.requestData(isNeedLoading: true) self.requestData(isNeedLoading: true)
} }
navigationController?.pushViewController(ctl, animated: 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 { guard employments.count > 1 else {
return return
} }
...@@ -454,8 +472,12 @@ extension YHGCIncomeRecordViewController: UITableViewDelegate, UITableViewDataSo ...@@ -454,8 +472,12 @@ extension YHGCIncomeRecordViewController: UITableViewDelegate, UITableViewDataSo
let firstIndex = employments.firstIndex { model in let firstIndex = employments.firstIndex { model in
model.id == selectedId 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)
} }
} }
} }
......
...@@ -13,56 +13,33 @@ import UIKit ...@@ -13,56 +13,33 @@ import UIKit
class YHGCIncomeRecordWorkExperienceViewController: YHBaseViewController { class YHGCIncomeRecordWorkExperienceViewController: YHBaseViewController {
enum TableRow { enum TableRow {
case header(_ title: String) case header(_ title: String)
case incomeFrom(_ title: String, _ detail: String?, _ placeholder: String) case incomeFrom(_ title: String, _ placeholder: String)
case incomeTypeSelect(_ title: String, _ detail: String, _ isSelectedOne: Bool) case incomeTypeSelect(_ title: String, _ detail: String, _ isSelectedOne: Bool)
case incomeTypes(_ types: [YHIncomeType]) case incomeTypes(_ types: [YHGCIncomeType])
case inputMoney(_ title: String, _ detail: String?, _ inputStr: String?, _ showBottomLine: Bool, _ showStar: Bool, _ isIncomeMoney: Bool) case inputMoney(_ title: String, _ detail: String?, _ inputStr: String?, _ showBottomLine: Bool, _ showStar: Bool, _ isIncomeMoney: Bool)
case inputRemark(_ detail: String) case inputRemark(_ detail: String)
case infoSelect(_ title: String, _ detail: String?, _ placeholder: String) case infoSelect(_ title: String, _ placeholder: String)
case infoTillNowSelect(_ title: String, _ detail: String?, _ placeholder: String, _ isTillNow: Bool) case infoTillNowSelect(_ title: String, _ placeholder: String)
case infoEdit(_ title: String, _ detail: String?, _ placeholder: String) case infoEdit(_ title: String, _ placeholder: String)
case infoCheckbox(_ title: String) case infoCheckbox(_ title: String)
case incomeTips(_ detail: ASAttributedString)
case uploadWorkId(_ title: String, _ detail: String)
} }
private lazy var datas: [[TableRow]] = [] private lazy var datas: [[TableRow]] = []
private var selectedTypes: [YHIncomeType] = [] private var selectedTypes: [YHGCIncomeType] = []
private let currencyRate = 0.92 private let currencyRate = 0.92
private var isSaving = false private var isSaving = false
var submitSuccess: (() -> Void)? var submitSuccess: (() -> Void)?
// 校验字段控制
/// 是否选定收入类型 /// 是否选定收入类型
private var isIncomeTypeOK = true private var isIncomeTypeOK = true
private var incomeTypeIndexPath: IndexPath? private var incomeTypeIndexPath: IndexPath?
/// 是否选定文件
private var isHasAllFileOK = true
private var hasAllFileIndexPath: IndexPath?
/// 是否收入金额已填写 /// 是否收入金额已填写
private var isIncomeMoneyOK = true private var isIncomeMoneyOK = true
private var incomMoneyIndexPath: IndexPath? private var incomMoneyIndexPath: IndexPath?
private lazy var viewModel = YHGCIncomeRecordWorkExperienceViewModel()
private lazy var viewModel = YHIncomeRecordViewModel()
private var companyModel = YHIncomeCompanyDetailModel()
private lazy var saveButton: UIButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 15)
button.setTitle("保存", for: .normal)
button.setTitle("保存", for: .highlighted)
button.setTitleColor(.mainTextColor, for: .normal)
button.setTitleColor(.mainTextColor, for: .highlighted)
button.addTarget(self, action: #selector(clickSaveButton), for: .touchUpInside)
button.layer.cornerRadius = kCornerRadius3
button.clipsToBounds = true
button.backgroundColor = .contentBkgColor
return button
}()
private lazy var submitButton: UIButton = { private lazy var submitButton: UIButton = {
let button = UIButton(type: .custom) let button = UIButton(type: .custom)
...@@ -119,8 +96,10 @@ class YHGCIncomeRecordWorkExperienceViewController: YHBaseViewController { ...@@ -119,8 +96,10 @@ class YHGCIncomeRecordWorkExperienceViewController: YHBaseViewController {
}() }()
private let incomeId: Int private let incomeId: Int
init(incomeId: Int) { private let orderId: Int
init(incomeId: Int, orderId: Int) {
self.incomeId = incomeId self.incomeId = incomeId
self.orderId = orderId
super.init(nibName: nil, bundle: nil) super.init(nibName: nil, bundle: nil)
} }
...@@ -131,7 +110,12 @@ class YHGCIncomeRecordWorkExperienceViewController: YHBaseViewController { ...@@ -131,7 +110,12 @@ class YHGCIncomeRecordWorkExperienceViewController: YHBaseViewController {
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
setupUI() setupUI()
requestData(isNeedLoading: true) if incomeId != 0 {
requestData(isNeedLoading: true)
} else {
viewModel.position.order_id = orderId
setupData()
}
} }
override func viewWillAppear(_ animated: Bool) { override func viewWillAppear(_ animated: Bool) {
...@@ -143,39 +127,11 @@ class YHGCIncomeRecordWorkExperienceViewController: YHBaseViewController { ...@@ -143,39 +127,11 @@ class YHGCIncomeRecordWorkExperienceViewController: YHBaseViewController {
super.viewWillDisappear(animated) super.viewWillDisappear(animated)
IQKeyboardManager.shared.isEnabled = false IQKeyboardManager.shared.isEnabled = false
} }
/*
override func backItemClick(_ sender: Any) {
guard !isSaving else {
return
}
isSaving = true
submitIncome(.save) { [weak self] _ in
self?.isSaving = false
}
}
/// 是否可以返回,包括点击返回和手势返回,默认YES
override func navigationShouldPop() -> Bool {
guard !isSaving else {
return false
}
isSaving = true
submitIncome(.save) { [weak self] _ in
self?.isSaving = false
}
return false
}
*/
} }
extension YHGCIncomeRecordWorkExperienceViewController { extension YHGCIncomeRecordWorkExperienceViewController {
@objc private func clickSaveButton() {
submitIncome(.save, complete: { _ in })
}
@objc private func clickSubmitButton() { @objc private func clickSubmitButton() {
submitIncome(.submit, complete: { _ in }) submitIncome(complete: { _ in })
} }
private func setupUI() { private func setupUI() {
...@@ -186,7 +142,6 @@ extension YHGCIncomeRecordWorkExperienceViewController { ...@@ -186,7 +142,6 @@ extension YHGCIncomeRecordWorkExperienceViewController {
view.backgroundColor = UIColor.contentBkgColor view.backgroundColor = UIColor.contentBkgColor
view.addSubview(tableView) view.addSubview(tableView)
view.addSubview(bottomView) view.addSubview(bottomView)
bottomView.addSubview(saveButton)
bottomView.addSubview(submitButton) bottomView.addSubview(submitButton)
bottomView.snp.makeConstraints { make in bottomView.snp.makeConstraints { make in
...@@ -195,15 +150,8 @@ extension YHGCIncomeRecordWorkExperienceViewController { ...@@ -195,15 +150,8 @@ extension YHGCIncomeRecordWorkExperienceViewController {
make.top.equalTo(view.safeAreaLayoutGuide.snp.bottom).offset(-64) make.top.equalTo(view.safeAreaLayoutGuide.snp.bottom).offset(-64)
} }
saveButton.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
make.top.equalToSuperview().offset(10)
make.height.equalTo(44)
make.width.equalTo(86)
}
submitButton.snp.makeConstraints { make in submitButton.snp.makeConstraints { make in
make.left.equalTo(saveButton.snp.right).offset(10) make.left.equalToSuperview().offset(16)
make.right.equalToSuperview().offset(-16) make.right.equalToSuperview().offset(-16)
make.top.equalToSuperview().offset(10) make.top.equalToSuperview().offset(10)
make.height.equalTo(44) make.height.equalTo(44)
...@@ -219,32 +167,66 @@ extension YHGCIncomeRecordWorkExperienceViewController { ...@@ -219,32 +167,66 @@ extension YHGCIncomeRecordWorkExperienceViewController {
} }
private func setupData() { private func setupData() {
selectedTypes = companyModel.income_type.compactMap { selectedTypes = viewModel.position.type_of_income.compactMap {
YHIncomeType(rawValue: $0) YHGCIncomeType(rawValue: $0)
} }
var firstSection: [TableRow] = [.header("收入信息"), .incomeFrom("收入来源公司", companyModel.company_name, "请填写公司全称"), .incomeTypeSelect("收入类型(多选)", "请选择", selectedTypes.count > 0)] var firstSection: [TableRow] = [.header("收入信息"), .incomeFrom("收入来源公司", "请填写公司全称"), .incomeTypeSelect("收入类型(多选)", "请选择", selectedTypes.count > 0)]
if selectedTypes.count > 0 { if selectedTypes.count > 0 {
firstSection.append(.incomeTypes(selectedTypes)) firstSection.append(.incomeTypes(selectedTypes))
} }
let hkdFmt = currencyFormat("") let hkdFmt = currencyFormat("")
let rmbFmt = currencyFormat("¥") let rmbFmt = currencyFormat("¥")
let rate = companyModel.rate > 0 ? companyModel.rate : 0.92 let rate = getCurrentRate()
if selectedTypes.contains(.incomeOfMainland) || selectedTypes.contains(.incomeOfHKCompanies) || selectedTypes.contains(.incomeOfMacauCompanies) || selectedTypes.contains(.incomeOfOtherOverseasCompanies) { if selectedTypes.contains(.incomeOfMainland) || selectedTypes.contains(.incomeOfHKCompanies) || selectedTypes.contains(.incomeOfMacauCompanies) || selectedTypes.contains(.incomeOfOtherOverseasCompanies) {
firstSection.append(.inputMoney("公司营业额(近一年)", "约\(hkdFmt.string(from: NSNumber(value: companyModel.corporate_turnover / rate)) ?? "0")港币", rmbFmt.string(from: NSNumber(value: companyModel.corporate_turnover)) ?? "0", true, false, false)) let turnover = Double(viewModel.position.turnover) ?? 0
firstSection.append(.inputMoney("公司营业额(近一年)", "约\(hkdFmt.string(from: NSNumber(value: turnover / rate)) ?? "0")港币", rmbFmt.string(from: NSNumber(value: turnover)) ?? "0", true, false, false))
} }
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)) let income = Double(viewModel.position.income) ?? 0
firstSection.append(.inputMoney("收入金额", "约\(hkdFmt.string(from: NSNumber(value: income / rate)) ?? "0")港币", rmbFmt.string(from: NSNumber(value: income)) ?? "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 = getEnterpriseInfo()
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)) datas = [firstSection, secondSection]
let thirdSection: [TableRow] = [.header("工作证件(选填)"), .incomeTips(tips), .uploadWorkId("上传工作证件", "去上传")]
datas = [firstSection, secondSection, thirdSection]
tableView.reloadData() tableView.reloadData()
} }
@discardableResult
private func getEnterpriseInfo(needUpdateDataSource: Bool = false) -> [TableRow] {
var secondSection: [TableRow] = [.header("企业信息"), .infoSelect("派薪国家/地区", "请选择")]
if viewModel.position.location.country.contains("中国") {
secondSection.append(.infoSelect("派薪城市", "请选择"))
} else {
secondSection.append(.infoEdit("派薪城市", "请输入"))
}
secondSection.append(contentsOf: [.infoEdit("职位", "请输入"), .infoSelect("入职年月", "请选择"), .infoTillNowSelect("离职年月", "请选择"), .infoCheckbox("是否可以提供工作证明"), .infoSelect("职业界别", "请选择")])
if viewModel.position.company_type.contains("其他") {
secondSection.append(.infoEdit("具体职业界别", "请输入"))
} else {
viewModel.position.company_type_other = ""
}
if needUpdateDataSource {
if let index = datas.firstIndex(where: { arr in
if arr.contains(where: { row in
if case let .header(title) = row, title == "企业信息" {
return true
}
return false
}) {
return true
}
return false
}) {
datas[index] = secondSection
tableView.reloadSections(IndexSet(arrayLiteral: index), with: .automatic)
}
}
return secondSection
}
private func showSelectIncomeTypePopVC(selectedTypes: [YHIncomeType]) { private func showSelectIncomeTypePopVC(selectedTypes: [YHGCIncomeType]) {
let ctl = YHIncomeTypeSelectViewController(selectedTypes: selectedTypes) let ctl = YHGCIncomeTypeSelectViewController(selectedTypes: selectedTypes)
let bpc = YHBottomPresentationController(presentedViewController: ctl, presenting: self) let bpc = YHBottomPresentationController(presentedViewController: ctl, presenting: self)
bpc.customRadius = 8.0 bpc.customRadius = 8.0
ctl.transitioningDelegate = bpc ctl.transitioningDelegate = bpc
...@@ -259,8 +241,8 @@ extension YHGCIncomeRecordWorkExperienceViewController { ...@@ -259,8 +241,8 @@ extension YHGCIncomeRecordWorkExperienceViewController {
} }
private func updateSelectTypes() { private func updateSelectTypes() {
companyModel.income_type = selectedTypes.map { $0.rawValue } viewModel.position.type_of_income = selectedTypes.map { $0.rawValue }
if companyModel.income_type.count > 0 { if viewModel.position.type_of_income.count > 0 {
isIncomeTypeOK = true isIncomeTypeOK = true
} }
var incomeTypesIndexPath: IndexPath? var incomeTypesIndexPath: IndexPath?
...@@ -316,8 +298,9 @@ extension YHGCIncomeRecordWorkExperienceViewController { ...@@ -316,8 +298,9 @@ extension YHGCIncomeRecordWorkExperienceViewController {
let newIndex = incomeIndex // > 1 ? incomeIndex - 1 : 0 let newIndex = incomeIndex // > 1 ? incomeIndex - 1 : 0
let hkdFmt = currencyFormat("") let hkdFmt = currencyFormat("")
let rmbFmt = currencyFormat("¥") let rmbFmt = currencyFormat("¥")
let rate = companyModel.rate > 0 ? companyModel.rate : 0.92 let rate = getCurrentRate()
sectionArr.insert(.inputMoney("公司营业额(近一年)", "约\(hkdFmt.string(from: NSNumber(value: companyModel.corporate_turnover / rate)) ?? "0")港币", rmbFmt.string(from: NSNumber(value: companyModel.corporate_turnover)) ?? "0", true, false, false), at: newIndex) let turnover = Double(viewModel.position.turnover) ?? 0
sectionArr.insert(.inputMoney("公司营业额(近一年)", "约\(hkdFmt.string(from: NSNumber(value: turnover / rate)) ?? "0")港币", rmbFmt.string(from: NSNumber(value: turnover)) ?? "0", true, false, false), at: newIndex)
datas[incomeTypeSelectIndexPath.section] = sectionArr datas[incomeTypeSelectIndexPath.section] = sectionArr
} }
} }
...@@ -336,6 +319,15 @@ extension YHGCIncomeRecordWorkExperienceViewController { ...@@ -336,6 +319,15 @@ extension YHGCIncomeRecordWorkExperienceViewController {
} }
} }
} }
tableView.performBatchUpdates { [weak tableView] in
tableView?.reloadSections(IndexSet(integer: incomeTypeSelectIndexPath.section), with: .automatic)
}
}
private func getCurrentRate() -> Double {
let configRate = Double(YHConfigManager.shared.reqVM.configModel?.rate ?? "") ?? 0
let rate = configRate > 0 ? configRate : 0.92
return rate
} }
private func currencyFormat(_ currencySymbol: String) -> NumberFormatter { private func currencyFormat(_ currencySymbol: String) -> NumberFormatter {
...@@ -375,9 +367,9 @@ extension YHGCIncomeRecordWorkExperienceViewController: UITableViewDelegate, UIT ...@@ -375,9 +367,9 @@ extension YHGCIncomeRecordWorkExperienceViewController: UITableViewDelegate, UIT
cell.setupCellInfo(title) cell.setupCellInfo(title)
return cell return cell
} }
case let .incomeFrom(title, detail, placeholder): case let .incomeFrom(title, placeholder):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHIncomeRecordFromCell.cellReuseIdentifier) as? YHIncomeRecordFromCell { if let cell = tableView.dequeueReusableCell(withIdentifier: YHIncomeRecordFromCell.cellReuseIdentifier) as? YHIncomeRecordFromCell {
cell.setupCellInfo(title: title, detail: detail, showBottomLine: true, showRightArrow: true, placeholder: placeholder) cell.setupCellInfo(title: title, detail: viewModel.position.company_name, showBottomLine: true, showRightArrow: true, placeholder: placeholder)
return cell return cell
} }
case let .incomeTypeSelect(title, detail, isSelectedOne): case let .incomeTypeSelect(title, detail, isSelectedOne):
...@@ -428,9 +420,9 @@ extension YHGCIncomeRecordWorkExperienceViewController: UITableViewDelegate, UIT ...@@ -428,9 +420,9 @@ extension YHGCIncomeRecordWorkExperienceViewController: UITableViewDelegate, UIT
self.datas[indexPath.section][indexPath.row] = .inputMoney(title, nil, nil, showBottomLine, showStar, isIncomeMoney) self.datas[indexPath.section][indexPath.row] = .inputMoney(title, nil, nil, showBottomLine, showStar, isIncomeMoney)
self.tableView.reloadRows(at: [indexPath], with: .automatic) self.tableView.reloadRows(at: [indexPath], with: .automatic)
if isIncomeMoney { if isIncomeMoney {
self.companyModel.income_money = 0 self.viewModel.position.income = "0"
} else { } else {
self.companyModel.corporate_turnover = 0 self.viewModel.position.turnover = "0"
} }
} }
} }
...@@ -443,9 +435,9 @@ extension YHGCIncomeRecordWorkExperienceViewController: UITableViewDelegate, UIT ...@@ -443,9 +435,9 @@ extension YHGCIncomeRecordWorkExperienceViewController: UITableViewDelegate, UIT
let detail = number / self.currencyRate let detail = number / self.currencyRate
if isIncomeMoney { if isIncomeMoney {
self.isIncomeMoneyOK = true self.isIncomeMoneyOK = true
self.companyModel.income_money = number self.viewModel.position.income = "\(number)"
} else { } else {
self.companyModel.corporate_turnover = number self.viewModel.position.turnover = "\(number)"
} }
let rmbFormatter = self.currencyFormat("¥") let rmbFormatter = self.currencyFormat("¥")
...@@ -472,37 +464,100 @@ extension YHGCIncomeRecordWorkExperienceViewController: UITableViewDelegate, UIT ...@@ -472,37 +464,100 @@ extension YHGCIncomeRecordWorkExperienceViewController: UITableViewDelegate, UIT
cell.setupCellInfo(detail) cell.setupCellInfo(detail)
return cell return cell
} }
case let .infoSelect(title, detail, placeholder): case let .infoSelect(title, placeholder):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHIncomeInfoSelectCell.cellReuseIdentifier) as? YHIncomeInfoSelectCell { if let cell = tableView.dequeueReusableCell(withIdentifier: YHIncomeInfoSelectCell.cellReuseIdentifier) as? YHIncomeInfoSelectCell {
var detail = ""
switch title {
case "派薪国家/地区":
detail = viewModel.position.location.country
case "派薪城市":
let city = viewModel.position.location.area.reduce("") { partialResult, item in
partialResult.count > 0 ? partialResult + "/" + item : partialResult + item
}
detail = city
case "入职年月":
detail = viewModel.position.entry_time
case "职业界别":
detail = viewModel.position.company_type
default:
break
}
cell.setupCellInfo(title: title, detail: detail, placeholder: placeholder, needShowFailButton: false) cell.setupCellInfo(title: title, detail: detail, placeholder: placeholder, needShowFailButton: false)
return cell return cell
} }
case let .infoTillNowSelect(title, detail, placeholder, isTillNow): case let .infoTillNowSelect(title, placeholder):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHIncomeDateTillNowCell.cellReuseIdentifier) as? YHIncomeDateTillNowCell { if let cell = tableView.dequeueReusableCell(withIdentifier: YHIncomeDateTillNowCell.cellReuseIdentifier) as? YHIncomeDateTillNowCell {
cell.setupCellInfo(title: title, detail: detail, placeholder: placeholder, tillNow: isTillNow, needShowFailButton: false) let detail = viewModel.position.departure_time
cell.tillNowButtonEvent = { cell.setupCellInfo(title: title, detail: detail, placeholder: placeholder, needShowFailButton: false)
// cell.tillNowButtonEvent = { [weak self] tillNow in
guard let self = self else {
return
}
if tillNow {
self.viewModel.position.departure_time = "至今"
} else {
self.viewModel.position.departure_time = ""
}
} }
return cell return cell
} }
case let .infoEdit(title, detail, placeholder): case let .infoEdit(title, placeholder):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHIncomeInfoEditCell.cellReuseIdentifier) as? YHIncomeInfoEditCell { if let cell = tableView.dequeueReusableCell(withIdentifier: YHIncomeInfoEditCell.cellReuseIdentifier) as? YHIncomeInfoEditCell {
var detail = ""
switch title {
case "派薪城市":
detail = viewModel.position.location.foreign
case "职位":
detail = viewModel.position.position
case "具体职业界别":
detail = viewModel.position.company_type_other
default:
break
}
cell.setupCellInfo(title: title, detail: detail, placeholder: placeholder, needShowFailButton: false) cell.setupCellInfo(title: title, detail: detail, placeholder: placeholder, needShowFailButton: false)
cell.didEndEditing = { [weak self] textField in
guard let self = self else {
return
}
switch title {
case "派薪城市":
self.viewModel.position.location.area = []
self.viewModel.position.location.foreign = textField.text ?? ""
case "职位":
self.viewModel.position.position = textField.text ?? ""
case "具体职业界别":
self.viewModel.position.company_type_other = textField.text ?? ""
default:
break
}
}
return cell return cell
} }
case let .infoCheckbox(title): case let .infoCheckbox(title):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHInfoQuestionSelectionCell.cellReuseIdentifier) as? YHInfoQuestionSelectionCell { if let cell = tableView.dequeueReusableCell(withIdentifier: YHInfoQuestionSelectionCell.cellReuseIdentifier) as? YHInfoQuestionSelectionCell {
cell.setupCellInfo(question: title, showBottomLine: true, needShowFailButton: false) cell.setupCellInfo(question: title, showBottomLine: true, needShowFailButton: false)
return cell cell.didSelectSureButton = { [weak self] selected in
} guard let self = self else {
case let .incomeTips(detail): return
if let cell = tableView.dequeueReusableCell(withIdentifier: YHIncomeRecordCompanyTipsCell.cellReuseIdentifier) as? YHIncomeRecordCompanyTipsCell { }
cell.setupCellInfo(tipsDetail: detail) switch selected {
return cell case .true:
} self.viewModel.position.has_work_certificate = YHCheckboxSelectType.true.rawValue
case let .uploadWorkId(title, detail): case .false:
if let cell = tableView.dequeueReusableCell(withIdentifier: YHIncomeUploadWorkIDCell.cellReuseIdentifier) as? YHIncomeUploadWorkIDCell { self.viewModel.position.has_work_certificate = YHCheckboxSelectType.false.rawValue
cell.setupCellInfo(title: title, detail: detail) case .unknown:
self.viewModel.position.has_work_certificate = YHCheckboxSelectType.unknown.rawValue
}
}
let selectType = YHCheckboxSelectType(rawValue: viewModel.position.has_work_certificate) ?? .unknown
switch selectType {
case .true:
cell.selectedSureButton = .true
case .false:
cell.selectedSureButton = .false
case .unknown:
cell.selectedSureButton = .unknown
}
return cell return cell
} }
} }
...@@ -536,39 +591,122 @@ extension YHGCIncomeRecordWorkExperienceViewController: UITableViewDelegate, UIT ...@@ -536,39 +591,122 @@ extension YHGCIncomeRecordWorkExperienceViewController: UITableViewDelegate, UIT
showSelectIncomeTypePopVC(selectedTypes: selectedTypes) showSelectIncomeTypePopVC(selectedTypes: selectedTypes)
} else if case .incomeFrom = tableRow { } else if case .incomeFrom = tableRow {
let vc = YHCompanySelectViewController() let vc = YHCompanySelectViewController()
vc.backLocationStringController = { _ in vc.backLocationStringController = { [weak self] company in
// country.company_name guard let self = self else {
// return
}
self.viewModel.position.company_name = company.company_name ?? ""
self.tableView.reloadRows(at: [indexPath], with: .automatic)
} }
navigationController?.pushViewController(vc) navigationController?.pushViewController(vc)
} else if case let .infoSelect(title, _, _) = tableRow { } else if case let .infoSelect(title, _) = tableRow {
if title == "派薪国家/地区" { switch title {
case "派薪国家/地区":
let vc = YHSelectCountryViewController() let vc = YHSelectCountryViewController()
vc.backLocationStringController = { (country) in vc.backLocationStringController = { [weak self] country in
//self.dataSource?.message = country guard let self = self else {
// return
}
let oldContry = self.viewModel.position.location.country
self.viewModel.position.location.country = country
self.viewModel.position.location_aboard = country.contains("中国") ? 0 : 1
if country != oldContry {
self.viewModel.position.location.area = []
self.viewModel.position.location.foreign = ""
self.getEnterpriseInfo(needUpdateDataSource: true)
} else {
self.tableView.reloadRows(at: [indexPath], with: .automatic)
}
} }
navigationController?.pushViewController(vc) navigationController?.pushViewController(vc)
} else if title == "入职年月" { case "派薪城市":
let country = viewModel.position.location.country
var provice = ""
if country.contains("台湾") {
provice = "台湾省"
}
if country.contains("香港") {
provice = "香港特别行政区"
}
if country.contains("澳门") {
provice = "澳门特别行政区"
}
let addressPicker = YHAddressViewController(selectProvince: provice)
addressPicker.backLocationStringController = { [weak self] (address,province,city,area) in
guard let self = self else {
return
}
self.viewModel.position.location.area = [province, city]
self.viewModel.position.location.foreign = ""
self.tableView.reloadRows(at: [indexPath], with: .automatic)
}
present(addressPicker, animated: true, completion: nil)
case "入职年月":
let title = "选择入职年月" let title = "选择入职年月"
let lastIsTaday = true let lastIsTaday = true
YHDatePickView.show(type: .yyyymm, title: title, lastIsTaday: lastIsTaday, currentDay: "") { date in YHDatePickView.show(type: .yyyymm, title: title, lastIsTaday: lastIsTaday, currentDay: viewModel.position.entry_time) { [weak self] date in
// guard let self = self else {
return
}
let format = DateFormatter()
format.dateFormat = "yyyy-MM"
if let selectDate = format.date(from: date) {
let selectTimeInterval = selectDate.timeIntervalSince1970
let currentTimeInterval = Date().timeIntervalSince1970
if selectTimeInterval > currentTimeInterval {
YHHUD.flash(message: "入职年月不能晚于当前日期")
} else {
guard let endDate = format.date(from: self.viewModel.position.departure_time) else {
self.viewModel.position.entry_time = date
self.tableView.reloadRows(at: [indexPath], with: .automatic)
return
}
let endTimeInterval = endDate.timeIntervalSince1970
if selectTimeInterval > endTimeInterval {
YHHUD.flash(message: "入职年月不能晚于离职年月")
} else {
self.viewModel.position.entry_time = date
self.tableView.reloadRows(at: [indexPath], with: .automatic)
}
}
}
} }
} else if title == "职业界别" { case "职业界别":
YHOtherPickerView.show(type: .position, selectTitle: "") {[weak self] data in YHOtherPickerView.show(type: .position, selectTitle: viewModel.position.company_type) {[weak self] data in
guard let self = self else { return } guard let self = self else { return }
// data.title let companyType = self.viewModel.position.company_type
// self.viewModel.position.company_type = data.title
if (data.title == "其他" || companyType == "其他") && companyType != data.title {
self.getEnterpriseInfo(needUpdateDataSource: true)
} else {
self.tableView.reloadRows(at: [indexPath], with: .automatic)
}
} }
default:
break
} }
} else if case let .infoTillNowSelect(title, _, _, _) = tableRow { } else if case let .infoTillNowSelect(title, _) = tableRow {
if title == "离职年月" { if title == "离职年月" {
let title = "选择离职年月" let title = "选择离职年月"
let lastIsTaday = true let lastIsTaday = true
YHDatePickView.show(type: .yyyymm, title: title, lastIsTaday: lastIsTaday, currentDay: "") { date in YHDatePickView.show(type: .yyyymm, title: title, lastIsTaday: lastIsTaday, currentDay: viewModel.position.departure_time) { [weak self] date in
// guard let self = self else { return }
let format = DateFormatter()
format.dateFormat = "yyyy-MM"
if let selectDate = format.date(from: date), let startDate = format.date(from: self.viewModel.position.entry_time) {
let selectTimeInterval = selectDate.timeIntervalSince1970
let startTimeInterval = startDate.timeIntervalSince1970
if selectTimeInterval < startTimeInterval {
YHHUD.flash(message: "离职年月不能早于入职年月")
} else {
self.viewModel.position.departure_time = date
self.tableView.reloadRows(at: [indexPath], with: .automatic)
}
} else {
self.viewModel.position.departure_time = date
self.tableView.reloadRows(at: [indexPath], with: .automatic)
}
} }
} }
} }
...@@ -579,21 +717,15 @@ extension YHGCIncomeRecordWorkExperienceViewController { ...@@ -579,21 +717,15 @@ extension YHGCIncomeRecordWorkExperienceViewController {
private func checkInput() -> Bool { private func checkInput() -> Bool {
var retValue = true var retValue = true
var updateRows: [IndexPath] = [] var updateRows: [IndexPath] = []
if companyModel.has_all_file == YHIncomeRecordHasAllFile.unknown.rawValue {
isHasAllFileOK = false if viewModel.position.type_of_income.count == 0 {
if let hasAllFileIndexPath = hasAllFileIndexPath, tableView.numberOfSections > hasAllFileIndexPath.section, tableView.numberOfRows(inSection: hasAllFileIndexPath.section) > hasAllFileIndexPath.row {
updateRows.append(hasAllFileIndexPath)
}
retValue = false
}
if companyModel.income_type.count == 0 {
isIncomeTypeOK = false isIncomeTypeOK = false
if let incomeTypeIndexPath = incomeTypeIndexPath, tableView.numberOfSections > incomeTypeIndexPath.section, tableView.numberOfRows(inSection: incomeTypeIndexPath.section) > incomeTypeIndexPath.row { if let incomeTypeIndexPath = incomeTypeIndexPath, tableView.numberOfSections > incomeTypeIndexPath.section, tableView.numberOfRows(inSection: incomeTypeIndexPath.section) > incomeTypeIndexPath.row {
updateRows.append(incomeTypeIndexPath) updateRows.append(incomeTypeIndexPath)
} }
retValue = false retValue = false
} }
if companyModel.income_money == 0 { if viewModel.position.income == "0" {
isIncomeMoneyOK = false isIncomeMoneyOK = false
if let incomMoneyIndexPath = incomMoneyIndexPath, tableView.numberOfSections > incomMoneyIndexPath.section, tableView.numberOfRows(inSection: incomMoneyIndexPath.section) > incomMoneyIndexPath.row { if let incomMoneyIndexPath = incomMoneyIndexPath, tableView.numberOfSections > incomMoneyIndexPath.section, tableView.numberOfRows(inSection: incomMoneyIndexPath.section) > incomMoneyIndexPath.row {
updateRows.append(incomMoneyIndexPath) updateRows.append(incomMoneyIndexPath)
...@@ -602,7 +734,6 @@ extension YHGCIncomeRecordWorkExperienceViewController { ...@@ -602,7 +734,6 @@ extension YHGCIncomeRecordWorkExperienceViewController {
} }
if updateRows.count > 0 { if updateRows.count > 0 {
tableView.reloadRows(at: updateRows, with: .none) tableView.reloadRows(at: updateRows, with: .none)
isHasAllFileOK = true
isIncomeTypeOK = true isIncomeTypeOK = true
isIncomeMoneyOK = true isIncomeMoneyOK = true
} }
...@@ -613,15 +744,14 @@ extension YHGCIncomeRecordWorkExperienceViewController { ...@@ -613,15 +744,14 @@ extension YHGCIncomeRecordWorkExperienceViewController {
if isNeedLoading { if isNeedLoading {
YHHUD.show(.progress(message: "加载中...")) YHHUD.show(.progress(message: "加载中..."))
} }
viewModel.getIncomeDetail(incomeId: incomeId) { [weak self] companyModel, error in viewModel.requestWorkPositionDetail(incomeId, orderId) { [weak self] success, error in
guard let self = self else { guard let self = self else {
return return
} }
if isNeedLoading { if isNeedLoading {
YHHUD.hide() YHHUD.hide()
} }
guard let companyModel = companyModel else { guard success else {
printLog("YHGCIncomeRecordWorkExperienceViewController: 请求失败") printLog("YHGCIncomeRecordWorkExperienceViewController: 请求失败")
if let errorMsg = error?.errorMsg, errorMsg.count > 0 { if let errorMsg = error?.errorMsg, errorMsg.count > 0 {
YHHUD.flash(message: errorMsg) YHHUD.flash(message: errorMsg)
...@@ -630,21 +760,18 @@ extension YHGCIncomeRecordWorkExperienceViewController { ...@@ -630,21 +760,18 @@ extension YHGCIncomeRecordWorkExperienceViewController {
self.tableView.reloadData() self.tableView.reloadData()
return return
} }
self.companyModel = companyModel
self.setupData() self.setupData()
} }
} }
private func submitIncome(_ type: YHIncomeRecordUpdateType, complete: @escaping (Bool) -> Void) { private func submitIncome(complete: @escaping (Bool) -> Void) {
view.endEditing(true) view.endEditing(true)
let msg = type == .save ? "保存中..." : "提交中..." let msg = "提交中..."
if type == .submit { if checkInput() == false {
if checkInput() == false { return
return
}
} }
YHHUD.show(.progress(message: msg)) YHHUD.show(.progress(message: msg))
viewModel.updateDetail(incomeId: incomeId, incomeMoney: companyModel.income_money, corporateTurnover: companyModel.corporate_turnover, incomeType: companyModel.income_type, hasAllFile: companyModel.has_all_file) { [weak self] success, error in viewModel.saveWorkPosition { [weak self] success, error in
guard let self = self else { guard let self = self else {
complete(false) complete(false)
return return
...@@ -652,7 +779,7 @@ extension YHGCIncomeRecordWorkExperienceViewController { ...@@ -652,7 +779,7 @@ extension YHGCIncomeRecordWorkExperienceViewController {
YHHUD.hide() YHHUD.hide()
complete(success) complete(success)
if success { if success {
let msg = type == .save ? "保存成功" : "提交成功" let msg = "提交成功"
YHHUD.flash(message: msg) YHHUD.flash(message: msg)
self.submitSuccess?() self.submitSuccess?()
self.navigationController?.popViewController(animated: true) self.navigationController?.popViewController(animated: true)
...@@ -660,9 +787,6 @@ extension YHGCIncomeRecordWorkExperienceViewController { ...@@ -660,9 +787,6 @@ extension YHGCIncomeRecordWorkExperienceViewController {
if let errorMsg = error?.errorMsg, errorMsg.count > 0 { if let errorMsg = error?.errorMsg, errorMsg.count > 0 {
YHHUD.flash(message: errorMsg) YHHUD.flash(message: errorMsg)
} }
if type == .save {
self.navigationController?.popViewController(animated: true)
}
} }
} }
} }
......
//
// 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 ...@@ -11,7 +11,8 @@ import UIKit
class YHIncomeDateTillNowCell: YHResignDocumentCell { class YHIncomeDateTillNowCell: YHResignDocumentCell {
static let cellReuseIdentifier = "YHIncomeDateTillNowCell" static let cellReuseIdentifier = "YHIncomeDateTillNowCell"
var tillNowButtonEvent: (() -> Void)? var tillNowButtonEvent: ((Bool) -> Void)?
private var placeholder: String = ""
private lazy var dotIcon: UIImageView = { private lazy var dotIcon: UIImageView = {
let imageView = UIImageView(image: UIImage(named: "red_dot_6")) let imageView = UIImageView(image: UIImage(named: "red_dot_6"))
...@@ -71,8 +72,9 @@ class YHIncomeDateTillNowCell: YHResignDocumentCell { ...@@ -71,8 +72,9 @@ class YHIncomeDateTillNowCell: YHResignDocumentCell {
fatalError("init(coder:) has not been implemented") 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 infoTitleLabel.text = title
self.placeholder = placeholder
updateContentState(detail: detail, placeholder: placeholder) updateContentState(detail: detail, placeholder: placeholder)
bottomLineView.isHidden = !showBottomLine bottomLineView.isHidden = !showBottomLine
infoFailLabel.text = placeholder infoFailLabel.text = placeholder
...@@ -82,7 +84,10 @@ class YHIncomeDateTillNowCell: YHResignDocumentCell { ...@@ -82,7 +84,10 @@ class YHIncomeDateTillNowCell: YHResignDocumentCell {
extension YHIncomeDateTillNowCell { extension YHIncomeDateTillNowCell {
@objc private func tillNowButtonClicked() { @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) { private func updateFailLabel(_ needShowFailButton: Bool) {
...@@ -121,10 +126,57 @@ extension YHIncomeDateTillNowCell { ...@@ -121,10 +126,57 @@ extension YHIncomeDateTillNowCell {
infoDetailLabel.font = .PFSC_M(ofSize: 14) infoDetailLabel.font = .PFSC_M(ofSize: 14)
infoDetailLabel.textColor = UIColor.mainTextColor infoDetailLabel.textColor = UIColor.mainTextColor
infoDetailLabel.text = detail 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 { } else {
infoDetailLabel.isHidden = false
tillNowButton.isSelected = false
infoDetailLabel.text = placeholder infoDetailLabel.text = placeholder
infoDetailLabel.font = .PFSC_R(ofSize: 14) infoDetailLabel.font = .PFSC_R(ofSize: 14)
infoDetailLabel.textColor = UIColor(hexString: "#B9C1CC") 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 { ...@@ -96,28 +96,4 @@ class YHGCIncomeRecordViewModel: YHBaseViewModel {
callBackBlock(false, err) 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 ...@@ -10,12 +10,13 @@ import UIKit
class YHGCIncomeRecordWorkExperienceViewModel: YHBaseViewModel { class YHGCIncomeRecordWorkExperienceViewModel: YHBaseViewModel {
var position: YHGCWorkExperienceModel = YHGCWorkExperienceModel() var position: YHGCWorkExperienceModel = YHGCWorkExperienceModel()
var saveWorkModel: YHGCIncomeRecordSaveWorkModel = YHGCIncomeRecordSaveWorkModel()
override init() { override init() {
super.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 param: [String: Any] = ["id": workId, "order_id": orderID]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.gcworkDetail let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.gcworkDetail
_ = YHNetRequest.getRequest(url: strUrl, params: param) { [weak self] json, _ in _ = YHNetRequest.getRequest(url: strUrl, params: param) { [weak self] json, _ in
...@@ -37,10 +38,9 @@ class YHGCIncomeRecordWorkExperienceViewModel: YHBaseViewModel { ...@@ -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, let address = ["area": position.location.area,
"country": position.location.country, "country": position.location.country,
"details": position.location.details,
"foreign": position.location.foreign] as [String: Any] "foreign": position.location.foreign] as [String: Any]
let params: [String: Any] = ["id": position.id, let params: [String: Any] = ["id": position.id,
"order_id": position.order_id, "order_id": position.order_id,
...@@ -51,15 +51,22 @@ class YHGCIncomeRecordWorkExperienceViewModel: YHBaseViewModel { ...@@ -51,15 +51,22 @@ class YHGCIncomeRecordWorkExperienceViewModel: YHBaseViewModel {
"has_work_certificate": position.has_work_certificate, "has_work_certificate": position.has_work_certificate,
"company_type": position.company_type, "company_type": position.company_type,
"company_type_other": position.company_type_other, "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 let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.gcWorkSave
_ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, _ in _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, _ in
guard let self = self else { return } guard let self = self else { return }
if json.code == 200 { 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) callBackBlock(false, nil)
return return
} }
self.saveWorkModel = result
self.position.id = result.id
callBackBlock(true, nil) callBackBlock(true, nil)
} else { } else {
let error: YHErrorModel = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg) let error: YHErrorModel = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg)
......
...@@ -26,7 +26,7 @@ class YHGCWorkExperienceModel: SmartCodable { ...@@ -26,7 +26,7 @@ class YHGCWorkExperienceModel: SmartCodable {
var turnover: String = "" var turnover: String = ""
/// 高A使用 收入类型 1 工资薪金所得及全年一次性奖金; 2 上市公司股票期权或股权收入; 3 持股公司分红收入; 4 个体工商户/合伙企业/独资企业经营所得收入; 5 /// 高A使用 收入类型 1 工资薪金所得及全年一次性奖金; 2 上市公司股票期权或股权收入; 3 持股公司分红收入; 4 个体工商户/合伙企业/独资企业经营所得收入; 5
/// 股权转让收入; 6 内地公司收入(持股50%及以上); 7 香港公司收入(持股50%及以上); 8 其他境外公司收入(持股50%及以上); 10 澳门公司收入(持股50%及以上) /// 股权转让收入; 6 内地公司收入(持股50%及以上); 7 香港公司收入(持股50%及以上); 8 其他境外公司收入(持股50%及以上); 10 澳门公司收入(持股50%及以上)
var typeOfIncome: [Int] = [] var type_of_income: [Int] = []
/// 高A使用 收入金额 /// 高A使用 收入金额
var income: String = "" 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