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

工作经验细节

parent fbe17b8d
...@@ -24,7 +24,10 @@ class YHDocumentPromptTableViewCell: UITableViewCell { ...@@ -24,7 +24,10 @@ class YHDocumentPromptTableViewCell: UITableViewCell {
updateWorkPrompt() updateWorkPrompt()
} }
} }
lazy var previewFileTool:YHFilePreviewTool = {
let tool = YHFilePreviewTool(targetVC: UIViewController.current)
return tool
}()
override func awakeFromNib() { override func awakeFromNib() {
super.awakeFromNib() super.awakeFromNib()
// Initialization code // Initialization code
...@@ -53,6 +56,7 @@ class YHDocumentPromptTableViewCell: UITableViewCell { ...@@ -53,6 +56,7 @@ class YHDocumentPromptTableViewCell: UITableViewCell {
view.image = UIImage(named: "document_prompt_bg") view.image = UIImage(named: "document_prompt_bg")
view.backgroundColor = .white view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6 view.layer.cornerRadius = kCornerRadius6
view.isUserInteractionEnabled = true
return view return view
}() }()
contentView.addSubview(centerView) contentView.addSubview(centerView)
...@@ -130,6 +134,12 @@ class YHDocumentPromptTableViewCell: UITableViewCell { ...@@ -130,6 +134,12 @@ class YHDocumentPromptTableViewCell: UITableViewCell {
let a: ASAttributedString = .init("温馨提示:优才获批后,您需要提供获批时在职公司盖章的赴港居留同意书,请您知悉。", .font(UIFont.PFSC_R(ofSize: 12)),.foreground(UIColor.subTextColor2)) let a: ASAttributedString = .init("温馨提示:优才获批后,您需要提供获批时在职公司盖章的赴港居留同意书,请您知悉。", .font(UIFont.PFSC_R(ofSize: 12)),.foreground(UIColor.subTextColor2))
let aa: ASAttributedString = .init("查看示例模板", .font(UIFont.PFSC_R(ofSize: 12)),.foreground(UIColor.brandMainColor), .underline(.single), .action { let aa: ASAttributedString = .init("查看示例模板", .font(UIFont.PFSC_R(ofSize: 12)),.foreground(UIColor.brandMainColor), .underline(.single), .action {
let viewModel = YHBaseViewModel()
viewModel.getPublicImageUrl("https://test-cdn.galaxy-immi.com/4001014/4804205858403988036120241104135639.jpg") { success, error in
if let success = success {
self.previewFileTool.openXLSXRemoteFile(urlString: success, fileName:"")
}
}
}) })
subTitleLabel.attributed.text = a + aa subTitleLabel.attributed.text = a + aa
} }
......
...@@ -9,8 +9,7 @@ ...@@ -9,8 +9,7 @@
import UIKit import UIKit
class YHWorkExperienceListViewController: YHBaseViewController { class YHWorkExperienceListViewController: YHBaseViewController {
var bottomView: UIView! var bottomView: YHBottomNextView!
var bottomButton: UIButton!
var tableView: UITableView! var tableView: UITableView!
var dataSource: [YHWorkItemListModel]? var dataSource: [YHWorkItemListModel]?
var viewModel: YHWorkItemListViewModel? var viewModel: YHWorkItemListViewModel?
...@@ -70,60 +69,43 @@ class YHWorkExperienceListViewController: YHBaseViewController { ...@@ -70,60 +69,43 @@ class YHWorkExperienceListViewController: YHBaseViewController {
} }
bottomView = { bottomView = {
let bottom = UIView() let bottom = YHBottomNextView()
bottom.backgroundColor = .white bottom.nextButton.setTitle("提交", for: .normal)
bottom.nextblock = { [weak self] in
guard let self = self else { return }
guard let dataSource = dataSource else { return }
for item in dataSource {
if item.vacant_num ?? 0 > 0 {
showPrompt = true
tableView.reloadData()
YHHUD.flash(message: "您的工作经验未全部填写完成,请先填写完成再提交")
return
}
}
viewModel?.requestWorkTimeRemarkWorkExperience("\(orderId)", 1, callBackBlock: {[weak self] success, error in
guard let self = self else { return }
if success ?? false {
self.navigationController?.popViewController(animated: true)
}
})
}
bottom.saveBlock = { [weak self] in
guard let self = self else { return }
viewModel?.requestWorkTimeRemarkWorkExperience("\(orderId)", callBackBlock: {[weak self] success, error in
guard let self = self else { return }
})
}
return bottom return bottom
}() }()
view.addSubview(bottomView) view.addSubview(bottomView)
bottomView.snp.makeConstraints { make in bottomView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview() make.left.right.bottom.equalTo(view)
make.height.equalTo(k_Height_safeAreaInsetsBottom() + 64) make.height.equalTo(k_Height_safeAreaInsetsBottom() + 64)
} }
bottomView.layoutIfNeeded()
bottomButton = { bottomView.nextButton.addYinHeGradualLayer()
let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 16)
button.contentHorizontalAlignment = .center
button.setTitle("提交", for: .normal)
button.setTitleColor( UIColor(hex:0xffffff), for: .normal)
button.layer.cornerRadius = kCornerRadius3
button.clipsToBounds = true
button.addTarget(self, action: #selector(submit), for: .touchUpInside)
return button
}()
bottomView.addSubview(bottomButton)
bottomButton.snp.makeConstraints { make in
make.right.equalTo(-16)
make.top.equalTo(8)
make.height.equalTo(48)
make.left.equalTo(16)
}
bottomButton.layoutIfNeeded()
bottomButton.addYinHeGradualLayer()
}
@objc func submit() {
guard let dataSource = dataSource else { return }
for item in dataSource {
if item.vacant_num ?? 0 > 0 {
showPrompt = true
tableView.reloadData()
YHHUD.flash(message: "您的工作经验未全部填写完成,请先填写完成再提交")
return
}
}
viewModel?.requestWorkTimeRemarkWorkExperience("\(orderId)", callBackBlock: {[weak self] success, error in
guard let self = self else { return }
})
viewModel?.requestSaveAllWorkExperience("\(orderId)", callBackBlock: {[weak self] success, error in
guard let self = self else { return }
if success ?? false {
self.navigationController?.popViewController(animated: true)
}
})
} }
func showDeleteAlert(_ model: YHWorkItemListModel) { func showDeleteAlert(_ model: YHWorkItemListModel) {
......
...@@ -69,7 +69,7 @@ class YHWorkExperienceViewController: YHBaseViewController { ...@@ -69,7 +69,7 @@ class YHWorkExperienceViewController: YHBaseViewController {
} }
} }
self.viewModel.mainModel.file = self.fileDataSource ?? [] self.viewModel.mainModel.file = self.fileDataSource ?? []
self.viewModel.saveWorkDetail(0, orderID: self.orderID, callBackBlock: {flag, error in self.viewModel.saveWorkDetail(workId: workExperienceID?.intValue() ?? 0, callBackBlock: {flag, error in
}) })
self.tableView.reloadData() self.tableView.reloadData()
} }
...@@ -115,7 +115,7 @@ class YHWorkExperienceViewController: YHBaseViewController { ...@@ -115,7 +115,7 @@ class YHWorkExperienceViewController: YHBaseViewController {
viewModel.requestWorkStep("\(orderID)", workExperienceID ?? "") { success, error in viewModel.requestWorkStep("\(orderID)", workExperienceID ?? "") { success, error in
if self.stepView.currentIndex < 3 { if self.stepView.currentIndex < 3 {
self.stepView.currentIndex = self.viewModel.stepModel.step self.stepView.currentIndex = self.viewModel.stepModel.step
self.stepView.maxIndex = self.viewModel.mainModel.step self.stepView.maxIndex = self.viewModel.stepModel.step
} else { } else {
self.stepView.currentIndex = 3 self.stepView.currentIndex = 3
self.stepView.maxIndex = 3 self.stepView.maxIndex = 3
...@@ -246,6 +246,7 @@ class YHWorkExperienceViewController: YHBaseViewController { ...@@ -246,6 +246,7 @@ class YHWorkExperienceViewController: YHBaseViewController {
if let error = error { if let error = error {
YHHUD.flash(message: error.errorMsg ) YHHUD.flash(message: error.errorMsg )
} else { } else {
self.workExperienceID = "\(self.viewModel.mainModel.word_id)"
self.stepView.currentIndex = self.stepView.currentIndex + 1 self.stepView.currentIndex = self.stepView.currentIndex + 1
self.updateDataSource() self.updateDataSource()
} }
...@@ -273,7 +274,7 @@ class YHWorkExperienceViewController: YHBaseViewController { ...@@ -273,7 +274,7 @@ class YHWorkExperienceViewController: YHBaseViewController {
} }
} }
} else { } else {
self.viewModel.saveWorkDetail(1, orderID: self.orderID, callBackBlock: {[weak self] flag, error in self.viewModel.saveWorkDetail(workId: workExperienceID?.intValue() ?? 0, callBackBlock: {[weak self] flag, error in
guard let self = self else { return } guard let self = self else { return }
bottom.nextButton.isEnabled = true bottom.nextButton.isEnabled = true
if let error = error { if let error = error {
...@@ -305,6 +306,7 @@ class YHWorkExperienceViewController: YHBaseViewController { ...@@ -305,6 +306,7 @@ class YHWorkExperienceViewController: YHBaseViewController {
if let error = error { if let error = error {
YHHUD.flash(message: error.errorMsg ) YHHUD.flash(message: error.errorMsg )
} else { } else {
self.workExperienceID = "\(self.viewModel.mainModel.word_id)"
YHHUD.flash(message: "保存成功") YHHUD.flash(message: "保存成功")
} }
} }
...@@ -330,7 +332,7 @@ class YHWorkExperienceViewController: YHBaseViewController { ...@@ -330,7 +332,7 @@ class YHWorkExperienceViewController: YHBaseViewController {
} }
} }
} else { } else {
self.viewModel.saveWorkDetail(0, orderID: self.orderID, callBackBlock: {[weak self] flag, error in self.viewModel.saveWorkDetail(workId: workExperienceID?.intValue() ?? 0, callBackBlock: {[weak self] flag, error in
guard let self = self else { return } guard let self = self else { return }
if let error = error { if let error = error {
YHHUD.flash(message: error.errorMsg ) YHHUD.flash(message: error.errorMsg )
...@@ -403,22 +405,27 @@ class YHWorkExperienceViewController: YHBaseViewController { ...@@ -403,22 +405,27 @@ class YHWorkExperienceViewController: YHBaseViewController {
@objc func nextStep() { @objc func nextStep() {
self.view.endEditing(true) self.view.endEditing(true)
if self.viewModel.isCanNext(self.stepView.currentIndex) { if self.viewModel.isCanNext(self.stepView.currentIndex) {
self.viewModel.mainModel.step = self.stepView.currentIndex if self.stepView.currentIndex == 1 {
self.viewModel.saveWorkDetail(1, orderID: self.orderID, callBackBlock: {[weak self] flag, error in self.viewModel.saveWorkDuty(workId: workExperienceID?.intValue() ?? 0) {[weak self] success, error in
guard let self = self else { return } guard let self = self else { return }
if let error = error { if let error = error {
YHHUD.flash(message: error.errorMsg ) YHHUD.flash(message: error.errorMsg )
} else {
YHHUD.hideFlashMessage()
if self.stepView.currentIndex == 3 {
YHHUD.flash(message: "提交成功")
self.navigationController?.popViewController()
} else { } else {
self.stepView.currentIndex = self.stepView.currentIndex + 1 self.stepView.currentIndex = self.stepView.currentIndex + 1
self.updateDataSource() self.updateDataSource()
} }
} }
}) } else if self.stepView.currentIndex == 2 {
self.viewModel.saveWorkHighlights(workId: workExperienceID?.intValue() ?? 0) {[weak self] success, error in
guard let self = self else { return }
if let error = error {
YHHUD.flash(message: error.errorMsg )
} else {
self.stepView.currentIndex = self.stepView.currentIndex + 1
self.updateDataSource()
}
}
}
} else { } else {
self.isShowPrompt = true self.isShowPrompt = true
self.updateDataSource() self.updateDataSource()
...@@ -587,8 +594,8 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo ...@@ -587,8 +594,8 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo
clipperVC.setBaseImg(image, resultImgSize: CGSize(width: image.size.width, height: image.size.height), type: .Stay) clipperVC.setBaseImg(image, resultImgSize: CGSize(width: image.size.width, height: image.size.height), type: .Stay)
clipperVC.successClippedHandler = {[weak self] result in clipperVC.successClippedHandler = {[weak self] result in
guard let self = self else { return } guard let self = self else { return }
self.viewModel.mainModel.wduty = result self.viewModel.dutyModel.work_duty = result
cell.dataSource = viewModel.mainModel.wduty cell.dataSource = viewModel.dutyModel.work_duty
} }
self.navigationController?.pushViewController(clipperVC, animated: true) self.navigationController?.pushViewController(clipperVC, animated: true)
} }
...@@ -622,8 +629,8 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo ...@@ -622,8 +629,8 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo
clipperVC.setBaseImg(image, resultImgSize: CGSize(width: image.size.width, height: image.size.height), type: .Stay) clipperVC.setBaseImg(image, resultImgSize: CGSize(width: image.size.width, height: image.size.height), type: .Stay)
clipperVC.successClippedHandler = {[weak self] result in clipperVC.successClippedHandler = {[weak self] result in
guard let self = self else { return } guard let self = self else { return }
self.viewModel.mainModel.highlights = result self.viewModel.helightModel.work_highlights = result
cell.dataSource = viewModel.mainModel.highlights cell.dataSource = viewModel.helightModel.work_highlights
} }
self.navigationController?.pushViewController(clipperVC, animated: true) self.navigationController?.pushViewController(clipperVC, animated: true)
} }
......
...@@ -19,49 +19,7 @@ class YHWorkExperienceDetailModel: SmartCodable { ...@@ -19,49 +19,7 @@ class YHWorkExperienceDetailModel: SmartCodable {
var work_duty: String = "" var work_duty: String = ""
var work_highlights: String = "" var work_highlights: String = ""
var is_famous_enterprise: Int = 0
var duty: String = ""
var entry_time: String = ""
var departure_time: String = ""
var industry: String = ""
var location: YHAddressModel = YHAddressModel()
var location_aboard: Int = 0
var professional_other: String = ""
var position: String = ""
var remark: String = ""
var old_id: Int = 0
var created_at: String = ""
var updated_at: String = ""
var is_show: Int = 1 //1.保存会显示到列表上
var deleted_at: String = ""
var operator_name: String = ""
var operator_english_name: String = ""
var operator_id: Int = 0
var executives_certificate: String = ""
var is_executives: Int = 0
var wduty: String = ""
var highlights: String = ""
var file: [YHWorkExperienceFileModel] = [] var file: [YHWorkExperienceFileModel] = []
var not_need_upload_file: Int = 0
var company_member_total: Int = 0
var administrative_level: Int = 0
var company_manage_total: Int = 0
var top_manager_start_at: String = ""
var top_manager_end_at: String = ""
var master_of_important_project: Int = 0
var match_listing: Int = 0
var is_synthetic: Int = 0
var step: Int = 0
var create_from_appid: Int = 0
var update_from_appid: Int = 0
var international_work_experience: Int = 0
var turnover: Int = 0
var business_nature: String = ""
var company_website: String = ""
var company_introduce: String = ""
var business_remark: String = ""
var customer_center_id: Int = 0
var projects: [String] = []
required init() { required init() {
} }
......
...@@ -124,18 +124,7 @@ class YHWorkExperienceViewModel: YHBaseViewModel { ...@@ -124,18 +124,7 @@ class YHWorkExperienceViewModel: YHBaseViewModel {
} }
// 0保存 1下一步 // 0保存 1下一步
func saveWorkDetail(_ saveType: Int, orderID: Int, callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) { func saveWorkDetail(workId: Int, callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) {
if mainModel.location.country.contains("中国") {
mainModel.location_aboard = 0
} else {
mainModel.location_aboard = 1
}
let area: [String] = mainModel.location.area
let location = ["area": area,
"country": mainModel.location.country,
"details": mainModel.location.details,
"foreign": mainModel.location.foreign] as [String : Any]
var file: [[String : Any]] = [] var file: [[String : Any]] = []
for item in mainModel.file { for item in mainModel.file {
let fileDic = ["fileName": item.fileName, let fileDic = ["fileName": item.fileName,
...@@ -143,56 +132,10 @@ class YHWorkExperienceViewModel: YHBaseViewModel { ...@@ -143,56 +132,10 @@ class YHWorkExperienceViewModel: YHBaseViewModel {
"uploadedAt": item.uploadedAt] "uploadedAt": item.uploadedAt]
file.append(fileDic) file.append(fileDic)
} }
let params: [String : Any] = ["administrative_level": mainModel.administrative_level, let params: [String : Any] = ["next_step": 0,
"business_nature": mainModel.business_nature, "work_id": workId,
"business_remark":mainModel.business_remark, "file_list": file
"company_introduce": mainModel.company_introduce, ]
"company_manage_total": mainModel.company_manage_total,
"company_member_total": mainModel.company_member_total,
"company_name": mainModel.company_name,
"company_website": mainModel.company_website,
"create_from_appid": mainModel.create_from_appid,
"created_at": mainModel.created_at,
"customer_center_id": mainModel.customer_center_id,
"deleted_at": mainModel.deleted_at,
"departure_time": mainModel.departure_time,
"duty": mainModel.duty,
"entry_time": mainModel.entry_time,
"executives_certificate": mainModel.executives_certificate,
"file": file,
"highlights": mainModel.highlights,
// "id": mainModel.id,
"order_id": orderID,
"industry": mainModel.industry,
"international_work_experience": mainModel.international_work_experience,
"is_executives": mainModel.is_executives,
"is_famous_enterprise": mainModel.is_famous_enterprise,
"is_show": mainModel.is_show,
"is_synthetic": mainModel.is_synthetic,
"location": location,
"location_aboard": mainModel.location_aboard,
"master_of_important_project": mainModel.master_of_important_project,
"match_listing": mainModel.match_listing,
"not_need_upload_file": mainModel.not_need_upload_file,
"old_id": mainModel.old_id,
"operator_english_name": mainModel.operator_english_name,
"operator_id": mainModel.operator_id,
"operator_name": mainModel.operator_name,
"position": mainModel.position,
"professional_level": mainModel.professional_level,
"professional_other": mainModel.professional_other,
"projects": [],
"remark": mainModel.remark,
"step": mainModel.step,
"top_manager_end_at": mainModel.top_manager_end_at,
"top_manager_start_at": mainModel.top_manager_start_at,
"turnover": mainModel.turnover,
"update_from_appid": mainModel.update_from_appid,
"updated_at": mainModel.updated_at,
"wduty": mainModel.wduty,
"work_certificate": mainModel.work_certificate,
"verify": saveType
]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.save let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.save
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code in let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code in
guard let self = self else { return } guard let self = self else { return }
...@@ -398,7 +341,7 @@ class YHWorkExperienceViewModel: YHBaseViewModel { ...@@ -398,7 +341,7 @@ class YHWorkExperienceViewModel: YHBaseViewModel {
func saveWorkDuty(workId: Int, callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) { func saveWorkDuty(workId: Int, callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) {
let params: [String : Any] = ["work_id": workId, let params: [String : Any] = ["work_id": workId,
"work_duty":dutyModel.duty, "work_duty":dutyModel.work_duty,
"next_step": 2, "next_step": 2,
] ]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.saveWorkDuty let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.saveWorkDuty
......
...@@ -58,27 +58,11 @@ class YHWorkItemListViewModel: YHBaseViewModel { ...@@ -58,27 +58,11 @@ class YHWorkItemListViewModel: YHBaseViewModel {
} }
} }
func requestSaveAllWorkExperience(_ orderId: String, callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) { func requestWorkTimeRemarkWorkExperience(_ orderId: String, _ isSaveAll: Int = 0, callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) {
let params: [String : Any] = ["order_id": orderId]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.saveAll
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
if json.code == 200 {
callBackBlock(true, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error)
}
} failBlock: { err in
callBackBlock(false, err)
}
}
func requestWorkTimeRemarkWorkExperience(_ orderId: String, callBackBlock:@escaping (_ success: Bool?, _ error:YHErrorModel?)->()) {
let params: [String : Any] = ["order_id": orderId, let params: [String : Any] = ["order_id": orderId,
"work_time_overlap_remark": self.mainModel.work_time_overlap_remark, "work_time_overlap_remark": self.mainModel.work_time_overlap_remark,
"work_time_empty_remark": self.mainModel.work_time_empty_remark] "work_time_empty_remark": self.mainModel.work_time_empty_remark,
"is_save_all": isSaveAll]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.saveWorkTimeRemark let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.saveWorkTimeRemark
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code in let _ = YHNetRequest.postRequest(url: strUrl, params: params) { [weak self] json, code in
//1. json字符串 转 对象 //1. json字符串 转 对象
......
...@@ -231,7 +231,7 @@ class YHAllApiName { ...@@ -231,7 +231,7 @@ class YHAllApiName {
static let detail = "infoflow/work/v1/workDetail" static let detail = "infoflow/work/v1/workDetail"
static let workStep = "infoflow/work/v1/WorkStep" static let workStep = "infoflow/work/v1/WorkStep"
//工作经验保存 //工作经验保存
static let save = "infoflow/work/save" static let save = "infoflow/work/v1/saveWorkAttachmentFile"
static let saveAll = "infoflow/work/save-all" static let saveAll = "infoflow/work/save-all"
static let saveWorkTimeRemark = "infoflow/work/v1/saveWorkTimeRemark" static let saveWorkTimeRemark = "infoflow/work/v1/saveWorkTimeRemark"
//公司列表 //公司列表
......
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