Commit 93d6d856 authored by DavidHuang's avatar DavidHuang

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

parents b6caaf6e 4a7f2882
This diff is collapsed.
...@@ -150,7 +150,7 @@ extension YHHomeInformationViewController : CollectionViewWaterfallLayoutDelegat ...@@ -150,7 +150,7 @@ extension YHHomeInformationViewController : CollectionViewWaterfallLayoutDelegat
return 0.0 return 0.0
} }
var row = self.sectionItems.count/3 var row = self.sectionItems.count/3
if row%3 != 0 { if self.sectionItems.count%3 != 0 {
row = row + 1 row = row + 1
} }
let listHeight = Float(Double(row) * kHomeItemHeight) let listHeight = Float(Double(row) * kHomeItemHeight)
......
...@@ -20,7 +20,7 @@ class YHHomeInfoSectionHeadView: UICollectionReusableView { ...@@ -20,7 +20,7 @@ class YHHomeInfoSectionHeadView: UICollectionReusableView {
didSet { didSet {
self.collectView.reloadData() self.collectView.reloadData()
var row = items.count/3 var row = items.count/3
if row%3 != 0 { if items.count%3 != 0 {
row = row + 1 row = row + 1
} }
let totalHeight = Double(row) * kHomeItemHeight let totalHeight = Double(row) * kHomeItemHeight
......
...@@ -619,11 +619,7 @@ extension YHInformationPerfectListVC : UITableViewDelegate,UITableViewDataSource ...@@ -619,11 +619,7 @@ extension YHInformationPerfectListVC : UITableViewDelegate,UITableViewDataSource
self.showTipsAlert() self.showTipsAlert()
return return
} }
if serviceCenterMainReqVM.myInfoFillStep > 0 { gotoApplyTypeVC()
gotoApplyTypeVC(.typeA)
} else {
gotoApplyTypeVC(nil)
}
//高A- 申请类别 //高A- 申请类别
} else if tapIndex == 1 { } else if tapIndex == 1 {
//高A- 主申请人信息 //高A- 主申请人信息
...@@ -661,17 +657,7 @@ extension YHInformationPerfectListVC : UITableViewDelegate,UITableViewDataSource ...@@ -661,17 +657,7 @@ extension YHInformationPerfectListVC : UITableViewDelegate,UITableViewDataSource
self.showTipsAlert() self.showTipsAlert()
return return
} }
if serviceCenterMainReqVM.myInfoFillStep > 0 { gotoApplyTypeVC()
var type: YHGCApplicationType = .typeB
if productType == 2 {
type = .typeB
} else if productType == 3 {
type = .typeC
}
gotoApplyTypeVC(type)
} else {
gotoApplyTypeVC(nil)
}
//高才BC- 申请类别 //高才BC- 申请类别
} else if tapIndex == 1 { } else if tapIndex == 1 {
//高才BC- 主申请人信息 //高才BC- 主申请人信息
...@@ -710,13 +696,29 @@ extension YHInformationPerfectListVC : UITableViewDelegate,UITableViewDataSource ...@@ -710,13 +696,29 @@ extension YHInformationPerfectListVC : UITableViewDelegate,UITableViewDataSource
} }
} }
private func gotoApplyTypeVC(_ type: YHGCApplicationType?) { private func gotoApplyTypeVC() {
if let type = type { let orderId = orderId ?? 0
let ctl = YHGCApplicationTypeResultController(type: type) YHHUD.show(.progress(message: "加载中..."))
navigationController?.pushViewController(ctl) YHGCApplicationTypeViewModel().getApplyType(orderId: orderId) { [weak self] model, error in
} else { YHHUD.hide()
let ctl = YHGCApplicationTypeController(orderId: orderId ?? 0) guard let self = self else {
navigationController?.pushViewController(ctl) return
}
guard let model = model else {
if let errorMsg = error?.errorMsg, errorMsg.count > 0 {
YHHUD.flash(message: errorMsg)
}
return
}
let type = YHGCApplicationType(rawValue: model.apply_type)
if let type = type {
let ctl = YHGCApplicationTypeResultController(type: type)
self.navigationController?.pushViewController(ctl)
} else {
let ctl = YHGCApplicationTypeController(orderId: orderId)
self.navigationController?.pushViewController(ctl)
}
} }
} }
} }
...@@ -283,8 +283,13 @@ class YHServiceOrderListViewController: YHBaseViewController { ...@@ -283,8 +283,13 @@ class YHServiceOrderListViewController: YHBaseViewController {
} else if type == 202 { } else if type == 202 {
//高才我的方案 //高才我的方案
} else if type == 203 { } else if type == 203 {
//高才我的证件 //高才我的证件
let vc = YHGCMineCertificateEntryViewController()
vc.orderId = orderId
UIViewController.current?.navigationController?.pushViewController(vc)
} else if type == 204 { } else if type == 204 {
//高才我的签字 //高才我的签字
} }
......
...@@ -44,7 +44,9 @@ class YHEducationInfo: SmartCodable { ...@@ -44,7 +44,9 @@ class YHEducationInfo: SmartCodable {
var admissionTime: String? var admissionTime: String?
var graduateTime: String? var graduateTime: String?
var vacantNum: Int = 0 var vacantNum: Int = 0
var majorOther: String?
var hasBachelorDegree: Int = 0
enum CodingKeys: String, CodingKey { enum CodingKeys: String, CodingKey {
case id = "id" case id = "id"
case college = "college" case college = "college"
...@@ -53,11 +55,30 @@ class YHEducationInfo: SmartCodable { ...@@ -53,11 +55,30 @@ class YHEducationInfo: SmartCodable {
case admissionTime = "admission_time" case admissionTime = "admission_time"
case graduateTime = "graduate_time" case graduateTime = "graduate_time"
case vacantNum = "vacant_num" case vacantNum = "vacant_num"
case majorOther = "major_other"
case hasBachelorDegree = "has_bachelor_degree"
} }
required init() { required init() {
} }
func getDegree() -> String {
if hasBachelorDegree == 1 {
return "学士学位"
}
if hasBachelorDegree == 2 {
return "无学位"
}
return ""
}
func getRealMajor() -> String? {
if let major = major, major == "其他" {
return majorOther
}
return major
}
} }
class YHQualificationInfo: SmartCodable { class YHQualificationInfo: SmartCodable {
...@@ -94,6 +115,20 @@ class YHEducationDetailInfo: SmartCodable { ...@@ -94,6 +115,20 @@ class YHEducationDetailInfo: SmartCodable {
// 证件提供确认 0 未选择 1 是 2 否 // 证件提供确认 0 未选择 1 是 2 否
var certConfirm: Int = 0 var certConfirm: Int = 0
func isNeedInputMajor() -> Bool {
return major == "其他"
}
func getDegree() -> String {
if hasBachelorDegree == 1 {
return "学士学位"
}
if hasBachelorDegree == 2 {
return "无学位"
}
return ""
}
enum CodingKeys: String, CodingKey { enum CodingKeys: String, CodingKey {
case id = "id" case id = "id"
......
...@@ -182,6 +182,8 @@ enum YHFormDetailItemType:Int { ...@@ -182,6 +182,8 @@ enum YHFormDetailItemType:Int {
case graduateTime case graduateTime
// 专业 // 专业
case educationMajor case educationMajor
// 具体专业
case detailMajor
// 学位 // 学位
case educationDegree case educationDegree
// 学位类型 // 学位类型
...@@ -508,6 +510,8 @@ class YHFormDetailItem : YHFormItemProtocol { ...@@ -508,6 +510,8 @@ class YHFormDetailItem : YHFormItemProtocol {
return "毕业年月".local return "毕业年月".local
case .educationMajor: case .educationMajor:
return "专业".local return "专业".local
case .detailMajor:
return "具体专业".local
case .educationDegree: case .educationDegree:
return "学位".local return "学位".local
case .degreeType: case .degreeType:
......
//
// YHDynamicSheetPickerView.swift
// galaxy
//
// Created by alexzzw on 2024/12/23.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHDynamicSheetPickerView: UIView {
let dataSource: [String]
// 选择的行
var selectRow: Int = 0
private var selectBlock: ((Int) -> Void)?
var title: String? {
didSet {
titleLabel.text = title
}
}
lazy var pickerView: UIPickerView = {
let view = UIPickerView()
view.dataSource = self
view.delegate = self
return view
}()
lazy var blackMaskView: UIView = {
let view = UIView()
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
return view
}()
lazy var topView: UIView = {
let view = UIView()
view.addSubview(titleLabel)
view.addSubview(cancelBtn)
view.addSubview(confirmBtn)
view.addSubview(topLineView)
titleLabel.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
cancelBtn.snp.makeConstraints { make in
make.left.equalToSuperview().offset(21)
make.centerY.equalToSuperview()
make.size.equalTo(CGSizeMake(30, 20))
}
confirmBtn.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-21)
make.centerY.equalToSuperview()
make.size.equalTo(CGSizeMake(30, 20))
}
topLineView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(21)
make.right.equalToSuperview().offset(-21)
make.bottom.equalToSuperview()
make.height.equalTo(1)
}
return view
}()
lazy var topLineView: UIView = {
let view = UIView()
view.backgroundColor = UIColor(hexString: "#F0F0F0")
return view
}()
lazy var titleLabel: UILabel = {
let label = UILabel()
label.textColor = UIColor.mainTextColor
label.textAlignment = .center
label.font = UIFont.PFSC_M(ofSize: 17)
label.text = "请选择"
return label
}()
lazy var cancelBtn: UIButton = {
let btn = UIButton()
btn.setTitle("取消".local, for: .normal)
btn.titleLabel?.font = UIFont.PFSC_M(ofSize: 14)
btn.setTitleColor(UIColor.mainTextColor, for: .normal)
btn.addTarget(self, action: #selector(didClickCancelButton), for: .touchUpInside)
btn.YH_clickEdgeInsets = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
return btn
}()
lazy var confirmBtn: UIButton = {
let btn = UIButton()
btn.setTitle("确定".local, for: .normal)
btn.titleLabel?.font = UIFont.PFSC_M(ofSize: 14)
btn.setTitleColor(UIColor.brandMainColor, for: .normal)
btn.addTarget(self, action: #selector(didClickConfirmButton), for: .touchUpInside)
btn.YH_clickEdgeInsets = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
return btn
}()
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
init(dataSource: [String]) {
self.dataSource = dataSource
super.init(frame: UIScreen.main.bounds)
createUI()
}
func show() {
showSelectRow()
UIApplication.shared.yhKeyWindow()?.addSubview(self)
}
func showSelectRow() {
if selectRow < dataSource.count {
pickerView.selectRow(selectRow, inComponent: 0, animated: true)
} else {
selectRow = 0
pickerView.selectRow(0, inComponent: 0, animated: true)
}
}
static func show(dataSource: [String], title: String, selectIndex: Int, callBack: @escaping ((Int) -> Void)) {
let picker = YHDynamicSheetPickerView(dataSource: dataSource)
picker.title = title
picker.selectRow = selectIndex < dataSource.count ? selectIndex : 0
picker.selectBlock = callBack
picker.show()
}
static func show(dataSource: [String], title: String, selectTitle: String?, callBack: @escaping ((Int) -> Void)) {
let picker = YHDynamicSheetPickerView(dataSource: dataSource)
picker.title = title
if let selectTitle = selectTitle, let firstIndex = dataSource.firstIndex(of: selectTitle) {
picker.selectRow = firstIndex
} else {
picker.selectRow = 0
}
picker.selectBlock = callBack
picker.show()
}
func createUI() {
addSubview(blackMaskView)
addSubview(whiteContentView)
whiteContentView.addSubview(topView)
whiteContentView.addSubview(pickerView)
let corner = UIRectCorner(rawValue: UIRectCorner.topLeft.rawValue | UIRectCorner.topRight.rawValue)
let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corner, cornerRadii: CGSizeMake(kCornerRadius6, kCornerRadius6))
let layer = CAShapeLayer()
layer.frame = whiteContentView.bounds
layer.path = path.cgPath
whiteContentView.layer.mask = layer
if let title = title {
titleLabel.text = title
}
blackMaskView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
let whiteContentHeight = 322.0
whiteContentView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.height.equalTo(whiteContentHeight)
}
topView.snp.makeConstraints { make in
make.left.right.top.equalToSuperview()
make.height.equalTo(52)
}
pickerView.snp.makeConstraints { make in
make.top.equalTo(topView.snp.bottom)
make.left.right.bottom.equalToSuperview()
}
}
}
extension YHDynamicSheetPickerView {
@objc func didClickCancelButton() {
dismiss()
}
@objc func didClickConfirmButton() {
selectBlock?(selectRow)
dismiss()
}
@objc func dismiss() {
removeFromSuperview()
}
}
// MARK: - UIPickerViewDelegate
extension YHDynamicSheetPickerView: UIPickerViewDelegate, UIPickerViewDataSource {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if !dataSource.isEmpty {
return dataSource.count
}
return 0
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if 0 <= row && row < dataSource.count {
return dataSource[row]
}
return ""
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if 0 <= row && row < dataSource.count {
selectRow = row
// 刷新picker,看上面的代理
pickerView.reloadComponent(component)
}
}
func pickerView(_ pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat {
return KScreenWidth - 16 * 2
}
func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
return 42.0
}
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
let label = UILabel()
label.textColor = UIColor.mainTextColor
label.font = UIFont.PFSC_R(ofSize: 14)
label.textAlignment = .center
label.numberOfLines = 2
label.text = ""
if 0 <= row && row < dataSource.count {
label.text = dataSource[row]
}
if selectRow == row {
label.font = UIFont.PFSC_M(ofSize: 14)
} else {
label.font = UIFont.PFSC_R(ofSize: 14)
}
// 选中背景色
if #available(iOS 14.0, *), pickerView.subviews.count > 1 {
pickerView.subviews[1].backgroundColor = UIColor.brandMainColor6
}
return label
}
}
...@@ -179,6 +179,10 @@ class YHSheetPickerView: UIView { ...@@ -179,6 +179,10 @@ class YHSheetPickerView: UIView {
YHSheetPickerViewItem(title:"硕士学位".local, index:2), YHSheetPickerViewItem(title:"硕士学位".local, index:2),
YHSheetPickerViewItem(title:"博士学位".local, index:3) YHSheetPickerViewItem(title:"博士学位".local, index:3)
], ],
.degree2:
[YHSheetPickerViewItem(title:"无学位".local, index:2),
YHSheetPickerViewItem(title:"学士学位".local, index:1),
],
// 学位2 // 学位2
.educationDegree: .educationDegree:
...@@ -317,6 +321,22 @@ class YHSheetPickerView: UIView { ...@@ -317,6 +321,22 @@ class YHSheetPickerView: UIView {
YHSheetPickerViewItem(title:"社会科学".local, index:10), YHSheetPickerViewItem(title:"社会科学".local, index:10),
YHSheetPickerViewItem(title:"其他".local, index:11), YHSheetPickerViewItem(title:"其他".local, index:11),
], ],
.major:
[YHSheetPickerViewItem(title:"艺术与人文学科".local, index:0),
YHSheetPickerViewItem(title:"经济及工商管理".local, index:1),
YHSheetPickerViewItem(title:"教育".local, index:2),
YHSheetPickerViewItem(title:"法学".local, index:3),
YHSheetPickerViewItem(title:"社会科学".local, index:4),
YHSheetPickerViewItem(title:"电脑科学".local, index:5),
YHSheetPickerViewItem(title:"工程学".local, index:6),
YHSheetPickerViewItem(title:"生命科学及医学".local, index:7),
YHSheetPickerViewItem(title:"物理/自然科学".local, index:8),
YHSheetPickerViewItem(title:"心理学".local, index:9),
YHSheetPickerViewItem(title:"其他".local, index:9),
],
] ]
func createUI() { func createUI() {
...@@ -399,6 +419,8 @@ extension YHSheetPickerView { ...@@ -399,6 +419,8 @@ extension YHSheetPickerView {
return "" return ""
case .degree: case .degree:
return "选择学位" return "选择学位"
case .degree2:
return "选择学位"
case .educationDegree: case .educationDegree:
return "选择学位" return "选择学位"
case .marriageText: case .marriageText:
...@@ -427,6 +449,9 @@ extension YHSheetPickerView { ...@@ -427,6 +449,9 @@ extension YHSheetPickerView {
return "选择学位类型" return "选择学位类型"
case .selectAdress: case .selectAdress:
return "选择国家地区" return "选择国家地区"
case .major:
return "选择专业"
} }
} }
......
...@@ -14,7 +14,8 @@ enum YHSheetPickerViewType: Int { ...@@ -14,7 +14,8 @@ enum YHSheetPickerViewType: Int {
case none = 0 case none = 0
// 学位 // 学位
case degree case degree
// 学位2 (包含无学位类型) case degree2
// 学位(包含无学位类型)
case educationDegree case educationDegree
// 学位有无 // 学位有无
case ownDegree case ownDegree
...@@ -42,6 +43,8 @@ enum YHSheetPickerViewType: Int { ...@@ -42,6 +43,8 @@ enum YHSheetPickerViewType: Int {
case degreeCategory case degreeCategory
// 国家地区 // 国家地区
case selectAdress case selectAdress
// 专业
case major
} }
class YHSheetPickerViewItem { class YHSheetPickerViewItem {
......
...@@ -209,6 +209,25 @@ class YHFormItemDoubleChoiceCell: UITableViewCell { ...@@ -209,6 +209,25 @@ class YHFormItemDoubleChoiceCell: UITableViewCell {
func setTips(_ tips:String?, isShow:Bool) { func setTips(_ tips:String?, isShow:Bool) {
tipsLabel.text = tips tipsLabel.text = tips
tipsLabel.isHidden = !isShow tipsLabel.isHidden = !isShow
if isShow {
tipsLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(horizonalGap)
make.right.equalToSuperview().offset(-horizonalGap)
make.top.equalTo(titleLabel.snp.bottom)
make.bottom.equalToSuperview().offset(-16).priority(.medium)
}
} else {
tipsLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(horizonalGap)
make.right.equalToSuperview().offset(-horizonalGap)
make.height.equalTo(0)
make.top.equalTo(titleLabel.snp.bottom)
make.bottom.equalToSuperview().offset(-16).priority(.medium)
}
}
self.setNeedsLayout()
self.layoutIfNeeded()
} }
// 更新答案按钮选中状态 // 更新答案按钮选中状态
......
...@@ -88,6 +88,8 @@ extension YHEmploymentVerificationAvailableCell { ...@@ -88,6 +88,8 @@ extension YHEmploymentVerificationAvailableCell {
infoTitleLabel.snp.makeConstraints { make in infoTitleLabel.snp.makeConstraints { make in
make.left.equalTo(dotIcon.snp.right).offset(2) make.left.equalTo(dotIcon.snp.right).offset(2)
make.centerY.equalToSuperview() make.centerY.equalToSuperview()
make.top.greaterThanOrEqualToSuperview().offset(16)
make.bottom.lessThanOrEqualToSuperview().offset(-16)
} }
rightArrowIcon.snp.makeConstraints { make in rightArrowIcon.snp.makeConstraints { make in
......
...@@ -132,9 +132,10 @@ class YHOtherPickerView: UIView { ...@@ -132,9 +132,10 @@ class YHOtherPickerView: UIView {
}() }()
init(type: YHOtherPickerViewType) { init(type: YHOtherPickerViewType, _ dataSource: [YHOtherPickerViewItemData] = []) {
super.init(frame: UIScreen.main.bounds) super.init(frame: UIScreen.main.bounds)
self.createUI() self.createUI()
self.arrData = dataSource
self.type = type self.type = type
initDataSource() initDataSource()
...@@ -151,11 +152,11 @@ class YHOtherPickerView: UIView { ...@@ -151,11 +152,11 @@ class YHOtherPickerView: UIView {
UIApplication.shared.yhKeyWindow()?.addSubview(self) UIApplication.shared.yhKeyWindow()?.addSubview(self)
} }
static func show(type:YHOtherPickerViewType, selectTitle: String = "", callBack: @escaping ((YHOtherPickerViewItemData)->Void)) { static func show(type:YHOtherPickerViewType, selectTitle: String = "", _ dataSource: [YHOtherPickerViewItemData] = [],callBack: @escaping ((YHOtherPickerViewItemData)->Void)) {
IQKeyboardManager.shared.resignFirstResponder() IQKeyboardManager.shared.resignFirstResponder()
let picker = YHOtherPickerView(type: type) let picker = YHOtherPickerView(type: type, dataSource)
picker.selectBlock = callBack picker.selectBlock = callBack
picker.show() picker.show()
picker.selectTitle = selectTitle picker.selectTitle = selectTitle
...@@ -250,6 +251,10 @@ class YHOtherPickerView: UIView { ...@@ -250,6 +251,10 @@ class YHOtherPickerView: UIView {
return "选择国家地区" return "选择国家地区"
case .field: case .field:
return "选择经验领域" return "选择经验领域"
case .myCompany:
return "选择可提供的在职公司"
case .position:
return "选择职位界别"
default: default:
return "请选择" return "请选择"
} }
...@@ -277,7 +282,7 @@ extension YHOtherPickerView: UIPickerViewDelegate, UIPickerViewDataSource { ...@@ -277,7 +282,7 @@ extension YHOtherPickerView: UIPickerViewDelegate, UIPickerViewDataSource {
func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
switch type { switch type {
case .nature,.certificate,.structure,.level,.prove,.idType,.sex,.marry,.constellation,.field: case .nature,.certificate,.structure,.level,.prove,.idType,.sex,.marry,.constellation,.field,.myCompany,.position:
return 50 return 50
default: default:
return 70 return 70
...@@ -287,7 +292,7 @@ extension YHOtherPickerView: UIPickerViewDelegate, UIPickerViewDataSource { ...@@ -287,7 +292,7 @@ extension YHOtherPickerView: UIPickerViewDelegate, UIPickerViewDataSource {
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView { func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
switch type { switch type {
case .nature,.certificate,.structure,.level,.prove,.idType,.travelIdType,.sex,.marry,.constellation,.selectAddress,.field: case .nature,.certificate,.structure,.level,.prove,.idType,.travelIdType,.sex,.marry,.constellation,.selectAddress,.field,.myCompany,.position:
let label = UILabel() let label = UILabel()
label.textColor = UIColor.mainTextColor label.textColor = UIColor.mainTextColor
label.font = UIFont.PFSC_M(ofSize: 14) label.font = UIFont.PFSC_M(ofSize: 14)
...@@ -460,6 +465,14 @@ extension YHOtherPickerView { ...@@ -460,6 +465,14 @@ extension YHOtherPickerView {
arrData.append(model) arrData.append(model)
} }
title = getTitle(type: type) title = getTitle(type: type)
case .position:
let arr = YHConstantArrayData.arrposition
arrData.removeAll()
arr.forEach { item in
let model = YHOtherPickerViewItemData(title: item["title"] ?? "-", subTitle: "", index: item["id"] ?? "-")
arrData.append(model)
}
title = getTitle(type: type)
default: default:
return return
} }
......
...@@ -21,6 +21,8 @@ enum YHWorkExperienceSelectType: Int { ...@@ -21,6 +21,8 @@ enum YHWorkExperienceSelectType: Int {
case prove = 9 case prove = 9
case company = 10 case company = 10
case field = 11 case field = 11
case myCompany = 12
case position = 13
} }
enum YHWorkExperienceID: Int { enum YHWorkExperienceID: Int {
......
...@@ -24,6 +24,7 @@ class YHWorkExperienceItemView: UIView { ...@@ -24,6 +24,7 @@ class YHWorkExperienceItemView: UIView {
var country: String = "" var country: String = ""
var workId: Int = 0 var workId: Int = 0
var orderId: Int = 0 var orderId: Int = 0
var companyList: [YHWorkItemListModel] = []
var dataSource: YHWorkExperienceModel? { var dataSource: YHWorkExperienceModel? {
didSet { didSet {
updateAllViews() updateAllViews()
...@@ -260,6 +261,10 @@ class YHWorkExperienceItemView: UIView { ...@@ -260,6 +261,10 @@ class YHWorkExperienceItemView: UIView {
} }
case .field: case .field:
break break
case .myCompany:
break
case .position:
break
} }
} }
nextStepImageView.isHidden = false nextStepImageView.isHidden = false
...@@ -539,6 +544,29 @@ class YHWorkExperienceItemView: UIView { ...@@ -539,6 +544,29 @@ class YHWorkExperienceItemView: UIView {
block(self.dataSource ?? YHWorkExperienceModel()) block(self.dataSource ?? YHWorkExperienceModel())
} }
} }
case .myCompany:
var arrData: [YHOtherPickerViewItemData] = []
companyList.forEach { item in
let model = YHOtherPickerViewItemData(title: item.company_name ?? "", subTitle: "", index: "\(item.id ?? 0)")
arrData.append(model)
}
YHOtherPickerView.show(type: .myCompany, selectTitle: self.dataSource?.message ?? "", arrData) {[weak self] data in
guard let self = self else { return }
self.dataSource?.message = data.title
self.updateAllViews()
if let block = self.block {
block(self.dataSource ?? YHWorkExperienceModel())
}
}
case .position:
YHOtherPickerView.show(type: .position, selectTitle: self.dataSource?.message ?? "") {[weak self] data in
guard let self = self else { return }
self.dataSource?.message = data.title
self.updateAllViews()
if let block = self.block {
block(self.dataSource ?? YHWorkExperienceModel())
}
}
} }
} }
} }
......
...@@ -122,6 +122,12 @@ class YHWorkExperiencePositionListTableViewCell: UITableViewCell { ...@@ -122,6 +122,12 @@ class YHWorkExperiencePositionListTableViewCell: UITableViewCell {
block(model) block(model)
} }
} }
itemView.companyBlock = {[weak self] model in
guard let self = self else { return }
if let block = self.companyBlock {
block(model)
}
}
mainItemView.addSubview(itemView) mainItemView.addSubview(itemView)
itemView.snp.makeConstraints { make in itemView.snp.makeConstraints { make in
make.left.equalTo(18) make.left.equalTo(18)
......
//
// YHCertificateResourceUploadVC.swift
// galaxy
//
// Created by edy on 2024/3/13.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import JXSegmentedView
import UniformTypeIdentifiers
import IQKeyboardManagerSwift
import SwifterSwift
class YHGCCertificateListVC: YHBaseViewController {
var orderId : Int?
var status: YHCertificateUploadStatus = .all
var items:[YHSupplementInfo] = []
var viewModel: YHCertificateViewModel = YHCertificateViewModel()
var categoryInfo: YHCategoryData!
lazy var previewFileTool:YHFilePreviewTool = {
let tool = YHFilePreviewTool(targetVC: self)
return tool
}()
lazy var tableView: UITableView = {
let tableView = UITableView(frame:.zero, style:.grouped)
if #available(iOS 11.0, *) {
tableView.contentInsetAdjustmentBehavior = .never
}
tableView.estimatedSectionHeaderHeight = 14.0
tableView.estimatedSectionFooterHeight = 1.0
tableView.showsVerticalScrollIndicator = false
tableView.separatorStyle = .none
tableView.delegate = self
tableView.dataSource = self
tableView.backgroundColor = UIColor(hexString:"#F8F8F8")
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell")
tableView.register(YHCertificateInfoCell.self, forCellReuseIdentifier: YHCertificateInfoCell.cellReuseIdentifier)
tableView.backgroundView = emptyDataTipsView
return tableView
}()
lazy var emptyDataTipsView: YHEmptyDataView = {
let view = YHEmptyDataView.createView("没有找到相关资料哦~", kEmptyCommonBgName)
view.topMargin = 130
view.isHidden = false
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .white
self.gk_navigationBar.isHidden = true
createUI()
requestList(status: status)
}
func createUI() {
view.addSubview(tableView)
tableView.snp.makeConstraints { make in
make.top.left.right.equalToSuperview()
make.height.equalTo(KScreenHeight - k_Height_NavigationtBarAndStatuBar - YHCertificateListContainerVC.segmentHeight)
}
}
}
extension YHGCCertificateListVC: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return items.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: YHCertificateInfoCell.cellReuseIdentifier, for: indexPath) as! YHCertificateInfoCell
if 0 <= indexPath.section && indexPath.section < items.count {
let item = items[indexPath.section]
cell.updateModel(item)
cell.templateBlock = {
[weak self] in
guard let self = self else { return }
let view = YHCertificateTemplateSheetView.templateView(item.templateInfo)
view.scanTemplateBlock = {
[weak self] path in
guard let self = self else { return }
if let url = path?.url, !url.isEmpty {
print(url)
self.previewFileTool.openXLSXRemoteFile(urlString:url, fileName:"预览")
}
}
view.show()
}
}
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if 0 <= indexPath.section && indexPath.section < items.count {
let item = items[indexPath.section]
if item.checkStatus == YHCertificateUploadStatus.preUpload.rawValue { // 待上传
showUploadSheetView(supplementId:item.id)
return
}
// 非待上传的进入详情
let vc = YHGCCertificateUploadContentListVC()
vc.orderId = orderId ?? 0
vc.categoryId = categoryInfo.categoryId
vc.supplementId = item.id
self.navigationController?.pushViewController(vc)
}
}
private func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> CGFloat {
return 14.0
}
private func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> CGFloat {
return 1.0
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView()
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return UIView()
}
}
// MARK: - JXSegmentedListContainerViewListDelegate
extension YHGCCertificateListVC: JXSegmentedListContainerViewListDelegate {
func listView() -> UIView {
return view
}
}
extension YHGCCertificateListVC {
func requestList(status: YHCertificateUploadStatus, extra:[String:Any] = [:]) {
/*
// 状态
"status_all": "",
// 类型
"template_cate_id": "",
// 搜索
"keywork": "",
*/
var params:[String:Any] = [
"order_id" : orderId ?? 0,
"node": "1",
"state": "1",
"category_id": categoryInfo.categoryId,
"supplement_ids": []]
if !extra.isEmpty {
params += extra
}
print(params)
// state: 3:待上传 2:已驳回 1:已完成 0:审核中
viewModel.getCertificateList(params: params) {
[weak self] listInfo, error in
guard let self = self else { return }
items.removeAll()
if let listInfo = listInfo {
let arr = listInfo.supplementList
var results: [YHSupplementInfo] = []
if status == .all {
results.append(contentsOf:arr)
} else {
for item in arr {
if item.checkStatus == status.rawValue {
results.append(item)
}
}
}
items.append(contentsOf: results)
}
// 数量统计
NotificationCenter.default.post(name: countStatisticsNotify, object: [self.status: items.count])
emptyDataTipsView.isHidden = items.count > 0
self.tableView.reloadData()
if let errorMsg = error?.errorMsg, errorMsg.count > 0 {
YHHUD.flash(message: errorMsg, duration:3)
}
}
}
func showUploadSheetView(supplementId: Int) {
let orderID = self.orderId ?? 0
self.viewModel.showUploadSheetView(supplementId: supplementId) {
[weak self] in
guard let self = self else { return }
DispatchQueue.main.async {
let vc = YHGCCertificateUploadContentListVC()
vc.orderId = orderID
vc.categoryId = self.categoryInfo.categoryId
vc.supplementId = supplementId
self.navigationController?.pushViewController(vc)
}
}
}
}
//
// YHCertificateSearchViewController.swift
// galaxy
//
// Created by edy on 2024/3/18.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHGCCertificateSearchViewController: YHBaseViewController {
var items:[YHSupplementInfo] = []
var viewModel: YHCertificateViewModel = YHCertificateViewModel()
var orderId : Int?
var categoryInfo: YHCategoryData?
lazy var tableView: UITableView = {
let tableView = UITableView(frame:.zero, style:.grouped)
if #available(iOS 11.0, *) {
tableView.contentInsetAdjustmentBehavior = .never
}
tableView.estimatedSectionHeaderHeight = 14.0
tableView.estimatedSectionFooterHeight = 1.0
tableView.showsVerticalScrollIndicator = false
tableView.separatorStyle = .none
tableView.delegate = self
tableView.dataSource = self
tableView.backgroundColor = UIColor(hexString:"#F8F8F8")
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell")
tableView.register(YHCertificateInfoCell.self, forCellReuseIdentifier: YHCertificateInfoCell.cellReuseIdentifier)
tableView.backgroundView = emptyDataTipsView
return tableView
}()
lazy var previewFileTool:YHFilePreviewTool = {
let tool = YHFilePreviewTool(targetVC: self)
return tool
}()
lazy var searchView:UIView = {
let view = UIView()
view.backgroundColor = .white
view.addSubview(searchBar)
searchBar.snp.makeConstraints { make in
make.centerY.equalToSuperview()
make.left.equalToSuperview().offset(16)
make.size.equalTo(CGSize(width: KScreenWidth-32.0, height:YHCertificateSearchBar.height))
}
return view
}()
lazy var searchBar: YHCertificateSearchBar = {
let bar = YHCertificateSearchBar(frame:CGRect(x: 0, y: 0, width:KScreenWidth-32, height:YHCertificateSearchBar.height))
bar.searchBlock = {
[weak self] text in
guard let self = self else { return }
requestList(keyWord: text)
}
bar.textChange = {
[weak self] text in
guard let self = self else { return }
if isEmptyString(text) {
requestList(keyWord: "")
}
}
return bar
}()
lazy var emptyDataTipsView: YHEmptyDataView = {
let view = YHEmptyDataView.createView("没有找到相关资料哦~", kEmptySearchBgName)
view.topMargin = 130
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .white
self.gk_navTitle = "资料搜索".local
createUI()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.requestList(keyWord: searchBar.textField.text)
}
func createUI() {
view.addSubview(searchView)
view.addSubview(tableView)
searchView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalToSuperview().offset(k_Height_NavigationtBarAndStatuBar)
make.height.equalTo(32+YHCertificateSearchBar.height)
}
tableView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.top.equalTo(searchView.snp.bottom)
}
}
}
extension YHGCCertificateSearchViewController: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return items.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: YHCertificateInfoCell.cellReuseIdentifier, for: indexPath) as! YHCertificateInfoCell
if 0 <= indexPath.section && indexPath.section < items.count {
let item = items[indexPath.section]
cell.updateModel(item)
cell.templateBlock = {
[weak self] in
guard let self = self else { return }
let view = YHCertificateTemplateSheetView.templateView(item.templateInfo)
view.scanTemplateBlock = {
[weak self] path in
guard let self = self else { return }
if let url = path?.url, !url.isEmpty {
print(url)
self.previewFileTool.openXLSXRemoteFile(urlString:url, fileName: "预览")
}
}
view.show()
}
}
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if 0 <= indexPath.section && indexPath.section < items.count {
let item = items[indexPath.section]
if item.checkStatus == YHCertificateUploadStatus.preUpload.rawValue { // 待上传
showUploadSheetView(supplementId: item.id)
return
}
// 非待上传的进入详情
let vc = YHGCCertificateUploadContentListVC()
vc.orderId = orderId ?? 0
vc.categoryId = self.categoryInfo?.categoryId ?? 0
vc.supplementId = item.id
self.navigationController?.pushViewController(vc)
}
}
private func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> CGFloat {
return 14.0
}
private func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> CGFloat {
return 1.0
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView()
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return UIView()
}
}
extension YHGCCertificateSearchViewController {
func requestList(keyWord:String?) {
/*
// 状态
"status_all": "",
// 类型
"template_cate_id": "",
// 搜索
"keyword": "",
*/
let keywords = keyWord ?? ""
let params:[String:Any] = [
"node": "1",
"state": "1",
"supplement_ids": [],
"order_id" : orderId ?? 0,
"keyword": keywords]
print(params)
// state: 3:待上传 2:已驳回 1:已完成 0:审核中
viewModel.getCertificateList(params: params) {
[weak self] listInfo, error in
guard let self = self else { return }
items.removeAll()
if let listInfo = listInfo {
categoryInfo = listInfo.categoryData
let arr = listInfo.supplementList
items.append(contentsOf: arr)
}
emptyDataTipsView.isHidden = items.count > 0
self.tableView.reloadData()
if let errorMsg = error?.errorMsg, errorMsg.count > 0 {
YHHUD.flash(message: errorMsg, duration:3)
}
}
}
func showUploadSheetView(supplementId: Int) {
let orderID = self.orderId ?? 0
let categoryId = self.categoryInfo?.categoryId ?? 0
self.viewModel.showUploadSheetView(supplementId: supplementId) {
[weak self] in
guard let self = self else { return }
DispatchQueue.main.async {
let vc = YHGCCertificateUploadContentListVC()
vc.orderId = orderID
vc.categoryId = categoryId
vc.supplementId = supplementId
self.navigationController?.pushViewController(vc)
}
}
}
}
//
// YHMainCertificateEntryVC.swift
// galaxy
//
// Created by davidhuangA on 2024/3/17.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
/*
我的证件 主入口页
*/
class YHGCMineCertificateEntryViewController: YHBaseViewController {
var orderId : Int = 0
private let certificateReqVM : YHCertificateViewModel = YHCertificateViewModel()
lazy var navBar: YHCustomNavigationBar = {
let bar = YHCustomNavigationBar.navBar()
bar.title = "我的证件".local
bar.showLeftSecondButtonType(.search)
bar.backBlock = {
[weak self] in
guard let self = self else { return }
self.navigationController?.popViewController(animated: true)
}
bar.leftSecondBtnClick = {
[weak self] in
guard let self = self else { return }
let vc = YHGCCertificateSearchViewController()
vc.orderId = orderId
self.navigationController?.pushViewController(vc)
}
return bar
}()
private lazy var topBkg : UIView = {
let imagV = UIImageView()
imagV.image = UIImage(named: "service_center_head_bkg3")
imagV.contentMode = .scaleAspectFill
return imagV
}()
var homeTableView: UITableView = {
let tableView = UITableView(frame: .zero, style: .grouped)
tableView.backgroundColor = .clear
tableView.separatorStyle = .none
tableView.showsHorizontalScrollIndicator = false
tableView.showsVerticalScrollIndicator = false
tableView.rowHeight = UITableView.automaticDimension
tableView.register(YHCertificateEntryCell.self,forCellReuseIdentifier: YHCertificateEntryCell.cellReuseIdentifier)
return tableView
}()
let headerView : YHCertificateEntryHeadView = YHCertificateEntryHeadView()
let bottomView : YHCertificateEntryBottomView = YHCertificateEntryBottomView()
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
loadData()
}
}
extension YHGCMineCertificateEntryViewController {
func loadData() {
if orderId != 0 {
let param = ["order_id":orderId,"node":"1","state":"1"] as [String : Any]
certificateReqVM.getCertificateStatisticData(params: param) { success, error in
if success == true {
self.headerView.dataModel = self.certificateReqVM.certificateEntryModel
} else {
YHHUD.flash(message: error?.errorMsg ?? "请求出错")
}
self.homeTableView.reloadData()
}
}
}
func setupUI() {
gk_navigationBar.isHidden = true
view.addSubview(topBkg)
topBkg.snp.makeConstraints { make in
make.top.left.right.equalToSuperview()
make.height.equalTo(240)
}
view.addSubview(bottomView)
bottomView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.height.equalTo(YHCertificateEntryBottomView.viewH)
}
headerView.frame = CGRect(x: 0, y: 0, width: KScreenWidth, height: YHCertificateEntryHeadView.viewH)
homeTableView.tableHeaderView = headerView
view.addSubview(homeTableView)
homeTableView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
make.bottom.equalTo(bottomView.snp.top)
}
// 放在最上面
view.addSubview(navBar)
navBar.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalToSuperview().offset(k_Height_statusBar())
make.height.equalTo(k_Height_NavContentBar)
}
homeTableView.delegate = self
homeTableView.dataSource = self
bottomView.block = { flag in
if flag == 0 {
//问题答疑
let vc = YHQuestionAndAnswerViewController()
self.navigationController?.pushViewController(vc)
} else {
//生成清单
let vc = YHGCMyFileListViewController()
vc.orderId = self.orderId
self.navigationController?.pushViewController(vc)
}
}
}
}
// MARK: - UITableViewDelegate 和 UITableViewDataSource
extension YHGCMineCertificateEntryViewController : UITableViewDelegate,UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
guard let model = certificateReqVM.certificateEntryModel else { return 0 }
return model.category_data.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return kMargin
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = UIView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: kMargin))
return view
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 0
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView()
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return YHCertificateEntryCell.cellH
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell0 = tableView.dequeueReusableCell(withClass: YHCertificateEntryCell.self)
cell0.selectionStyle = .none
guard let model = certificateReqVM.certificateEntryModel else { return cell0 }
if indexPath.section < model.category_data.count {
cell0.dataModel = model.category_data[indexPath.section]
}
return cell0
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
printLog("点击了 tableView Cell \(indexPath.section)")
guard let model = certificateReqVM.certificateEntryModel else { return }
let vc = YHGCCertificateListContainerVC()
vc.orderId = orderId
if indexPath.section < model.category_data.count {
vc.categoryInfo = model.category_data[indexPath.section]
}
self.navigationController?.pushViewController(vc)
}
}
...@@ -126,6 +126,11 @@ class YHGCEducationDetailVC: YHBaseViewController { ...@@ -126,6 +126,11 @@ class YHGCEducationDetailVC: YHBaseViewController {
item04.placeHolder = "请选择专业".local item04.placeHolder = "请选择专业".local
item04.value = detailInfo.major item04.value = detailInfo.major
let item09 = YHFormDetailItem(type: .detailMajor)
item09.tips = "请输入专业".local
item09.placeHolder = "请输入专业".local
item09.value = detailInfo.majorOther
let item01 = YHFormDetailItem(type: .educationStyle) let item01 = YHFormDetailItem(type: .educationStyle)
item01.tips = "请选择授课形式".local item01.tips = "请选择授课形式".local
item01.placeHolder = "请选择授课形式" item01.placeHolder = "请选择授课形式"
...@@ -134,7 +139,7 @@ class YHGCEducationDetailVC: YHBaseViewController { ...@@ -134,7 +139,7 @@ class YHGCEducationDetailVC: YHBaseViewController {
let item05 = YHFormDetailItem(type: .educationDegree) let item05 = YHFormDetailItem(type: .educationDegree)
item05.tips = "请选择学位".local item05.tips = "请选择学位".local
item05.placeHolder = "请选择学位".local item05.placeHolder = "请选择学位".local
item05.value = detailInfo.degree item05.value = detailInfo.getDegree()
// let item02 = YHFormDetailItem(type: .educationTime) // let item02 = YHFormDetailItem(type: .educationTime)
// item02.tips = "请选择年月".local // item02.tips = "请选择年月".local
...@@ -162,12 +167,16 @@ class YHGCEducationDetailVC: YHBaseViewController { ...@@ -162,12 +167,16 @@ class YHGCEducationDetailVC: YHBaseViewController {
item08.tips = "请选择城市".local item08.tips = "请选择城市".local
} }
let arr0:[YHFormItemProtocol] = [title0, item00, item03, item04, item05, item07, item08]
var arr0:[YHFormItemProtocol] = [title0, item00, item03, item04, item05, item07, item08]
if detailInfo.isNeedInputMajor() {
arr0 = [title0, item00, item03, item04, item09, item05, item07, item08]
}
items.append(arr0) items.append(arr0)
let item10 = YHFormDetailItem(type: .cerUpload) // let item10 = YHFormDetailItem(type: .cerUpload)
let arr1:[YHFormItemProtocol] = [item10] // let arr1:[YHFormItemProtocol] = [item10]
items.append(arr1) // items.append(arr1)
self.tableView.reloadData() self.tableView.reloadData()
} }
...@@ -220,7 +229,7 @@ extension YHGCEducationDetailVC : UITableViewDelegate, UITableViewDataSource { ...@@ -220,7 +229,7 @@ extension YHGCEducationDetailVC : UITableViewDelegate, UITableViewDataSource {
textField in textField in
var max = -1 var max = -1
if detailItem.type == .educationMajor { if detailItem.type == .detailMajor {
max = 50 max = 50
} else if detailItem.type == .educationCity { } else if detailItem.type == .educationCity {
max = 100 max = 100
...@@ -245,11 +254,11 @@ extension YHGCEducationDetailVC : UITableViewDelegate, UITableViewDataSource { ...@@ -245,11 +254,11 @@ extension YHGCEducationDetailVC : UITableViewDelegate, UITableViewDataSource {
detailInfo.schoolAddress.foreign = "" detailInfo.schoolAddress.foreign = ""
} }
} else if detailItem.type == .educationMajor { } else if detailItem.type == .detailMajor {
if let text = text, !text.isEmpty { if let text = text, !text.isEmpty {
detailInfo.major = text detailInfo.majorOther = text
} else { } else {
detailInfo.major = "" detailInfo.majorOther = ""
} }
} else if detailItem.type == .universityFullName { } else if detailItem.type == .universityFullName {
if let text = text, !text.isEmpty { if let text = text, !text.isEmpty {
...@@ -418,10 +427,10 @@ extension YHGCEducationDetailVC : UITableViewDelegate, UITableViewDataSource { ...@@ -418,10 +427,10 @@ extension YHGCEducationDetailVC : UITableViewDelegate, UITableViewDataSource {
} else if detailItem.type == .educationDegree { // 学位 } else if detailItem.type == .educationDegree { // 学位
YHSheetPickerView.show(type:.degree, selectTitle:detailInfo.degree) { YHSheetPickerView.show(type:.degree2, selectTitle:detailInfo.degree) {
[weak self] item in [weak self] item in
guard let self = self else { return } guard let self = self else { return }
detailInfo.degree = item.title detailInfo.hasBachelorDegree = item.index
loadInfo() loadInfo()
saveInfoSilent() saveInfoSilent()
} }
...@@ -471,22 +480,31 @@ extension YHGCEducationDetailVC : UITableViewDelegate, UITableViewDataSource { ...@@ -471,22 +480,31 @@ extension YHGCEducationDetailVC : UITableViewDelegate, UITableViewDataSource {
self.present(vc, animated: true) self.present(vc, animated: true)
} else if detailItem.type == .educationMajor { // 专业 } else if detailItem.type == .educationMajor { // 专业
YHSheetPickerView.show(type:.major, selectTitle: detailInfo.major) {
[weak self] item in
guard let self = self else { return }
detailInfo.major = item.title
loadInfo()
saveInfoSilent()
}
let vc = YHMajorSearchViewController() // let vc = YHMajorSearchViewController()
vc.orderId = self.orderId // vc.orderId = self.orderId
vc.searchMajorName = detailInfo.major // vc.searchMajorName = detailInfo.major
vc.selectBlock = { // vc.selectBlock = {
[weak self] text in // [weak self] text in
guard let self = self else { return } // guard let self = self else { return }
if let text = text, !text.isEmpty { // if let text = text, !text.isEmpty {
detailInfo.major = text // detailInfo.major = text
} else { // } else {
detailInfo.major = "" // detailInfo.major = ""
} // }
loadInfo() // loadInfo()
saveInfoSilent() // saveInfoSilent()
} // }
self.navigationController?.pushViewController(vc) // self.navigationController?.pushViewController(vc)
} }
} }
} }
...@@ -554,6 +572,10 @@ extension YHGCEducationDetailVC : UITableViewDelegate, UITableViewDataSource { ...@@ -554,6 +572,10 @@ extension YHGCEducationDetailVC : UITableViewDelegate, UITableViewDataSource {
return .selectSheet return .selectSheet
} }
if detailItem.type == .detailMajor {
return .inputText
}
if detailItem.type == .educationMajor if detailItem.type == .educationMajor
|| detailItem.type == .educationStyle || detailItem.type == .educationStyle
|| detailItem.type == .educationTime || detailItem.type == .educationTime
...@@ -572,7 +594,8 @@ extension YHGCEducationDetailVC : UITableViewDelegate, UITableViewDataSource { ...@@ -572,7 +594,8 @@ extension YHGCEducationDetailVC : UITableViewDelegate, UITableViewDataSource {
extension YHGCEducationDetailVC { extension YHGCEducationDetailVC {
func getDetailInfo() { func getDetailInfo() {
self.educationRequest.getEducationDetailInfo(params: ["id": self.detailId]) { self.educationRequest.getEducationDetailInfo(params: ["id": self.detailId,
"order_id": self.orderId]) {
[weak self] success, error in [weak self] success, error in
guard let self = self else { return } guard let self = self else { return }
if success { if success {
...@@ -602,8 +625,6 @@ extension YHGCEducationDetailVC { ...@@ -602,8 +625,6 @@ extension YHGCEducationDetailVC {
if detailInfo.college.isEmpty if detailInfo.college.isEmpty
|| detailInfo.graduateTime.isEmpty || detailInfo.graduateTime.isEmpty
|| detailInfo.major.isEmpty
|| detailInfo.degree.isEmpty
|| detailInfo.schoolAddress.country.isEmpty || detailInfo.schoolAddress.country.isEmpty
{ {
return false return false
...@@ -613,6 +634,14 @@ extension YHGCEducationDetailVC { ...@@ -613,6 +634,14 @@ extension YHGCEducationDetailVC {
// return false // return false
// } // }
if detailInfo.getDegree().isEmpty {
return false
}
if detailInfo.isNeedInputMajor(), detailInfo.majorOther.isEmpty {
return false
}
if detailInfo.isSchoolInAboard(), detailInfo.schoolAddress.foreign.isEmpty { if detailInfo.isSchoolInAboard(), detailInfo.schoolAddress.foreign.isEmpty {
return false return false
} }
......
...@@ -336,13 +336,14 @@ extension YHGCEducationInfoListVC : UITableViewDelegate, UITableViewDataSource { ...@@ -336,13 +336,14 @@ extension YHGCEducationInfoListVC : UITableViewDelegate, UITableViewDataSource {
let cell = tableView.dequeueReusableCell(withIdentifier: YHEducationInfoCell.cellReuseIdentifier, for: indexPath) as! YHEducationInfoCell let cell = tableView.dequeueReusableCell(withIdentifier: YHEducationInfoCell.cellReuseIdentifier, for: indexPath) as! YHEducationInfoCell
cell.titleLabel.text = eduInfo.college cell.titleLabel.text = eduInfo.college
cell.subTitleLabel.text = "" cell.subTitleLabel.text = ""
if let major = eduInfo.major, let degree = eduInfo.degree { let degree = eduInfo.getDegree()
if let major = eduInfo.getRealMajor(), !degree.isEmpty {
cell.subTitleLabel.text = String("\(degree)-\(major)") cell.subTitleLabel.text = String("\(degree)-\(major)")
} }
cell.timeLabel.text = "" cell.timeLabel.text = ""
if let admissionTime = eduInfo.admissionTime, let graduateTime = eduInfo.graduateTime { // if let admissionTime = eduInfo.admissionTime, let graduateTime = eduInfo.graduateTime {
cell.timeLabel.text = String("\(admissionTime) ~ \(graduateTime)") // cell.timeLabel.text = String("\(admissionTime) ~ \(graduateTime)")
} // }
cell.isShowDeleteBtn = (isDegreeEditMode == .canCancel) cell.isShowDeleteBtn = (isDegreeEditMode == .canCancel)
cell.deleteBlock = { cell.deleteBlock = {
var title = "确定删除该学历吗?" var title = "确定删除该学历吗?"
......
//
// YHInfoQuestionSelectionCell.swift
// galaxy
//
// Created by alexzzw on 2024/12/21.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHInfoQuestionSelectionCell: YHResignDocumentCell {
static let cellReuseIdentifier = "YHInfoQuestionSelectionCell"
var didSelectSureButton: ((YHCheckboxSelectType) -> Void)?
var selectedSureButton: YHCheckboxSelectType = .unknown {
didSet {
updateButtonsState(selectedSureButton)
}
}
private lazy var dotIcon: UIImageView = {
let imageView = UIImageView(image: UIImage(named: "red_dot_6"))
return imageView
}()
private lazy var infoQuestionLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_R(ofSize: 14)
label.textColor = UIColor.mainTextColor
label.numberOfLines = 0
label.lineBreakMode = .byWordWrapping
return label
}()
private lazy var sureButton: UIButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = .PFSC_M(ofSize: 13)
button.setTitle("是", for: .normal)
button.setTitleColor(.mainTextColor, for: .normal)
button.setTitleColor(.brandMainColor, for: .selected)
button.addTarget(self, action: #selector(sureButtonDidClick(_:)), for: .touchUpInside)
button.layer.cornerRadius = 16.0
button.clipsToBounds = true
return button
}()
private lazy var cancelButton: UIButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = .PFSC_M(ofSize: 13)
button.setTitle("否", for: .normal)
button.setTitleColor(.mainTextColor, for: .normal)
button.setTitleColor(.brandMainColor, for: .selected)
button.addTarget(self, action: #selector(cancelButtonDidClick(_:)), for: .touchUpInside)
button.layer.cornerRadius = 16
button.clipsToBounds = true
return button
}()
private lazy var infoFailLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_R(ofSize: 12)
label.textColor = .failColor
label.text = "请选择"
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(question: String, showBottomLine: Bool = false, needShowFailButton: Bool) {
infoQuestionLabel.text = question
updateFailLabel(needShowFailButton)
}
}
extension YHInfoQuestionSelectionCell {
private func updateFailLabel(_ needShowFailButton: Bool) {
if needShowFailButton {
infoFailLabel.isHidden = false
infoQuestionLabel.snp.remakeConstraints { make in
make.left.equalTo(dotIcon.snp.right).offset(2)
make.top.equalToSuperview().offset(16)
make.height.greaterThanOrEqualTo(40)
make.width.lessThanOrEqualTo(113)
}
infoFailLabel.snp.remakeConstraints { make in
make.top.equalTo(infoQuestionLabel.snp.bottom).offset(6)
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.bottom.equalToSuperview().offset(-16)
}
} else {
infoFailLabel.isHidden = true
infoQuestionLabel.snp.remakeConstraints { make in
make.left.equalTo(dotIcon.snp.right).offset(2)
make.top.equalToSuperview().offset(16)
make.height.greaterThanOrEqualTo(40)
make.width.lessThanOrEqualTo(113)
make.bottom.equalToSuperview().offset(-16)
}
infoFailLabel.snp.remakeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.bottom.equalToSuperview().offset(-16)
}
}
}
@objc private func cancelButtonDidClick(_ sender: UIButton) {
guard !sender.isSelected else {
return
}
selectedSureButton = .false
didSelectSureButton?(.false)
}
@objc private func sureButtonDidClick(_ sender: UIButton) {
guard !sender.isSelected else {
return
}
selectedSureButton = .true
didSelectSureButton?(.true)
}
private func setupUI() {
updateCellCorner(.mid)
subContainerView.addSubview(dotIcon)
subContainerView.addSubview(infoQuestionLabel)
subContainerView.addSubview(sureButton)
subContainerView.addSubview(cancelButton)
subContainerView.addSubview(infoFailLabel)
sureButton.setContentCompressionResistancePriority(.required, for: .horizontal)
cancelButton.setContentCompressionResistancePriority(.required, for: .horizontal)
infoQuestionLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
dotIcon.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.height.width.equalTo(6)
make.top.equalTo(infoQuestionLabel.snp.top).offset(7)
}
infoQuestionLabel.snp.makeConstraints { make in
make.left.equalTo(dotIcon.snp.right).offset(2)
make.top.equalToSuperview().offset(16)
make.height.greaterThanOrEqualTo(40)
make.width.lessThanOrEqualTo(113)
make.bottom.equalToSuperview().offset(-16)
}
cancelButton.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-18)
make.height.equalTo(32)
make.width.equalTo(69)
make.centerY.equalTo(infoQuestionLabel)
}
sureButton.snp.makeConstraints { make in
make.right.equalTo(cancelButton.snp.left).offset(-8)
make.height.equalTo(32)
make.width.equalTo(69)
make.centerY.equalTo(infoQuestionLabel)
make.left.greaterThanOrEqualTo(infoQuestionLabel.snp.right).offset(8)
}
infoFailLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.bottom.equalToSuperview().offset(-16)
}
infoFailLabel.isHidden = true
selectedSureButton = .unknown
}
private func updateButtonsState(_ state: YHCheckboxSelectType) {
switch state {
case .unknown:
sureButton.isSelected = false
sureButton.backgroundColor = .contentBkgColor
sureButton.layer.borderColor = nil
sureButton.layer.borderWidth = 0
cancelButton.isSelected = false
cancelButton.backgroundColor = .contentBkgColor
cancelButton.layer.borderColor = nil
cancelButton.layer.borderWidth = 0
case .true:
sureButton.isSelected = true
sureButton.backgroundColor = UIColor(hexString: "#EBF0F9")
sureButton.layer.borderColor = UIColor.brandMainColor.cgColor
sureButton.layer.borderWidth = 1
cancelButton.isSelected = false
cancelButton.backgroundColor = .contentBkgColor
cancelButton.layer.borderColor = nil
cancelButton.layer.borderWidth = 0
case .false:
cancelButton.isSelected = true
cancelButton.backgroundColor = UIColor(hexString: "#EBF0F9")
cancelButton.layer.borderColor = UIColor.brandMainColor.cgColor
cancelButton.layer.borderWidth = 1
sureButton.isSelected = false
sureButton.backgroundColor = .contentBkgColor
sureButton.layer.borderColor = nil
sureButton.layer.borderWidth = 0
}
}
}
//
// YHInfoQuestionSelectionCell.swift
// galaxy
//
// Created by alexzzw on 2024/12/21.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHInfoQuestionSelectionCell: YHResignDocumentCell {
static let cellReuseIdentifier = "YHInfoQuestionSelectionCell"
var didSelectSureButton: ((YHCheckboxSelectType) -> Void)?
var selectedSureButton: YHCheckboxSelectType = .unknown {
didSet {
updateButtonsState(selectedSureButton)
}
}
private lazy var dotIcon: UIImageView = {
let imageView = UIImageView(image: UIImage(named: "red_dot_6"))
return imageView
}()
private lazy var infoQuestionLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_R(ofSize: 14)
label.textColor = UIColor.mainTextColor
label.numberOfLines = 0
label.lineBreakMode = .byWordWrapping
return label
}()
private lazy var sureButton: UIButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = .PFSC_M(ofSize: 13)
button.setTitle("是", for: .normal)
button.setTitleColor(.mainTextColor, for: .normal)
button.setTitleColor(.brandMainColor, for: .selected)
button.addTarget(self, action: #selector(sureButtonDidClick(_:)), for: .touchUpInside)
button.layer.cornerRadius = 16.0
button.clipsToBounds = true
return button
}()
private lazy var cancelButton: UIButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = .PFSC_M(ofSize: 13)
button.setTitle("否", for: .normal)
button.setTitleColor(.mainTextColor, for: .normal)
button.setTitleColor(.brandMainColor, for: .selected)
button.addTarget(self, action: #selector(cancelButtonDidClick(_:)), for: .touchUpInside)
button.layer.cornerRadius = 16
button.clipsToBounds = true
return button
}()
private lazy var infoFailLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_R(ofSize: 12)
label.textColor = .failColor
label.text = "请选择"
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(question: String, showBottomLine: Bool = false, needShowFailButton: Bool) {
infoQuestionLabel.text = question
updateFailLabel(needShowFailButton)
}
}
extension YHInfoQuestionSelectionCell {
private func updateFailLabel(_ needShowFailButton: Bool) {
if needShowFailButton {
infoFailLabel.isHidden = false
infoQuestionLabel.snp.remakeConstraints { make in
make.left.equalTo(dotIcon.snp.right).offset(2)
make.top.equalToSuperview().offset(16)
make.height.greaterThanOrEqualTo(40)
make.width.lessThanOrEqualTo(113)
}
infoFailLabel.snp.remakeConstraints { make in
make.top.equalTo(infoQuestionLabel.snp.bottom).offset(6)
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.bottom.equalToSuperview().offset(-16)
}
} else {
infoFailLabel.isHidden = true
infoQuestionLabel.snp.remakeConstraints { make in
make.left.equalTo(dotIcon.snp.right).offset(2)
make.top.equalToSuperview().offset(16)
make.height.greaterThanOrEqualTo(40)
make.width.lessThanOrEqualTo(113)
make.bottom.equalToSuperview().offset(-16)
}
infoFailLabel.snp.remakeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.bottom.equalToSuperview().offset(-16)
}
}
}
@objc private func cancelButtonDidClick(_ sender: UIButton) {
guard !sender.isSelected else {
return
}
selectedSureButton = .false
didSelectSureButton?(.false)
}
@objc private func sureButtonDidClick(_ sender: UIButton) {
guard !sender.isSelected else {
return
}
selectedSureButton = .true
didSelectSureButton?(.true)
}
private func setupUI() {
updateCellCorner(.mid)
subContainerView.addSubview(dotIcon)
subContainerView.addSubview(infoQuestionLabel)
subContainerView.addSubview(sureButton)
subContainerView.addSubview(cancelButton)
subContainerView.addSubview(infoFailLabel)
sureButton.setContentCompressionResistancePriority(.required, for: .horizontal)
cancelButton.setContentCompressionResistancePriority(.required, for: .horizontal)
infoQuestionLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
dotIcon.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.height.width.equalTo(6)
make.top.equalTo(infoQuestionLabel.snp.top).offset(7)
}
infoQuestionLabel.snp.makeConstraints { make in
make.left.equalTo(dotIcon.snp.right).offset(2)
make.top.equalToSuperview().offset(16)
make.height.greaterThanOrEqualTo(40)
make.width.lessThanOrEqualTo(113)
make.bottom.equalToSuperview().offset(-16)
}
cancelButton.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-18)
make.height.equalTo(32)
make.width.equalTo(69)
make.centerY.equalTo(infoQuestionLabel)
}
sureButton.snp.makeConstraints { make in
make.right.equalTo(cancelButton.snp.left).offset(-8)
make.height.equalTo(32)
make.width.equalTo(69)
make.centerY.equalTo(infoQuestionLabel)
make.left.greaterThanOrEqualTo(infoQuestionLabel.snp.right).offset(8)
}
infoFailLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.bottom.equalToSuperview().offset(-16)
}
infoFailLabel.isHidden = true
selectedSureButton = .unknown
}
private func updateButtonsState(_ state: YHCheckboxSelectType) {
switch state {
case .unknown:
sureButton.isSelected = false
sureButton.backgroundColor = .contentBkgColor
sureButton.layer.borderColor = nil
sureButton.layer.borderWidth = 0
cancelButton.isSelected = false
cancelButton.backgroundColor = .contentBkgColor
cancelButton.layer.borderColor = nil
cancelButton.layer.borderWidth = 0
case .true:
sureButton.isSelected = true
sureButton.backgroundColor = UIColor(hexString: "#EBF0F9")
sureButton.layer.borderColor = UIColor.brandMainColor.cgColor
sureButton.layer.borderWidth = 1
cancelButton.isSelected = false
cancelButton.backgroundColor = .contentBkgColor
cancelButton.layer.borderColor = nil
cancelButton.layer.borderWidth = 0
case .false:
cancelButton.isSelected = true
cancelButton.backgroundColor = UIColor(hexString: "#EBF0F9")
cancelButton.layer.borderColor = UIColor.brandMainColor.cgColor
cancelButton.layer.borderWidth = 1
sureButton.isSelected = false
sureButton.backgroundColor = .contentBkgColor
sureButton.layer.borderColor = nil
sureButton.layer.borderWidth = 0
}
}
}
...@@ -36,17 +36,18 @@ class YHGCWorkExperienceListViewController: YHBaseViewController { ...@@ -36,17 +36,18 @@ class YHGCWorkExperienceListViewController: YHBaseViewController {
} }
func getData() { func getData() {
baseData = viewModel.getBaseDataSource(showPrompt)
docData = viewModel.getDocDataSource(showPrompt)
viewModel?.requestWorkList("\(orderId)", callBackBlock: {[weak self] success, error in viewModel?.requestWorkList("\(orderId)", callBackBlock: {[weak self] success, error in
guard let self = self else { return } guard let self = self else { return }
self.dataSource = success self.dataSource = success
self.baseData = viewModel.getBaseDataSource(showPrompt)
self.docData = viewModel.getDocDataSource(showPrompt)
self.tableView.reloadData() self.tableView.reloadData()
}) })
} }
func updateDataSource() { func updateDataSource() {
self.baseData = viewModel.getBaseDataSource(showPrompt)
self.docData = viewModel.getDocDataSource(showPrompt)
self.tableView.reloadData() self.tableView.reloadData()
} }
...@@ -131,6 +132,14 @@ class YHGCWorkExperienceListViewController: YHBaseViewController { ...@@ -131,6 +132,14 @@ class YHGCWorkExperienceListViewController: YHBaseViewController {
extension YHGCWorkExperienceListViewController: UITableViewDelegate, UITableViewDataSource { extension YHGCWorkExperienceListViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// var count = 1
// if self.viewModel.mainModel.has_work_experience == 1 {
// count = count + 1
// }
// if self.viewModel.mainModel.is_consent_required == 1 {
// count = count + 1
// }
// return count
return 3 return 3
} }
...@@ -140,11 +149,8 @@ extension YHGCWorkExperienceListViewController: UITableViewDelegate, UITableView ...@@ -140,11 +149,8 @@ extension YHGCWorkExperienceListViewController: UITableViewDelegate, UITableView
cell.dataSource = baseData cell.dataSource = baseData
cell.workExperienceBlock = {[weak self] model in cell.workExperienceBlock = {[weak self] model in
guard let self = self else { return } guard let self = self else { return }
// self.viewModel.updateModel(model) self.viewModel.updateModel(model)
// let id = model.id self.updateDataSource()
// if id != .id1 {
// self.updateDataSource()
// }
} }
return cell return cell
} else if indexPath.row == 1 { } else if indexPath.row == 1 {
...@@ -158,7 +164,6 @@ extension YHGCWorkExperienceListViewController: UITableViewDelegate, UITableView ...@@ -158,7 +164,6 @@ extension YHGCWorkExperienceListViewController: UITableViewDelegate, UITableView
} }
cell.clickBlock = {[weak self] model in cell.clickBlock = {[weak self] model in
guard let self = self else { return } guard let self = self else { return }
let firstModel = self.dataSource?.first
let vc = YHGCWorkExperienceViewController() let vc = YHGCWorkExperienceViewController()
vc.workID = model.id ?? 0 vc.workID = model.id ?? 0
vc.orderID = self.orderId vc.orderID = self.orderId
...@@ -193,14 +198,13 @@ extension YHGCWorkExperienceListViewController: UITableViewDelegate, UITableView ...@@ -193,14 +198,13 @@ extension YHGCWorkExperienceListViewController: UITableViewDelegate, UITableView
return cell return cell
} else if indexPath.row == 2 { } else if indexPath.row == 2 {
let cell = tableView.dequeueReusableCell(withClass: YHGCWorkListHasDocTableViewCell.self) let cell = tableView.dequeueReusableCell(withClass: YHGCWorkListHasDocTableViewCell.self)
cell.companyList = self.viewModel.mainModel.list ?? []
cell.url = self.viewModel.mainModel.consent_template_url
cell.dataSource = docData cell.dataSource = docData
cell.workExperienceBlock = {[weak self] model in cell.workExperienceBlock = {[weak self] model in
guard let self = self else { return } guard let self = self else { return }
// self.viewModel.updateModel(model) self.viewModel.updateModel(model)
// let id = model.id self.updateDataSource()
// if id != .id1 {
// self.updateDataSource()
// }
} }
return cell return cell
} }
...@@ -215,7 +219,7 @@ extension YHGCWorkExperienceListViewController: UITableViewDelegate, UITableView ...@@ -215,7 +219,7 @@ extension YHGCWorkExperienceListViewController: UITableViewDelegate, UITableView
let data = array[i] let data = array[i]
let message = data.message ?? "" let message = data.message ?? ""
let isShow = data.isShowPrompts ?? false let isShow = data.isShowPrompts ?? false
h = h + 52 h = h + 62
if isShow && message.count == 0 { if isShow && message.count == 0 {
h = h + 20 h = h + 20
} }
...@@ -230,7 +234,7 @@ extension YHGCWorkExperienceListViewController: UITableViewDelegate, UITableView ...@@ -230,7 +234,7 @@ extension YHGCWorkExperienceListViewController: UITableViewDelegate, UITableView
let data = array[i] let data = array[i]
let message = data.message ?? "" let message = data.message ?? ""
let isShow = data.isShowPrompts ?? false let isShow = data.isShowPrompts ?? false
h = h + 52 h = h + 62
if isShow && message.count == 0 { if isShow && message.count == 0 {
h = h + 20 h = h + 20
} }
......
...@@ -18,7 +18,6 @@ class YHGCWorkExperienceViewController: YHBaseViewController { ...@@ -18,7 +18,6 @@ class YHGCWorkExperienceViewController: YHBaseViewController {
var fileDataSource: [YHWorkExperienceFileModel]? var fileDataSource: [YHWorkExperienceFileModel]?
var workID: Int = 0 var workID: Int = 0
var orderID: Int = 0 var orderID: Int = 0
var positionId: Int = 0
var isMore: Bool = false var isMore: Bool = false
var isShowPrompt: Bool = false var isShowPrompt: Bool = false
var isShowMessageSelect: Bool = true var isShowMessageSelect: Bool = true
...@@ -138,10 +137,14 @@ extension YHGCWorkExperienceViewController: UITableViewDelegate, UITableViewData ...@@ -138,10 +137,14 @@ extension YHGCWorkExperienceViewController: UITableViewDelegate, UITableViewData
guard let self = self else { return } guard let self = self else { return }
self.viewModel.updateModel(model) self.viewModel.updateModel(model)
let id = model.id let id = model.id
if id != .id1 && id != .id2 && id != .id6 && id != .id10 && id != .id11 { if id != .id4 && id != .id5 && id != .id8 {
self.updateDataSource() self.updateDataSource()
} }
} }
cell.companyBlock = {[weak self] model in
guard let self = self else { return }
self.viewModel.updateCompanyModel(model.company_name ?? "")
}
return cell return cell
} }
...@@ -154,7 +157,7 @@ extension YHGCWorkExperienceViewController: UITableViewDelegate, UITableViewData ...@@ -154,7 +157,7 @@ extension YHGCWorkExperienceViewController: UITableViewDelegate, UITableViewData
let data = array[i] let data = array[i]
let message = data.message ?? "" let message = data.message ?? ""
let isShow = data.isShowPrompts ?? false let isShow = data.isShowPrompts ?? false
if data.id == .id7 { if data.id == .id6 {
h = h + 72 h = h + 72
} else { } else {
h = h + 52 h = h + 52
......
...@@ -23,7 +23,7 @@ class YHGCWorkModel: SmartCodable { ...@@ -23,7 +23,7 @@ class YHGCWorkModel: SmartCodable {
var why_work_time_overlap: String = "" //高才使用 关于工作时间重叠的说明 var why_work_time_overlap: String = "" //高才使用 关于工作时间重叠的说明
var has_work_experience: Int = 0 //高BC使用 是否有工作经历 0.未知 1.是 2.否 var has_work_experience: Int = 0 //高BC使用 是否有工作经历 0.未知 1.是 2.否
var is_consent_required: Int = 0 //高才使用 是否必须提供赴港同意书 0-否 1-是 var is_consent_required: Int = 0 //高才使用 是否必须提供赴港同意书 0-否 1-是
var consent_template_url: String = ""
var list: [YHWorkItemListModel]? var list: [YHWorkItemListModel]?
required init() { required init() {
} }
......
...@@ -18,6 +18,8 @@ class YHGCWorkListHasDocTableViewCell: UITableViewCell { ...@@ -18,6 +18,8 @@ class YHGCWorkListHasDocTableViewCell: UITableViewCell {
var mainItemView: UIView! var mainItemView: UIView!
var workId: Int = 0 var workId: Int = 0
var orderId: Int = 0 var orderId: Int = 0
var url: String = ""
var companyList: [YHWorkItemListModel] = []
var dataSource: YHSectionWorkExperienceModel?{ var dataSource: YHSectionWorkExperienceModel?{
didSet { didSet {
updateAllViews() updateAllViews()
...@@ -135,11 +137,12 @@ class YHGCWorkListHasDocTableViewCell: UITableViewCell { ...@@ -135,11 +137,12 @@ class YHGCWorkListHasDocTableViewCell: UITableViewCell {
let data = dataSource?.models?[i] let data = dataSource?.models?[i]
let isShow = data?.isShowPrompts ?? false let isShow = data?.isShowPrompts ?? false
let message = data?.message ?? "" let message = data?.message ?? ""
var h = 51 var h = 61
if isShow && message.count == 0 { if isShow && message.count == 0 {
h = h + 20 h = h + 20
} }
let itemView = YHWorkExperienceItemView() let itemView = YHWorkExperienceItemView()
itemView.companyList = companyList
itemView.dataSource = data itemView.dataSource = data
itemView.workId = workId itemView.workId = workId
itemView.orderId = orderId itemView.orderId = orderId
......
...@@ -105,7 +105,7 @@ class YHGCWorkListHasWorkExperienceTableViewCell: UITableViewCell { ...@@ -105,7 +105,7 @@ class YHGCWorkListHasWorkExperienceTableViewCell: UITableViewCell {
let data = dataSource?.models?[i] let data = dataSource?.models?[i]
let isShow = data?.isShowPrompts ?? false let isShow = data?.isShowPrompts ?? false
let message = data?.message ?? "" let message = data?.message ?? ""
var h = 51 var h = 61
if isShow && message.count == 0 { if isShow && message.count == 0 {
h = h + 20 h = h + 20
} }
......
...@@ -33,8 +33,8 @@ class YHGCWorkExperienceViewModel: YHBaseViewModel { ...@@ -33,8 +33,8 @@ class YHGCWorkExperienceViewModel: YHBaseViewModel {
let item4 = YHWorkExperienceModel(id: .id23, isNeed: true, title: "开始就职年月", isUserKeyBoard: false, prompts: "请选择", message: position.entry_time, type: .time) let item4 = YHWorkExperienceModel(id: .id23, isNeed: true, title: "开始就职年月", isUserKeyBoard: false, prompts: "请选择", message: position.entry_time, type: .time)
let item5 = YHWorkExperienceModel(id: .id24, isNeed: true, title: "结束就职年月", isUserKeyBoard: false, prompts: "请选择", message: position.departure_time, type: .time) let item5 = YHWorkExperienceModel(id: .id24, isNeed: true, title: "结束就职年月", isUserKeyBoard: false, prompts: "请选择", message: position.departure_time, type: .time)
let item6 = YHWorkExperienceModel(id: .id6, isNeed: true, title: "工作证明是否可以提供", isUserKeyBoard: false, prompts: "", message: "\(position.has_work_certificate)", leftButtonString: "是", rightButtonString: "否") let item6 = YHWorkExperienceModel(id: .id6, isNeed: true, title: "工作证明是否可以提供", isUserKeyBoard: false, prompts: "", message: "\(position.has_work_certificate)", leftButtonString: "是", rightButtonString: "否")
let item7 = YHWorkExperienceModel(id: .id7, isNeed: true, title: "职业界别", isUserKeyBoard: false, prompts: "请选择", message: position.company_type, type: .field, isShowPrompts: isShowPrompt, alertMessage:"请选择") let item7 = YHWorkExperienceModel(id: .id7, isNeed: true, title: "职业界别", isUserKeyBoard: false, prompts: "请选择", message: position.company_type, type: .position, isShowPrompts: isShowPrompt, alertMessage:"请选择")
let item77 = YHWorkExperienceModel(id: .id8, isNeed: true, title: "具体经验领域", isUserKeyBoard: true, prompts: "请输入", message: position.company_type_other, type: .country, isShowPrompts: isShowPrompt, alertMessage:"请输入") let item77 = YHWorkExperienceModel(id: .id8, isNeed: true, title: "具体经验领域", isUserKeyBoard: true, prompts: "请输入", message: position.company_type_other, isShowPrompts: isShowPrompt, alertMessage:"请输入")
let addressCountry = position.location.country let addressCountry = position.location.country
...@@ -57,6 +57,10 @@ class YHGCWorkExperienceViewModel: YHBaseViewModel { ...@@ -57,6 +57,10 @@ class YHGCWorkExperienceViewModel: YHBaseViewModel {
return [section] return [section]
} }
func updateCompanyModel(_ value: String) {
position.company_name = value
}
func updateModel(_ item: YHWorkExperienceModel) { func updateModel(_ item: YHWorkExperienceModel) {
guard let type = item.id else { return } guard let type = item.id else { return }
switch type { switch type {
...@@ -145,7 +149,7 @@ class YHGCWorkExperienceViewModel: YHBaseViewModel { ...@@ -145,7 +149,7 @@ class YHGCWorkExperienceViewModel: YHBaseViewModel {
} }
func requestWorkPositionDetail(_ workId: Int, callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) { func requestWorkPositionDetail(_ workId: Int, callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) {
let param: [String: Any] = ["work_id": workId] let param: [String: Any] = ["id": workId]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.gcworkDetail let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.gcworkDetail
let _ = YHNetRequest.getRequest(url: strUrl, params: param) { [weak self] json, code in let _ = YHNetRequest.getRequest(url: strUrl, params: param) { [weak self] json, code in
//1. json字符串 转 对象 //1. json字符串 转 对象
......
...@@ -347,15 +347,25 @@ class YHLivePlayerViewController: YHBasePlayerViewController { ...@@ -347,15 +347,25 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
// MARK: - Chat Room Methods // MARK: - Chat Room Methods
private func joinChatRoom(roomId: String) { private func joinChatRoom(roomId: String) {
YHIMHelper.shared.joinChatRoom(roomID: roomId, leaveOtherRooms: true) { [weak self] error in func joinRoom() {
guard let self = self else { return } YHIMHelper.shared.joinChatRoom(roomID: roomId, leaveOtherRooms: true) { [weak self] error in
guard let self = self else { return }
if let error = error { if let error = error {
printLog("joinChatRoom: \(error)") printLog("joinChatRoom: \(error)")
} else { } else {
self.loadHistoryMessages(roomId: roomId) self.loadHistoryMessages(roomId: roomId)
}
} }
} }
if !YHIMHelper.shared.isCurrentUserLogin {
YHIMHelper.shared.registerAndLoginCurrentUser { _ in
joinRoom()
}
} else {
joinRoom()
}
} }
private func loadHistoryMessages(roomId: String) { private func loadHistoryMessages(roomId: String) {
......
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