Commit 1060d1f9 authored by Steven杜宇's avatar Steven杜宇

// 学位信息

parent 502f58ef
...@@ -130,13 +130,29 @@ class YHSpouseBasicInfoVC: YHBaseViewController { ...@@ -130,13 +130,29 @@ class YHSpouseBasicInfoVC: YHBaseViewController {
let title2 = YHFormTitleItem(type: .degreeInfo) let title2 = YHFormTitleItem(type: .degreeInfo)
let item20 = YHFormDetailItem(type: .ownDegree) let item20 = YHFormDetailItem(type: .ownDegree)
item20.placeHolder = "请选择".local item20.placeHolder = "请选择".local
item20.value = spouse.hasDegreeStr() item20.value = spouse.haveDegreeName()
var arr2:[YHFormItemProtocol] = [title2, item20]
if spouse.isHaveDegree() { // 选择了有学位
if let degreeArr = spouse.hasDegreeJson, !degreeArr.isEmpty {
for degreeInfo in degreeArr {
let item = YHFormDetailItem(type: .degreeDetailInfo)
item.value = degreeInfo.toJSONString()
arr2.append(item)
}
} else { // 学位数组为空则添加一个
let item = YHFormDetailItem(type: .degreeDetailInfo)
let newDegree = YHHasDegreeJson()
spouse.hasDegreeJson = [newDegree]
item.value = newDegree.toJSONString()
arr2.append(item)
}
// 添加一行增加学历学位信息
let item = YHFormAddItem(type: .addDegree)
arr2.append(item)
}
// let item21 = YHFormDetailItem(type: .degreeDetailInfo)
// let item22 = YHFormDetailItem(type: .degreeDetailInfo)
let item23 = YHFormAddItem(type: .addDegree)
let arr2:[YHFormItemProtocol] = [title2, item20, item23]
// 在港信息 // 在港信息
let title3 = YHFormTitleItem(type: .inHongKongInfo) let title3 = YHFormTitleItem(type: .inHongKongInfo)
...@@ -348,7 +364,49 @@ extension YHSpouseBasicInfoVC : UITableViewDelegate, UITableViewDataSource { ...@@ -348,7 +364,49 @@ extension YHSpouseBasicInfoVC : UITableViewDelegate, UITableViewDataSource {
if cellType == .degreeDetailInfo { // 学位cell if cellType == .degreeDetailInfo { // 学位cell
let cell = tableView.dequeueReusableCell(withIdentifier: YHFormItemDegreeInfoCell.cellReuseIdentifier, for: indexPath) as! YHFormItemDegreeInfoCell let cell = tableView.dequeueReusableCell(withIdentifier: YHFormItemDegreeInfoCell.cellReuseIdentifier, for: indexPath) as! YHFormItemDegreeInfoCell
cell.title = item.getTitle()
if let degreeArr = self.spouse?.hasDegreeJson {
if indexPath.row-2 < degreeArr.count {
let degreeInfo = degreeArr[indexPath.row-2]
cell.title = String(format: "%@%d", "学位信息".local, indexPath.row-1)
cell.degreePlace = degreeInfo.address
// 前两行是 学历学位信息标题 和 是否拥有学位
cell.showDeleteBtn(indexPath.row > 2)
if let degree = degreeInfo.degree {
if let degreeIndex = Int(degree), let subType = YHPickerViewDegreeType(rawValue: degreeIndex) {
cell.degree = YHFormPickerViewSubType.degree(subType).title
} else {
cell.degree = ""
}
} else {
cell.degree = ""
}
cell.degreeClickBlock = {
YHFormPickerView.show(type: .degree) { [weak self] selectType in
guard let self = self else { return }
degreeInfo.degree = String(selectType.index)
self.loadBasicInfo()
}
}
cell.areaClickBlock = {
YHFormPickerView.show(type: .degree) { [weak self] selectType in
guard let self = self else { return }
degreeInfo.degree = String(selectType.index)
self.loadBasicInfo()
}
}
cell.deleteBlock = {
[weak self] in
guard let self = self else { return }
self.spouse?.hasDegreeJson?.remove(at: indexPath.row-2)
self.loadBasicInfo()
}
}
}
return cell return cell
} }
} }
...@@ -465,12 +523,12 @@ extension YHSpouseBasicInfoVC : UITableViewDelegate, UITableViewDataSource { ...@@ -465,12 +523,12 @@ extension YHSpouseBasicInfoVC : UITableViewDelegate, UITableViewDataSource {
self.loadBasicInfo() self.loadBasicInfo()
} }
} else if detailItem.type == .ownDegree { } else if detailItem.type == .ownDegree {
let hasDegree = self.spouse?.hasDegree ?? "无学位" let hasDegree = self.spouse?.haveDegreeName() ?? "无学位"
YHFormPickerView.show(type: .ownDegree, selectTitle:hasDegree ) { YHFormPickerView.show(type: .ownDegree, selectTitle:hasDegree ) {
[weak self] selectType in [weak self] selectType in
guard let self = self else { return } guard let self = self else { return }
let ownDegree = (selectType.title == YHFormPickerViewSubType.ownDegree(.hasDegree).title) let ownDegree = (selectType.index == YHFormPickerViewSubType.ownDegree(.hasDegree).index)
self.spouse?.setHasDegree(ownDegree) self.spouse?.setHaveDegree(ownDegree)
self.loadBasicInfo() self.loadBasicInfo()
} }
......
...@@ -158,6 +158,8 @@ extension YHSpouseInfoVC { ...@@ -158,6 +158,8 @@ extension YHSpouseInfoVC {
guard let spouse = spouse else { return } guard let spouse = spouse else { return }
guard let info = spouse.toDictionary() else { return } guard let info = spouse.toDictionary() else { return }
let arr = spouse.hasDegreeJson
let dict:[String: Any] = ["orderId":self.orderId, let dict:[String: Any] = ["orderId":self.orderId,
"relation":spouse.relationType.rawValue, "relation":spouse.relationType.rawValue,
"step":spouse.step, "step":spouse.step,
......
...@@ -296,6 +296,30 @@ class YHFormTitleItem : YHFormItemProtocol { ...@@ -296,6 +296,30 @@ class YHFormTitleItem : YHFormItemProtocol {
} }
} }
class YHFormDegreeItem:SmartCodable {
var title:String?
var subTitle1:String? {
return "学位证".local
}
var subTitle2:String? {
return "颁发地区".local
}
var value1:String?
var value2:String?
init(title: String? = nil, value1: String? = nil, value2: String? = nil) {
self.title = title
self.value1 = value1
self.value2 = value2
}
required init() {
}
}
// 具体item // 具体item
class YHFormDetailItem : YHFormItemProtocol { class YHFormDetailItem : YHFormItemProtocol {
...@@ -467,10 +491,8 @@ class YHFamilyMember: SmartCodable, YHFormItemProtocol { ...@@ -467,10 +491,8 @@ class YHFamilyMember: SmartCodable, YHFormItemProtocol {
var relation: String? var relation: String?
// 是否拥有学位 // 是否拥有学位
var hasDegree: String? var hasDegree: String?
// 学历数组
// mark any var hasDegreeJson: [YHHasDegreeJson]?
// var hasDegreeJson: [YHHasDegreeJson]?
var hasDegreeJson: SmartAny?
// 是否随行至香港 // 是否随行至香港
var follow: Int = 0 var follow: Int = 0
...@@ -662,7 +684,7 @@ class YHFamilyMember: SmartCodable, YHFormItemProtocol { ...@@ -662,7 +684,7 @@ class YHFamilyMember: SmartCodable, YHFormItemProtocol {
} }
// 是否拥有学位 // 是否拥有学位
func hasDegreeStr() -> String? { func haveDegreeName() -> String? {
if hasDegree == "1" { if hasDegree == "1" {
return "有学位" return "有学位"
} else { } else {
...@@ -670,7 +692,11 @@ class YHFamilyMember: SmartCodable, YHFormItemProtocol { ...@@ -670,7 +692,11 @@ class YHFamilyMember: SmartCodable, YHFormItemProtocol {
} }
} }
func setHasDegree(_ val:Bool) { func isHaveDegree() ->Bool {
return self.hasDegree == "1"
}
func setHaveDegree(_ val:Bool) {
self.hasDegree = val ? "1" : "0" self.hasDegree = val ? "1" : "0"
} }
......
...@@ -137,9 +137,12 @@ enum YHFormPickerViewSubType { ...@@ -137,9 +137,12 @@ enum YHFormPickerViewSubType {
return "其他".local return "其他".local
} }
return ""
} }
var index:Int { var index:Int {
switch self { switch self {
case .none: case .none:
...@@ -157,11 +160,11 @@ enum YHFormPickerViewSubType { ...@@ -157,11 +160,11 @@ enum YHFormPickerViewSubType {
return 4 return 4
case .degree(.bachelor): case .degree(.bachelor):
return 0
case .degree(.master):
return 1 return 1
case .degree(.doctor): case .degree(.master):
return 2 return 2
case .degree(.doctor):
return 3
case .education(.fullTime): case .education(.fullTime):
return 0 return 0
...@@ -199,10 +202,21 @@ enum YHFormPickerViewSubType { ...@@ -199,10 +202,21 @@ enum YHFormPickerViewSubType {
case .certificate(.officialPassport): case .certificate(.officialPassport):
return 6 return 6
case .ownDegree(_): case .ownDegree(.noDegree):
return 0 return 0
case .identity(_): case .ownDegree(.hasDegree):
return 1 return 1
case .identity(.student):
return 0
case .identity(.employment):
return 1
case .identity(.residence):
return 2
case .identity(.visit):
return 3
case .identity(.other):
return 4
} }
} }
...@@ -222,13 +236,13 @@ enum YHPickerViewMarriageType: Int { ...@@ -222,13 +236,13 @@ enum YHPickerViewMarriageType: Int {
case widowed = 4 case widowed = 4
} }
enum YHPickerViewDegreeType { enum YHPickerViewDegreeType:Int {
// 学士 // 学士
case bachelor case bachelor = 1
// 硕士 // 硕士
case master case master = 2
// 博士 // 博士
case doctor case doctor = 3
} }
enum YHPickerViewEducationType { enum YHPickerViewEducationType {
...@@ -276,24 +290,24 @@ enum YHPickerViewCertificateType: Int { ...@@ -276,24 +290,24 @@ enum YHPickerViewCertificateType: Int {
} }
enum YHPickerViewIdentityType { enum YHPickerViewIdentityType: Int {
// 学生 // 学生
case student case student = 0
// 就业 // 就业
case employment case employment = 1
// 居留 // 居留
case residence case residence = 2
// 访问 // 访问
case visit case visit = 3
// 其他 // 其他
case other case other = 4
} }
enum YHPickerViewHasDegreeType { enum YHPickerViewHasDegreeType: Int {
// 无学位 // 无学位
case noDegree case noDegree = 0
// 有学位 // 有学位
case hasDegree case hasDegree = 1
} }
...@@ -476,7 +490,7 @@ class YHFormPickerView: UIView { ...@@ -476,7 +490,7 @@ class YHFormPickerView: UIView {
UIApplication.shared.yhKeyWindow()?.addSubview(self) UIApplication.shared.yhKeyWindow()?.addSubview(self)
} }
static func show(type:YHFormPickerViewType, selectType:YHFormPickerViewSubType, callBack: @escaping ((YHFormPickerViewSubType)->Void)) { static func show(type:YHFormPickerViewType, selectType:YHFormPickerViewSubType? = nil, callBack: @escaping ((YHFormPickerViewSubType)->Void)) {
let picker = YHFormPickerView(type: type) let picker = YHFormPickerView(type: type)
picker.selectType = selectType picker.selectType = selectType
......
...@@ -11,32 +11,57 @@ import UIKit ...@@ -11,32 +11,57 @@ import UIKit
class YHFormItemDegreeInfoCell: UITableViewCell { class YHFormItemDegreeInfoCell: UITableViewCell {
static let cellReuseIdentifier = "YHFormItemDegreeInfoCell" static let cellReuseIdentifier = "YHFormItemDegreeInfoCell"
let titleFont = UIFont.PFSC_M(ofSize: 16)
var deleteBlock: (()->Void)? var deleteBlock: (()->Void)?
var degreeClickBlock:(()->Void)? {
didSet {
degreeView.clickBlock = degreeClickBlock
}
}
var areaClickBlock:(()->Void)? {
didSet {
areaView.clickBlock = areaClickBlock
}
}
var isNeed:Bool = true
var title:String? { var title:String? {
didSet { didSet {
if let title = title, !title.isEmpty {
if let title = title { let str = isNeed ? "*"+title : title
let str = "*"+title
let attributes: [NSAttributedString.Key: Any] = [ let attributes: [NSAttributedString.Key: Any] = [
.font: UIFont.PFSC_R(ofSize: 14), .font: titleFont,
.foregroundColor: UIColor(hex:0x222222) .foregroundColor: UIColor.mainTextColor]
]
let questionAttrStr = NSMutableAttributedString(string: str, attributes: attributes) let questionAttrStr = NSMutableAttributedString(string: str, attributes: attributes)
let starRange = NSRange(location: 0, length: 1) let starRange = NSRange(location: 0, length: 1)
if isNeed {
questionAttrStr.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor(hex:0xFF3A3A), range: starRange) questionAttrStr.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor(hex:0xFF3A3A), range: starRange)
}
titleLabel.attributedText = questionAttrStr titleLabel.attributedText = questionAttrStr
} else {
titleLabel.text = ""
} }
} }
} }
var degree:String? {
didSet {
degreeView.detail = degree
}
}
var degreePlace:String? {
didSet {
areaView.detail = degreePlace
}
}
lazy var titleLabel: UILabel = { lazy var titleLabel: UILabel = {
let label = UILabel() let label = UILabel()
label.textColor = UIColor(hexString:"#333333") label.textColor = UIColor.mainTextColor
label.textAlignment = .left label.textAlignment = .left
label.numberOfLines = 0 label.numberOfLines = 0
label.font = UIFont.PFSC_R(ofSize: 16) label.font = titleFont
return label return label
}() }()
...@@ -47,7 +72,7 @@ class YHFormItemDegreeInfoCell: UITableViewCell { ...@@ -47,7 +72,7 @@ class YHFormItemDegreeInfoCell: UITableViewCell {
btn.titleLabel?.font = UIFont.PFSC_R(ofSize: 14) btn.titleLabel?.font = UIFont.PFSC_R(ofSize: 14)
btn.setTitleColor(UIColor(hex: 0xF81D22), for: .normal) btn.setTitleColor(UIColor(hex: 0xF81D22), for: .normal)
btn.addTarget(self, action: #selector(didClickDeleteBtn(btn:)), for: .touchUpInside) btn.addTarget(self, action: #selector(didClickDeleteBtn(btn:)), for: .touchUpInside)
// btn.isHidden = true btn.isHidden = true
return btn return btn
}() }()
...@@ -80,6 +105,8 @@ class YHFormItemDegreeInfoCell: UITableViewCell { ...@@ -80,6 +105,8 @@ class YHFormItemDegreeInfoCell: UITableViewCell {
contentView.addSubview(areaView) contentView.addSubview(areaView)
titleLabel.text = "学位信息" titleLabel.text = "学位信息"
degreeView.title = "学位证".local
areaView.title = "颁发地区".local
titleLabel.snp.makeConstraints { make in titleLabel.snp.makeConstraints { make in
make.height.equalTo(52) make.height.equalTo(52)
...@@ -108,6 +135,10 @@ class YHFormItemDegreeInfoCell: UITableViewCell { ...@@ -108,6 +135,10 @@ class YHFormItemDegreeInfoCell: UITableViewCell {
} }
} }
func showDeleteBtn(_ show:Bool) {
deleteButton.isHidden = !show
}
@objc func didClickDeleteBtn(btn:UIButton) { @objc func didClickDeleteBtn(btn:UIButton) {
if let deleteBlock = deleteBlock { if let deleteBlock = deleteBlock {
...@@ -118,40 +149,62 @@ class YHFormItemDegreeInfoCell: UITableViewCell { ...@@ -118,40 +149,62 @@ class YHFormItemDegreeInfoCell: UITableViewCell {
class HKDegreeInfoItemView: UIView { class HKDegreeInfoItemView: UIView {
lazy var titleLabel: UILabel = { var placeHolder:String?
let label = UILabel() var clickBlock:(()->Void)?
label.textColor = UIColor(hexString:"#333333") let titleFont = UIFont.PFSC_R(ofSize: 14)
label.textAlignment = .left
label.numberOfLines = 0
label.font = UIFont.PFSC_R(ofSize: 14)
return label
}()
lazy var detailLabel: UILabel = { var title:String? {
didSet {
if let title = title, !title.isEmpty {
let str = "*"+title
let attributes: [NSAttributedString.Key: Any] = [
.font: titleFont,
.foregroundColor: UIColor.mainTextColor]
let questionAttrStr = NSMutableAttributedString(string: str, attributes: attributes)
let starRange = NSRange(location: 0, length: 1)
questionAttrStr.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor(hex:0xFF3A3A), range: starRange)
titleLabel.attributedText = questionAttrStr
} else {
titleLabel.text = ""
}
}
}
var detail:String? {
didSet {
if let detail = detail, !detail.isEmpty {
detailLabel.text = detail
detailLabel.textColor = .mainTextColor
} else {
detailLabel.text = placeHolder
detailLabel.textColor = .placeHolderColor
}
}
}
private lazy var titleLabel: UILabel = {
let label = UILabel() let label = UILabel()
label.textColor = UIColor(hexString: "#222222") label.textColor = .mainTextColor
label.textAlignment = .left label.textAlignment = .left
label.font = UIFont.PFSC_R(ofSize: 14) label.font = titleFont
label.isHidden = true
return label return label
}() }()
private lazy var tipsLabel: UILabel = { private lazy var detailLabel: UILabel = {
let label = UILabel() let label = UILabel()
label.textColor = UIColor(hexString: "#C0C0C0") label.textColor = .mainTextColor
label.text = "请选择".local
label.textAlignment = .left label.textAlignment = .left
label.font = UIFont.PFSC_R(ofSize: 14) label.font = UIFont.PFSC_M(ofSize: 14)
label.isHidden = false
return label return label
}() }()
lazy var arrowImgView: UIImageView = { private lazy var arrowImgView: UIImageView = {
let imgView = UIImageView(image: UIImage(named: "form_right_arrow")) let imgView = UIImageView(image: UIImage(named: "form_right_arrow"))
return imgView return imgView
}() }()
lazy var topLineView:UIView = { private lazy var topLineView:UIView = {
let view = UIView() let view = UIView()
view.backgroundColor = UIColor(hex: 0xF0F0F0) view.backgroundColor = UIColor(hex: 0xF0F0F0)
return view return view
...@@ -168,14 +221,14 @@ class HKDegreeInfoItemView: UIView { ...@@ -168,14 +221,14 @@ class HKDegreeInfoItemView: UIView {
func createUI() { func createUI() {
self.placeHolder = "请选择".local
self.addSubview(titleLabel) self.addSubview(titleLabel)
self.addSubview(detailLabel) self.addSubview(detailLabel)
self.addSubview(tipsLabel)
self.addSubview(arrowImgView) self.addSubview(arrowImgView)
self.addSubview(topLineView) self.addSubview(topLineView)
titleLabel.text = "XXXXXX" let tap = UITapGestureRecognizer(target: self, action:#selector(tap))
detailLabel.text = "xxxxxxxx" self.addGestureRecognizer(tap)
topLineView.snp.makeConstraints { make in topLineView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16) make.left.equalToSuperview().offset(16)
...@@ -196,14 +249,17 @@ class HKDegreeInfoItemView: UIView { ...@@ -196,14 +249,17 @@ class HKDegreeInfoItemView: UIView {
make.centerY.equalToSuperview() make.centerY.equalToSuperview()
} }
tipsLabel.snp.makeConstraints { make in
make.edges.equalTo(detailLabel)
}
arrowImgView.snp.makeConstraints { make in arrowImgView.snp.makeConstraints { make in
make.size.equalTo(CGSizeMake(20, 20)) make.size.equalTo(CGSizeMake(20, 20))
make.right.equalToSuperview().offset(-16) make.right.equalToSuperview().offset(-16)
make.centerY.equalToSuperview() make.centerY.equalToSuperview()
} }
} }
@objc func tap() {
if let clickBlock = clickBlock {
clickBlock()
}
}
} }
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