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

// 学位信息

parent 502f58ef
......@@ -130,13 +130,29 @@ class YHSpouseBasicInfoVC: YHBaseViewController {
let title2 = YHFormTitleItem(type: .degreeInfo)
let item20 = YHFormDetailItem(type: .ownDegree)
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)
......@@ -348,7 +364,49 @@ extension YHSpouseBasicInfoVC : UITableViewDelegate, UITableViewDataSource {
if cellType == .degreeDetailInfo { // 学位cell
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
}
}
......@@ -465,12 +523,12 @@ extension YHSpouseBasicInfoVC : UITableViewDelegate, UITableViewDataSource {
self.loadBasicInfo()
}
} else if detailItem.type == .ownDegree {
let hasDegree = self.spouse?.hasDegree ?? "无学位"
let hasDegree = self.spouse?.haveDegreeName() ?? "无学位"
YHFormPickerView.show(type: .ownDegree, selectTitle:hasDegree ) {
[weak self] selectType in
guard let self = self else { return }
let ownDegree = (selectType.title == YHFormPickerViewSubType.ownDegree(.hasDegree).title)
self.spouse?.setHasDegree(ownDegree)
let ownDegree = (selectType.index == YHFormPickerViewSubType.ownDegree(.hasDegree).index)
self.spouse?.setHaveDegree(ownDegree)
self.loadBasicInfo()
}
......
......@@ -158,6 +158,8 @@ extension YHSpouseInfoVC {
guard let spouse = spouse else { return }
guard let info = spouse.toDictionary() else { return }
let arr = spouse.hasDegreeJson
let dict:[String: Any] = ["orderId":self.orderId,
"relation":spouse.relationType.rawValue,
"step":spouse.step,
......
......@@ -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
class YHFormDetailItem : YHFormItemProtocol {
......@@ -467,10 +491,8 @@ class YHFamilyMember: SmartCodable, YHFormItemProtocol {
var relation: String?
// 是否拥有学位
var hasDegree: String?
// mark any
// var hasDegreeJson: [YHHasDegreeJson]?
var hasDegreeJson: SmartAny?
// 学历数组
var hasDegreeJson: [YHHasDegreeJson]?
// 是否随行至香港
var follow: Int = 0
......@@ -662,7 +684,7 @@ class YHFamilyMember: SmartCodable, YHFormItemProtocol {
}
// 是否拥有学位
func hasDegreeStr() -> String? {
func haveDegreeName() -> String? {
if hasDegree == "1" {
return "有学位"
} else {
......@@ -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"
}
......
......@@ -137,9 +137,12 @@ enum YHFormPickerViewSubType {
return "其他".local
}
return ""
}
var index:Int {
switch self {
case .none:
......@@ -157,11 +160,11 @@ enum YHFormPickerViewSubType {
return 4
case .degree(.bachelor):
return 0
case .degree(.master):
return 1
case .degree(.doctor):
case .degree(.master):
return 2
case .degree(.doctor):
return 3
case .education(.fullTime):
return 0
......@@ -199,10 +202,21 @@ enum YHFormPickerViewSubType {
case .certificate(.officialPassport):
return 6
case .ownDegree(_):
case .ownDegree(.noDegree):
return 0
case .identity(_):
case .ownDegree(.hasDegree):
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 {
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 {
......@@ -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 {
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)
picker.selectType = selectType
......
......@@ -11,32 +11,57 @@ import UIKit
class YHFormItemDegreeInfoCell: UITableViewCell {
static let cellReuseIdentifier = "YHFormItemDegreeInfoCell"
let titleFont = UIFont.PFSC_M(ofSize: 16)
var deleteBlock: (()->Void)?
var degreeClickBlock:(()->Void)? {
didSet {
degreeView.clickBlock = degreeClickBlock
}
}
var areaClickBlock:(()->Void)? {
didSet {
areaView.clickBlock = areaClickBlock
}
}
var isNeed:Bool = true
var title:String? {
didSet {
if let title = title {
let str = "*"+title
if let title = title, !title.isEmpty {
let str = isNeed ? "*"+title : title
let attributes: [NSAttributedString.Key: Any] = [
.font: UIFont.PFSC_R(ofSize: 14),
.foregroundColor: UIColor(hex:0x222222)
]
.font: titleFont,
.foregroundColor: UIColor.mainTextColor]
let questionAttrStr = NSMutableAttributedString(string: str, attributes: attributes)
let starRange = NSRange(location: 0, length: 1)
if isNeed {
questionAttrStr.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor(hex:0xFF3A3A), range: starRange)
}
titleLabel.attributedText = questionAttrStr
} else {
titleLabel.text = ""
}
}
}
var degree:String? {
didSet {
degreeView.detail = degree
}
}
var degreePlace:String? {
didSet {
areaView.detail = degreePlace
}
}
lazy var titleLabel: UILabel = {
let label = UILabel()
label.textColor = UIColor(hexString:"#333333")
label.textColor = UIColor.mainTextColor
label.textAlignment = .left
label.numberOfLines = 0
label.font = UIFont.PFSC_R(ofSize: 16)
label.font = titleFont
return label
}()
......@@ -47,7 +72,7 @@ class YHFormItemDegreeInfoCell: UITableViewCell {
btn.titleLabel?.font = UIFont.PFSC_R(ofSize: 14)
btn.setTitleColor(UIColor(hex: 0xF81D22), for: .normal)
btn.addTarget(self, action: #selector(didClickDeleteBtn(btn:)), for: .touchUpInside)
// btn.isHidden = true
btn.isHidden = true
return btn
}()
......@@ -80,6 +105,8 @@ class YHFormItemDegreeInfoCell: UITableViewCell {
contentView.addSubview(areaView)
titleLabel.text = "学位信息"
degreeView.title = "学位证".local
areaView.title = "颁发地区".local
titleLabel.snp.makeConstraints { make in
make.height.equalTo(52)
......@@ -108,6 +135,10 @@ class YHFormItemDegreeInfoCell: UITableViewCell {
}
}
func showDeleteBtn(_ show:Bool) {
deleteButton.isHidden = !show
}
@objc func didClickDeleteBtn(btn:UIButton) {
if let deleteBlock = deleteBlock {
......@@ -118,40 +149,62 @@ class YHFormItemDegreeInfoCell: UITableViewCell {
class HKDegreeInfoItemView: UIView {
lazy var titleLabel: UILabel = {
let label = UILabel()
label.textColor = UIColor(hexString:"#333333")
label.textAlignment = .left
label.numberOfLines = 0
label.font = UIFont.PFSC_R(ofSize: 14)
return label
}()
var placeHolder:String?
var clickBlock:(()->Void)?
let titleFont = UIFont.PFSC_R(ofSize: 14)
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()
label.textColor = UIColor(hexString: "#222222")
label.textColor = .mainTextColor
label.textAlignment = .left
label.font = UIFont.PFSC_R(ofSize: 14)
label.isHidden = true
label.font = titleFont
return label
}()
private lazy var tipsLabel: UILabel = {
private lazy var detailLabel: UILabel = {
let label = UILabel()
label.textColor = UIColor(hexString: "#C0C0C0")
label.text = "请选择".local
label.textColor = .mainTextColor
label.textAlignment = .left
label.font = UIFont.PFSC_R(ofSize: 14)
label.isHidden = false
label.font = UIFont.PFSC_M(ofSize: 14)
return label
}()
lazy var arrowImgView: UIImageView = {
private lazy var arrowImgView: UIImageView = {
let imgView = UIImageView(image: UIImage(named: "form_right_arrow"))
return imgView
}()
lazy var topLineView:UIView = {
private lazy var topLineView:UIView = {
let view = UIView()
view.backgroundColor = UIColor(hex: 0xF0F0F0)
return view
......@@ -168,14 +221,14 @@ class HKDegreeInfoItemView: UIView {
func createUI() {
self.placeHolder = "请选择".local
self.addSubview(titleLabel)
self.addSubview(detailLabel)
self.addSubview(tipsLabel)
self.addSubview(arrowImgView)
self.addSubview(topLineView)
titleLabel.text = "XXXXXX"
detailLabel.text = "xxxxxxxx"
let tap = UITapGestureRecognizer(target: self, action:#selector(tap))
self.addGestureRecognizer(tap)
topLineView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
......@@ -196,14 +249,17 @@ class HKDegreeInfoItemView: UIView {
make.centerY.equalToSuperview()
}
tipsLabel.snp.makeConstraints { make in
make.edges.equalTo(detailLabel)
}
arrowImgView.snp.makeConstraints { make in
make.size.equalTo(CGSizeMake(20, 20))
make.right.equalToSuperview().offset(-16)
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