Commit 32a6dd16 authored by Alex朱枝文's avatar Alex朱枝文

在港记录管理

parent b2fb2054
...@@ -561,6 +561,19 @@ ...@@ -561,6 +561,19 @@
04F2432D2C94645000DF2C74 /* YHResignDocumentStatusCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2432C2C94645000DF2C74 /* YHResignDocumentStatusCell.swift */; }; 04F2432D2C94645000DF2C74 /* YHResignDocumentStatusCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2432C2C94645000DF2C74 /* YHResignDocumentStatusCell.swift */; };
04F2432F2C94704200DF2C74 /* YHPaddedLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2432E2C94704200DF2C74 /* YHPaddedLabel.swift */; }; 04F2432F2C94704200DF2C74 /* YHPaddedLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2432E2C94704200DF2C74 /* YHPaddedLabel.swift */; };
04F243312C953A3A00DF2C74 /* YHResignDocumentType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F243302C953A3A00DF2C74 /* YHResignDocumentType.swift */; }; 04F243312C953A3A00DF2C74 /* YHResignDocumentType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F243302C953A3A00DF2C74 /* YHResignDocumentType.swift */; };
04F243372C958FB100DF2C74 /* YHHKImmigrationRecordsVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F243362C958FB100DF2C74 /* YHHKImmigrationRecordsVC.swift */; };
04F2433B2C9ACED700DF2C74 /* YHHKRecordsSummaryVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2433A2C9ACED700DF2C74 /* YHHKRecordsSummaryVC.swift */; };
04F2433D2C9ACEEA00DF2C74 /* YHHKRecordsContentVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2433C2C9ACEEA00DF2C74 /* YHHKRecordsContentVC.swift */; };
04F2433F2C9ACF5C00DF2C74 /* YHHKRecordsEditContentVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2433E2C9ACF5C00DF2C74 /* YHHKRecordsEditContentVC.swift */; };
04F243412C9AFBAB00DF2C74 /* YHHKRecordItemDetailType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F243402C9AFBAB00DF2C74 /* YHHKRecordItemDetailType.swift */; };
04F243432C9BB3F800DF2C74 /* YHHKRecordsHeaderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F243422C9BB3F800DF2C74 /* YHHKRecordsHeaderCell.swift */; };
04F243452C9BB6A000DF2C74 /* YHHKRecordsExpandedCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F243442C9BB6A000DF2C74 /* YHHKRecordsExpandedCell.swift */; };
04F243472C9BB6C000DF2C74 /* YHHKRecordsSectionHeaderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F243462C9BB6C000DF2C74 /* YHHKRecordsSectionHeaderCell.swift */; };
04F243492C9BB6EA00DF2C74 /* YHHKRecordsLastStayCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F243482C9BB6EA00DF2C74 /* YHHKRecordsLastStayCell.swift */; };
04F2434B2C9BB70300DF2C74 /* YHHKRecordsSummaryItemCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2434A2C9BB70300DF2C74 /* YHHKRecordsSummaryItemCell.swift */; };
04F2434D2C9BB72500DF2C74 /* YHHKRecordsDurationItemCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2434C2C9BB72500DF2C74 /* YHHKRecordsDurationItemCell.swift */; };
04F2434F2C9BB74E00DF2C74 /* YHHKRecordsOccupyingSpaceCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2434E2C9BB74E00DF2C74 /* YHHKRecordsOccupyingSpaceCell.swift */; };
04F243512C9BB89200DF2C74 /* YHHKRecordsSectionItemBaseCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F243502C9BB89200DF2C74 /* YHHKRecordsSectionItemBaseCell.swift */; };
04F316442C3568F000024164 /* YHAboutGalaxyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F316432C3568F000024164 /* YHAboutGalaxyViewController.swift */; }; 04F316442C3568F000024164 /* YHAboutGalaxyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F316432C3568F000024164 /* YHAboutGalaxyViewController.swift */; };
04F4B76B2BAA7E1E00D13284 /* YHCertificateTemplateSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F4B76A2BAA7E1E00D13284 /* YHCertificateTemplateSheetView.swift */; }; 04F4B76B2BAA7E1E00D13284 /* YHCertificateTemplateSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F4B76A2BAA7E1E00D13284 /* YHCertificateTemplateSheetView.swift */; };
04F5F86A2C1A95BB004A463C /* YHOtherServiceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F5F8692C1A95BB004A463C /* YHOtherServiceViewController.swift */; }; 04F5F86A2C1A95BB004A463C /* YHOtherServiceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F5F8692C1A95BB004A463C /* YHOtherServiceViewController.swift */; };
...@@ -1374,6 +1387,19 @@ ...@@ -1374,6 +1387,19 @@
04F2432C2C94645000DF2C74 /* YHResignDocumentStatusCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHResignDocumentStatusCell.swift; sourceTree = "<group>"; }; 04F2432C2C94645000DF2C74 /* YHResignDocumentStatusCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHResignDocumentStatusCell.swift; sourceTree = "<group>"; };
04F2432E2C94704200DF2C74 /* YHPaddedLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHPaddedLabel.swift; sourceTree = "<group>"; }; 04F2432E2C94704200DF2C74 /* YHPaddedLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHPaddedLabel.swift; sourceTree = "<group>"; };
04F243302C953A3A00DF2C74 /* YHResignDocumentType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHResignDocumentType.swift; sourceTree = "<group>"; }; 04F243302C953A3A00DF2C74 /* YHResignDocumentType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHResignDocumentType.swift; sourceTree = "<group>"; };
04F243362C958FB100DF2C74 /* YHHKImmigrationRecordsVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKImmigrationRecordsVC.swift; sourceTree = "<group>"; };
04F2433A2C9ACED700DF2C74 /* YHHKRecordsSummaryVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKRecordsSummaryVC.swift; sourceTree = "<group>"; };
04F2433C2C9ACEEA00DF2C74 /* YHHKRecordsContentVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKRecordsContentVC.swift; sourceTree = "<group>"; };
04F2433E2C9ACF5C00DF2C74 /* YHHKRecordsEditContentVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKRecordsEditContentVC.swift; sourceTree = "<group>"; };
04F243402C9AFBAB00DF2C74 /* YHHKRecordItemDetailType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKRecordItemDetailType.swift; sourceTree = "<group>"; };
04F243422C9BB3F800DF2C74 /* YHHKRecordsHeaderCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKRecordsHeaderCell.swift; sourceTree = "<group>"; };
04F243442C9BB6A000DF2C74 /* YHHKRecordsExpandedCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKRecordsExpandedCell.swift; sourceTree = "<group>"; };
04F243462C9BB6C000DF2C74 /* YHHKRecordsSectionHeaderCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKRecordsSectionHeaderCell.swift; sourceTree = "<group>"; };
04F243482C9BB6EA00DF2C74 /* YHHKRecordsLastStayCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKRecordsLastStayCell.swift; sourceTree = "<group>"; };
04F2434A2C9BB70300DF2C74 /* YHHKRecordsSummaryItemCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKRecordsSummaryItemCell.swift; sourceTree = "<group>"; };
04F2434C2C9BB72500DF2C74 /* YHHKRecordsDurationItemCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKRecordsDurationItemCell.swift; sourceTree = "<group>"; };
04F2434E2C9BB74E00DF2C74 /* YHHKRecordsOccupyingSpaceCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKRecordsOccupyingSpaceCell.swift; sourceTree = "<group>"; };
04F243502C9BB89200DF2C74 /* YHHKRecordsSectionItemBaseCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKRecordsSectionItemBaseCell.swift; sourceTree = "<group>"; };
04F316432C3568F000024164 /* YHAboutGalaxyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHAboutGalaxyViewController.swift; sourceTree = "<group>"; }; 04F316432C3568F000024164 /* YHAboutGalaxyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHAboutGalaxyViewController.swift; sourceTree = "<group>"; };
04F4B76A2BAA7E1E00D13284 /* YHCertificateTemplateSheetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCertificateTemplateSheetView.swift; sourceTree = "<group>"; }; 04F4B76A2BAA7E1E00D13284 /* YHCertificateTemplateSheetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCertificateTemplateSheetView.swift; sourceTree = "<group>"; };
04F5F8692C1A95BB004A463C /* YHOtherServiceViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHOtherServiceViewController.swift; sourceTree = "<group>"; }; 04F5F8692C1A95BB004A463C /* YHOtherServiceViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHOtherServiceViewController.swift; sourceTree = "<group>"; };
...@@ -2046,6 +2072,7 @@ ...@@ -2046,6 +2072,7 @@
0449EEE52C8EE99000A397FD /* Resign(续签) */ = { 0449EEE52C8EE99000A397FD /* Resign(续签) */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
04F243322C957ED600DF2C74 /* HongKongImmigrationRecords(在港记录管理) */,
044EE24D2C955C4300A2FE3A /* ResignGuidelines(续期身份指引) */, 044EE24D2C955C4300A2FE3A /* ResignGuidelines(续期身份指引) */,
044EE2302C9290D800A2FE3A /* ResignCertificateManage(续期证件管理) */, 044EE2302C9290D800A2FE3A /* ResignCertificateManage(续期证件管理) */,
04B4B8D82C9068F500ED82BC /* ResignDocumentManagement(续签文书管理) */, 04B4B8D82C9068F500ED82BC /* ResignDocumentManagement(续签文书管理) */,
...@@ -3432,6 +3459,50 @@ ...@@ -3432,6 +3459,50 @@
path = VM; path = VM;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
04F243322C957ED600DF2C74 /* HongKongImmigrationRecords(在港记录管理) */ = {
isa = PBXGroup;
children = (
04F243352C95802200DF2C74 /* C */,
04F243342C95801B00DF2C74 /* V */,
04F243332C95801200DF2C74 /* M */,
);
path = "HongKongImmigrationRecords(在港记录管理)";
sourceTree = "<group>";
};
04F243332C95801200DF2C74 /* M */ = {
isa = PBXGroup;
children = (
04F243402C9AFBAB00DF2C74 /* YHHKRecordItemDetailType.swift */,
);
path = M;
sourceTree = "<group>";
};
04F243342C95801B00DF2C74 /* V */ = {
isa = PBXGroup;
children = (
04F243422C9BB3F800DF2C74 /* YHHKRecordsHeaderCell.swift */,
04F243442C9BB6A000DF2C74 /* YHHKRecordsExpandedCell.swift */,
04F243502C9BB89200DF2C74 /* YHHKRecordsSectionItemBaseCell.swift */,
04F243462C9BB6C000DF2C74 /* YHHKRecordsSectionHeaderCell.swift */,
04F243482C9BB6EA00DF2C74 /* YHHKRecordsLastStayCell.swift */,
04F2434A2C9BB70300DF2C74 /* YHHKRecordsSummaryItemCell.swift */,
04F2434C2C9BB72500DF2C74 /* YHHKRecordsDurationItemCell.swift */,
04F2434E2C9BB74E00DF2C74 /* YHHKRecordsOccupyingSpaceCell.swift */,
);
path = V;
sourceTree = "<group>";
};
04F243352C95802200DF2C74 /* C */ = {
isa = PBXGroup;
children = (
04F243362C958FB100DF2C74 /* YHHKImmigrationRecordsVC.swift */,
04F2433E2C9ACF5C00DF2C74 /* YHHKRecordsEditContentVC.swift */,
04F2433A2C9ACED700DF2C74 /* YHHKRecordsSummaryVC.swift */,
04F2433C2C9ACEEA00DF2C74 /* YHHKRecordsContentVC.swift */,
);
path = C;
sourceTree = "<group>";
};
04F957492C2032A0003C631C /* V */ = { 04F957492C2032A0003C631C /* V */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -4656,6 +4727,7 @@ ...@@ -4656,6 +4727,7 @@
044EE22B2C91683800A2FE3A /* YHServiceCenterViewModel.swift in Sources */, 044EE22B2C91683800A2FE3A /* YHServiceCenterViewModel.swift in Sources */,
0430E64E2C733477000511E2 /* YHAdopterIncomeDetailViewController.swift in Sources */, 0430E64E2C733477000511E2 /* YHAdopterIncomeDetailViewController.swift in Sources */,
045EEEC62B9F171A0022A143 /* YHOtherTextViewItemView.swift in Sources */, 045EEEC62B9F171A0022A143 /* YHOtherTextViewItemView.swift in Sources */,
04F2434B2C9BB70300DF2C74 /* YHHKRecordsSummaryItemCell.swift in Sources */,
046A95312C6EFB980059326A /* YHFamilyMemberRiskWarningAlertView.swift in Sources */, 046A95312C6EFB980059326A /* YHFamilyMemberRiskWarningAlertView.swift in Sources */,
A5ACE9292B4564F7002C94D2 /* YHSmsCodeInputView.swift in Sources */, A5ACE9292B4564F7002C94D2 /* YHSmsCodeInputView.swift in Sources */,
A5ACE9452B4564F7002C94D2 /* YHHUDContainerView.swift in Sources */, A5ACE9452B4564F7002C94D2 /* YHHUDContainerView.swift in Sources */,
...@@ -4680,6 +4752,7 @@ ...@@ -4680,6 +4752,7 @@
047AA3D92C4A4A91009C4554 /* YHInvatationShareViewController.swift in Sources */, 047AA3D92C4A4A91009C4554 /* YHInvatationShareViewController.swift in Sources */,
045EEEDE2B9F171A0022A143 /* YHEducationInfoCell.swift in Sources */, 045EEEDE2B9F171A0022A143 /* YHEducationInfoCell.swift in Sources */,
0409BEEB2C5B41D4003FCFD7 /* YHPrincipleProfileListCell.swift in Sources */, 0409BEEB2C5B41D4003FCFD7 /* YHPrincipleProfileListCell.swift in Sources */,
04F243452C9BB6A000DF2C74 /* YHHKRecordsExpandedCell.swift in Sources */,
A5ACE93A2B4564F7002C94D2 /* NSAttributedString+Extension.swift in Sources */, A5ACE93A2B4564F7002C94D2 /* NSAttributedString+Extension.swift in Sources */,
044EE2292C913D6400A2FE3A /* YHServiceCenterStepThreeTableHeadView.swift in Sources */, 044EE2292C913D6400A2FE3A /* YHServiceCenterStepThreeTableHeadView.swift in Sources */,
A5F886B42C61CEA700B63CF5 /* YHPictureReviewManager.swift in Sources */, A5F886B42C61CEA700B63CF5 /* YHPictureReviewManager.swift in Sources */,
...@@ -4725,6 +4798,7 @@ ...@@ -4725,6 +4798,7 @@
049D62C72C6F2F4F00E811A1 /* YHApproverInfoVerifyCell.swift in Sources */, 049D62C72C6F2F4F00E811A1 /* YHApproverInfoVerifyCell.swift in Sources */,
048787D12BCE61B20036E221 /* YHServiceNoOrderView.swift in Sources */, 048787D12BCE61B20036E221 /* YHServiceNoOrderView.swift in Sources */,
A567E5AC2BD7643D00D5D5A0 /* YHAgreementAlertView.swift in Sources */, A567E5AC2BD7643D00D5D5A0 /* YHAgreementAlertView.swift in Sources */,
04F243372C958FB100DF2C74 /* YHHKImmigrationRecordsVC.swift in Sources */,
04CE1ADD2C2AD91F001CB80A /* YHActivityDetailCell.swift in Sources */, 04CE1ADD2C2AD91F001CB80A /* YHActivityDetailCell.swift in Sources */,
04AA19FD2BB40D5C00C1CBBD /* Applegate(JPush).swift in Sources */, 04AA19FD2BB40D5C00C1CBBD /* Applegate(JPush).swift in Sources */,
A567E5972BD7643D00D5D5A0 /* YHHomeModel.swift in Sources */, A567E5972BD7643D00D5D5A0 /* YHHomeModel.swift in Sources */,
...@@ -4784,6 +4858,7 @@ ...@@ -4784,6 +4858,7 @@
045EEF072B9F171A0022A143 /* YHBasicInfoFillViewModel.swift in Sources */, 045EEF072B9F171A0022A143 /* YHBasicInfoFillViewModel.swift in Sources */,
045EEF212B9F171A0022A143 /* YHMainInformationTableViewCell.swift in Sources */, 045EEF212B9F171A0022A143 /* YHMainInformationTableViewCell.swift in Sources */,
A5ACE9462B4564F7002C94D2 /* YHHUDSquareBaseView.swift in Sources */, A5ACE9462B4564F7002C94D2 /* YHHUDSquareBaseView.swift in Sources */,
04F243512C9BB89200DF2C74 /* YHHKRecordsSectionItemBaseCell.swift in Sources */,
04FB01D42C2404F50040115D /* YHMyFriendsNoDataView.swift in Sources */, 04FB01D42C2404F50040115D /* YHMyFriendsNoDataView.swift in Sources */,
04D144762C0452E200EE3758 /* YHOneKeyLoginManager.swift in Sources */, 04D144762C0452E200EE3758 /* YHOneKeyLoginManager.swift in Sources */,
A5551FFE2B4C26CE00510980 /* YHBaseViewModel.swift in Sources */, A5551FFE2B4C26CE00510980 /* YHBaseViewModel.swift in Sources */,
...@@ -4791,6 +4866,7 @@ ...@@ -4791,6 +4866,7 @@
048B2A4A2BC7D9DC00A93BF0 /* YHMyLikeViewController.swift in Sources */, 048B2A4A2BC7D9DC00A93BF0 /* YHMyLikeViewController.swift in Sources */,
A567E5AE2BD7643D00D5D5A0 /* YHHomeKingKongBlockItem.swift in Sources */, A567E5AE2BD7643D00D5D5A0 /* YHHomeKingKongBlockItem.swift in Sources */,
045EEED92B9F171A0022A143 /* YHEducationDetailVC.swift in Sources */, 045EEED92B9F171A0022A143 /* YHEducationDetailVC.swift in Sources */,
04F2434D2C9BB72500DF2C74 /* YHHKRecordsDurationItemCell.swift in Sources */,
045EEF1A2B9F171A0022A143 /* YHAddressViewController.swift in Sources */, 045EEF1A2B9F171A0022A143 /* YHAddressViewController.swift in Sources */,
A5C382CA2B5E1F4C00C5E65C /* YHLoginTipsView.swift in Sources */, A5C382CA2B5E1F4C00C5E65C /* YHLoginTipsView.swift in Sources */,
A5765B282C772185002CD3C1 /* YHRangeDatePickerCell.swift in Sources */, A5765B282C772185002CD3C1 /* YHRangeDatePickerCell.swift in Sources */,
...@@ -4867,6 +4943,7 @@ ...@@ -4867,6 +4943,7 @@
04ADBCA22C3674E300C37F10 /* YHMyLikeActivityViewController.swift in Sources */, 04ADBCA22C3674E300C37F10 /* YHMyLikeActivityViewController.swift in Sources */,
045EEEFC2B9F171A0022A143 /* YHSheetPickerView.swift in Sources */, 045EEEFC2B9F171A0022A143 /* YHSheetPickerView.swift in Sources */,
A567E59C2BD7643D00D5D5A0 /* YHSearchInfomationVC.swift in Sources */, A567E59C2BD7643D00D5D5A0 /* YHSearchInfomationVC.swift in Sources */,
04F2433D2C9ACEEA00DF2C74 /* YHHKRecordsContentVC.swift in Sources */,
04174D732BCD5B74000BA46D /* YHMsgViewModel.swift in Sources */, 04174D732BCD5B74000BA46D /* YHMsgViewModel.swift in Sources */,
A567E5952BD7643D00D5D5A0 /* YHHomeClassifyModel.swift in Sources */, A567E5952BD7643D00D5D5A0 /* YHHomeClassifyModel.swift in Sources */,
A59B43C72C48F68200B28379 /* YHEvaluationView.swift in Sources */, A59B43C72C48F68200B28379 /* YHEvaluationView.swift in Sources */,
...@@ -4920,6 +4997,7 @@ ...@@ -4920,6 +4997,7 @@
045EEE9D2B9F171A0022A143 /* YHWorkItemListViewModel.swift in Sources */, 045EEE9D2B9F171A0022A143 /* YHWorkItemListViewModel.swift in Sources */,
A5ACE9392B4564F7002C94D2 /* UIDevice+Extension.swift in Sources */, A5ACE9392B4564F7002C94D2 /* UIDevice+Extension.swift in Sources */,
0430E66E2C749AAF000511E2 /* YHAdopterResidentViewController.swift in Sources */, 0430E66E2C749AAF000511E2 /* YHAdopterResidentViewController.swift in Sources */,
04F2434F2C9BB74E00DF2C74 /* YHHKRecordsOccupyingSpaceCell.swift in Sources */,
04CE1AD02C2AD91F001CB80A /* YHActivityListModel.swift in Sources */, 04CE1AD02C2AD91F001CB80A /* YHActivityListModel.swift in Sources */,
0430E66C2C749573000511E2 /* YHAdopterCardExplainTableViewCell.swift in Sources */, 0430E66C2C749573000511E2 /* YHAdopterCardExplainTableViewCell.swift in Sources */,
045EEEE82B9F171A0022A143 /* YHFamilyMemberViewModel.swift in Sources */, 045EEEE82B9F171A0022A143 /* YHFamilyMemberViewModel.swift in Sources */,
...@@ -4982,12 +5060,14 @@ ...@@ -4982,12 +5060,14 @@
04CE1AD32C2AD91F001CB80A /* YHTravelModel.swift in Sources */, 04CE1AD32C2AD91F001CB80A /* YHTravelModel.swift in Sources */,
04213B372C4F87C600797900 /* YHHomeLifeCategoryDetailModel.swift in Sources */, 04213B372C4F87C600797900 /* YHHomeLifeCategoryDetailModel.swift in Sources */,
04B9EE5A2C06CC3100A4018D /* YHCodeSueecssViewController.swift in Sources */, 04B9EE5A2C06CC3100A4018D /* YHCodeSueecssViewController.swift in Sources */,
04F2433F2C9ACF5C00DF2C74 /* YHHKRecordsEditContentVC.swift in Sources */,
045EEEC12B9F171A0022A143 /* YHOtherInfoFillModel.swift in Sources */, 045EEEC12B9F171A0022A143 /* YHOtherInfoFillModel.swift in Sources */,
047A3DF52C295AFF0048937B /* YHFriendListModel.swift in Sources */, 047A3DF52C295AFF0048937B /* YHFriendListModel.swift in Sources */,
0468D43A2B579EAC00CFB916 /* YHLoginViewModel.swift in Sources */, 0468D43A2B579EAC00CFB916 /* YHLoginViewModel.swift in Sources */,
04CE1AD72C2AD91F001CB80A /* YHActivityDetailViewController.swift in Sources */, 04CE1AD72C2AD91F001CB80A /* YHActivityDetailViewController.swift in Sources */,
045EEE9E2B9F171A0022A143 /* YHWorkExampleModel.swift in Sources */, 045EEE9E2B9F171A0022A143 /* YHWorkExampleModel.swift in Sources */,
045EEE8A2B9F171A0022A143 /* YHPreviewOtherInformationViewController.swift in Sources */, 045EEE8A2B9F171A0022A143 /* YHPreviewOtherInformationViewController.swift in Sources */,
04F2433B2C9ACED700DF2C74 /* YHHKRecordsSummaryVC.swift in Sources */,
A5FD63C72B638CA000D1D9DA /* YHSubmintAllInfoSuccessTipView.swift in Sources */, A5FD63C72B638CA000D1D9DA /* YHSubmintAllInfoSuccessTipView.swift in Sources */,
043D2C8A2C0EEF3F00172438 /* YHOrderSearchViewController.swift in Sources */, 043D2C8A2C0EEF3F00172438 /* YHOrderSearchViewController.swift in Sources */,
04C85DE12C3677CB008B20D6 /* YHConsultantQRCodeView.swift in Sources */, 04C85DE12C3677CB008B20D6 /* YHConsultantQRCodeView.swift in Sources */,
...@@ -5009,6 +5089,7 @@ ...@@ -5009,6 +5089,7 @@
A58AC0A12BAC0B2900A30FA9 /* YHFileListItemView.swift in Sources */, A58AC0A12BAC0B2900A30FA9 /* YHFileListItemView.swift in Sources */,
04213B2D2C48FEB000797900 /* YHHomeInfoSectionHeadView.swift in Sources */, 04213B2D2C48FEB000797900 /* YHHomeInfoSectionHeadView.swift in Sources */,
045EEED12B9F171A0022A143 /* YHScorePersonInfoCell.swift in Sources */, 045EEED12B9F171A0022A143 /* YHScorePersonInfoCell.swift in Sources */,
04F243492C9BB6EA00DF2C74 /* YHHKRecordsLastStayCell.swift in Sources */,
0449EEEE2C8EF8CB00A397FD /* YHResignMaterialCell.swift in Sources */, 0449EEEE2C8EF8CB00A397FD /* YHResignMaterialCell.swift in Sources */,
044CF8D42BB6BCF700008CE8 /* YHSignatureUploadTableViewCell.swift in Sources */, 044CF8D42BB6BCF700008CE8 /* YHSignatureUploadTableViewCell.swift in Sources */,
A567E5B02BD7643D00D5D5A0 /* YHHomeWebBottomView.swift in Sources */, A567E5B02BD7643D00D5D5A0 /* YHHomeWebBottomView.swift in Sources */,
...@@ -5161,6 +5242,7 @@ ...@@ -5161,6 +5242,7 @@
045EEF162B9F171A0022A143 /* YHMainApplicantInformationViewController.swift in Sources */, 045EEF162B9F171A0022A143 /* YHMainApplicantInformationViewController.swift in Sources */,
0449EEF32C903A4100A397FD /* YHMaterialListModel.swift in Sources */, 0449EEF32C903A4100A397FD /* YHMaterialListModel.swift in Sources */,
048097712BA18D66000B9DCA /* YHCertificateSearchBar.swift in Sources */, 048097712BA18D66000B9DCA /* YHCertificateSearchBar.swift in Sources */,
04F243432C9BB3F800DF2C74 /* YHHKRecordsHeaderCell.swift in Sources */,
04256E172C75BD2700A37BA4 /* YHVisaPaymentTipsCell.swift in Sources */, 04256E172C75BD2700A37BA4 /* YHVisaPaymentTipsCell.swift in Sources */,
045EEEAA2B9F171A0022A143 /* YHWorkExampleViewController.swift in Sources */, 045EEEAA2B9F171A0022A143 /* YHWorkExampleViewController.swift in Sources */,
04256E1F2C7618A800A37BA4 /* YHAppointWarmTipsCell.swift in Sources */, 04256E1F2C7618A800A37BA4 /* YHAppointWarmTipsCell.swift in Sources */,
...@@ -5208,6 +5290,7 @@ ...@@ -5208,6 +5290,7 @@
A54A07C92C7F478200F749AB /* YHTravelHKDLGuideSheetView.swift in Sources */, A54A07C92C7F478200F749AB /* YHTravelHKDLGuideSheetView.swift in Sources */,
04174D782BCD5B74000BA46D /* YHMessageListVC.swift in Sources */, 04174D782BCD5B74000BA46D /* YHMessageListVC.swift in Sources */,
0430E6742C74A02B000511E2 /* YHAdopterIdCardViewController.swift in Sources */, 0430E6742C74A02B000511E2 /* YHAdopterIdCardViewController.swift in Sources */,
04F243472C9BB6C000DF2C74 /* YHHKRecordsSectionHeaderCell.swift in Sources */,
A517A4E12BB573EB000DEECD /* YHDocListCell.swift in Sources */, A517A4E12BB573EB000DEECD /* YHDocListCell.swift in Sources */,
A58037212BAD7B2A0031C312 /* YHMySchemeModel.swift in Sources */, A58037212BAD7B2A0031C312 /* YHMySchemeModel.swift in Sources */,
0493B3DE2BA80C2300AF9393 /* YHCertificateFilterButton.swift in Sources */, 0493B3DE2BA80C2300AF9393 /* YHCertificateFilterButton.swift in Sources */,
...@@ -5241,6 +5324,7 @@ ...@@ -5241,6 +5324,7 @@
A554A5122B99715000EA5973 /* YHConstantArrayData.swift in Sources */, A554A5122B99715000EA5973 /* YHConstantArrayData.swift in Sources */,
045EEE962B9F171A0022A143 /* YHPreviewInfoCertificatePictureItemsView.swift in Sources */, 045EEE962B9F171A0022A143 /* YHPreviewInfoCertificatePictureItemsView.swift in Sources */,
044EE2362C92916600A2FE3A /* YHResignCertificateListViewController.swift in Sources */, 044EE2362C92916600A2FE3A /* YHResignCertificateListViewController.swift in Sources */,
04F243412C9AFBAB00DF2C74 /* YHHKRecordItemDetailType.swift in Sources */,
04256DDE2C72DA3B00A37BA4 /* YHCertificateAppointViewController.swift in Sources */, 04256DDE2C72DA3B00A37BA4 /* YHCertificateAppointViewController.swift in Sources */,
A592FE912BA6CC010062FACA /* YHCertificateEntryHeadView.swift in Sources */, A592FE912BA6CC010062FACA /* YHCertificateEntryHeadView.swift in Sources */,
0425E63D2BA9345200A5E763 /* YHSchemeTableViewCell.swift in Sources */, 0425E63D2BA9345200A5E763 /* YHSchemeTableViewCell.swift in Sources */,
......
//
// YHHKImmigrationRecordsVC.swift
// galaxy
//
// Created by alexzzw on 2024/9/14.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import JXSegmentedView
class YHHKImmigrationRecordsVC: YHBaseViewController {
private lazy var controllerOne: YHHKRecordsSummaryVC = YHHKRecordsSummaryVC()
private lazy var controllerTwo: YHHKRecordsContentVC = YHHKRecordsContentVC()
private lazy var controllerThree: YHHKRecordsContentVC = YHHKRecordsContentVC()
private lazy var controllerFour: YHHKRecordsContentVC = YHHKRecordsContentVC()
private lazy var arrItemTitles = ["汇总", "主申", "配偶", "子女"]
private lazy var segmentedView: JXSegmentedView = {
let view = JXSegmentedView(frame: CGRect(x: 0, y: k_Height_safeAreaInsetsTop(), width: KScreenWidth, height: 53))
let indicator = JXSegmentedIndicatorLineView()
indicator.indicatorWidth = 16
indicator.indicatorHeight = 2
indicator.indicatorColor = UIColor.brandMainColor
indicator.indicatorCornerRadius = 0
view.indicators = [indicator]
view.dataSource = segmentedDataSource
view.delegate = self
return view
}()
private lazy var segmentedDataSource: JXSegmentedDotDataSource = {
let dataSource = JXSegmentedDotDataSource()
dataSource.isTitleColorGradientEnabled = true
dataSource.titles = arrItemTitles
dataSource.titleNormalFont = UIFont.PFSC_M(ofSize: 14)
dataSource.titleNormalColor = UIColor(hexString: "#000000")!
dataSource.titleSelectedFont = UIFont.PFSC_M(ofSize: 16)
dataSource.titleSelectedColor = .mainTextColor
dataSource.isItemSpacingAverageEnabled = false
dataSource.itemWidth = JXSegmentedViewAutomaticDimension
dataSource.itemSpacing = 24
dataSource.dotStates = [false, false, false, false]
dataSource.dotSize = CGSize(width: 6, height: 6)
return dataSource
}()
private lazy var listContainerView: JXSegmentedListContainerView = {
return JXSegmentedListContainerView(dataSource: self, type: .scrollView)
}()
private lazy var arrItemVCs: [JXSegmentedListContainerViewListDelegate] = {
return [controllerOne, controllerTwo, controllerThree, controllerFour]
}()
private lazy var addNewButton: UIButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 16)
let buttonName = "新增在港记录"
button.setTitle(buttonName, for: .normal)
button.setTitle(buttonName, for: .highlighted)
button.setTitleColor( UIColor(hex:0xffffff), for: .normal)
button.setTitleColor( UIColor(hex:0xffffff), for: .highlighted)
button.addTarget(self, action: #selector(clickAddNewButton), 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
}()
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
}
}
extension YHHKImmigrationRecordsVC {
private func setupUI() {
gk_navBarAlpha = 1
gk_navTitle = "在港记录列表"
view.backgroundColor = .white
view.addSubview(segmentedView)
view.addSubview(bottomView)
bottomView.addSubview(addNewButton)
view.addSubview(listContainerView)
segmentedView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
make.height.equalTo(53)
}
bottomView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.right.equalToSuperview()
make.bottom.equalTo(view.safeAreaLayoutGuide.snp.bottom)
make.height.equalTo(64)
}
addNewButton.snp.makeConstraints { make in
make.left.equalToSuperview().offset(kMargin)
make.right.equalToSuperview().offset(-kMargin)
make.centerY.equalToSuperview()
make.height.equalTo(48)
}
listContainerView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(segmentedView.snp.bottom)
make.bottom.equalTo(bottomView.snp.top)
}
}
@objc private func clickAddNewButton() {
//
}
}
extension YHHKImmigrationRecordsVC: JXSegmentedViewDelegate {
//
}
extension YHHKImmigrationRecordsVC: JXSegmentedListContainerViewDataSource
{
func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int {
if let titleDataSource = segmentedView.dataSource as? JXSegmentedBaseDataSource {
return titleDataSource.dataSource.count
}
return 0
}
func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> any JXSegmentedListContainerViewListDelegate {
return arrItemVCs[index]
}
//
}
//
// YHHKRecordsContentVC.swift
// galaxy
//
// Created by alexzzw on 2024/9/18.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import JXSegmentedView
class YHHKRecordsContentVC: YHBaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
// Do any additional setup after loading the view.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}
extension YHHKRecordsContentVC {
private func setupUI() {
gk_navBarAlpha = 0
gk_navigationBar.isHidden = true
view.backgroundColor = UIColor.contentBkgColor
}
}
extension YHHKRecordsContentVC: JXSegmentedListContainerViewListDelegate {
func listView() -> UIView {
return view
}
}
//
// YHHKRecordsEditContentVC.swift
// galaxy
//
// Created by alexzzw on 2024/9/18.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsEditContentVC: YHBaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}
//
// YHHKRecordsSummaryVC.swift
// galaxy
//
// Created by alexzzw on 2024/9/18.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import JXSegmentedView
class YHHKRecordsSummaryVC: YHBaseViewController {
private lazy var noDataView: YHEmptyDataView = {
let view = YHEmptyDataView.createView("暂无在港记录", kEmptyCommonBgName)
view.frame = CGRect(x: 0, y: 0, width: KScreenWidth, height: 164)
view.backgroundColor = .clear
return view
}()
private lazy var datas: [YHHKRecordSectionType] = {
let firstSection = YHHKRecordSectionType.header("在港逗留情况")
let summaryItems1: [YHHKRecordItemDetailType] = [.detailHeader("逗留共300天(2次)"), .lastStay("上次逗留:2024-10-04"), .summaryItem("2024年 270天(2次)"), .summaryItem("2024年 30天(2次)")]
let periodItems1: [YHHKRecordItemDetailType] = [.detailHeader("超90天未在港"), .duration("2023-10-04", "2023-12-04", "60天"), .duration("2024-12-04", "2023-01-04", "60天")]
let expandedSec1 = ExpandedSection(title: "章一刀", type: .over90, summaryItems: summaryItems1, periodItems: periodItems1)
let secondSection = YHHKRecordSectionType.expandedItem(expandedSec1)
let summaryItems2: [YHHKRecordItemDetailType] = [.detailHeader("逗留共300天(5次)"), .lastStay("上次逗留:2024-10-04"), .summaryItem("2024年 270天(2次)"), .summaryItem("2024年 30天(3次)")]
let periodItems2: [YHHKRecordItemDetailType] = [.detailHeader("超200天未在港"), .duration("2023-10-04", "2023-12-04", "60天"), .duration("2024-12-04", "2023-01-04", "30天")]
let expandedSec2 = ExpandedSection(title: "李晓梅", type: .over180, summaryItems: summaryItems2, periodItems: periodItems2)
let thirdSection = YHHKRecordSectionType.expandedItem(expandedSec2)
return [firstSection, secondSection, thirdSection]
}()
private lazy var tableView: YHGestureTableView = {
let view = YHGestureTableView(frame: .zero, style: .plain)
view.backgroundColor = .clear
view.separatorStyle = .none
view.rowHeight = UITableView.automaticDimension
view.estimatedRowHeight = 52.0
view.layer.cornerRadius = 6
view.clipsToBounds = true
view.dataSource = self
view.delegate = self
view.showsVerticalScrollIndicator = false
view.register(cellWithClass: YHHKRecordsHeaderCell.self)
view.register(cellWithClass: YHHKRecordsExpandedCell.self)
view.register(cellWithClass: YHHKRecordsSectionHeaderCell.self)
view.register(cellWithClass: YHHKRecordsLastStayCell.self)
view.register(cellWithClass: YHHKRecordsSummaryItemCell.self)
view.register(cellWithClass: YHHKRecordsDurationItemCell.self)
view.register(cellWithClass: YHHKRecordsOccupyingSpaceCell.self)
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
}
}
extension YHHKRecordsSummaryVC {
private func setupUI() {
gk_navBarAlpha = 0
gk_navigationBar.isHidden = true
view.backgroundColor = UIColor.contentBkgColor
view.addSubview(tableView)
tableView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(kMargin)
make.right.equalToSuperview().offset(-kMargin)
make.top.bottom.equalToSuperview()
}
tableView.tableHeaderView = UIView(frame: CGRect.init(x: 0, y: 0, width: KScreenWidth, height: kMargin))
tableView.tableFooterView = UIView(frame: CGRect.init(x: 0, y: 0, width: KScreenWidth, height: kMargin))
}
private func getSubCellType(model: ExpandedSection, indexPath: IndexPath, subType: YHHKRecordItemDetailType) -> YHResignRoundCellType {
var cellType: YHResignRoundCellType = .top
switch subType {
case .lastStay, .summaryItem:
if indexPath.row == model.summaryItems.count {
cellType = .bottom
} else {
cellType = .mid
}
case .duration:
if indexPath.row == model.periodItems.count {
cellType = .bottom
} else {
cellType = .mid
}
default:
break
}
return cellType
}
}
extension YHHKRecordsSummaryVC: 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
}
let secType = datas[section]
switch secType {
case .header:
return 1
case let .expandedItem(model):
return model.isExpanded ? model.subItems.count + 1 : 1
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard datas.count > indexPath.section else {
return UITableViewCell()
}
let secType = datas[indexPath.section]
switch secType {
case let .header(title):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHHKRecordsHeaderCell.cellReuseIdentifier) as? YHHKRecordsHeaderCell {
cell.setupCellInfo(title)
return cell
}
case let .expandedItem(model):
if indexPath.row == 0, let cell = tableView.dequeueReusableCell(withIdentifier: YHHKRecordsExpandedCell.cellReuseIdentifier) as? YHHKRecordsExpandedCell {
cell.setupCellInfo(title: model.title, status: model.type, isExpanded: model.isExpanded)
return cell
}
if model.isExpanded, model.subItems.count > indexPath.row - 1, indexPath.row - 1 >= 0 {
let subType = model.subItems[indexPath.row - 1]
switch subType {
case let .summaryItem(title):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHHKRecordsSummaryItemCell.cellReuseIdentifier) as? YHHKRecordsSummaryItemCell {
let cellType = getSubCellType(model: model, indexPath: indexPath, subType: subType)
cell.setupCellInfo(title: title, cellType: cellType)
return cell
}
case let .detailHeader(title):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHHKRecordsSectionHeaderCell.cellReuseIdentifier) as? YHHKRecordsSectionHeaderCell {
cell.setupCellInfo(title: title, cellType: .top)
return cell
}
case let .lastStay(title):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHHKRecordsLastStayCell.cellReuseIdentifier) as? YHHKRecordsLastStayCell {
let cellType = getSubCellType(model: model, indexPath: indexPath, subType: subType)
cell.setupCellInfo(title: title, cellType: cellType)
return cell
}
case let .duration(from, to, total):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHHKRecordsDurationItemCell.cellReuseIdentifier) as? YHHKRecordsDurationItemCell {
let cellType = getSubCellType(model: model, indexPath: indexPath, subType: subType)
cell.setupCellInfo(title: "\(from)\(to)", detail: total, cellType: cellType)
return cell
}
case .occupyingSpace:
if let cell = tableView.dequeueReusableCell(withIdentifier: YHHKRecordsOccupyingSpaceCell.cellReuseIdentifier) as? YHHKRecordsOccupyingSpaceCell {
let isShow = indexPath.row == model.subItems.count
cell.setupCellInfo(isShow)
return cell
}
}
}
}
return UITableViewCell()
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
guard datas.count > indexPath.section else {
return 0
}
let secType = datas[indexPath.section]
switch secType {
case .header:
return 52
case let .expandedItem(model):
if indexPath.row == 0 {
return 54
} else if model.isExpanded, model.subItems.count > indexPath.row - 1, indexPath.row - 1 >= 0 {
let subType = model.subItems[indexPath.row - 1]
switch subType {
case .summaryItem, .lastStay, .duration:
return UITableView.automaticDimension
case .detailHeader:
return 46
case .occupyingSpace:
return 16
}
}
}
return 0
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
guard datas.count > indexPath.section else {
tableView.deselectRow(at: indexPath, animated: true)
return
}
var secType = datas[indexPath.section]
if case var .expandedItem(model) = secType, indexPath.row == 0 {
model.isExpanded.toggle()
secType = .expandedItem(model)
datas[indexPath.section] = secType
tableView.reloadData()
// tableView.performBatchUpdates { [weak tableView] in
// tableView?.reloadSections(IndexSet(integer: indexPath.section), with: .automatic)
// }
}
tableView.deselectRow(at: indexPath, animated: true)
}
}
extension YHHKRecordsSummaryVC: JXSegmentedListContainerViewListDelegate {
func listView() -> UIView {
return view
}
}
//
// YHHKRecordItemDetailType.swift
// galaxy
//
// Created by alexzzw on 2024/9/18.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import Foundation
enum YHHKNonPresenceRecordType {
case over90
case over180
var title: String {
switch self {
case .over90:
return "超90天未在港"
case .over180:
return "超180天未在港"
}
}
}
class ExpandedSection {
let title: String
let type: YHHKNonPresenceRecordType
var isExpanded: Bool = true
let summaryItems: [YHHKRecordItemDetailType]
let periodItems: [YHHKRecordItemDetailType]
init(title: String, type: YHHKNonPresenceRecordType, isExpanded: Bool = true, summaryItems: [YHHKRecordItemDetailType], periodItems: [YHHKRecordItemDetailType]) {
self.title = title
self.type = type
self.isExpanded = isExpanded
self.summaryItems = summaryItems
self.periodItems = periodItems
}
var subItems: [YHHKRecordItemDetailType] {
var retItems = [YHHKRecordItemDetailType]()
retItems.append(contentsOf: summaryItems)
if summaryItems.count > 0 {
retItems.append(.occupyingSpace)
}
retItems.append(contentsOf: periodItems)
if periodItems.count > 0 {
retItems.append(.occupyingSpace)
}
return retItems
}
}
enum YHHKRecordSectionType {
case header(_ title: String)
case expandedItem(_ model: ExpandedSection)
}
enum YHHKRecordItemDetailType {
case detailHeader(_ title: String)
case lastStay(_ title: String)
case summaryItem(_ title: String)
case duration(_ from: String, _ to: String, _ total: String)
case occupyingSpace
}
//
// YHHKRecordsDurationItemCell.swift
// galaxy
//
// Created by alexzzw on 2024/9/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsDurationItemCell: YHHKRecordsSectionItemBaseCell {
static let cellReuseIdentifier = "YHHKRecordsDurationItemCell"
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_R(ofSize:14)
label.textColor = .mainTextColor70
return label
}()
private lazy var infoDetailLabel: UILabel = {
let label = UILabel()
label.textColor = .mainTextColor
label.font = .PFSC_R(ofSize: 14)
return label
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupCellInfo(title: String?, detail: String?, cellType: YHResignRoundCellType = .top) {
infoTitleLabel.text = title
infoDetailLabel.text = detail
updateCellCorner(cellType)
if cellType == .bottom {
infoTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.top.equalToSuperview().offset(8)
make.bottom.equalToSuperview().offset(-16)
}
} else {
infoTitleLabel.snp.remakeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.top.equalToSuperview().offset(8)
make.bottom.equalToSuperview().offset(-8)
}
}
}
}
extension YHHKRecordsDurationItemCell {
private func setupUI() {
subContainerView.addSubview(infoTitleLabel)
subContainerView.addSubview(infoDetailLabel)
infoTitleLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
infoDetailLabel.setContentCompressionResistancePriority(.required, for: .horizontal)
infoTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.top.equalToSuperview().offset(8)
make.bottom.equalToSuperview().offset(-8)
}
infoDetailLabel.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-14)
make.centerY.equalTo(infoTitleLabel)
make.left.greaterThanOrEqualTo(infoTitleLabel.snp.right).offset(14)
}
}
}
//
// YHHKRecordsExpandedCell.swift
// galaxy
//
// Created by alexzzw on 2024/9/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsExpandedCell: UITableViewCell {
static let cellReuseIdentifier = "YHHKRecordsExpandedCell"
var isExpanded: Bool = true {
didSet {
infoDetailLabel.text = isExpanded ? "收起" : "详情"
}
}
private lazy var tagView: UIView = {
let view = UIView()
view.backgroundColor = .brandMainColor
return view
}()
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize: 16)
label.textColor = .mainTextColor
return label
}()
private lazy var statusLabel: YHPaddedLabel = {
let label = YHPaddedLabel(padding: UIEdgeInsets(top: 0, left: 6, bottom: 0, right: 6))
label.font = .PFSC_M(ofSize: 12)
return label
}()
private lazy var infoDetailLabel: UILabel = {
let label = UILabel()
label.textColor = .brandMainColor
label.font = .PFSC_R(ofSize: 14)
return label
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupCellInfo(title: String?, status: YHHKNonPresenceRecordType, isExpanded: Bool) {
infoTitleLabel.text = title
statusLabel.text = status.title
statusLabel.textColor = status.titleColor
statusLabel.backgroundColor = status.bgColor
self.isExpanded = isExpanded
}
}
extension YHHKRecordsExpandedCell {
private func setupUI() {
selectionStyle = .none
backgroundColor = .white
contentView.addSubview(tagView)
contentView.addSubview(infoTitleLabel)
contentView.addSubview(statusLabel)
contentView.addSubview(infoDetailLabel)
tagView.setContentCompressionResistancePriority(.required, for: .horizontal)
infoTitleLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
statusLabel.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)
infoDetailLabel.setContentCompressionResistancePriority(.required, for: .horizontal)
tagView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.centerY.equalToSuperview()
make.width.equalTo(3)
make.height.equalTo(14)
}
infoTitleLabel.snp.makeConstraints { make in
make.left.equalTo(tagView.snp.right).offset(5)
make.centerY.equalToSuperview()
}
statusLabel.snp.makeConstraints { make in
make.left.equalTo(infoTitleLabel.snp.right).offset(4)
make.centerY.equalToSuperview()
make.height.equalTo(19)
}
infoDetailLabel.snp.makeConstraints { make in
make.left.greaterThanOrEqualTo(statusLabel.snp.right).offset(4)
make.centerY.equalToSuperview()
make.right.equalToSuperview().offset(-18)
}
}
}
private extension YHHKNonPresenceRecordType {
var titleColor: UIColor {
switch self {
case .over90:
return UIColor.yhOrangeColor
case .over180:
return UIColor.failColor
}
}
var bgColor: UIColor {
switch self {
case .over90:
return UIColor(hexString: "#FFF5EB")!
case .over180:
return UIColor(hexString: "#FFF2F2")!
}
}
}
//
// YHHKRecordsHeaderCell.swift
// galaxy
//
// Created by alexzzw on 2024/9/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsHeaderCell: UITableViewCell {
static let cellReuseIdentifier = "YHHKRecordsHeaderCell"
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize:17)
label.textColor = .mainTextColor
return label
}()
private lazy var bottomLineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
return view
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupCellInfo(_ title: String?) {
infoTitleLabel.text = title
}
}
extension YHHKRecordsHeaderCell {
private func setupUI() {
selectionStyle = .none
backgroundColor = .white
contentView.addSubview(infoTitleLabel)
contentView.addSubview(bottomLineView)
bottomLineView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.height.equalTo(1)
}
infoTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.top.equalToSuperview().offset(16)
make.bottom.equalTo(bottomLineView.snp.top).offset(-12)
}
}
}
//
// YHHKRecordsLastStayCell.swift
// galaxy
//
// Created by alexzzw on 2024/9/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsLastStayCell: YHHKRecordsSectionItemBaseCell {
static let cellReuseIdentifier = "YHHKRecordsLastStayCell"
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_R(ofSize:14)
label.textColor = .mainTextColor50
return label
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupCellInfo(title: String?, cellType: YHResignRoundCellType = .top) {
infoTitleLabel.text = title
updateCellCorner(cellType)
}
}
extension YHHKRecordsLastStayCell {
private func setupUI() {
subContainerView.addSubview(infoTitleLabel)
infoTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.top.equalToSuperview().offset(12)
make.bottom.equalToSuperview().offset(-8)
}
}
}
//
// YHHKRecordsOccupyingSpaceCell.swift
// galaxy
//
// Created by alexzzw on 2024/9/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsOccupyingSpaceCell: UITableViewCell {
static let cellReuseIdentifier = "YHHKRecordsOccupyingSpaceCell"
private lazy var bottomLineView: UIView = {
let view = UIView()
view.isHidden = true
view.backgroundColor = .separatorColor
return view
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupCellInfo(_ isShowBottomLine: Bool = false) {
bottomLineView.isHidden = !isShowBottomLine
}
}
extension YHHKRecordsOccupyingSpaceCell {
private func setupUI() {
selectionStyle = .none
backgroundColor = .white
contentView.addSubview(bottomLineView)
bottomLineView.snp.makeConstraints { make in
make.bottom.equalToSuperview()
make.left.equalToSuperview().offset(18)
make.right.equalToSuperview().offset(-18)
make.height.equalTo(1)
}
}
}
//
// YHHKRecordsSectionHeaderCell.swift
// galaxy
//
// Created by alexzzw on 2024/9/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsSectionHeaderCell: YHHKRecordsSectionItemBaseCell {
static let cellReuseIdentifier = "YHHKRecordsSectionHeaderCell"
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize:14)
label.textColor = .mainTextColor
return label
}()
private lazy var bottomLineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
return view
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupCellInfo(title: String?, cellType: YHResignRoundCellType = .top) {
infoTitleLabel.text = title
updateCellCorner(cellType)
}
}
extension YHHKRecordsSectionHeaderCell {
private func setupUI() {
subContainerView.addSubview(infoTitleLabel)
subContainerView.addSubview(bottomLineView)
bottomLineView.snp.makeConstraints { make in
make.bottom.equalToSuperview()
make.left.equalToSuperview().offset(14)
make.right.equalToSuperview().offset(-14)
make.height.equalTo(1)
}
infoTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.top.equalToSuperview().offset(16)
make.bottom.equalTo(bottomLineView.snp.top).offset(-10)
}
}
}
//
// YHHKRecordsSectionItemBaseCell.swift
// galaxy
//
// Created by alexzzw on 2024/9/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsSectionItemBaseCell: UITableViewCell {
lazy var subContainerView: YHBaseDynamicCornerRadiusView = {
let view = YHBaseDynamicCornerRadiusView(cornerRadius: 4, corner: .none)
view.backgroundColor = .contentBkgColor
return view
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func updateCellCorner(_ cellType: YHResignRoundCellType) {
switch cellType {
case .top:
subContainerView.corner = [.topLeft, .topRight]
case .mid:
subContainerView.corner = .none
case .bottom:
subContainerView.corner = [.bottomLeft, .bottomRight]
case .single:
subContainerView.corner = .allCorners
}
}
}
extension YHHKRecordsSectionItemBaseCell {
private func setupUI() {
selectionStyle = .none
backgroundColor = .white
contentView.addSubview(subContainerView)
subContainerView.snp.makeConstraints { make in
make.top.bottom.equalToSuperview()
make.left.equalToSuperview().offset(18)
make.right.equalToSuperview().offset(-18)
}
}
}
//
// YHHKRecordsSummaryItemCell.swift
// galaxy
//
// Created by alexzzw on 2024/9/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHHKRecordsSummaryItemCell: YHHKRecordsSectionItemBaseCell {
static let cellReuseIdentifier = "YHHKRecordsSummaryItemCell"
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_R(ofSize:14)
label.textColor = .mainTextColor
return label
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupCellInfo(title: String?, cellType: YHResignRoundCellType = .top) {
infoTitleLabel.text = title
updateCellCorner(cellType)
if cellType == .bottom {
infoTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.top.equalToSuperview().offset(8)
make.bottom.equalToSuperview().offset(-16)
}
} else {
infoTitleLabel.snp.remakeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.top.equalToSuperview().offset(8)
make.bottom.equalToSuperview().offset(-8)
}
}
}
}
extension YHHKRecordsSummaryItemCell {
private func setupUI() {
subContainerView.addSubview(infoTitleLabel)
infoTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.top.equalToSuperview().offset(8)
make.bottom.equalToSuperview().offset(-8)
}
}
}
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