Commit 711a9289 authored by pete谢兆麟's avatar pete谢兆麟

Merge commit '6d320a31' into xiezhaolin

parents e9ce944f 6d320a31
......@@ -13,6 +13,7 @@
0435FA832BA2DEB100024EAE /* YHCardButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0435FA822BA2DEB100024EAE /* YHCardButton.swift */; };
044867B42BA1953B00DFAD4A /* YHCertificateFilterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044867B32BA1953B00DFAD4A /* YHCertificateFilterView.swift */; };
044867B62BA1A03800DFAD4A /* YHCertificateFilterItemCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044867B52BA1A03800DFAD4A /* YHCertificateFilterItemCell.swift */; };
044867B82BA1C75700DFAD4A /* YHCertificateUploadFailTipsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044867B72BA1C75700DFAD4A /* YHCertificateUploadFailTipsView.swift */; };
045EEE792B9F171A0022A143 /* YHPreviewViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045EED9A2B9F171A0022A143 /* YHPreviewViewModel.swift */; };
045EEE7A2B9F171A0022A143 /* YHPreviewForOtherInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045EED9C2B9F171A0022A143 /* YHPreviewForOtherInfoModel.swift */; };
045EEE7B2B9F171A0022A143 /* YHPersonInfoCellModel2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045EED9D2B9F171A0022A143 /* YHPersonInfoCellModel2.swift */; };
......@@ -307,6 +308,7 @@
A5C5B32D2B57D66000A7C5D1 /* YHBbxCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5C5B32C2B57D66000A7C5D1 /* YHBbxCollectionViewCell.swift */; };
A5D6AB1B2B46A1CC001C10A5 /* YHHomeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D6AB1A2B46A1CC001C10A5 /* YHHomeModel.swift */; };
A5D6AB1D2B46AAFB001C10A5 /* YHHomePageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D6AB1C2B46AAFB001C10A5 /* YHHomePageViewModel.swift */; };
A5E69D512BA304D400411932 /* DIN Alternate Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A5E69D502BA304D400411932 /* DIN Alternate Bold.ttf */; };
A5F8AC082B9F414000A21EFA /* YHCustomTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5F8AC072B9F414000A21EFA /* YHCustomTextView.swift */; };
A5FD63BD2B623C2C00D1D9DA /* YHInformationPerfectListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5FD63BC2B623C2C00D1D9DA /* YHInformationPerfectListVC.swift */; };
A5FD63BF2B6250BC00D1D9DA /* YHInformationPerfectCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5FD63BE2B6250BC00D1D9DA /* YHInformationPerfectCell.swift */; };
......@@ -356,6 +358,7 @@
0435FA822BA2DEB100024EAE /* YHCardButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCardButton.swift; sourceTree = "<group>"; };
044867B32BA1953B00DFAD4A /* YHCertificateFilterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCertificateFilterView.swift; sourceTree = "<group>"; };
044867B52BA1A03800DFAD4A /* YHCertificateFilterItemCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCertificateFilterItemCell.swift; sourceTree = "<group>"; };
044867B72BA1C75700DFAD4A /* YHCertificateUploadFailTipsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCertificateUploadFailTipsView.swift; sourceTree = "<group>"; };
045EED9A2B9F171A0022A143 /* YHPreviewViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHPreviewViewModel.swift; sourceTree = "<group>"; };
045EED9C2B9F171A0022A143 /* YHPreviewForOtherInfoModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHPreviewForOtherInfoModel.swift; sourceTree = "<group>"; };
045EED9D2B9F171A0022A143 /* YHPersonInfoCellModel2.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHPersonInfoCellModel2.swift; sourceTree = "<group>"; };
......@@ -655,6 +658,7 @@
A5C5B32C2B57D66000A7C5D1 /* YHBbxCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBbxCollectionViewCell.swift; sourceTree = "<group>"; };
A5D6AB1A2B46A1CC001C10A5 /* YHHomeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHomeModel.swift; sourceTree = "<group>"; };
A5D6AB1C2B46AAFB001C10A5 /* YHHomePageViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHomePageViewModel.swift; sourceTree = "<group>"; };
A5E69D502BA304D400411932 /* DIN Alternate Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "DIN Alternate Bold.ttf"; sourceTree = "<group>"; };
A5F8AC072B9F414000A21EFA /* YHCustomTextView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHCustomTextView.swift; sourceTree = "<group>"; };
A5FD63BC2B623C2C00D1D9DA /* YHInformationPerfectListVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHInformationPerfectListVC.swift; sourceTree = "<group>"; };
A5FD63BE2B6250BC00D1D9DA /* YHInformationPerfectCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHInformationPerfectCell.swift; sourceTree = "<group>"; };
......@@ -1342,6 +1346,7 @@
04A671612BA058DE00C1FB91 /* YHCertificateEditSheetView.swift */,
048097702BA18D66000B9DCA /* YHCertificateSearchBar.swift */,
044867B32BA1953B00DFAD4A /* YHCertificateFilterView.swift */,
044867B72BA1C75700DFAD4A /* YHCertificateUploadFailTipsView.swift */,
04A6715F2BA0280800C1FB91 /* YHFileRenameInputView.swift */,
04A6715D2B9FFCA700C1FB91 /* YHCertificateNameCell.swift */,
0480976A2BA15269000B9DCA /* YHCertificateInfoCell.swift */,
......@@ -1630,6 +1635,7 @@
A5ACE9142B4564F7002C94D2 /* Res */ = {
isa = PBXGroup;
children = (
A5E69D4F2BA304D400411932 /* Font */,
A5C5B2ED2B4F9B8800A7C5D1 /* Localizable.xcstrings */,
04808C022B4686510056D53C /* Frameworks */,
A5573EDA2B317C0000D98EC0 /* Assets.xcassets */,
......@@ -1802,6 +1808,14 @@
path = VM;
sourceTree = "<group>";
};
A5E69D4F2BA304D400411932 /* Font */ = {
isa = PBXGroup;
children = (
A5E69D502BA304D400411932 /* DIN Alternate Bold.ttf */,
);
path = Font;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
......@@ -1920,6 +1934,7 @@
045EEF182B9F171A0022A143 /* area.plist in Resources */,
A51044182B493675006B60BB /* README.md in Resources */,
A5573EDB2B317C0000D98EC0 /* Assets.xcassets in Resources */,
A5E69D512BA304D400411932 /* DIN Alternate Bold.ttf in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -1994,6 +2009,7 @@
045EEEF02B9F171A0022A143 /* YHChildPrimaryInfoVC.swift in Sources */,
0468D4202B49320900CFB916 /* YHVerificationCodeLoginController.swift in Sources */,
045EEEF62B9F171A0022A143 /* YHSpousePrimaryInfoVC.swift in Sources */,
044867B82BA1C75700DFAD4A /* YHCertificateUploadFailTipsView.swift in Sources */,
045EEF002B9F171A0022A143 /* YHFormItemEnterDetailCell.swift in Sources */,
A5ACE9362B4564F7002C94D2 /* YHNetworkStatusManager.swift in Sources */,
045EEEEF2B9F171A0022A143 /* YHCertificateInfoController.swift in Sources */,
......@@ -2443,7 +2459,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 5;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = RXHYW88XR7;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
......@@ -2463,7 +2479,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 0.1.8;
MARKETING_VERSION = 0.1.9;
PRODUCT_BUNDLE_IDENTIFIER = com.intelligence.galaxy;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
......@@ -2485,7 +2501,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 5;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = RXHYW88XR7;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
......@@ -2505,7 +2521,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 0.1.8;
MARKETING_VERSION = 0.1.9;
PRODUCT_BUNDLE_IDENTIFIER = com.intelligence.galaxy;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
......@@ -2559,12 +2575,14 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "";
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.galaxy.cn.galaxyUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
......@@ -2576,12 +2594,14 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "";
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.galaxy.cn.galaxyUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
......
......@@ -44,7 +44,17 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
YHLoginManager.shared.loadLocalUserInfoData()
// YHAnalytics.analyticsStart(launchOptions: launchOptions)
// var i = 0
// for family: String in UIFont.familyNames {
// print("\(i)---项目字体---\(family)")
// for names: String in UIFont.fontNames(forFamilyName: family) {
// print("== \(names)")
// }
// i += 1
// }
return true
}
......@@ -71,7 +81,7 @@ extension AppDelegate {
//1.数据解析
#if DEBUG
// SmartConfig.debugMode = .verbose
// SmartConfig.debugMode = .verbose
SmartConfig.debugMode = .none //for test hjl
#else
SmartConfig.debugMode = .none
......@@ -124,7 +134,7 @@ extension AppDelegate {
let tabBarController = YHTabBarViewController()
let v0 = YHNavigationController(rootVC:YHHomeViewController())
// let v0 = YHNavigationController(rootVC:YHPersonInformMainViewController())//for test hjl
// let v0 = YHNavigationController(rootVC:YHPersonInformMainViewController())//for test hjl
let v1 = YHNavigationController(rootVC:YHServiceCenterMainViewController())
let v2 = YHNavigationController(rootVC:YHMyViewController())
......@@ -133,7 +143,7 @@ extension AppDelegate {
v1.tabBarItem = ESTabBarItem.init(YHBasicContentView(),title: "服务中心", image: UIImage(named: "home"), selectedImage: UIImage(named: "home_1"))
v2.tabBarItem = ESTabBarItem.init(YHBasicContentView(),title: "我的", image: UIImage(named: "find"), selectedImage: UIImage(named: "find_1"))
tabBarController.viewControllers = [v0,v1,v2]
// tabBarController.viewControllers = [v1,v2] for test hjl 配合测试同学做自动化测试 Moon 2023.03.12
// tabBarController.viewControllers = [v1,v2] for test hjl 配合测试同学做自动化测试 Moon 2023.03.12
tabBarController.tabBar.backgroundColor = .white
window = UIWindow(frame: UIScreen.main.bounds)
......
......@@ -23,7 +23,11 @@ class YHInformationPerfectListVC: YHBaseViewController {
if hasSubmitFlag == true {
headerTitleDesLable.text = "您已提交信息表"
} else {
headerTitleDesLable.text = "您好," + (serviceCenterMainReqVM.informationFillStepModel?.applicantName ?? "-")
var name = ""
if let applicant = serviceCenterMainReqVM.informationFillStepModel {
name = applicant.applicantName.defaultStringIfEmpty(detaultValue: "尊敬的客户")
}
headerTitleDesLable.text = "您好," + name
}
}
}
......
......@@ -97,17 +97,18 @@ extension YHServiceCenterMainViewController {
make.height.equalTo(216)
}
view.addSubview(loginTipsView)
loginTipsView.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.centerY.equalToSuperview().offset(-64)
make.centerY.equalToSuperview()
make.width.equalTo(KScreenWidth)
}
view.addSubview(noDataView)
noDataView.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.centerY.equalToSuperview().offset(-64)
make.centerY.equalToSuperview()
make.width.equalTo(KScreenWidth)
}
......@@ -124,12 +125,9 @@ extension YHServiceCenterMainViewController {
self.homeTableView.isHidden = true
self.noDataView.isHidden = false
NotificationCenter.default.addObserver(self, selector: #selector(loginSuccess), name: YhConstant.YhNotification.didLoginSuccessNotifiction, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(logoutSuccess), name: YhConstant.YhNotification.didLogoutSuccessNotifiction, object: nil)
}
}
......
......@@ -14,10 +14,10 @@ class YHContactMainItemStatusModel {
didSet {
if type == 1 {
iconName = "service_center_sfsq_xxws_icon"
itemName = "信息完善"
itemName = "我的信息"
} else if type == 2 {
iconName = "service_center_sfsq_zlsc_icon"
itemName = "证件上传"
itemName = "我的证件"
} else if type == 3 {
iconName = "service_center_sfsq_wdpf_icon"
itemName = "我的评分"
......
......@@ -11,15 +11,34 @@ import UIKit
class YHCertificateFilterItemCell: UICollectionViewCell {
static let cellReuseIdentifier = "YHCertificateFilterItemCell"
private let titleSelectColor = UIColor.brandMainColor
private let titleDefaultColor = UIColor.mainTextColor
private let btnSelectFont = UIFont.PFSC_M(ofSize: 13)
private let btnDefaultFont = UIFont.PFSC_R(ofSize: 13)
var title: String? {
didSet {
contentBtn.setTitle(title, for: .normal)
}
}
var isSelect: Bool = false {
didSet {
contentBtn.layer.borderColor = (isSelect ? titleSelectColor : .clear).cgColor
contentBtn.setTitleColor((isSelect ? titleSelectColor : titleDefaultColor), for: .normal)
contentBtn.titleLabel?.font = (isSelect ? btnSelectFont : btnDefaultFont)
}
}
lazy var contentBtn:UIButton = {
let btn = UIButton()
btn.setTitle("证件", for: .normal)
btn.titleLabel?.font = UIFont.PFSC_R(ofSize: 14)
btn.setTitleColor(UIColor.mainTextColor, for: .normal)
btn.setTitle("", for: .normal)
btn.titleLabel?.font = btnDefaultFont
btn.setTitleColor(titleDefaultColor, for: .normal)
btn.backgroundColor = UIColor(hexString:"#F8F9FB")
btn.layer.cornerRadius = 8.0
btn.addTarget(self, action: #selector(didClickBtn), for: .touchUpInside)
btn.layer.cornerRadius = YHCertificateFilterView.itemHeight/2.0
btn.layer.borderWidth = 1.0
btn.isEnabled = false
return btn
}()
......@@ -38,9 +57,4 @@ class YHCertificateFilterItemCell: UICollectionViewCell {
make.edges.equalToSuperview()
}
}
@objc func didClickBtn() {
}
}
......@@ -33,6 +33,7 @@ class YHCertificateFilterSectionInfo {
class YHCertificateFilterItem {
var type: YHCertificateFilterType
var title: String
var isSelected: Bool = false
init(type: YHCertificateFilterType, title: String) {
self.type = type
......@@ -43,22 +44,33 @@ class YHCertificateFilterItem {
class YHCertificateFilterView: UIView {
static let margin = 21.0
static let gap = 12.0
static let itemHeight = 36.0
static let sheetView = YHCertificateFilterView(frame:UIScreen.main.bounds)
var items:[YHCertificateFilterSectionInfo] = [
YHCertificateFilterSectionInfo(title: "类型".local, items: [YHCertificateFilterItem(type: .certificate, title: "证件")])
]
YHCertificateFilterSectionInfo(title: "类型".local, items: [YHCertificateFilterItem(type: .certificate, title: "证件"),
YHCertificateFilterItem(type: .degree, title: "学历"),
YHCertificateFilterItem(type: .employmentProof, title: "工作证明"),
YHCertificateFilterItem(type: .other, title: "其他"),
]),
YHCertificateFilterSectionInfo(title: "状态".local, items: [YHCertificateFilterItem(type: .preUpload, title: "待上传"),
YHCertificateFilterItem(type: .rejected, title: "已驳回"),
YHCertificateFilterItem(type: .review, title: "审核中"),
YHCertificateFilterItem(type: .pass, title: "已通过"),
])]
lazy var collectionView: UICollectionView = {
// 设置布局方向
let flowLayout = UICollectionViewFlowLayout()
let margin = 21.0
let gap = 12.0
flowLayout.minimumInteritemSpacing = 12.0
flowLayout.minimumLineSpacing = 12.0
flowLayout.minimumInteritemSpacing = Self.gap
flowLayout.minimumLineSpacing = Self.gap
flowLayout.scrollDirection = .vertical
collectionView = UICollectionView(frame: .zero, collectionViewLayout: flowLayout)
collectionView.contentInset = UIEdgeInsets(top: 0, left: margin, bottom: 0, right: margin)
collectionView.contentInset = UIEdgeInsets(top: 0, left: Self.margin, bottom: 0, right: Self.margin)
collectionView.backgroundColor = UIColor.white
collectionView.register(YHCertificateFilterItemCell.self, forCellWithReuseIdentifier:YHCertificateFilterItemCell.cellReuseIdentifier)
collectionView.register(YHCertificateFilterTypeView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: YHCertificateFilterTypeView.reuseIdentifier)
......@@ -244,18 +256,34 @@ extension YHCertificateFilterView {
}
@objc func didClickResetBtn() {
for sectionInfo in items {
for item in sectionInfo.items {
item.isSelected = false
}
}
collectionView.reloadData()
}
}
extension YHCertificateFilterView:UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
func numberOfSections(in collectionView: UICollectionView) -> Int {
return items.count
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if 0 <= section && section < items.count {
let sectionInfo = items[section]
return sectionInfo.items.count
}
return 0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: 74, height: 36)
var width = Double(KScreenWidth-Self.margin*2.0-Self.gap*3.0)
width = floor(width/4.0)
return CGSize(width:width, height: Self.itemHeight)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection:Int) -> CGSize {
......@@ -267,22 +295,52 @@ extension YHCertificateFilterView:UICollectionViewDataSource, UICollectionViewDe
if kind == UICollectionView.elementKindSectionHeader {
let headerView: YHCertificateFilterTypeView = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: YHCertificateFilterTypeView.reuseIdentifier, for: indexPath) as! YHCertificateFilterTypeView
return headerView
if 0 <= indexPath.section && indexPath.section < items.count {
let sectionInfo = items[indexPath.section]
headerView.title = sectionInfo.title
}
return headerView
}
return UICollectionReusableView()
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: YHCertificateFilterItemCell.cellReuseIdentifier, for: indexPath) as! YHCertificateFilterItemCell
if 0 <= indexPath.section && indexPath.section < items.count {
let sectionInfo = items[indexPath.section]
if 0 <= indexPath.row && indexPath.row < sectionInfo.items.count {
let item = sectionInfo.items[indexPath.row]
cell.title = item.title
cell.isSelect = item.isSelected
}
}
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if 0 <= indexPath.section && indexPath.section < items.count {
let sectionInfo = items[indexPath.section]
if 0 <= indexPath.row && indexPath.row < sectionInfo.items.count {
let item = sectionInfo.items[indexPath.row]
item.isSelected = !item.isSelected
}
collectionView.reloadData()
}
}
}
class YHCertificateFilterTypeView: UICollectionReusableView {
static let reuseIdentifier = "YHCertificateFilterTypeView"
var title: String? {
didSet {
titleLabel.text = title
}
}
lazy var titleLabel: UILabel = {
let label = UILabel()
label.textColor = UIColor.mainTextColor
......
//
// YHCertificateUploadFailTipsView.swift
// galaxy
//
// Created by edy on 2024/3/13.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
/*
【Usage】
YHCertificateUploadFailTipsView.tipsView().show()
*/
import UIKit
class YHCertificateUploadFailTipsView: UIView {
lazy var blackMaskView: UIView = {
let view = UIView(frame:UIScreen.main.bounds)
view.backgroundColor = UIColor(hex: 0x0F1214, alpha: 0.5)
let tap = UITapGestureRecognizer(target: self, action: #selector(dismiss))
view.addGestureRecognizer(tap)
return view
}()
lazy var whiteContentView: UIView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = 6.0
return view
}()
lazy var failIconImgView: UIImageView = {
let imgV = UIImageView(image: UIImage(named: "my_cer_upload_fail"))
return imgV
}()
lazy var titleLabel: UILabel = {
let label = UILabel()
label.textColor = .mainTextColor
label.textAlignment = .center
label.font = UIFont.PFSC_M(ofSize:17)
label.text = "上传失败"
return label
}()
lazy var tipsLabel: UILabel = {
let label = UILabel()
label.textColor = .labelTextColor2
label.textAlignment = .center
label.font = UIFont.PFSC_R(ofSize:14)
label.numberOfLines = 0
label.text = "请检查文件格式是否为docx、jpg、doc、png、pptx、pdf".local
return label
}()
lazy var knowBtn:UIButton = {
let btn = UIButton()
btn.setTitle("我知道了".local, for: .normal)
btn.titleLabel?.font = UIFont.PFSC_R(ofSize: 14)
btn.setTitleColor(.white, for: .normal)
btn.backgroundColor = UIColor(hexString:"#4388FF")
btn.layer.cornerRadius = 6.0
btn.addTarget(self, action: #selector(dismiss), for: .touchUpInside)
return btn
}()
static func tipsView() -> YHCertificateUploadFailTipsView {
let view = YHCertificateUploadFailTipsView(frame:UIScreen.main.bounds)
return view
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override init(frame: CGRect) {
super.init(frame: frame)
createUI()
}
func createUI() {
self.addSubview(blackMaskView)
self.addSubview(whiteContentView)
whiteContentView.addSubview(failIconImgView)
whiteContentView.addSubview(titleLabel)
whiteContentView.addSubview(tipsLabel)
whiteContentView.addSubview(knowBtn)
blackMaskView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
whiteContentView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(38)
make.right.equalToSuperview().offset(-38)
make.centerX.equalToSuperview()
make.centerY.equalToSuperview()
}
failIconImgView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(30)
make.centerX.equalToSuperview()
make.width.height.equalTo(53)
}
titleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
make.right.equalToSuperview().offset(-16)
make.height.equalTo(24)
make.top.equalTo(failIconImgView.snp.bottom).offset(16)
}
tipsLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
make.right.equalToSuperview().offset(-16)
make.top.equalTo(titleLabel.snp.bottom).offset(8)
}
knowBtn.snp.makeConstraints { make in
make.left.equalToSuperview().offset(21)
make.right.equalToSuperview().offset(-21)
make.height.equalTo(45)
make.top.equalTo(tipsLabel.snp.bottom).offset(31)
make.bottom.equalToSuperview().offset(-21)
}
}
}
extension YHCertificateUploadFailTipsView {
func show() {
UIApplication.shared.yhKeyWindow()?.addSubview(self)
}
@objc func dismiss() {
self.removeFromSuperview()
}
}
......@@ -210,6 +210,24 @@ extension YHEducationDetailVC : UITableViewDelegate, UITableViewDataSource {
cell.isMust = detailItem.isNeed
cell.title = detailItem.getTitle()
cell.text = detailItem.value
cell.textInputCondtion = {
textField in
var max = -1
if detailItem.type == .educationMajor ||
detailItem.type == .educationCity {
max = 100
}
if max > 0 {
if let textStr = textField.text {
textField.text = (textStr.count > max ? textStr[safe: ..<max] : textStr)
}
}
return true
}
cell.textChange = {
[weak self] (text, isEditEnd) in
guard let self = self else { return }
......@@ -322,14 +340,46 @@ extension YHEducationDetailVC : UITableViewDelegate, UITableViewDataSource {
} else if detailItem.type == .educationTime || detailItem.type == .graduateTime { // 入学及毕业年月
YHDatePickView.show(type: .yyyymm) {
[weak self] date in
[weak self] dateStr in
guard let self = self else { return }
if detailItem.type == .educationTime {
detailInfo.admissionTime = date
let format = DateFormatter()
format.dateFormat = "yyyy-MM"
if let selectDate = format.date(from:dateStr) {
let selectTimeInterval = selectDate.timeIntervalSince1970
let currentTimeInterval = Date().timeIntervalSince1970
if detailItem.type == .educationTime { // 选择入学日期
// 入学日期须早于当前日期
if selectTimeInterval > currentTimeInterval {
YHHUD.flash(message: "入学日期须早于当前日期")
return
}
if !detailInfo.graduateTime.isEmpty, let endDate = format.date(from:detailInfo.graduateTime) {
let endTimeInterval = endDate.timeIntervalSince1970
if selectTimeInterval > endTimeInterval {
YHHUD.flash(message: "入学日期须早于毕业日期")
return
}
}
detailInfo.admissionTime = dateStr
}
} else if detailItem.type == .graduateTime {
detailInfo.graduateTime = date
if detailItem.type == .graduateTime { // 选择毕业日期
if !detailInfo.admissionTime.isEmpty, let startDate = format.date(from:detailInfo.admissionTime) {
let startTimeInterval = startDate.timeIntervalSince1970
if selectTimeInterval < startTimeInterval {
YHHUD.flash(message: "毕业日期须晚于入学日期")
return
}
}
detailInfo.graduateTime = dateStr
}
}
loadInfo()
saveInfoSilent()
}
......
......@@ -184,6 +184,24 @@ extension YHQualificationDetailVC : UITableViewDelegate, UITableViewDataSource {
cell.isMust = detailItem.isNeed
cell.title = detailItem.getTitle()
cell.text = detailItem.value
cell.textInputCondtion = {
textField in
var max = -1
if detailItem.type == .conferAgencyFullName ||
detailItem.type == .conferCity {
max = 100
}
if max > 0 {
if let textStr = textField.text {
textField.text = (textStr.count > max ? textStr[safe: ..<max] : textStr)
}
}
return true
}
cell.textChange = {
[weak self] (text, isEditEnd) in
guard let self = self else { return }
......@@ -276,9 +294,22 @@ extension YHQualificationDetailVC : UITableViewDelegate, UITableViewDataSource {
} else if detailItem.type == .conferTime { // 授权年份
YHDatePickView.show(type: .yyyy) {
[weak self] date in
[weak self] dateStr in
guard let self = self else { return }
detailInfo.issuingYear = Int(date) ?? 2024
let format = DateFormatter()
format.dateFormat = "yyyy"
if let selectDate = format.date(from:dateStr) {
let selectTimeInterval = selectDate.timeIntervalSince1970
let currentTimeInterval = Date().timeIntervalSince1970
// 出生日期须早于当前日期
if selectTimeInterval > currentTimeInterval {
YHHUD.flash(message: "授权年份须早于当前年份".local)
return
}
}
detailInfo.issuingYear = Int(dateStr) ?? 2024
loadInfo()
saveInfoSilent()
}
......
......@@ -98,6 +98,9 @@ class YHCollegeSearchBar: UIView {
}
@objc func textFieldChanged(textField:UITextField) {
let text = textField.text ?? ""
let max = 100
textField.text = (text.count > max ? text[safe: ..<max] : text)
if let textChange = textChange {
textChange(textField.text)
}
......
......@@ -154,7 +154,12 @@ extension YHCertificateInfoController : UITableViewDelegate, UITableViewDataSour
cell.placeHolder = detailItem.placeHolder
cell.title = detailItem.getTitle()
cell.text = detailItem.value
cell.setTips(detailItem.tips, isShow: isNeedShowError && detailItem.isNeed && detailItem.isShowTips)
if detailItem.type == .chinaIdentityCardNumber {
cell.setTips(detailItem.tips, isShow: isNeedShowError && detailItem.isNeed && detailItem.value?.count != 18)
} else {
cell.setTips(detailItem.tips, isShow: isNeedShowError && detailItem.isNeed && detailItem.isShowTips)
}
cell.textInputCondtion = {
textField in
......@@ -162,7 +167,7 @@ extension YHCertificateInfoController : UITableViewDelegate, UITableViewDataSour
if detailItem.type == .chinaIdentityCardNumber { // 身份证
max = 18
} else if detailItem.type == .certificateSignPlace { // 签发地
max = 100
max = 50
} else if detailItem.type == .traverlPassportNumber ||
detailItem.type == .certificateNumber {
max = 50
......@@ -305,9 +310,10 @@ extension YHCertificateInfoController : UITableViewDelegate, UITableViewDataSour
self.view?.endEditing(true)
YHDatePickView.show(type: .yyyymmdd) {
[weak self] date in
let dataArr = date.components(separatedBy: YHDatePickView.separator)
print(dataArr)
[weak self] dateStr in
print(dateStr)
guard let self = self else { return }
guard let familyMember = self.familyMember else { return }
......@@ -321,7 +327,42 @@ extension YHCertificateInfoController : UITableViewDelegate, UITableViewDataSour
} else if title.type == .passPortOrTravelInfo {
certificate = familyMember.certificates.passport
}
changeCertificateDate(certificate, type: detailItem.type, date: date)
let format = DateFormatter()
format.dateFormat = "yyyy-MM-dd"
if let selectDate = format.date(from:dateStr) {
let selectTimeInterval = selectDate.timeIntervalSince1970
let currentTimeInterval = Date().timeIntervalSince1970
if detailItem.type == .certificateSignDate { // 选择签发日期
// 签发日期须早于当前日期
if selectTimeInterval > currentTimeInterval {
YHHUD.flash(message: "签发日期须早于当前日期")
return
}
if !certificate.issueDateEndAt.isEmpty, let endDate = format.date(from:certificate.issueDateEndAt) {
let endTimeInterval = endDate.timeIntervalSince1970
if selectTimeInterval > endTimeInterval {
YHHUD.flash(message: "签发日期须早于届满日期")
return
}
}
}
if detailItem.type == .certificateValidDate { // 届满日期
if !certificate.issueDateStartAt.isEmpty, let startDate = format.date(from:certificate.issueDateStartAt) {
let startTimeInterval = startDate.timeIntervalSince1970
if selectTimeInterval < startTimeInterval {
YHHUD.flash(message: "届满日期须晚于签发日期")
return
}
}
}
}
changeCertificateDate(certificate, type: detailItem.type, date: dateStr)
self.loadInfo()
save()
}
......@@ -379,7 +420,7 @@ extension YHCertificateInfoController : UITableViewDelegate, UITableViewDataSour
let isChinaCardMust = familyMember.isChinese() && familyMember.relationType != .child
if isChinaCardMust {
if familyMember.certificates.cnIdentityCard.number.count <= 0
if familyMember.certificates.cnIdentityCard.number.count != 18
|| familyMember.certificates.cnIdentityCard.issueAt.count <= 0
|| familyMember.certificates.cnIdentityCard.issueDateStartAt.count <= 0
|| familyMember.certificates.cnIdentityCard.issueDateEndAt.count <= 0
......
......@@ -265,11 +265,18 @@ extension YHChildBasicInfoVC : UITableViewDelegate, UITableViewDataSource {
cell.title = detailItem.getTitle()
cell.text = detailItem.value
cell.setTips(detailItem.tips, isShow: isNeedShowError && detailItem.isShowTips)
if detailItem.type == .befourMarryFirstName {
cell.textField.keyboardType = .asciiCapable // 英文键盘
} else {
cell.textField.keyboardType = .default
}
cell.textInputCondtion = {
textField in
if detailItem.type == .befourMarryFirstName { // 仅支持输入最多30个大写字母
let regex = "[^A-Z]+"
let regex = "[^A-Za-z]+"
textField.limitInputWithPattern(pattern:regex, 30)
return true
}
......@@ -302,7 +309,10 @@ extension YHChildBasicInfoVC : UITableViewDelegate, UITableViewDataSource {
self.child?.usedName = text ?? ""
} else if detailItem.type == .befourMarryFirstName {
self.child?.surname = text ?? ""
let tt = text?.uppercased()
self.child?.surname = tt ?? ""
cell.textField.text = tt
} else if detailItem.type == .birthCity {
self.child?.birthPlace.foreign = text ?? ""
......@@ -442,13 +452,25 @@ extension YHChildBasicInfoVC : UITableViewDelegate, UITableViewDataSource {
} else if detailItem.type == .stayHKDate {
title = "选择逗留日期"
}
YHDatePickView.show(type: .yyyymmdd, title:title) { [weak self] date in
YHDatePickView.show(type: .yyyymmdd, title:title) { [weak self] dateStr in
guard let self = self else { return }
if detailItem.type == .birthday {
self.child?.birthday = date
let format = DateFormatter()
format.dateFormat = "yyyy-MM-dd"
if let selectDate = format.date(from:dateStr) {
let selectTimeInterval = selectDate.timeIntervalSince1970
let currentTimeInterval = Date().timeIntervalSince1970
// 出生日期须早于当前日期
if selectTimeInterval > currentTimeInterval {
YHHUD.flash(message: "出生日期须早于当前日期".local)
return
}
}
self.child?.birthday = dateStr
} else if detailItem.type == .stayHKDate {
self.child?.childInHk.info = date
self.child?.childInHk.info = dateStr
}
loadInfo()
save()
......
......@@ -410,11 +410,22 @@ extension YHBrotherInfoVC : UITableViewDelegate, UITableViewDataSource {
let detailItem = item as! YHFormDetailItem
if detailItem.type == .birthday { // 出生日期
YHDatePickView.show(type: .yyyymmdd) { [weak self] date in
YHDatePickView.show(type: .yyyymmdd) { [weak self] dateStr in
guard let self = self else { return }
if detailItem.type == .birthday {
self.brotherInfo?.birthday = date
let format = DateFormatter()
format.dateFormat = "yyyy-MM-dd"
if let selectDate = format.date(from:dateStr) {
let selectTimeInterval = selectDate.timeIntervalSince1970
let currentTimeInterval = Date().timeIntervalSince1970
// 出生日期须早于当前日期
if selectTimeInterval > currentTimeInterval {
YHHUD.flash(message: "出生日期须早于当前日期".local)
return
}
}
self.brotherInfo?.birthday = dateStr
}
self.loadInfo()
saveInfoSilent()
......
......@@ -455,11 +455,22 @@ extension YHParentInfoVC : UITableViewDelegate, UITableViewDataSource {
let detailItem = item as! YHFormDetailItem
if detailItem.type == .birthday { // 出生日期
YHDatePickView.show(type: .yyyymmdd) { [weak self] date in
YHDatePickView.show(type: .yyyymmdd) { [weak self] dateStr in
guard let self = self else { return }
if detailItem.type == .birthday {
self.parentInfo?.birthday = date
let format = DateFormatter()
format.dateFormat = "yyyy-MM-dd"
if let selectDate = format.date(from:dateStr) {
let selectTimeInterval = selectDate.timeIntervalSince1970
let currentTimeInterval = Date().timeIntervalSince1970
// 出生日期须早于当前日期
if selectTimeInterval > currentTimeInterval {
YHHUD.flash(message: "出生日期须早于当前日期".local)
return
}
}
self.parentInfo?.birthday = dateStr
}
self.loadInfo()
saveInfoSilent()
......
......@@ -391,11 +391,18 @@ extension YHSpouseBasicInfoVC : UITableViewDelegate, UITableViewDataSource {
} else {
cell.setTips(detailItem.tips, isShow: isNeedShowError && detailItem.isShowTips)
}
if detailItem.type == .befourMarryFirstName {
cell.textField.keyboardType = .asciiCapable // 英文键盘
} else {
cell.textField.keyboardType = .default
}
cell.textInputCondtion = {
textField in
if detailItem.type == .befourMarryFirstName { // 仅支持输入最多30个大写字母
let regex = "[^A-Z]+"
let regex = "[^A-Za-z]+"
textField.limitInputWithPattern(pattern:regex, 30)
return true
}
......@@ -425,7 +432,12 @@ extension YHSpouseBasicInfoVC : UITableViewDelegate, UITableViewDataSource {
} else if detailItem.type == .everName {
self.spouse?.usedName = text ?? ""
} else if detailItem.type == .befourMarryFirstName {
self.spouse?.surname = text ?? ""
let tt = text?.uppercased()
self.spouse?.surname = tt ?? ""
cell.textField.text = tt
} else if detailItem.type == .birthCity {
self.spouse?.birthPlace.foreign = text ?? ""
} else if detailItem.type == .occupationName {
......@@ -630,13 +642,27 @@ extension YHSpouseBasicInfoVC : UITableViewDelegate, UITableViewDataSource {
} else if detailItem.type == .stayHKDate {
title = "选择逗留日期"
}
YHDatePickView.show(type: .yyyymmdd, title:title) { [weak self] date in
YHDatePickView.show(type: .yyyymmdd, title:title) { [weak self] dateStr in
guard let self = self else { return }
if detailItem.type == .birthday {
self.spouse?.birthday = date
let format = DateFormatter()
format.dateFormat = "yyyy-MM-dd"
if let selectDate = format.date(from:dateStr) {
let selectTimeInterval = selectDate.timeIntervalSince1970
let currentTimeInterval = Date().timeIntervalSince1970
// 出生日期须早于当前日期
if selectTimeInterval > currentTimeInterval {
YHHUD.flash(message: "出生日期须早于当前日期".local)
return
}
}
self.spouse?.birthday = dateStr
} else if detailItem.type == .stayHKDate {
self.spouse?.childInHk.info = date
self.spouse?.childInHk.info = dateStr
}
loadInfo()
save()
......
......@@ -118,15 +118,15 @@ class YHFamilyMemberInfoListVC: YHBaseViewController {
}
@objc func didClickSubmitBtn() {
// let isChecked = checkIntegrity()
// isNeedShowError = !isChecked
//
// self.tableView .reloadData()
//
// if !isChecked {
// YHHUD.flash(message: "资料还未填完")
// return
// }
let isChecked = checkIntegrity()
isNeedShowError = !isChecked
self.tableView .reloadData()
if !isChecked {
YHHUD.flash(message: "资料还未填完")
return
}
submit()
}
......@@ -306,7 +306,7 @@ extension YHFamilyMemberInfoListVC {
if let errMsg = error?.errorMsg, errMsg.count > 0 {
errorMsg = errMsg
}
YHHUD.flash(message: errorMsg)
YHHUD.flash(message: errorMsg, duration:3)
}
}
}
......@@ -377,15 +377,18 @@ extension YHFamilyMemberInfoListVC : UITableViewDelegate, UITableViewDataSource
let detailItem = item as! YHFamilyMember
let cell = tableView.dequeueReusableCell(withIdentifier: YHFormItemEnterDetailCell.cellReuseIdentifier, for: indexPath) as! YHFormItemEnterDetailCell
cell.title = detailItem.getTitle()
cell.detailLabel.textColor = (isNeedShowError && detailItem.notFillNumber != 0 ? .failColor : .labelTextColor2)
// cell.detailLabel.textColor = (isNeedShowError && detailItem.notFillNumber != 0 ? .failColor : .labelTextColor2)
var tips = ""
if detailItem.notFillNumber > 0 {
cell.detailLabel.text = String(format: "有%d项未填写".local, detailItem.notFillNumber)
tips = String(format: "有%d项未填写".local, detailItem.notFillNumber)
} else if detailItem.notFillNumber == 0 {
cell.detailLabel.text = "已填完".local
tips = "已填完".local
} else {
cell.detailLabel.text = "还未开始填写".local
tips = "还未开始填写".local
}
cell.detailLabel.text = tips
cell.setTips(tips, isShow: (isNeedShowError && detailItem.notFillNumber != 0))
if isEmptyString(detailItem.subsetName) { // 姓名为空
if detailItem.relationType == .child {
......
......@@ -55,7 +55,6 @@ class YHFormItemEnterDetailCell: UITableViewCell {
private lazy var titleLabel: UILabel = {
let label = UILabel()
label.text = "XXXXXXX"
label.textColor = titleColor
label.textAlignment = .left
label.numberOfLines = 0
......@@ -65,13 +64,20 @@ class YHFormItemEnterDetailCell: UITableViewCell {
lazy var detailLabel: UILabel = {
let label = UILabel()
label.text = "XXXXXXX"
label.textColor = .labelTextColor2
label.textAlignment = .right
label.font = UIFont.PFSC_R(ofSize: 14)
return label
}()
lazy var tipsLabel: UILabel = {
let label = UILabel()
label.textColor = .failColor
label.textAlignment = .left
label.font = UIFont.PFSC_R(ofSize: 12)
return label
}()
private lazy var arrowImgView: UIImageView = {
let imgView = UIImageView(image: UIImage(named: "form_right_arrow"))
return imgView
......@@ -110,6 +116,7 @@ class YHFormItemEnterDetailCell: UITableViewCell {
contentView.addSubview(titleLabel)
contentView.addSubview(detailLabel)
contentView.addSubview(tipsLabel)
contentView.addSubview(arrowImgView)
contentView.addSubview(deleteButton)
contentView.addSubview(topLine)
......@@ -119,7 +126,7 @@ class YHFormItemEnterDetailCell: UITableViewCell {
make.top.equalToSuperview().offset(16)
make.left.equalToSuperview().offset(horizonalGap)
make.right.equalTo(detailLabel.snp.left).offset(-8)
make.bottom.equalToSuperview().offset(-16)
make.height.equalTo(20)
}
detailLabel.snp.makeConstraints { make in
......@@ -127,7 +134,7 @@ class YHFormItemEnterDetailCell: UITableViewCell {
make.width.equalTo(110.0)
make.top.equalTo(titleLabel)
}
arrowImgView.snp.makeConstraints { make in
make.size.equalTo(CGSizeMake(20, 20))
make.right.equalToSuperview().offset(-horizonalGap)
......@@ -146,6 +153,31 @@ class YHFormItemEnterDetailCell: UITableViewCell {
make.height.equalTo(1.0)
make.top.equalToSuperview()
}
setTips("", isShow:false)
}
func setTips(_ tips:String?, isShow:Bool) {
tipsLabel.text = tips
tipsLabel.isHidden = !isShow
if isShow {
tipsLabel.snp.remakeConstraints { make in
make.left.equalToSuperview().offset(horizonalGap)
make.right.equalToSuperview().offset(-horizonalGap)
make.top.equalTo(titleLabel.snp.bottom).offset(6)
make.bottom.equalToSuperview().offset(-16)
}
} else {
tipsLabel.snp.remakeConstraints { make in
make.top.equalTo(titleLabel.snp.bottom)
make.left.equalToSuperview().offset(horizonalGap)
make.right.equalToSuperview().offset(-horizonalGap)
make.height.equalTo(0)
make.bottom.equalToSuperview().offset(-16)
}
}
self.setNeedsLayout()
self.layoutIfNeeded()
}
@objc func didClickDeleteBtn(btn:UIButton) {
......
......@@ -69,7 +69,7 @@ class YHFormItemInputTextCell: UITableViewCell {
return label
}()
private lazy var textField:UITextField = {
lazy var textField:UITextField = {
let textField = UITextField()
textField.backgroundColor = .clear
textField.placeholder = "请输入"
......
......@@ -273,6 +273,14 @@ class YHItemView: UIView {
if dataSource.isShowPrompts ?? false {
if dataSource.message?.count != 0 {
showPromptLabel.isHidden = true
//特殊处理身份证
if dataSource.id == .id8 {
if let message = dataSource.message,message.count == 18 {
} else {
showPromptLabel.isHidden = false
}
}
} else {
showPromptLabel.isHidden = false
}
......@@ -280,6 +288,7 @@ class YHItemView: UIView {
showPromptLabel.isHidden = true
}
if dataSource.id == .id11 || dataSource.id == .id15 || dataSource.id == .id20 {
longTimeButton.isHidden = false
nextStepImageView.isHidden = true
......@@ -476,19 +485,20 @@ extension YHItemView: UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
var newText = (textField.text! as NSString).replacingCharacters(in: range, with: string)
if (dataSource?.id == .id9 || dataSource?.id == .id21 || dataSource?.id == .id22 || dataSource?.id == .id23) && newText.count > 30 {
if (dataSource?.id == .id21 || dataSource?.id == .id22 || dataSource?.id == .id23) && newText.count > 30 {
return false
}
if (dataSource?.id == .id4 || dataSource?.id == .id32 || dataSource?.id == .id13 || dataSource?.id == .id18 || dataSource?.id == .id32 ) && newText.count > 100 {
if (dataSource?.id == .id4 || dataSource?.id == .id32 || dataSource?.id == .id13 || dataSource?.id == .id32 || dataSource?.id == .id26 || dataSource?.id == .id34 ) && newText.count > 100 {
return false
}
if (dataSource?.id == .id12 || dataSource?.id == .id17 || dataSource?.id == .id30) && newText.count > 50 {
if (dataSource?.id == .id12 || dataSource?.id == .id17 || dataSource?.id == .id30 ||
dataSource?.id == .id9 || dataSource?.id == .id13 || dataSource?.id == .id18) && newText.count > 50 {
return false
}
if (dataSource?.id == .id8) && newText.count > 20 {
if (dataSource?.id == .id8) && newText.count > 18 {
return false
}
......@@ -497,7 +507,9 @@ extension YHItemView: UITextFieldDelegate {
}
if dataSource?.id == .id23 {
newText = newText.uppercased()
let regex = "[^A-Za-z]+"
textField.limitInputWithPattern(pattern:regex, 30)
newText = textField.text!.uppercased()
}
var data = dataSource ?? YHItemModel()
......
......@@ -472,6 +472,8 @@ class YHMainApplicantInformationViewModel: YHBaseViewModel {
let passport_issue_date_start_at = mainModel.certificates.passport.issue_date_start_at
let passport_issue_date_end_at = mainModel.certificates.passport.issue_date_end_at
let nationality = mainModel.nationality
if self.mainModel.is_handled == 1 {
guard hk_macao_pass_number.count > 0 else { return false }
guard hk_macao_pass_issue_at.count > 0 else { return false }
......@@ -479,7 +481,7 @@ class YHMainApplicantInformationViewModel: YHBaseViewModel {
guard hk_macao_pass_issue_date_end_at.count > 0 else { return false }
}
if nationality.contains("中国") {
guard cn_identity_card_number.count > 0 else { return false }
guard cn_identity_card_number.count == 18 else { return false }
guard cn_identity_card_issue_at.count > 0 else { return false }
guard cn_identity_card_issue_date_start_at.count > 0 else { return false }
guard cn_identity_card_issue_date_end_at.count > 0 else { return false }
......@@ -498,7 +500,7 @@ class YHMainApplicantInformationViewModel: YHBaseViewModel {
let birth_place_area = mainModel.birth_place.area
let birth_place_foreign = mainModel.birth_place.foreign
let sex = mainModel.sex
let married = mainModel.married
_ = mainModel.married
let mobile = mainModel.mobile
let email = mainModel.email
let has_hk_id = mainModel.has_hk_id
......
......@@ -158,7 +158,7 @@ extension YHOtherTextViewItemView : UITextFieldDelegate {
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if !text.isEmpty {
if textView.text.count > 999 {
if textView.text.count > 1999 {
return false
}
}
......
......@@ -256,7 +256,14 @@ private extension YHPreviewViewModel {
let tempppp = YHConstantArrayData.getShowNameBy(indexStr: String(model.administrative_level), type: .structure)
let tmp13 = YHPreviewQuestionAndAnswerModel(question: "行政架构层级:", answer:tempppp)
let tmp14 = YHPreviewQuestionAndAnswerModel(question: "下属管理人数:", answer:String(model.company_manage_total))
let tmp15 = YHPreviewQuestionAndAnswerModel(question: "公司营业额/港元(近一年):", answer:String(model.turnover).defaultStringIfEmpty())
var ttt = ""
if model.turnover == 0 {
ttt = title.defaultStringIfEmpty()
} else {
ttt = String(model.turnover).defaultStringIfEmpty()
}
let tmp15 = YHPreviewQuestionAndAnswerModel(question: "公司营业额/港元(近一年):", answer:ttt)
let tempppp0 = YHConstantArrayData.getShowNameBy(indexStr: String(model.professional_level), type: .level)
let tmp16 = YHPreviewQuestionAndAnswerModel(question: "职业水平类别:", answer:tempppp0)
......
......@@ -166,6 +166,16 @@ extension YHCompanySelectViewController: UITextFieldDelegate {
textField.text = ""
return true
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if string.count > 0 {
let newText = (textField.text! as NSString).replacingCharacters(in: range, with: string)
if newText.count > 100 {
return false
}
}
return true
}
}
extension YHCompanySelectViewController: UITableViewDelegate, UITableViewDataSource {
......
......@@ -329,6 +329,10 @@ extension YHWorkIntroductionViewController: UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let newText = (textField.text! as NSString).replacingCharacters(in: range, with: string)
if newText.count > 100 {
return false
}
dataSource.project_name = newText
return true
}
......
......@@ -476,7 +476,7 @@ extension YHWorkExperienceItemView: UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let newText = (textField.text! as NSString).replacingCharacters(in: range, with: string)
if (dataSource?.id == .id1 || dataSource?.id == .id7 || dataSource?.id == .id8 || dataSource?.id == .id12 || dataSource?.id == .id14 || dataSource?.id == .id16 || dataSource?.id == .id18) && newText.count > 100 {
if (dataSource?.id == .id1 || dataSource?.id == .id7 || dataSource?.id == .id8 || dataSource?.id == .id12 || dataSource?.id == .id14 || dataSource?.id == .id16 || dataSource?.id == .id18) && newText.count > 1 {
return false
}
......@@ -488,10 +488,30 @@ extension YHWorkExperienceItemView: UITextFieldDelegate {
return false
}
if dataSource?.id == .id17 && newText.count > 10 {
if dataSource?.id == .id17 && newText.count > 14 {
//10万亿元 100000 000000000
// let target = 100000000000000
// if let value = Int64(newText) {
// if value > target {
// return false
// }
// } else {
// return false
// }
return false
}
if dataSource?.id == .id12 && newText.count > 50 {
return false
}
if (dataSource?.id == .id14 || dataSource?.id == .id16 || dataSource?.id == .id18) && newText.count > 100 {
return false
}
var data = dataSource ?? YHWorkExperienceModel()
data.message = newText
if let block = block {
......
......@@ -161,25 +161,25 @@ class YHInformationFillTipsAlertView: UIView {
let lable01 = UILabel(text: "信息填写提示")
lable01.textAlignment = .center
lable01.font = UIFont.PFSC_M(ofSize: 17)
lable01.textColor = UIColor.mainTextColor
topView.addSubview(lable01)
lable01.snp.makeConstraints { make in
make.left.equalTo(21)
make.right.equalTo(-21)
make.top.equalTo(16)
make.top.equalTo(kMargin)
make.centerX.equalToSuperview()
make.height.equalTo(24)
}
let line = UIView()
line.backgroundColor = UIColor(hexString: "#F0F0F0")
line.backgroundColor = UIColor.separatorColor
topView.addSubview(line)
line.snp.makeConstraints { make in
make.top.equalTo(lable01.snp.bottom).offset(12)
make.left.equalTo(21)
make.right.equalTo(-21)
make.top.equalTo(lable01.snp.bottom).offset(12)
make.height.equalTo(0.5)
make.bottom.equalToSuperview()
}
......
......@@ -57,7 +57,7 @@ extension YHInformationFillTipsCell {
}
//添加元素
let lable0 = UILabel(text: " 您好!欢迎来到香港优才申请系统,请按照实际情况填写。")
let lable0 = UILabel(text: " 您好!欢迎来到香港优才申请系统,请按照实际情况填写。")
lable0.font = UIFont.PFSC_R(ofSize: 14)
lable0.textColor = UIColor.mainTextColor
lable0.numberOfLines = 0
......@@ -70,12 +70,12 @@ extension YHInformationFillTipsCell {
}
let lable1 = UILabel(text: " 1. 如您填写途中想离开系统,记得点击保存,在您有空闲的时间再继续进行填写;")
let lable1 = UILabel(text: " 1. 如您填写途中想离开系统,记得点击保存,在您有空闲的时间再继续进行填写;")
lable1.font = UIFont.PFSC_R(ofSize: 14)
lable1.textColor = UIColor.mainTextColor
lable1.numberOfLines = 0
lable1.lineBreakMode = .byWordWrapping
let a: ASAttributedString = .init(" 1. 如您填写途中想离开系统,", .font(UIFont.PFSC_R(ofSize: 14)),.foreground(UIColor.mainTextColor))
let a: ASAttributedString = .init(" 1. 如您填写途中想离开系统,", .font(UIFont.PFSC_R(ofSize: 14)),.foreground(UIColor.mainTextColor))
let b: ASAttributedString = .init("记得点击保存", .font(UIFont.PFSC_R(ofSize: 14)),.foreground(UIColor.brandMainColor))
let c: ASAttributedString = .init(",在您有空闲的时间再继续进行填写;", .font(UIFont.PFSC_R(ofSize: 14)),.foreground(UIColor.mainTextColor))
lable1.attributed.text = a + b + c
......@@ -86,13 +86,13 @@ extension YHInformationFillTipsCell {
make.left.right.equalToSuperview()
}
let lable2 = UILabel(text: " 2. 此次填写将花费您30-40分钟,系统将根据您所填写的信息,形成详细资料清单,一起为香港身份起航吧~")
let lable2 = UILabel(text: " 2. 此次填写将花费您30-40分钟,系统将根据您所填写的信息,形成详细资料清单,一起为香港身份起航吧~")
lable2.font = UIFont.PFSC_R(ofSize: 14)
lable2.textColor = UIColor.mainTextColor
lable2.numberOfLines = 0
lable2.lineBreakMode = .byWordWrapping
let aa: ASAttributedString = .init(" 2. 此次填写将花费您", .font(UIFont.PFSC_R(ofSize: 14)),.foreground(UIColor.mainTextColor))
let aa: ASAttributedString = .init(" 2. 此次填写将花费您", .font(UIFont.PFSC_R(ofSize: 14)),.foreground(UIColor.mainTextColor))
let bb: ASAttributedString = .init("30-40分钟", .font(UIFont.PFSC_R(ofSize: 14)),.foreground(UIColor.brandMainColor))
let cc: ASAttributedString = .init(",系统将根据您所填写的信息,形成详细资料清单,一起为香港身份起航吧~", .font(UIFont.PFSC_R(ofSize: 14)),.foreground(UIColor.mainTextColor))
lable2.attributed.text = aa + bb + cc
......
......@@ -61,6 +61,38 @@ class YHLoginTipsView: UIView {
initView()
}
override func layoutSubviews() {
super.layoutSubviews()
tipsLab.snp.removeConstraints()
loginBtn.snp.removeConstraints()
loginBtn.isHidden = true
if viewType == 0 {
loginBtn.isHidden = false
tipsLab.snp.remakeConstraints { make in
make.top.equalTo(iconImgV.snp.bottom).offset(12)
make.centerX.equalToSuperview()
make.left.right.equalToSuperview()
}
loginBtn.snp.remakeConstraints { make in
make.top.equalTo(tipsLab.snp.bottom).offset(21)
make.centerX.equalToSuperview()
make.height.equalTo(36)
make.width.equalTo(86)
make.bottom.equalToSuperview()
}
} else {
tipsLab.snp.remakeConstraints { make in
make.top.equalTo(iconImgV.snp.bottom).offset(12)
make.centerX.equalToSuperview()
make.left.right.equalToSuperview()
make.bottom.equalToSuperview()
}
}
}
private func initView() {
addSubview(iconImgV)
iconImgV.snp.makeConstraints { make in
......@@ -88,7 +120,7 @@ class YHLoginTipsView: UIView {
loginBtn.addTarget(self, action: #selector(clickLoginBtn), for: .touchUpInside)
layoutIfNeeded()
loginBtn.backgroundColor = .brandMainColor//for test hjl
loginBtn.backgroundColor = .brandMainColor
loginBtn.addYinHeGradualLayer()
}
......
......@@ -135,47 +135,45 @@ extension YHServiceCenterMainViewModel {
model.isFinished = true
arrContactStausItmes.append(model)
let model2 = YHContactMainItemStatusModel()
model2.type = 2
model2.isFinished = false
arrContactStausItmes.append(model2)
if resultModel.supplement_not_submit_num > 0 {
let model2 = YHContactMainItemStatusModel()
model2.type = 2
model2.isFinished = false
arrContactStausItmes.append(model2)
} else {
let model2 = YHContactMainItemStatusModel()
model2.type = 2
model2.isFinished = true
arrContactStausItmes.append(model2)
}
//我的评分
let model3 = YHContactMainItemStatusModel()
model3.type = 3
model3.isFinished = false
model3.isFinished = true
arrContactStausItmes.append(model3)
let model4 = YHContactMainItemStatusModel()
model4.type = 4
model4.isFinished = false
arrContactStausItmes.append(model4)
let model5 = YHContactMainItemStatusModel()
model5.type = 5
model5.isFinished = false
arrContactStausItmes.append(model5)
if resultModel.my_document {
//我的文书
let model4 = YHContactMainItemStatusModel()
model4.type = 4
model4.isFinished = true
arrContactStausItmes.append(model4)
}
if resultModel.my_signature {
let model5 = YHContactMainItemStatusModel()
model5.type = 5
model5.isFinished = true
arrContactStausItmes.append(model5)
}
} else {
let model = YHContactMainItemStatusModel()
model.type = 1
model.isFinished = false
arrContactStausItmes.append(model)
let model2 = YHContactMainItemStatusModel()
model2.type = 2
model2.isFinished = false
arrContactStausItmes.append(model2)
let model4 = YHContactMainItemStatusModel()
model4.type = 4
model4.isFinished = false
arrContactStausItmes.append(model4)
let model5 = YHContactMainItemStatusModel()
model5.type = 5
model5.isFinished = false
arrContactStausItmes.append(model5)
}
callBackBlock(true,nil)
} else {
......
......@@ -169,6 +169,21 @@ extension YHMyViewController : UITableViewDelegate, UITableViewDataSource {
if (indexPath.row >= items.count) { return }
// if true {
// YHCertificateUploadFailTipsView.tipsView().show()
// let vc = YHUploadContentVC()
// self.navigationController?.pushViewController(vc)
// let vc = YHCertificateResourceUploadVC()
// self.navigationController?.pushViewController(vc)
// return
// }
if !checkLogin() {
let vc = UINavigationController(rootVC: YHPhoneLoginViewController())
vc.modalPresentationStyle = .custom
......
......@@ -345,7 +345,7 @@ class YHConstantArrayData {
//通过 id 获取 title
static func getShowNameBy(indexStr:String,type : YHOtherPickerViewType) -> String {
if indexStr.isEmpty {
return "未知"
return "--"
}
var arrData : [[String : String]] = [[:]]
switch type {
......@@ -365,9 +365,9 @@ class YHConstantArrayData {
for item in arrData {
if let target = item["id"],indexStr == target {
return item["title"] ?? "未知"
return item["title"] ?? "--"
}
}
return "未知"
return "--"
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Group 3034@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Group 3034@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
......@@ -2,6 +2,10 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIAppFonts</key>
<array>
<string>DIN Alternate Bold</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
......
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