Commit c65daa11 authored by Steven杜宇's avatar Steven杜宇

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

parents 8bf16e7b 4fc9ddd4
...@@ -10,6 +10,14 @@ ...@@ -10,6 +10,14 @@
0411CEDE2D14006C00644D35 /* YHGCMainApplicantInformationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CEDD2D14006C00644D35 /* YHGCMainApplicantInformationViewController.swift */; }; 0411CEDE2D14006C00644D35 /* YHGCMainApplicantInformationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CEDD2D14006C00644D35 /* YHGCMainApplicantInformationViewController.swift */; };
0411CEE02D1400C200644D35 /* YHGCMainApplicantInformationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CEDF2D1400C200644D35 /* YHGCMainApplicantInformationViewModel.swift */; }; 0411CEE02D1400C200644D35 /* YHGCMainApplicantInformationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CEDF2D1400C200644D35 /* YHGCMainApplicantInformationViewModel.swift */; };
0411CEE22D14014000644D35 /* YHGCMainInformationCardTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CEE12D14014000644D35 /* YHGCMainInformationCardTableViewCell.swift */; }; 0411CEE22D14014000644D35 /* YHGCMainInformationCardTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CEE12D14014000644D35 /* YHGCMainInformationCardTableViewCell.swift */; };
0411CEE92D15123B00644D35 /* YHGCWorkExperienceListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CEE82D15123B00644D35 /* YHGCWorkExperienceListViewController.swift */; };
0411CEEB2D1512AF00644D35 /* YHGCWorkItemListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CEEA2D1512AF00644D35 /* YHGCWorkItemListViewModel.swift */; };
0411CEED2D15154B00644D35 /* YHGCWorkListHasWorkExperienceTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CEEC2D15154A00644D35 /* YHGCWorkListHasWorkExperienceTableViewCell.swift */; };
0411CEEF2D151E5F00644D35 /* YHGCWorkListHasDocTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CEEE2D151E5F00644D35 /* YHGCWorkListHasDocTableViewCell.swift */; };
0411CEF12D153F6300644D35 /* YHGCWorkExperienceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CEF02D153F6300644D35 /* YHGCWorkExperienceViewController.swift */; };
0411CEF32D153FB700644D35 /* YHGCWorkExperienceViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CEF22D153FB700644D35 /* YHGCWorkExperienceViewModel.swift */; };
0411CEF52D1548AF00644D35 /* YHGCWorkModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CEF42D1548AF00644D35 /* YHGCWorkModel.swift */; };
0411CEF72D15525400644D35 /* YHGCWorkExperienceModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CEF62D15525400644D35 /* YHGCWorkExperienceModel.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 */; };
...@@ -1158,6 +1166,14 @@ ...@@ -1158,6 +1166,14 @@
0411CEDD2D14006C00644D35 /* YHGCMainApplicantInformationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCMainApplicantInformationViewController.swift; sourceTree = "<group>"; }; 0411CEDD2D14006C00644D35 /* YHGCMainApplicantInformationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCMainApplicantInformationViewController.swift; sourceTree = "<group>"; };
0411CEDF2D1400C200644D35 /* YHGCMainApplicantInformationViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCMainApplicantInformationViewModel.swift; sourceTree = "<group>"; }; 0411CEDF2D1400C200644D35 /* YHGCMainApplicantInformationViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCMainApplicantInformationViewModel.swift; sourceTree = "<group>"; };
0411CEE12D14014000644D35 /* YHGCMainInformationCardTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCMainInformationCardTableViewCell.swift; sourceTree = "<group>"; }; 0411CEE12D14014000644D35 /* YHGCMainInformationCardTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCMainInformationCardTableViewCell.swift; sourceTree = "<group>"; };
0411CEE82D15123B00644D35 /* YHGCWorkExperienceListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCWorkExperienceListViewController.swift; sourceTree = "<group>"; };
0411CEEA2D1512AF00644D35 /* YHGCWorkItemListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCWorkItemListViewModel.swift; sourceTree = "<group>"; };
0411CEEC2D15154A00644D35 /* YHGCWorkListHasWorkExperienceTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCWorkListHasWorkExperienceTableViewCell.swift; sourceTree = "<group>"; };
0411CEEE2D151E5F00644D35 /* YHGCWorkListHasDocTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCWorkListHasDocTableViewCell.swift; sourceTree = "<group>"; };
0411CEF02D153F6300644D35 /* YHGCWorkExperienceViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCWorkExperienceViewController.swift; sourceTree = "<group>"; };
0411CEF22D153FB700644D35 /* YHGCWorkExperienceViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCWorkExperienceViewModel.swift; sourceTree = "<group>"; };
0411CEF42D1548AF00644D35 /* YHGCWorkModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCWorkModel.swift; sourceTree = "<group>"; };
0411CEF62D15525400644D35 /* YHGCWorkExperienceModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCWorkExperienceModel.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>"; };
...@@ -2350,6 +2366,53 @@ ...@@ -2350,6 +2366,53 @@
path = C; path = C;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
0411CEE32D15063F00644D35 /* WorkExperience(工作经验) */ = {
isa = PBXGroup;
children = (
0411CEE72D15066200644D35 /* M */,
0411CEE62D15065C00644D35 /* C */,
0411CEE52D15065500644D35 /* VM */,
0411CEE42D15064B00644D35 /* V */,
);
path = "WorkExperience(工作经验)";
sourceTree = "<group>";
};
0411CEE42D15064B00644D35 /* V */ = {
isa = PBXGroup;
children = (
0411CEEC2D15154A00644D35 /* YHGCWorkListHasWorkExperienceTableViewCell.swift */,
0411CEEE2D151E5F00644D35 /* YHGCWorkListHasDocTableViewCell.swift */,
);
path = V;
sourceTree = "<group>";
};
0411CEE52D15065500644D35 /* VM */ = {
isa = PBXGroup;
children = (
0411CEEA2D1512AF00644D35 /* YHGCWorkItemListViewModel.swift */,
0411CEF22D153FB700644D35 /* YHGCWorkExperienceViewModel.swift */,
);
path = VM;
sourceTree = "<group>";
};
0411CEE62D15065C00644D35 /* C */ = {
isa = PBXGroup;
children = (
0411CEE82D15123B00644D35 /* YHGCWorkExperienceListViewController.swift */,
0411CEF02D153F6300644D35 /* YHGCWorkExperienceViewController.swift */,
);
path = C;
sourceTree = "<group>";
};
0411CEE72D15066200644D35 /* M */ = {
isa = PBXGroup;
children = (
0411CEF42D1548AF00644D35 /* YHGCWorkModel.swift */,
0411CEF62D15525400644D35 /* YHGCWorkExperienceModel.swift */,
);
path = M;
sourceTree = "<group>";
};
045C0A182D12CA5E00BD2DC0 /* C */ = { 045C0A182D12CA5E00BD2DC0 /* C */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -5940,6 +6003,7 @@ ...@@ -5940,6 +6003,7 @@
04AE200D2D12CFAF00891D24 /* ServiceProcess(我的信息流程) */ = { 04AE200D2D12CFAF00891D24 /* ServiceProcess(我的信息流程) */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
0411CEE32D15063F00644D35 /* WorkExperience(工作经验) */,
0411CED92D14000D00644D35 /* MainApplicantInformation(主申请人信息) */, 0411CED92D14000D00644D35 /* MainApplicantInformation(主申请人信息) */,
04AE20382D13BAC400891D24 /* Education&Qualification(学历专业资格填写) */, 04AE20382D13BAC400891D24 /* Education&Qualification(学历专业资格填写) */,
04AE201C2D13AF1800891D24 /* FamilyMember(家庭成员) */, 04AE201C2D13AF1800891D24 /* FamilyMember(家庭成员) */,
...@@ -6503,6 +6567,7 @@ ...@@ -6503,6 +6567,7 @@
045C10362D12CA5F00BD2DC0 /* UIImage+Extension.swift in Sources */, 045C10362D12CA5F00BD2DC0 /* UIImage+Extension.swift in Sources */,
045C10372D12CA5F00BD2DC0 /* YHPreviewInfoCell.swift in Sources */, 045C10372D12CA5F00BD2DC0 /* YHPreviewInfoCell.swift in Sources */,
045C10382D12CA5F00BD2DC0 /* YHHKVisaRenewalPaymentViewModel.swift in Sources */, 045C10382D12CA5F00BD2DC0 /* YHHKVisaRenewalPaymentViewModel.swift in Sources */,
0411CEEB2D1512AF00644D35 /* YHGCWorkItemListViewModel.swift in Sources */,
045C10392D12CA5F00BD2DC0 /* YHHKMemberModel.swift in Sources */, 045C10392D12CA5F00BD2DC0 /* YHHKMemberModel.swift in Sources */,
045C103A2D12CA5F00BD2DC0 /* YHCertificateUploadContentListVC.swift in Sources */, 045C103A2D12CA5F00BD2DC0 /* YHCertificateUploadContentListVC.swift in Sources */,
045C103B2D12CA5F00BD2DC0 /* YHOtherYesOrNoItemView.swift in Sources */, 045C103B2D12CA5F00BD2DC0 /* YHOtherYesOrNoItemView.swift in Sources */,
...@@ -6598,6 +6663,7 @@ ...@@ -6598,6 +6663,7 @@
045C108A2D12CA5F00BD2DC0 /* YHPreviewInfoSectionHeaderCell.swift in Sources */, 045C108A2D12CA5F00BD2DC0 /* YHPreviewInfoSectionHeaderCell.swift in Sources */,
045C108B2D12CA5F00BD2DC0 /* YHSmsCodeInputView.swift in Sources */, 045C108B2D12CA5F00BD2DC0 /* YHSmsCodeInputView.swift in Sources */,
045C108C2D12CA5F00BD2DC0 /* YHActivityDetailCell0.swift in Sources */, 045C108C2D12CA5F00BD2DC0 /* YHActivityDetailCell0.swift in Sources */,
0411CEF12D153F6300644D35 /* YHGCWorkExperienceViewController.swift in Sources */,
045C108D2D12CA5F00BD2DC0 /* YHSelectApplicantCell.swift in Sources */, 045C108D2D12CA5F00BD2DC0 /* YHSelectApplicantCell.swift in Sources */,
045C108E2D12CA5F00BD2DC0 /* YHNameCardViewController.swift in Sources */, 045C108E2D12CA5F00BD2DC0 /* YHNameCardViewController.swift in Sources */,
045C108F2D12CA5F00BD2DC0 /* YHFamilyMemberInfoListVC.swift in Sources */, 045C108F2D12CA5F00BD2DC0 /* YHFamilyMemberInfoListVC.swift in Sources */,
...@@ -6812,6 +6878,7 @@ ...@@ -6812,6 +6878,7 @@
04AE203F2D13C36500891D24 /* YHGCQualificationDetailVC.swift in Sources */, 04AE203F2D13C36500891D24 /* YHGCQualificationDetailVC.swift in Sources */,
045C115E2D12CA5F00BD2DC0 /* YHInvitationWithGiftsSelectItemView.swift in Sources */, 045C115E2D12CA5F00BD2DC0 /* YHInvitationWithGiftsSelectItemView.swift in Sources */,
045C115F2D12CA5F00BD2DC0 /* YHAITabIndicatorView.swift in Sources */, 045C115F2D12CA5F00BD2DC0 /* YHAITabIndicatorView.swift in Sources */,
0411CEEF2D151E5F00644D35 /* YHGCWorkListHasDocTableViewCell.swift in Sources */,
045C11602D12CA5F00BD2DC0 /* YHHKRecordsFamilyMembers.swift in Sources */, 045C11602D12CA5F00BD2DC0 /* YHHKRecordsFamilyMembers.swift in Sources */,
045C11612D12CA5F00BD2DC0 /* YHCNIDCardModel.swift in Sources */, 045C11612D12CA5F00BD2DC0 /* YHCNIDCardModel.swift in Sources */,
045C11622D12CA5F00BD2DC0 /* YHPrincipleUploadModel.swift in Sources */, 045C11622D12CA5F00BD2DC0 /* YHPrincipleUploadModel.swift in Sources */,
...@@ -7002,6 +7069,7 @@ ...@@ -7002,6 +7069,7 @@
045C121B2D12CA5F00BD2DC0 /* YHActivityTwoItemView.swift in Sources */, 045C121B2D12CA5F00BD2DC0 /* YHActivityTwoItemView.swift in Sources */,
045C121C2D12CA5F00BD2DC0 /* YHHKImmigrationRecordsViewModel.swift in Sources */, 045C121C2D12CA5F00BD2DC0 /* YHHKImmigrationRecordsViewModel.swift in Sources */,
045C121D2D12CA5F00BD2DC0 /* YHHKRequiredItemView.swift in Sources */, 045C121D2D12CA5F00BD2DC0 /* YHHKRequiredItemView.swift in Sources */,
0411CEF72D15525400644D35 /* YHGCWorkExperienceModel.swift in Sources */,
045C121E2D12CA5F00BD2DC0 /* YHMySettingCell.swift in Sources */, 045C121E2D12CA5F00BD2DC0 /* YHMySettingCell.swift in Sources */,
045C121F2D12CA5F00BD2DC0 /* YHCertificateTemplateSheetView.swift in Sources */, 045C121F2D12CA5F00BD2DC0 /* YHCertificateTemplateSheetView.swift in Sources */,
045C12202D12CA5F00BD2DC0 /* YHResignMaterialListVC.swift in Sources */, 045C12202D12CA5F00BD2DC0 /* YHResignMaterialListVC.swift in Sources */,
...@@ -7235,6 +7303,7 @@ ...@@ -7235,6 +7303,7 @@
045C13022D12CA5F00BD2DC0 /* YHPictureReviewManager.swift in Sources */, 045C13022D12CA5F00BD2DC0 /* YHPictureReviewManager.swift in Sources */,
045C13032D12CA5F00BD2DC0 /* YHBasicInfoFillViewController.swift in Sources */, 045C13032D12CA5F00BD2DC0 /* YHBasicInfoFillViewController.swift in Sources */,
045C13042D12CA5F00BD2DC0 /* YHImproveSchemeTemplateListCell.swift in Sources */, 045C13042D12CA5F00BD2DC0 /* YHImproveSchemeTemplateListCell.swift in Sources */,
0411CEE92D15123B00644D35 /* YHGCWorkExperienceListViewController.swift in Sources */,
04AE202E2D13B5EB00891D24 /* YHGCCertificateUploadVC.swift in Sources */, 04AE202E2D13B5EB00891D24 /* YHGCCertificateUploadVC.swift in Sources */,
045C13052D12CA5F00BD2DC0 /* YHActivityModel.swift in Sources */, 045C13052D12CA5F00BD2DC0 /* YHActivityModel.swift in Sources */,
045C13062D12CA5F00BD2DC0 /* YHInterestTopicLayout.swift in Sources */, 045C13062D12CA5F00BD2DC0 /* YHInterestTopicLayout.swift in Sources */,
...@@ -7335,6 +7404,8 @@ ...@@ -7335,6 +7404,8 @@
045C13652D12CA5F00BD2DC0 /* YHLookResignResultStateThreeTableViewCell.swift in Sources */, 045C13652D12CA5F00BD2DC0 /* YHLookResignResultStateThreeTableViewCell.swift in Sources */,
045C13662D12CA5F00BD2DC0 /* YHFormItemExpireDateCell.swift in Sources */, 045C13662D12CA5F00BD2DC0 /* YHFormItemExpireDateCell.swift in Sources */,
045C13672D12CA5F00BD2DC0 /* YHSmallWhiteNoteTemplateView.swift in Sources */, 045C13672D12CA5F00BD2DC0 /* YHSmallWhiteNoteTemplateView.swift in Sources */,
0411CEED2D15154B00644D35 /* YHGCWorkListHasWorkExperienceTableViewCell.swift in Sources */,
0411CEF52D1548AF00644D35 /* YHGCWorkModel.swift in Sources */,
045C13682D12CA5F00BD2DC0 /* YHResignUploadTravelPassportViewController.swift in Sources */, 045C13682D12CA5F00BD2DC0 /* YHResignUploadTravelPassportViewController.swift in Sources */,
045C13692D12CA5F00BD2DC0 /* YHTravelDocsPreparationListCell.swift in Sources */, 045C13692D12CA5F00BD2DC0 /* YHTravelDocsPreparationListCell.swift in Sources */,
045C136A2D12CA5F00BD2DC0 /* YHCertificateFilterItemCell.swift in Sources */, 045C136A2D12CA5F00BD2DC0 /* YHCertificateFilterItemCell.swift in Sources */,
...@@ -7381,6 +7452,7 @@ ...@@ -7381,6 +7452,7 @@
045C13902D12CA5F00BD2DC0 /* YHAIEvaluationWebView.swift in Sources */, 045C13902D12CA5F00BD2DC0 /* YHAIEvaluationWebView.swift in Sources */,
045C13912D12CA5F00BD2DC0 /* YHVisaRenewalPayMethodUrlCell.swift in Sources */, 045C13912D12CA5F00BD2DC0 /* YHVisaRenewalPayMethodUrlCell.swift in Sources */,
045C13922D12CA5F00BD2DC0 /* YHHKVisaRenewalPaymentList.swift in Sources */, 045C13922D12CA5F00BD2DC0 /* YHHKVisaRenewalPaymentList.swift in Sources */,
0411CEF32D153FB700644D35 /* YHGCWorkExperienceViewModel.swift in Sources */,
045C13932D12CA5F00BD2DC0 /* YHOtherInfoFillViewController.swift in Sources */, 045C13932D12CA5F00BD2DC0 /* YHOtherInfoFillViewController.swift in Sources */,
045C13942D12CA5F00BD2DC0 /* YHSelectHKPlaceListView.swift in Sources */, 045C13942D12CA5F00BD2DC0 /* YHSelectHKPlaceListView.swift in Sources */,
045C13952D12CA5F00BD2DC0 /* YHResignUploadDocListViewModel.swift in Sources */, 045C13952D12CA5F00BD2DC0 /* YHResignUploadDocListViewModel.swift in Sources */,
......
...@@ -255,7 +255,7 @@ class YHServiceOrderListView: YHBaseViewController { ...@@ -255,7 +255,7 @@ class YHServiceOrderListView: YHBaseViewController {
gotoResignCertificateListVC(orderID: orderId) gotoResignCertificateListVC(orderID: orderId)
} else if type == 201 { } else if type == 201 {
//高才我的信息 //高才我的信息
let vc = YHGCMainApplicantInformationViewController() let vc = YHGCWorkExperienceListViewController()
vc.orderId = orderId vc.orderId = orderId
UIViewController.current?.navigationController?.pushViewController(vc) UIViewController.current?.navigationController?.pushViewController(vc)
} else if type == 202 { } else if type == 202 {
......
...@@ -30,6 +30,7 @@ class YHWorkItemListModel: SmartCodable { ...@@ -30,6 +30,7 @@ class YHWorkItemListModel: SmartCodable {
var entry_time: String? var entry_time: String?
var departure_time: String? var departure_time: String?
var vacant_num: Int? var vacant_num: Int?
var income: String? //用于高A 收入金额
required init() { required init() {
} }
} }
//
// YHGCWorkExperienceListViewController.swift
// galaxy
//
// Created by EDY on 2024/12/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHGCWorkExperienceListViewController: YHBaseViewController {
var bottomView: YHBottomNextView!
var tableView: UITableView!
var dataSource: [YHWorkItemListModel]?
var viewModel: YHGCWorkItemListViewModel!
var isMore: Bool = false
var orderId: Int = 0
var showPrompt: Bool = false
var baseData: YHSectionWorkExperienceModel = YHSectionWorkExperienceModel()
var docData: YHSectionWorkExperienceModel = YHSectionWorkExperienceModel()
override func viewDidLoad() {
super.viewDidLoad()
viewModel = YHGCWorkItemListViewModel()
gk_navTitle = "工作经验信息填写"
gk_navBackgroundColor = .white
gk_navBarAlpha = 1.0
setView()
// Do any additional setup after loading the view.
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
getData()
}
func getData() {
baseData = viewModel.getBaseDataSource(showPrompt)
docData = viewModel.getDocDataSource(showPrompt)
viewModel?.requestWorkList("\(orderId)", callBackBlock: {[weak self] success, error in
guard let self = self else { return }
self.dataSource = success
self.tableView.reloadData()
})
}
func updateDataSource() {
self.tableView.reloadData()
}
func setView() {
tableView = {
let tableView = UITableView(frame:.zero, style:.plain)
if #available(iOS 11.0, *) {
tableView.contentInsetAdjustmentBehavior = .never
}
tableView.backgroundColor = .clear
tableView.separatorStyle = .none
tableView.delegate = self
tableView.dataSource = self
tableView.register(cellWithClass: YHWorkExperienceListTableViewCell.self)
tableView.register(cellWithClass: YHGCWorkListHasWorkExperienceTableViewCell.self)
tableView.register(cellWithClass: YHGCWorkListHasDocTableViewCell.self)
return tableView
}()
view.addSubview(tableView)
tableView.snp.makeConstraints { make in
make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
make.bottom.equalTo(-k_Height_safeAreaInsetsBottom() - 64)
make.left.right.bottom.equalTo(view)
}
bottomView = {
let bottom = YHBottomNextView()
bottom.nextButton.setTitle("提交", for: .normal)
bottom.nextblock = { [weak self] in
guard let self = self else { return }
guard let dataSource = dataSource else { return }
if dataSource.count == 0 {
YHHUD.flash(message: "至少需要有一条工作经验")
return
}
for item in dataSource {
if item.vacant_num ?? 0 > 0 {
showPrompt = true
tableView.reloadData()
YHHUD.flash(message: "您的工作经验未全部填写完成,请先填写完成再提交")
return
}
}
if (self.viewModel?.mainModel.has_work_time_empty == 1 && self.viewModel?.mainModel.work_time_empty_remark.count == 0) || (self.viewModel?.mainModel.has_work_time_overlap == 1 && self.viewModel?.mainModel.work_time_overlap_remark.count == 0){
YHHUD.flash(message: "您的工作经验未全部填写完成,请先填写完成再提交")
return
}
viewModel?.requestWorkTimeRemarkWorkExperience("\(orderId)", 1, callBackBlock: {[weak self] success, error in
guard let self = self else { return }
if success ?? false {
self.navigationController?.popViewController(animated: true)
}
})
}
bottom.saveBlock = { [weak self] in
guard let self = self else { return }
viewModel?.requestWorkTimeRemarkWorkExperience("\(orderId)", callBackBlock: {[weak self] success, error in
guard let self = self else { return }
})
}
return bottom
}()
view.addSubview(bottomView)
bottomView.snp.makeConstraints { make in
make.left.right.bottom.equalTo(view)
make.height.equalTo(k_Height_safeAreaInsetsBottom() + 64)
}
bottomView.layoutIfNeeded()
bottomView.nextButton.addYinHeGradualLayer()
}
func showDeleteAlert(_ model: YHWorkItemListModel) {
YHCommonAlertView.show("", "您确定要删除这份工作经验吗?", "取消", "确认") {
self.viewModel?.requestDeleteWorkExperience(self.orderId, "\(model.id ?? 0)", callBackBlock: {[weak self] success, error in
guard let self = self else { return }
self.getData()
})
}
}
}
extension YHGCWorkExperienceListViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCell(withClass: YHGCWorkListHasWorkExperienceTableViewCell.self)
cell.dataSource = baseData
cell.workExperienceBlock = {[weak self] model in
guard let self = self else { return }
// self.viewModel.updateModel(model)
// let id = model.id
// if id != .id1 {
// self.updateDataSource()
// }
}
return cell
} else if indexPath.row == 1 {
let cell = tableView.dequeueReusableCell(withClass: YHWorkExperienceListTableViewCell.self)
cell.showPrompt = showPrompt
cell.dataSource = dataSource
if isMore {
cell.more()
} else {
cell.cannal()
}
cell.clickBlock = {[weak self] model in
guard let self = self else { return }
let firstModel = self.dataSource?.first
let vc = YHGCWorkExperienceViewController()
vc.workID = model.id ?? 0
vc.orderID = self.orderId
self.navigationController?.pushViewController(vc, animated: true)
}
cell.deleteBlock = {[weak self] model in
guard let self = self else { return }
self.showDeleteAlert(model)
}
cell.isMoreBlock = {[weak self] isMore in
guard let self = self else { return }
self.isMore = isMore
}
cell.newWorkBlock = {[weak self] in
guard let self = self else { return }
if self.dataSource?.count == 10 {
YHHUD.flash(message: "新增工作经历不能超过10条")
} else {
self.viewModel?.requestCreateNewWork(self.orderId, callBackBlock: {[weak self] success, error in
guard let self = self else { return }
if success != 0 {
let vc = YHGCWorkExperienceViewController()
vc.orderID = self.orderId
vc.workID = success
self.navigationController?.pushViewController(vc, animated: true)
}
})
}
}
cell.backgroundColor = .clear
cell.contentView.backgroundColor = .clear
return cell
} else if indexPath.row == 2 {
let cell = tableView.dequeueReusableCell(withClass: YHGCWorkListHasDocTableViewCell.self)
cell.dataSource = docData
cell.workExperienceBlock = {[weak self] model in
guard let self = self else { return }
// self.viewModel.updateModel(model)
// let id = model.id
// if id != .id1 {
// self.updateDataSource()
// }
}
return cell
}
return UITableViewCell()
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == 0 {
let array = baseData.models ?? []
var h = 0
for i in 0..<array.count {
let data = array[i]
let message = data.message ?? ""
let isShow = data.isShowPrompts ?? false
h = h + 52
if isShow && message.count == 0 {
h = h + 20
}
}
return CGFloat(h + 52 + 14)
}
if indexPath.row == 2 {
let array = docData.models ?? []
var h = 0
for i in 0..<array.count {
let data = array[i]
let message = data.message ?? ""
let isShow = data.isShowPrompts ?? false
h = h + 52
if isShow && message.count == 0 {
h = h + 20
}
}
return CGFloat(h + 52 + 96 + 14)
}
_ = dataSource?.count ?? 0
var height = 23 + 154
if let data = dataSource {
for item in data {
if item.company_name == "" {
height = height + 76
} else {
let text = item.company_name // 要显示的文本内容
let font = UIFont.PFSC_B(ofSize: 14) // 字体大小
let maxWidth = 143.0 // 最大宽度限制
// 创建NSAttributedString对象并设置属性
let attributes = [NSAttributedString.Key.font : font] as [NSAttributedString.Key : Any]
_ = NSMutableAttributedString(string: text ?? "", attributes: attributes)
// 根据指定的最大宽度和字体大小计算文本的高度
let size = (text! as NSString).boundingRect(with: CGSize(width: maxWidth, height: .greatestFiniteMagnitude), options: .usesLineFragmentOrigin, attributes: attributes, context: nil).size
if size.height > 20 {
height = height + 96
} else {
height = height + 76
}
}
if showPrompt && item.vacant_num != 0 {
height = height + 20
}
}
}
return CGFloat(height)
}
}
//
// YHGCWorkExperienceViewController.swift
// galaxy
//
// Created by EDY on 2024/12/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import AttributedString
class YHGCWorkExperienceViewController: YHBaseViewController {
var bottomView: YHBottomNextView!
var tableView: UITableView!
var viewModel: YHGCWorkExperienceViewModel!
var baseDataSource: [YHSectionWorkExperienceModel]?
var introductionDataSource: [YHWorkExperienceProjectModel]?
var fileDataSource: [YHWorkExperienceFileModel]?
var workID: Int = 0
var orderID: Int = 0
var positionId: Int = 0
var isMore: Bool = false
var isShowPrompt: Bool = false
var isShowMessageSelect: Bool = true
var isKeyboardShow: Bool = false
var selectReasonIndex: Int = 5
var selectEditItem = YHWorkExperienceFileModel()
override func viewDidLoad() {
super.viewDidLoad()
viewModel = YHGCWorkExperienceViewModel()
gk_navTitle = "工作经验信息填写"
gk_navBackgroundColor = .white
gk_navBarAlpha = 1.0
setView()
getData()
}
func getData() {
viewModel.requestWorkPositionDetail(workID) {[weak self] success, error in
guard let self = self else { return }
if success ?? false {
updateDataSource()
} else {
self.viewModel.position.order_id = orderID
updateDataSource()
}
}
}
func updateDataSource() {
bottomView.nextButton.setTitle("提交", for: .normal)
self.baseDataSource = self.viewModel.getBaseDataSource(false)
self.tableView.reloadData()
}
func setView() {
tableView = {
let tableView = UITableView(frame: .zero, style: .grouped)
if #available(iOS 11.0, *) {
tableView.contentInsetAdjustmentBehavior = .never
}
tableView.sectionHeaderHeight = 16
tableView.backgroundColor = .clear
tableView.separatorStyle = .none
tableView.delegate = self
tableView.dataSource = self
tableView.register(cellWithClass: YHWorkExperiencePositionListTableViewCell.self)
tableView.register(cellWithClass: YHWorkExperiencePositionReasonTableViewCell.self)
return tableView
}()
view.addSubview(tableView)
tableView.snp.makeConstraints { make in
make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
make.bottom.equalTo(-k_Height_safeAreaInsetsBottom() - 64)
make.left.right.bottom.equalTo(view)
}
bottomView = {
let bottom = YHBottomNextView()
bottom.nextblock = { [weak self] in
bottom.nextButton.isEnabled = false
guard let self = self else { return }
if self.viewModel.isCanNext() {
self.viewModel.saveWorkPosition(callBackBlock: {[weak self] flag, error in
guard let self = self else { return }
bottom.nextButton.isEnabled = true
if let error = error {
YHHUD.flash(message: error.errorMsg )
} else {
YHHUD.hideFlashMessage()
YHHUD.flash(message: "提交成功")
self.navigationController?.popViewController()
}
})
} else {
bottom.nextButton.isEnabled = true
self.isShowPrompt = true
self.updateDataSource()
YHHUD.flash(message: "您还有信息未填写")
}
}
bottom.saveBlock = { [weak self] in
guard let self = self else { return }
self.viewModel.saveWorkPosition(callBackBlock: {[weak self] flag, error in
guard let _ = self else { return }
if let error = error {
YHHUD.flash(message: error.errorMsg )
} else {
YHHUD.flash(message: "保存成功")
}
})
}
return bottom
}()
view.addSubview(bottomView)
bottomView.snp.makeConstraints { make in
make.left.right.bottom.equalTo(view)
make.height.equalTo(k_Height_safeAreaInsetsBottom() + 64)
}
bottomView.layoutIfNeeded()
bottomView.nextButton.addYinHeGradualLayer()
}
}
extension YHGCWorkExperienceViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withClass: YHWorkExperiencePositionListTableViewCell.self)
cell.dataSource = baseDataSource?[indexPath.row]
cell.workExperienceBlock = {[weak self] model in
guard let self = self else { return }
self.viewModel.updateModel(model)
let id = model.id
if id != .id1 && id != .id2 && id != .id6 && id != .id10 && id != .id11 {
self.updateDataSource()
}
}
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == 0 {
let array = baseDataSource?[indexPath.row].models ?? []
var h = 0
for i in 0..<array.count {
let data = array[i]
let message = data.message ?? ""
let isShow = data.isShowPrompts ?? false
if data.id == .id7 {
h = h + 72
} else {
h = h + 52
}
if isShow && message.count == 0 {
h = h + 20
}
}
return CGFloat(h + 52 + 14)
} else {
return UITableView.automaticDimension
}
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = UIView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: 7))
return view
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 16
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView()
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 0.01
}
}
//
// YHGCWorkExperienceModel.swift
// galaxy
//
// Created by EDY on 2024/12/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import SmartCodable
class YHGCWorkExperienceModel: SmartCodable {
var id: Int = 0
var order_id: Int = 0
var company_name: String = ""
var entry_time: String = ""
var departure_time: String = ""
var location_aboard: Int = 0
var position: String = ""
var has_work_certificate: Int = 0
var company_type: String = ""
var company_type_other: String = ""
var location: YHAddress = YHAddress()
required init() {
}
}
//
// YHGCWorkModel.swift
// galaxy
//
// Created by EDY on 2024/12/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import SmartCodable
class YHGCWorkModel: SmartCodable {
var count: Int?
var has_work_time_overlap: Int = 0
var has_work_time_empty: Int = 0
var work_time_overlap_remark: String = "" //重叠期
var work_time_empty_remark: String = "" //空窗期
var agree_work_doc_url: String = ""
var has_company_consent: Int = 0 //高才使用 在职公司是否可以提供赴港同意书 0 未知 1 是 2 否
var consent_work_id: Int = 0 //高才使用 可以提供赴港同意书的工作经历id
var has_center_consent: Int = 0 //高才使用 人才中心是否可以提供赴港同意书 0 未知 1 是 2 否
var why_work_time_overlap: String = "" //高才使用 关于工作时间重叠的说明
var has_work_experience: Int = 0 //高BC使用 是否有工作经历 0.未知 1.是 2.否
var is_consent_required: Int = 0 //高才使用 是否必须提供赴港同意书 0-否 1-是
var list: [YHWorkItemListModel]?
required init() {
}
}
//
// YHGCWorkListHasDocTableViewCell.swift
// galaxy
//
// Created by EDY on 2024/12/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import AttributedString
class YHGCWorkListHasDocTableViewCell: UITableViewCell {
typealias WorkExperienceBlock = (_ model: YHWorkExperienceModel) -> ()
var workExperienceBlock: WorkExperienceBlock?
var centerView: UIView!
var titleLabel: UILabel!
var messageLabel: UILabel!
var mainItemView: UIView!
var workId: Int = 0
var orderId: Int = 0
var dataSource: YHSectionWorkExperienceModel?{
didSet {
updateAllViews()
}
}
var selectDataSource: [ASAttributedString]?
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
selectionStyle = .none
setupUI()
}
func setupUI() {
backgroundColor = .clear
centerView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6
return view
}()
contentView.addSubview(centerView)
centerView.snp.makeConstraints { make in
make.left.equalTo(16)
make.right.equalTo(-16)
make.top.equalTo(7)
make.bottom.equalTo(-7)
}
titleLabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 17)
label.textColor = UIColor.mainTextColor
return label
}()
centerView.addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(16)
make.height.equalTo(20)
make.right.equalTo(-18)
}
let line = UIView()
line.backgroundColor = UIColor.separatorColor
centerView.addSubview(line)
line.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(52)
make.height.equalTo(1)
make.right.equalTo(-18)
}
messageLabel = {
let label = UILabel()
label.numberOfLines = 0
let a: ASAttributedString = .init("备注:赴港同意书为目前在职公司盖章提供,若目前未就职于任何公司,则由档案所在地人才中心盖章提供,", .font(UIFont.PFSC_R(ofSize: 13)),.foreground(UIColor(hex: 0x8893a2)))
let b: ASAttributedString = .init("查看示例模板", .font(UIFont.PFSC_R(ofSize: 13)),.foreground(UIColor.brandMainColor),.underline(.single),.action {
//跳转模版
})
label.attributed.text = a + b
return label
}()
centerView.addSubview(messageLabel)
messageLabel.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(68)
make.right.equalTo(-18)
}
mainItemView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6
return view
}()
centerView.addSubview(mainItemView)
mainItemView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.top.equalTo(132)
}
}
func updateAllViews() {
titleLabel.text = dataSource?.title
mainItemView.removeSubviews()
var y = 0
for i in 0 ..< (dataSource?.models?.count ?? 0) {
if y != 0 {
let line = UIView()
line.backgroundColor = UIColor.separatorColor
mainItemView.addSubview(line)
line.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(y)
make.height.equalTo(1)
make.right.equalTo(-18)
}
}
y = y + 1
let data = dataSource?.models?[i]
let isShow = data?.isShowPrompts ?? false
let message = data?.message ?? ""
var h = 51
if isShow && message.count == 0 {
h = h + 20
}
let itemView = YHWorkExperienceItemView()
itemView.dataSource = data
itemView.workId = workId
itemView.orderId = orderId
itemView.block = {[weak self] model in
guard let self = self else { return }
if let block = self.workExperienceBlock {
block(model)
}
}
mainItemView.addSubview(itemView)
itemView.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(y)
make.height.equalTo(h)
make.right.equalTo(-18)
}
y = y + h
}
}
}
//
// YHGCWorkListHasWorkExperienceTableViewCell.swift
// galaxy
//
// Created by EDY on 2024/12/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import AttributedString
class YHGCWorkListHasWorkExperienceTableViewCell: UITableViewCell {
typealias WorkExperienceBlock = (_ model: YHWorkExperienceModel) -> ()
var workExperienceBlock: WorkExperienceBlock?
var centerView: UIView!
var titleLabel: UILabel!
var mainItemView: UIView!
var workId: Int = 0
var orderId: Int = 0
var dataSource: YHSectionWorkExperienceModel?{
didSet {
updateAllViews()
}
}
var selectDataSource: [ASAttributedString]?
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
selectionStyle = .none
setupUI()
}
func setupUI() {
backgroundColor = .clear
centerView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6
return view
}()
contentView.addSubview(centerView)
centerView.snp.makeConstraints { make in
make.left.equalTo(16)
make.right.equalTo(-16)
make.top.equalTo(7)
make.bottom.equalTo(-7)
}
titleLabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 17)
label.textColor = UIColor.mainTextColor
return label
}()
centerView.addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(16)
make.height.equalTo(20)
make.right.equalTo(-18)
}
mainItemView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6
return view
}()
centerView.addSubview(mainItemView)
mainItemView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.top.equalTo(52)
}
}
func updateAllViews() {
titleLabel.text = dataSource?.title
mainItemView.removeSubviews()
var y = 0
for i in 0 ..< (dataSource?.models?.count ?? 0) {
let line = UIView()
line.backgroundColor = UIColor.separatorColor
mainItemView.addSubview(line)
line.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(y)
make.height.equalTo(1)
make.right.equalTo(-18)
}
y = y + 1
let data = dataSource?.models?[i]
let isShow = data?.isShowPrompts ?? false
let message = data?.message ?? ""
var h = 51
if isShow && message.count == 0 {
h = h + 20
}
let itemView = YHWorkExperienceItemView()
itemView.dataSource = data
itemView.workId = workId
itemView.orderId = orderId
itemView.block = {[weak self] model in
guard let self = self else { return }
if let block = self.workExperienceBlock {
block(model)
}
}
mainItemView.addSubview(itemView)
itemView.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(y)
make.height.equalTo(h)
make.right.equalTo(-18)
}
y = y + h
}
}
}
//
// YHGCWorkExperienceViewModel.swift
// galaxy
//
// Created by EDY on 2024/12/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHGCWorkExperienceViewModel: YHBaseViewModel {
var position: YHGCWorkExperienceModel = YHGCWorkExperienceModel()
override init() {
super.init()
}
func getBaseDataSource(_ isShowPrompt: Bool) -> [YHSectionWorkExperienceModel] {
let item = YHWorkExperienceModel(id: .id1, isNeed: true, title: "用人单位", isUserKeyBoard: false, prompts: "请输入", message: position.company_name, type: .unit, isShowPrompts: isShowPrompt, alertMessage:"请输入")
let item1 = YHWorkExperienceModel(id: .id2, isNeed: true, title: "工作国家/地区", isUserKeyBoard: false, prompts: "请选择", message: position.location.country, type: .country, isShowPrompts: isShowPrompt, alertMessage:"请选择工作国家/地区")
var string = ""
let array = position.location.area
for item in array {
if string.count != 0 {
string = string + "/" + item
} else {
string = string + item
}
}
let item2 = YHWorkExperienceModel(id: .id3, isNeed: true, title: "工作城市", isUserKeyBoard: false, prompts: "请选择", message: string, type: .address, isShowPrompts: isShowPrompt, alertMessage:"请选择工作国家/地区")
let item22 = YHWorkExperienceModel(id: .id4, isNeed: true, title: "工作城市", isUserKeyBoard: true, prompts: "请输入", message: position.location.foreign, isShowPrompts: isShowPrompt, alertMessage:"请输入工作国家/地区")
let item3 = YHWorkExperienceModel(id: .id5, isNeed: true, title: "职责", isUserKeyBoard: true, prompts: "请输入", message: position.position, isShowPrompts: isShowPrompt, alertMessage:"请输入")
let item4 = YHWorkExperienceModel(id: .id23, isNeed: true, title: "开始就职年月", isUserKeyBoard: false, prompts: "请选择", message: position.entry_time, type: .time)
let item5 = YHWorkExperienceModel(id: .id24, isNeed: true, title: "结束就职年月", isUserKeyBoard: false, prompts: "请选择", message: position.departure_time, type: .time)
let item6 = YHWorkExperienceModel(id: .id6, isNeed: true, title: "工作证明是否可以提供", isUserKeyBoard: false, prompts: "", message: "\(position.has_work_certificate)", leftButtonString: "是", rightButtonString: "否")
let item7 = YHWorkExperienceModel(id: .id7, isNeed: true, title: "职业界别", isUserKeyBoard: false, prompts: "请选择", message: position.company_type, type: .field, isShowPrompts: isShowPrompt, alertMessage:"请选择")
let item77 = YHWorkExperienceModel(id: .id8, isNeed: true, title: "具体经验领域", isUserKeyBoard: true, prompts: "请输入", message: position.company_type_other, type: .country, isShowPrompts: isShowPrompt, alertMessage:"请输入")
let addressCountry = position.location.country
let company_type = position.company_type
var section = YHSectionWorkExperienceModel()
if addressCountry.contains("中国") {
if company_type.contains("其他") {
section = YHSectionWorkExperienceModel(title: "企业信息", models: [item, item1, item2, item3, item4, item5, item6, item7, item77])
} else {
section = YHSectionWorkExperienceModel(title: "企业信息", models: [item, item1, item2, item3, item4, item5, item6, item7])
}
} else {
if company_type.contains("其他") {
section = YHSectionWorkExperienceModel(title: "企业信息", models: [item, item1, item22, item3, item4, item5, item6, item7, item77])
} else {
section = YHSectionWorkExperienceModel(title: "企业信息", models: [item, item1, item22, item3, item4, item5, item6, item7])
}
}
return [section]
}
func updateModel(_ item: YHWorkExperienceModel) {
guard let type = item.id else { return }
switch type {
case .id1: // 用人单位
position.company_name = item.message ?? ""
case .id2: // 用人单位性质
position.location.country = item.message ?? ""
case .id23: // 入职年月
let format = DateFormatter()
format.dateFormat = "yyyy-MM"
if let selectDate = format.date(from:item.message ?? "") {
let selectTimeInterval = selectDate.timeIntervalSince1970
let currentTimeInterval = Date().timeIntervalSince1970
if selectTimeInterval > currentTimeInterval {
YHHUD.flash(message: "开始就职年月不能晚于当前日期")
} else {
guard let endDate = format.date(from: position.departure_time) else {
position.entry_time = item.message ?? ""
return
}
let endTimeInterval = endDate.timeIntervalSince1970
if selectTimeInterval > endTimeInterval {
YHHUD.flash(message: "开始就职年月不能晚于结束就职年月")
} else {
position.entry_time = item.message ?? ""
}
}
}
case .id24: // 离职年月
let format = DateFormatter()
format.dateFormat = "yyyy-MM"
if let selectDate = format.date(from:item.message ?? ""), let startDate = format.date(from:position.entry_time) {
let selectTimeInterval = selectDate.timeIntervalSince1970
let startTimeInterval = startDate.timeIntervalSince1970
if selectTimeInterval < startTimeInterval {
YHHUD.flash(message: "结束就职年月不能早于开始就职年月")
} else {
position.departure_time = item.message ?? ""
}
} else {
position.departure_time = item.message ?? ""
}
case .id3:
position.location.area = item.value ?? []
case .id4:
position.location.foreign = item.message ?? ""
case .id5:
position.position = item.message ?? ""
case .id6:
position.has_work_certificate = Int(item.value?.first ?? "0") ?? 0
case .id7:
position.company_type = item.message ?? ""
case .id8:
position.company_type_other = item.message ?? ""
default: break
}
}
func isCanNext() -> Bool {
let company_name = position.company_name
let country = position.location.country
let entry_time = position.entry_time
let departure_time = position.departure_time
let area = position.location.area
let foreign = position.location.foreign
let has_work_certificate = position.has_work_certificate
let company_type = position.company_type
let company_type_other = position.company_type_other
guard company_name.count > 0 else { return false }
guard country.count > 0 else { return false }
guard entry_time.count > 0 else { return false }
guard departure_time.count > 0 else { return false }
guard has_work_certificate > 0 else { return false }
guard country.count > 0 else { return false }
if company_type == "其他" {
guard company_type_other.count > 0 else { return false }
}
if country.contains("中国") {
guard area.count > 0 else { return false }
} else {
guard foreign.count > 0 else { return false }
}
return true
}
func requestWorkPositionDetail(_ workId: Int, callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) {
let param: [String: Any] = ["work_id": workId]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.gcworkDetail
let _ = YHNetRequest.getRequest(url: strUrl, params: param) { [weak self] json, code 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?)->()) {
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
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code 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)
}
}
}
//
// YHGCWorkItemListViewModel.swift
// galaxy
//
// Created by EDY on 2024/12/20.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHGCWorkItemListViewModel: YHBaseViewModel {
var mainModel: YHGCWorkModel = YHGCWorkModel()
var listModel: [YHWorkItemListModel]?
var workId: Int = 0
override init() {
super.init()
}
func getBaseDataSource(_ isShowPrompt: Bool) -> YHSectionWorkExperienceModel {
let item = YHWorkExperienceModel(id: .id1, isNeed: true, title: "主申请人是否有工作经验", isUserKeyBoard: false, prompts: "", message: "", leftButtonString: "是", rightButtonString: "否", isShowPrompts: isShowPrompt, alertMessage:"请选择")
let section = YHSectionWorkExperienceModel(title: "工作经验", models: [item])
return section
}
func getDocDataSource(_ isShowPrompt: Bool) -> YHSectionWorkExperienceModel {
let item = YHWorkExperienceModel(id: .id2, isNeed: true, title: "在职公司是否可以提供赴港同意书", isUserKeyBoard: false, prompts: "", message: "", leftButtonString: "是", rightButtonString: "否", isShowPrompts: isShowPrompt, alertMessage:"请选择")
let item1 = YHWorkExperienceModel(id: .id2, isNeed: true, title: "人才中心是否可以提供赴港同意书?", isUserKeyBoard: false, prompts: "", message: "", leftButtonString: "是", rightButtonString: "否", isShowPrompts: isShowPrompt, alertMessage:"请选择")
let item2 = YHWorkExperienceModel(id: .id2, isNeed: true, title: "公司基本情况", isUserKeyBoard: false, prompts: "请选择", message: "", type: .unit, isShowPrompts: isShowPrompt, alertMessage:"请选择")
let section = YHSectionWorkExperienceModel(title: "赴港同意书提供", models: [item,item1,item2])
return section
}
func requestWorkList(_ orderId: String, callBackBlock:@escaping (_ success: [YHWorkItemListModel]?, _ error:YHErrorModel?)->()) {
// let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.list + "?order_id=\(orderId)"
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.gclist
let params: [String : Any] = ["order_id": orderId]
let _ = YHNetRequest.getRequest(url: strUrl,params: params) { [weak self] json, code 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)
return
}
self.mainModel = result
self.listModel = result.list
callBackBlock(self.listModel, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock([], error)
}
} failBlock: { err in
callBackBlock([],err)
}
}
func requestDeleteWorkExperience(_ id: Int,_ orderId: String, callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) {
let params: [String : Any] = ["id": id, "order_id": orderId]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.del
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
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: String, _ isSaveAll: Int = 0, callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) {
let params: [String : Any] = ["order_id": orderId,
"has_company_consent": self.mainModel.has_company_consent,
"consent_work_id": self.mainModel.consent_work_id,
"has_center_consent": self.mainModel.has_center_consent,
"why_work_time_overlap": self.mainModel.why_work_time_overlap,
"has_work_experience": self.mainModel.has_work_experience,
"is_submit": true]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.saveWorkTimeRemark
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
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?)->()) {
// let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.list + "?order_id=\(orderId)"
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.createNewWork
let params: [String : Any] = ["order_id": orderId]
let _ = YHNetRequest.postRequest(url: strUrl,params: params) { [weak self] json, code 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)
}
}
}
...@@ -270,6 +270,10 @@ class YHAllApiName { ...@@ -270,6 +270,10 @@ class YHAllApiName {
static let workHighlightsDetail = "infoflow/work/v1/workHighlightsDetail" static let workHighlightsDetail = "infoflow/work/v1/workHighlightsDetail"
static let saveWorkHighlights = "infoflow/work/v1/saveWorkHighlights" static let saveWorkHighlights = "infoflow/work/v1/saveWorkHighlights"
static let createNewWork = "infoflow/work/v1/createNewWork" static let createNewWork = "infoflow/work/v1/createNewWork"
static let gclist = "infoflow/work/list"
static let gcworkDetail = "infoflow/work/detail"
static let gcWorkSave = "infoflow/work/save"
} }
//登录 //登录
......
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