Commit 19606341 authored by pete谢兆麟's avatar pete谢兆麟

工作经验基本信息

parent 7845195c
This diff is collapsed.
......@@ -9,7 +9,6 @@
import UIKit
class YHWorkExperienceListViewController: YHBaseViewController {
var bottomView: UIView!
var bottomButton: UIButton!
var tableView: UITableView!
......@@ -84,12 +83,11 @@ class YHWorkExperienceListViewController: YHBaseViewController {
make.height.equalTo(48)
make.left.equalTo(16)
}
}
@objc func submit() {
let vc = YHWorkExperienceViewController()
self.navigationController?.pushViewController(vc, animated: true)
}
}
......
//
// YHWorkExperienceViewController.swift
// galaxy
//
// Created by EDY on 2024/2/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHWorkExperienceViewController: YHBaseViewController {
var stepView: YHStepView!
var bottomView: YHBottomNextView!
var tableView: UITableView!
var viewModel: YHWorkExperienceViewModel!
var dataSource: [YHSectionWorkExperienceModel]?
override func viewDidLoad() {
super.viewDidLoad()
viewModel = YHWorkExperienceViewModel()
gk_navTitle = "工作经验信息填写"
setView()
getData()
// Do any additional setup after loading the view.
}
func getData() {
updateDataSource()
}
func updateDataSource() {
if self.stepView.currentIndex == 0 {
self.dataSource = self.viewModel.getBaseDataSource()
}
self.tableView.reloadData()
}
func setView() {
stepView = {
let step = YHStepView()
step.dataSource = ["基本信息", "工作职责", "工作亮点", "项目介绍", "简历/工作总结"]
step.contentSize = CGSize(width: KScreenWidth * 1.2, height: 104)
step.showsHorizontalScrollIndicator = false
step.showsVerticalScrollIndicator = false
step.block = { [weak self] (index) in
guard let self = self else { return }
self.updateDataSource()
}
return step
}()
view.addSubview(stepView)
stepView.snp.makeConstraints { make in
make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
make.left.right.equalTo(view)
make.height.equalTo(104)
}
tableView = {
let tableView = UITableView(frame:.zero, style:.plain)
if #available(iOS 11.0, *) {
tableView.contentInsetAdjustmentBehavior = .never
}
tableView.backgroundColor = .clear
tableView.separatorStyle = .none
tableView.delegate = self
tableView.dataSource = self
tableView.register(cellWithClass: YHWorkExperienceTableViewCell.self)
return tableView
}()
view.addSubview(tableView)
tableView.snp.makeConstraints { make in
make.top.equalTo(k_Height_NavigationtBarAndStatuBar + YHStepView.height)
make.bottom.equalTo(-k_Height_safeAreaInsetsBottom() - 64)
make.left.right.bottom.equalTo(view)
}
bottomView = {
let bottom = YHBottomNextView()
bottom.nextblock = { [weak self] in
guard let self = self else { return }
self.stepView.currentIndex = self.stepView.currentIndex + 1
}
bottom.saveBlock = { [weak self] in
guard let self = self else { return }
}
return bottom
}()
view.addSubview(bottomView)
bottomView.snp.makeConstraints { make in
make.left.right.bottom.equalTo(view)
make.height.equalTo(k_Height_safeAreaInsetsBottom() + 64)
}
}
}
extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataSource?.count ?? 0
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withClass: YHWorkExperienceTableViewCell.self)
cell.dataSource = dataSource?[indexPath.row]
cell.workExperienceBlock = {[weak self] model in
guard let self = self else { return }
// self.viewModel.updateModel(model)
self.updateDataSource()
}
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let array = dataSource?[indexPath.row].models ?? []
var h = 0
for i in 0..<array.count {
let data = array[i]
if data.id == .id3 || data.id == .id4 || data.id == .id18 {
h = h + 132
} else if data.id == .id13 {
h = h + 72
} else {
h = h + 52
}
}
return CGFloat(h + 52 + 14)
}
}
//
// YHWorkExperienceModel.swift
// galaxy
//
// Created by EDY on 2024/2/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
enum YHWorkExperienceSelectType: Int {
case normal = 0
case unit = 1
case nature = 2
case country = 3
case address = 4
case time = 5
case certificate = 6
case structure = 7
case level = 8
case prove = 9
}
enum YHWorkExperienceID: Int {
case id1 = 0 // 用人单位
case id2 = 1 // 用人单位性质
case id3 = 2 // 用人单位介绍
case id4 = 3 // 用人单位官网
case id5 = 4 // 工作地区国家
case id6 = 5 // 工作城市 国内
case id7 = 6 // 工作城市国外
case id8 = 7 // 职位
case id9 = 8 // 入职年月
case id10 = 9 // 离职年月
case id11 = 10 // 工作证明文件
case id12 = 11 // 职责性质
case id13 = 12 // 是否国际工作经验
case id14 = 13 // 企业人数规模
case id15 = 14 // 行政架构层级
case id16 = 15 // 下属管理人数
case id17 = 16 // 公司营业额/港元
case id18 = 17 // 公司性质/范畴/所属行业
case id19 = 18 // 职位水平类型
case id20 = 19 // 高管证明文件
case id21 = 20 // 高管在职开始时间
case id22 = 21 // 高管在职结束时间
}
struct YHWorkExperienceModel {
var id: YHWorkExperienceID?
var isNeed: Bool?
var title: String?
var isUserKeyBoard: Bool?
var prompts: String?
var message: String?
var leftButtonString: String?
var rightButtonString: String?
var type: YHWorkExperienceSelectType?
var value: [String]?
init(id: YHWorkExperienceID? = nil, isNeed: Bool? = nil, title: String? = nil, isUserKeyBoard: Bool? = nil, prompts: String? = nil, message: String? = nil, leftButtonString: String? = nil, rightButtonString: String? = nil, type: YHWorkExperienceSelectType? = nil, value: [String]? = nil) {
self.id = id
self.isNeed = isNeed
self.title = title
self.isUserKeyBoard = isUserKeyBoard
self.prompts = prompts
self.message = message
self.leftButtonString = leftButtonString
self.rightButtonString = rightButtonString
self.type = type
self.value = value
}
}
struct YHSectionWorkExperienceModel {
var title: String?
var models: [YHWorkExperienceModel]?
init(title: String? = nil, models: [YHWorkExperienceModel]? = nil) {
self.title = title
self.models = models
}
}
//
// YHWorkExperienceTableViewCell.swift
// galaxy
//
// Created by EDY on 2024/2/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHWorkExperienceTableViewCell: UITableViewCell {
typealias WorkExperienceBlock = (_ model: YHWorkExperienceModel) -> ()
var workExperienceBlock: WorkExperienceBlock?
var centerView: UIView!
var titleLabel: UILabel!
var mainItemView: UIView!
var dataSource: YHSectionWorkExperienceModel?{
didSet {
updateAllViews()
}
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
selectionStyle = .none
setupUI()
}
func setupUI() {
backgroundColor = UIColor(hex: 0xe9e9e9)
centerView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = 12
return view
}()
contentView.addSubview(centerView)
centerView.snp.makeConstraints { make in
make.left.equalTo(16)
make.right.equalTo(-16)
make.top.equalTo(7)
make.bottom.equalTo(-7)
}
titleLabel = {
let label = UILabel()
label.font = kFont(size: 17)
label.textColor = UIColor(hex:0x222222)
return label
}()
centerView.addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(16)
make.height.equalTo(20)
make.right.equalTo(-18)
}
mainItemView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = 12
return view
}()
centerView.addSubview(mainItemView)
mainItemView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.top.equalTo(52)
}
}
func updateAllViews() {
titleLabel.text = dataSource?.title
mainItemView.removeSubviews()
var y = 0
for i in 0 ..< (dataSource?.models?.count ?? 0) {
let line = UIView()
line.backgroundColor = UIColor(hex: 0xf0f0f0)
mainItemView.addSubview(line)
line.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(y)
make.height.equalTo(1)
make.right.equalTo(-18)
}
y = y + 1
let data = dataSource?.models?[i]
if data?.id == .id3 || data?.id == .id4 || data?.id == .id18 {
let itemView = YHWorkExperienceTextItemView()
itemView.dataSource = data
itemView.block = {[weak self] model in
guard let self = self else { return }
if let block = self.workExperienceBlock {
block(model)
}
}
mainItemView.addSubview(itemView)
itemView.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(y)
make.height.equalTo(131)
make.right.equalTo(-18)
}
y = y + 131
} else {
var h = 51
if data?.id == .id13 {
h = 71
}
let itemView = YHWorkExperienceItemView()
itemView.dataSource = data
itemView.block = {[weak self] model in
guard let self = self else { return }
if let block = self.workExperienceBlock {
block(model)
}
}
mainItemView.addSubview(itemView)
itemView.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(y)
make.height.equalTo(h)
make.right.equalTo(-18)
}
y = y + h
}
}
}
}
//
// YHWorkExperienceTextItemView.swift
// galaxy
//
// Created by EDY on 2024/2/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHWorkExperienceTextItemView: UIView {
typealias ItemBlock = (_ model: YHWorkExperienceModel) -> ()
var block: ItemBlock?
var titleLabel: UILabel!
var messageTextField: UITextView!
var promptsLabel: UILabel!
var nextStepImageView: UIImageView!
var dataSource: YHWorkExperienceModel? {
didSet {
updateAllViews()
}
}
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .white
setUpView()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setUpView() {
titleLabel = {
let label = UILabel()
label.numberOfLines = 0
return label
}()
addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.left.equalToSuperview()
make.top.equalTo(16)
make.height.equalTo(20)
}
messageTextField = {
let textField = UITextView()
textField.backgroundColor = UIColor(hex: 0xf8f9fb)
textField.layer.cornerRadius = 4
textField.delegate = self
return textField
}()
addSubview(messageTextField)
messageTextField.snp.makeConstraints { make in
make.right.left.equalToSuperview()
make.top.equalTo(52)
make.bottom.equalTo(-16)
}
promptsLabel = {
let textField = UILabel()
textField.font = kFont(size: 14)
textField.textColor = UIColor(hex: 0xc0c0c0)
return textField
}()
addSubview(promptsLabel)
promptsLabel.snp.makeConstraints { make in
make.right.left.equalTo(12)
make.top.equalTo(64)
make.height.equalTo(20)
}
nextStepImageView = {
let imageView = UIImageView()
imageView.image = UIImage(named: "form_right_arrow")
return imageView
}()
addSubview(nextStepImageView)
nextStepImageView.snp.makeConstraints { make in
make.left.equalTo(titleLabel.snp.right)
make.centerY.equalTo(titleLabel.snp.centerY)
make.height.width.equalTo(16)
}
}
func updateAllViews() {
guard let dataSource = dataSource else { return }
if dataSource.isNeed ?? false {
let str = "*" + (dataSource.title ?? "")
let attributes: [NSAttributedString.Key: Any] = [
.font: UIFont.PFSC_R(ofSize: 14),
.foregroundColor: UIColor(hex:0x222222)
]
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 {
let str = dataSource.title ?? ""
let attributes: [NSAttributedString.Key: Any] = [
.font: kFont(size: 14),
.foregroundColor: UIColor(hex:0x222222)
]
let questionAttrStr = NSMutableAttributedString(string: str, attributes: attributes)
titleLabel.attributedText = questionAttrStr
}
promptsLabel.text = dataSource.prompts
messageTextField.text = dataSource.message
}
}
extension YHWorkExperienceTextItemView: UITextViewDelegate {
func textViewDidChange(_ textView: UITextView) {
dataSource?.message = textView.text
if let block = block {
block(dataSource ?? YHWorkExperienceModel())
}
}
}
//
// YHWorkExperienceViewModel.swift
// galaxy
//
// Created by EDY on 2024/2/19.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHWorkExperienceViewModel: YHBaseViewModel {
var mainModel: YHMainInformationModel = YHMainInformationModel()
override init() {
super.init()
}
func getBaseDataSource() -> [YHSectionWorkExperienceModel] {
let item = YHWorkExperienceModel(id: .id1, isNeed: true, title: "用人单位", isUserKeyBoard: false, prompts: "请输入", message: "", type: .unit)
let item1 = YHWorkExperienceModel(id: .id2, isNeed: true, title: "用人单位性质", isUserKeyBoard: false, prompts: "请输入", message: "", type: .nature)
let item2 = YHWorkExperienceModel(id: .id3, isNeed: false, title: "用人单位介绍", isUserKeyBoard: true, prompts: "如方便提供,请填写", message: "")
let item3 = YHWorkExperienceModel(id: .id4, isNeed: false, title: "用人单位官网", isUserKeyBoard: true, prompts: "如有,请输入官网链接", message: "")
let item4 = YHWorkExperienceModel(id: .id5, isNeed: true, title: "出生国家/地区", isUserKeyBoard: false, prompts: nil, message: "", type: .country)
var string = ""
if let array = mainModel.birth_place?.area {
for item in array {
string = string + item
}
}
let item5 = YHWorkExperienceModel(id: .id6, isNeed: true, title: "出生城市", isUserKeyBoard: false, prompts: "请选择", message: "", type: .address)
let item55 = YHWorkExperienceModel(id: .id7, isNeed: true, title: "出生城市", isUserKeyBoard: true, prompts: "请输入", message: "")
let item6 = YHWorkExperienceModel(id: .id8, isNeed: true, title: "职位", isUserKeyBoard: true, prompts: "请输入", message: "")
let item7 = YHWorkExperienceModel(id: .id9, isNeed: true, title: "入职年月", isUserKeyBoard: false, prompts: "请选择", message: "", type: .time)
let item8 = YHWorkExperienceModel(id: .id10, isNeed: true, title: "离职年月", isUserKeyBoard: false, prompts: "请选择", message: "", type: .time)
let item9 = YHWorkExperienceModel(id: .id11, isNeed: true, title: "工作证明文件", isUserKeyBoard: false, prompts: "请选择", message: "", type: .certificate)
let item10 = YHWorkExperienceModel(id: .id12, isNeed: false, title: "职责性质", isUserKeyBoard: false, prompts: "请选择", message: "")
let item11 = YHWorkExperienceModel(id: .id13, isNeed: false, title: "相关工作经验是否属于国际工作经验", isUserKeyBoard: false, prompts: "", message: "\(mainModel.has_hk_id ?? 0)", leftButtonString: "是", rightButtonString: "否")
let section = YHSectionWorkExperienceModel(title: "企业信息", models: [item, item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11])
let item12 = YHWorkExperienceModel(id: .id14, isNeed: true, title: "企业人数规模", isUserKeyBoard: true, prompts: "请输入", message: "")
let item13 = YHWorkExperienceModel(id: .id15, isNeed: false, title: "行政架构层级", isUserKeyBoard: false, prompts: "请输入", message: "", type: .structure)
let item14 = YHWorkExperienceModel(id: .id16, isNeed: true, title: "下属管理人数", isUserKeyBoard: true, prompts: "请输入", message: "")
let item15 = YHWorkExperienceModel(id: .id17, isNeed: false, title: "公司营业额/港元 (近一年)", isUserKeyBoard: true, prompts: "请输入具体数字", message: "")
let item16 = YHWorkExperienceModel(id: .id18, isNeed: false, title: "公司业务性质/范畴/所属行业", isUserKeyBoard: true, prompts: "请输入,100字内", message: "")
let item17 = YHWorkExperienceModel(id: .id19, isNeed: true, title: "职位水平类别", isUserKeyBoard: false, prompts: "请选择", message: "", type: .level)
let item18 = YHWorkExperienceModel(id: .id20, isNeed: true, title: "高管证明文件", isUserKeyBoard: false, prompts: "请选择", message: "", type: .prove)
let item19 = YHWorkExperienceModel(id: .id21, isNeed: true, title: "高管在职开始时间", isUserKeyBoard: false, prompts: "请选择", message: "", type: .time)
let item20 = YHWorkExperienceModel(id: .id22, isNeed: true, title: "高管在职结束时间", isUserKeyBoard: false, prompts: "请选择", message: "", type: .time)
let section1 = YHSectionWorkExperienceModel(title: "企业规模", models: [item12, item13, item14, item15, item16, item17, item18, item19, item20])
return [section, section1]
}
func updateModel(_ item: YHItemModel) {
guard let type = item.id else { return }
switch type {
case .id1:
mainModel.nationality = item.message
case .id2:
mainModel.address?.country = item.message
case .id3:
mainModel.address?.area = item.value
case .id4:
mainModel.address?.details = item.message
case .id5:
mainModel.has_hk_id = item.value?.first?.int
case .id6:
printLog("1")
case .id7:
printLog("1")
case .id8:
mainModel.certificates?.cn_identity_card?.number = item.message
case .id9:
mainModel.certificates?.cn_identity_card?.issue_at = item.message
case .id10:
mainModel.certificates?.cn_identity_card?.issue_date_start_at = item.message
case .id11:
mainModel.certificates?.cn_identity_card?.issue_date_end_at = item.message
case .id12:
mainModel.certificates?.hk_macao_pass?.number = item.message
case .id13:
mainModel.certificates?.hk_macao_pass?.issue_at = item.message
case .id14:
mainModel.certificates?.hk_macao_pass?.issue_date_start_at = item.message
case .id15:
mainModel.certificates?.hk_macao_pass?.issue_date_end_at = item.message
case .id16:
mainModel.certificates?.passport?.passport_type = item.value?.first
case .id17:
mainModel.certificates?.passport?.number = item.message
case .id18:
mainModel.certificates?.passport?.issue_at = item.message
case .id19:
mainModel.certificates?.passport?.issue_date_start_at = item.message
case .id20:
mainModel.certificates?.passport?.issue_date_end_at = item.message
case .id21:
mainModel.username = item.message
case .id22:
mainModel.used_name = item.message
case .id23:
mainModel.surname = item.message
case .id24:
mainModel.birthday = item.message
case .id25:
mainModel.birth_place_aboard = item.value?.first?.int
case .id26:
mainModel.birth_place?.area = item.value
case .id27:
mainModel.sex = item.value?.first
case .id28:
mainModel.married = item.value?.first
case .id29:
mainModel.mobile = item.message
case .id30:
mainModel.email = item.message
case .id31:
mainModel.has_hk_id = item.value?.first?.int
case .id32:
mainModel.address?.foreign = item.message
case .id33:
mainModel.is_live_oversea_year = item.value?.first?.int
case .id34:
mainModel.birth_place?.foreign = item.message
}
}
}
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