Commit fc6e8fec authored by Steven杜宇's avatar Steven杜宇

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

parents c2375805 b83390d7
......@@ -921,7 +921,7 @@
name = "Recovered References";
sourceTree = "<group>";
};
04E86E222B81EA1000A35F4B /* WorkExperience */ = {
04E86E222B81EA1000A35F4B /* WorkExperience(工作经验) */ = {
isa = PBXGroup;
children = (
04E86E232B81EA1000A35F4B /* ViewModel */,
......@@ -929,7 +929,7 @@
04E86E272B81EA1000A35F4B /* C */,
04E86E292B81EA1000A35F4B /* V */,
);
path = WorkExperience;
path = "WorkExperience(工作经验)";
sourceTree = "<group>";
};
04E86E232B81EA1000A35F4B /* ViewModel */ = {
......@@ -1619,7 +1619,7 @@
A5C382C82B5E101E00C5E65C /* ServiceProcess(流程) */ = {
isa = PBXGroup;
children = (
04E86E222B81EA1000A35F4B /* WorkExperience */,
04E86E222B81EA1000A35F4B /* WorkExperience(工作经验) */,
04C693652B73183E004C1758 /* Education&Qualification(学历专业资格填写) */,
A5234E382B72346A00A33433 /* OtherInformation(其他信息) */,
A58556BB2B6BD81C003746B2 /* BaseInformation(基本资料) */,
......
......@@ -7,6 +7,64 @@
//
import UIKit
class YHBaseViewModel {
import Alamofire
class YHBaseViewModel {
// 上传方法
func uploadImage(_ image: UIImage, callBackBlock:@escaping (_ success: String?, _ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curOssURL() + YHAllApiName.OSS.uploadApi
let boundary = UUID().uuidString
let headers: HTTPHeaders = [
"Content-type": "multipart/form-data; boundary=\(boundary)",
"businessCode": "4001001"
]
let _ = YHNetRequest.uplaodRequest(url: strUrl, headers: headers, image: image) { [weak self] json, code in
guard let _ = self else { return }
if json.code == 200 {
callBackBlock(json.data as? String, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(nil, error)
}
} failBlock: { err in
callBackBlock(nil, err)
}
}
//换取一张
func getPublicImageUrl(_ url: String, callBackBlock:@escaping (_ success: String?, _ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curOssURL() + YHAllApiName.OSS.getPublicApi
let param: [String: Any] = ["fileUrl": url]
let _ = YHNetRequest.getRequest(url: strUrl, params: param) { [weak self] json, code in
//1. json字符串 转 对象
guard let _ = self else { return }
if json.code == 200 {
callBackBlock(json.data as? String, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(nil, error)
}
} failBlock: { err in
callBackBlock(nil,err)
}
}
//换取多张图片
func getPublicImageUrls(_ url: [String], callBackBlock:@escaping (_ success: [String : Any]?, _ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curOssURL() + YHAllApiName.OSS.getPublicApi
let param: [String: Any] = ["fileUrl": url]
let _ = YHNetRequest.getRequest(url: strUrl, params: param) { [weak self] json, code in
//1. json字符串 转 对象
guard let _ = self else { return }
if json.code == 200 {
callBackBlock(json.data as? [String : Any], nil)//使用的同学完善
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(nil, error)
}
} failBlock: { err in
callBackBlock(nil,err)
}
}
}
......@@ -350,47 +350,84 @@ extension YHInformationPerfectListVC : UITableViewDelegate,UITableViewDataSource
return newCell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
printLog("点击了 \(indexPath.section)section --- \(indexPath.row)row")
//处理跳转逻辑
handleJumpLogic( tapIndex : indexPath.row)
}
private func handleJumpLogic(tapIndex : Int) {
//开发模式下 任意跳转
//#if DEBUG
// handleJumpLogicDebug(tapIndex: tapIndex)
// return
//#endif
//正式环境
handleJumpLogicRelease(tapIndex: tapIndex)
}
private func handleJumpLogicRelease(tapIndex : Int) {
if self.serviceCenterMainReqVM.myInfoFillStep > 6 {
goInfoListVCOp(index:indexPath.row)
goInfoListVCOp(index:tapIndex)
return
}
if tapIndex <= serviceCenterMainReqVM.myInfoFillStep {
handleJumpLogicDebug(tapIndex: tapIndex)
} else {
//请先完成 xxx 的填写
if serviceCenterMainReqVM.myInfoFillStep < serviceCenterMainReqVM.arrInfoFillStep.count {
let model = serviceCenterMainReqVM.arrInfoFillStep[serviceCenterMainReqVM.myInfoFillStep]
let msg = "请先完成" + model.name + "填写"
YHHUD.flash(message: msg)
}
}
}
private func handleJumpLogicDebug(tapIndex : Int) {
if indexPath.row == 0 {
if self.serviceCenterMainReqVM.myInfoFillStep > 6 {
goInfoListVCOp(index:tapIndex)
return
}
if tapIndex == 0 {
//主申请人信息
let vc = YHMainApplicantInformationViewController()
vc.orderId = orderId ?? 0
navigationController?.pushViewController(vc)
} else if indexPath.row == 1 {
} else if tapIndex == 1 {
//家庭程序信息
let vc = YHFamilyMemberInfoListVC(orderId: orderId ?? 0)
vc.orderId = orderId ?? 0
navigationController?.pushViewController(vc)
} else if indexPath.row == 2 {
} else if tapIndex == 2 {
//基本信息
let vc = YHBasicInfoFillViewController()
vc.orderId = orderId
navigationController?.pushViewController(vc)
} else if indexPath.row == 3 {
} else if tapIndex == 3 {
//学历/专业资格
let vc = YHEducationInfoListVC()
vc.orderId = orderId ?? 0
navigationController?.pushViewController(vc)
} else if indexPath.row == 4 {
} else if tapIndex == 4 {
//工作经历
let vc = YHWorkExperienceListViewController()
vc.orderId = orderId ?? 0
navigationController?.pushViewController(vc)
} else if indexPath.row == 5 {
} else if tapIndex == 5 {
//其他信息
let vc = YHOtherInfoFillViewController()
vc.orderId = orderId
......@@ -398,6 +435,5 @@ extension YHInformationPerfectListVC : UITableViewDelegate,UITableViewDataSource
} else {
}
}
}
......@@ -9,7 +9,7 @@
import UIKit
import Alamofire
class YHFamilyMemberViewModel {
class YHFamilyMemberViewModel : YHBaseViewModel{
var mainModel: YHFamilyMember = YHFamilyMember()
......@@ -141,44 +141,6 @@ class YHFamilyMemberViewModel {
}
}
// 上传方法
func uploadImage(_ image: UIImage, callBackBlock:@escaping (_ success: String?, _ error:YHErrorModel?)->()) {
let strUrl = "https://test-comserver.galaxy-immi.com/oss/upload/storage"
let boundary = UUID().uuidString
let headers: HTTPHeaders = [
"Content-type": "multipart/form-data; boundary=\(boundary)",
"businessCode": "4001001"
]
let _ = YHNetRequest.uplaodRequest(url: strUrl, headers: headers, image: image) { [weak self] json, code in
guard let _ = self else { return }
if json.code == 200 {
callBackBlock(json.data as? String, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(nil, error)
}
} failBlock: { err in
callBackBlock(nil, err)
}
}
func getPublicImageUrl(_ url: String, callBackBlock:@escaping (_ success: String?, _ error:YHErrorModel?)->()) {
let strUrl = "https://test-comserver.galaxy-immi.com/oss/storage/convertToPublicURL" + "?fileUrl=\(url)"
let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
//1. json字符串 转 对象
guard let _ = self else { return }
if json.code == 200 {
callBackBlock(json.data as? String, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(nil, error)
}
} failBlock: { err in
callBackBlock(nil,err)
}
}
func requestCnIDCardMessage(_ url: String, callBackBlock:@escaping (_ success: Bool, _ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.OrderInformation.cnIdCard
let params: [String : Any] = ["url": url]
......
......@@ -390,44 +390,6 @@ class YHMainApplicantInformationViewModel: YHBaseViewModel {
}
}
// 上传方法
func uploadImage(_ image: UIImage, callBackBlock:@escaping (_ success: String?, _ error:YHErrorModel?)->()) {
let strUrl = "https://test-comserver.galaxy-immi.com/oss/upload/storage"
let boundary = UUID().uuidString
let headers: HTTPHeaders = [
"Content-type": "multipart/form-data; boundary=\(boundary)",
"businessCode": "4001001"
]
let _ = YHNetRequest.uplaodRequest(url: strUrl, headers: headers, image: image) { [weak self] json, code in
guard let _ = self else { return }
if json.code == 200 {
callBackBlock(json.data as? String, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(nil, error)
}
} failBlock: { err in
callBackBlock(nil, err)
}
}
func getPublicImageUrl(_ url: String, callBackBlock:@escaping (_ success: String?, _ error:YHErrorModel?)->()) {
let strUrl = "https://test-comserver.galaxy-immi.com/oss/storage/convertToPublicURL" + "?fileUrl=\(url)"
let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
//1. json字符串 转 对象
guard let _ = self else { return }
if json.code == 200 {
callBackBlock(json.data as? String, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(nil, error)
}
} failBlock: { err in
callBackBlock(nil,err)
}
}
func requestCnIDCardMessage(_ url: String, callBackBlock:@escaping (_ success: Bool, _ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.OrderInformation.cnIdCard
let params: [String : Any] = ["url": url]
......
......@@ -127,7 +127,7 @@ extension YHOtherResidenceFillView {
self.layoutIfNeeded()
}
self.parentViewController?.navigationController?.pushViewController(vc)
UIViewController.current?.navigationController?.pushViewController(vc)
}
......
......@@ -136,21 +136,21 @@ private extension YHOtherYesOrNoItemView {
make.left.right.equalToSuperview()
}
answer1Btn.snp.makeConstraints { make in
answer2Btn.snp.makeConstraints { make in
make.size.equalTo(CGSize(width: btnWidth, height: btnHeight))
make.left.equalTo(titleLabel.snp.left)
make.top.equalTo(titleLabel.snp.bottom).offset(12)
}
answer2Btn.snp.makeConstraints { make in
answer1Btn.snp.makeConstraints { make in
make.size.equalTo(CGSize(width: btnWidth, height: btnHeight))
make.left.equalTo(answer1Btn.snp.right).offset(12)
make.top.equalTo(answer1Btn.snp.top)
make.left.equalTo(answer2Btn.snp.right).offset(12)
make.top.equalTo(answer2Btn.snp.top)
}
addSubview(bottomLine)
bottomLine.snp.makeConstraints { make in
make.top.equalTo(answer1Btn.snp.bottom).offset(12)
make.top.equalTo(answer2Btn.snp.bottom).offset(12)
make.left.right.equalToSuperview()
make.height.equalTo(0.5)
make.bottom.equalToSuperview()
......@@ -180,7 +180,7 @@ private extension YHOtherYesOrNoItemView {
answer1Btn.isSelected = false
updateAnswerButton(answer1Btn, false)
}
self.block?(answer2Btn.isSelected == true ? 1 : 2)
self.block?(answer2Btn.isSelected == true ? 1 : 2)//是-1 否-2
layoutMyUI()
}
......@@ -197,10 +197,11 @@ private extension YHOtherYesOrNoItemView {
extension YHOtherYesOrNoItemView {
func updateUI(title : String , answer : Int) {
self.title = title
//是-1 否-2
if answer == 2 {
didClickResponseBtn(btn: answer2Btn)
} else if answer == 1 {
didClickResponseBtn(btn: answer1Btn)
} else if answer == 1 {
didClickResponseBtn(btn: answer2Btn)
}
layoutMyUI()
......
......@@ -134,6 +134,8 @@ extension YHPreviewMainViewController {
self.nameLable.text = title
self.phoneLable.text = self.previewVM.mainApplicationInfoPreviewModel?.mobile ?? "-"
self.handleHeaderIcon()
} else {
}
......@@ -144,6 +146,19 @@ extension YHPreviewMainViewController {
}
}
private func handleHeaderIcon() {
//缺少头像字段
// guard let model = previewVM.mainApplicationInfoPreviewModel,let icon = model. else {
// return
// }
// previewVM.getPublicImageUrl(imgString) {[weak self] success, error in
// guard let self = self else { return }
// guard success != nil else { return }
// self.resultView.kf.setImage(with: URL(string: success))
// }
}
private func initView()->Void {
gk_navigationBar.isHidden = false
gk_backStyle = .black
......
......@@ -9,6 +9,10 @@
import UIKit
class YHPreviewInfoCertificatePictureItemView: UIView {
lazy var requestVM : YHBaseViewModel = {
let r = YHBaseViewModel()
return r
}()
var dataModel : YHPersonInfoCellModel2? {
didSet {
......@@ -147,6 +151,35 @@ extension YHPreviewInfoCertificatePictureItemView {
cellTitleLable.text = dataModel.cellTitle
frontLable.text = dataModel.idType == 1 ? "身份证头像面" : "港澳通行证正面"
backLable.text = dataModel.idType == 1 ? "身份证国徽面" : "港澳通行证反面"
//获取头像
handleCardImage()
}
private func handleCardImage() {
guard let dataModel = dataModel else { return }
let url = dataModel.frontUrl
// let url = "https://upload-cdn.galaxy-immi.com/crm/test/files/1709370416082.png?Expires=1709697934&OSSAccessKeyId=LTAI5tJPQC4La6LWbcNoz61u&Signature=eKv4J8STMXSHFyJvozmHPgJdmY4%3D&v=1709696134"
if url.isEmpty == false {
self.requestVM.getPublicImageUrl(url) {[weak self] success, error in
guard let self = self else { return }
guard success != nil else { return }
self.frontImagV.kf.setImage(with: URL(string: success))
}
}
// let url2 = "https://upload-cdn.galaxy-immi.com/crm/test/files/1709370416082.png?Expires=1709697934&OSSAccessKeyId=LTAI5tJPQC4La6LWbcNoz61u&Signature=eKv4J8STMXSHFyJvozmHPgJdmY4%3D&v=1709696134"
let url2 = dataModel.backUrl
if url2.isEmpty == false {
self.requestVM.getPublicImageUrl(url2) {[weak self] success, error in
guard let self = self else { return }
guard success != nil else { return }
self.backImagV.kf.setImage(with: URL(string: success))
}
}
}
}
......
......@@ -21,12 +21,16 @@ class YHPreviewInfoWorkSummaryView: UIView {
updateUI()
}
}
var arrFiles : [WorkExpFilePreviewModel] = []
}
extension YHPreviewInfoWorkSummaryView {
func updateUI() {
guard let model = dataModel else { return }
removeSubviews()
arrFiles.removeAll()
if model.data.isEmpty == false {
......@@ -45,7 +49,7 @@ extension YHPreviewInfoWorkSummaryView {
var lastTagView : UIView = sessionView
let arr = model.data as? [WorkExpFilePreviewModel] ?? []
for(_,item) in arr.enumerated() {
for(index,item) in arr.enumerated() {
let label : UILabel = UILabel()
label.text = model.title
......@@ -53,6 +57,7 @@ extension YHPreviewInfoWorkSummaryView {
label.font = UIFont.PFSC_R(ofSize: 14)
label.numberOfLines = 0
label.text = item.fileName
label.tag = index
addSubview(label)
label.snp.makeConstraints { make in
make.top.equalTo(lastTagView.snp.bottom).offset(8)
......@@ -60,8 +65,13 @@ extension YHPreviewInfoWorkSummaryView {
make.left.equalToSuperview().offset(kMargin)
make.height.greaterThanOrEqualTo(20) // >=20
}
addSubview(label)
lastTagView = label
arrFiles.append(item)
label.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action:#selector(handleTap))
label.addGestureRecognizer(tap)
}
let tagView : UIView = UIView()
......@@ -76,4 +86,17 @@ extension YHPreviewInfoWorkSummaryView {
}
}
}
@objc func handleTap(_ gestureRecognizer: UITapGestureRecognizer) {
guard let label = gestureRecognizer.view else { return }
if label.tag < arrFiles.count {
let vc = YHImageViewController()
vc.imgString = arrFiles[label.tag].fileUrl
UIViewController.current?.navigationController?.pushViewController(vc)
} else {
printLog("error: 数组越界")
}
}
}
......@@ -14,6 +14,7 @@ class YHCompanySelectViewController: YHBaseViewController {
var searchView: UITextField!
var sureButton: UIButton!
var tableView: UITableView!
var alertLabel: UILabel!
var searchDataSource: [YHCompanyModelListModel]?
var viewModel: YHCompanyViewModel?
......@@ -32,23 +33,40 @@ class YHCompanySelectViewController: YHBaseViewController {
func setView() {
view.backgroundColor = .white
let bgView = {
let view = UIView()
view.backgroundColor = UIColor(hex: 0xf8f9fb)
view.layer.cornerRadius = 20.5
return view
}()
view.addSubview(bgView)
bgView.snp.makeConstraints { make in
make.top.equalTo(k_Height_NavigationtBarAndStatuBar + 16)
make.height.equalTo(41)
make.left.equalTo(16)
make.right.equalTo(-16)
}
searchView = {
let searchBar = UITextField()
searchBar.placeholder = "请输入用人单位全称"
searchBar.backgroundColor = UIColor(hex: 0xf8f9fb)
searchBar.font = UIFont.PFSC_R(ofSize: 14)
searchBar.keyboardType = .default
searchBar.delegate = self
searchBar.layer.cornerRadius = 21
searchBar.layer.cornerRadius = 20.5
searchBar.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 16, height: 42))
searchBar.leftViewMode = .always
searchBar.clearButtonMode = .always
return searchBar
}()
view.addSubview(searchView)
searchView.snp.makeConstraints { make in
make.top.equalTo(k_Height_NavigationtBarAndStatuBar + 16)
make.height.equalTo(42)
make.height.equalTo(41)
make.left.equalTo(16)
make.right.equalTo(-16)
make.right.equalTo(-90)
}
sureButton = {
......@@ -57,18 +75,20 @@ class YHCompanySelectViewController: YHBaseViewController {
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 16)
button.contentHorizontalAlignment = .center
button.setTitle("保存", for: .normal)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 12)
button.setTitleColor( UIColor(hex:0xffffff), for: .normal)
button.layer.cornerRadius = 18
button.layer.cornerRadius = 16.5
button.addTarget(self, action: #selector(submit), for: .touchUpInside)
return button
}()
view.addSubview(sureButton)
sureButton.snp.makeConstraints { make in
make.centerY.equalTo(searchView.snp.centerY)
make.height.equalTo(36)
make.width.equalTo(80)
make.right.equalTo(-16)
make.height.equalTo(33)
make.width.equalTo(66)
make.right.equalTo(-20)
}
sureButton.addYinHeGradualLayer()
tableView = {
let tableView = UITableView(frame:.zero, style:.plain)
......@@ -88,6 +108,24 @@ class YHCompanySelectViewController: YHBaseViewController {
make.bottom.equalTo(-k_Height_safeAreaInsetsBottom() - 64)
make.left.right.equalTo(view)
}
alertLabel = {
let label = UILabel()
label.font = UIFont.PFSC_R(ofSize: 12)
label.textColor = UIColor(hex: 0x949494)
label.numberOfLines = 0
label.text = "暂未检索到相关企业,请准确、完整输入您的企业名称"
label.textAlignment = .center
label.isHidden = true
return label
}()
view.addSubview(alertLabel)
alertLabel.snp.makeConstraints { make in
make.left.equalTo(21)
make.right.equalTo(-21)
make.height.equalTo(17)
make.top.equalTo(searchView.snp.bottom).offset(21)
}
}
@objc func submit() {
......@@ -102,15 +140,29 @@ extension YHCompanySelectViewController: UITextFieldDelegate {
func textFieldDidChangeSelection(_ textField: UITextField) {
if textField.text == "" {
tableView.isHidden = true
alertLabel.isHidden = true
} else {
viewModel?.requestCompany(textField.text ?? "") { [weak self] success, error in
guard let self = self else { return }
self.searchDataSource = success
self.tableView.isHidden = false
self.tableView.reloadData()
if success?.count == 0 {
self.alertLabel.isHidden = false
self.tableView.isHidden = true
} else {
self.searchDataSource = success
self.tableView.isHidden = false
self.tableView.reloadData()
}
}
}
}
func textFieldShouldClear(_ textField: UITextField) -> Bool {
tableView.isHidden = true
alertLabel.isHidden = true
searchDataSource = []
textField.text = ""
return true
}
}
extension YHCompanySelectViewController: UITableViewDelegate, UITableViewDataSource {
......@@ -120,12 +172,13 @@ extension YHCompanySelectViewController: UITableViewDelegate, UITableViewDataSou
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withClass: YHCompanyTableViewCell.self)
cell.titleLabel.text = searchDataSource?[indexPath.row].company_name
let newString = searchDataSource?[indexPath.row].company_name?.highlight(keyWords: searchView.text, highlightColor: UIColor.brandMainColor)
cell.titleLabel.attributedText = newString
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 44
return 40
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
......@@ -164,15 +217,16 @@ class YHCompanyTableViewCell: UITableViewCell {
func setupUI() {
titleLabel = {
let label = UILabel()
label.font = UIFont.PFSC_R(ofSize: 13)
label.font = UIFont.PFSC_R(ofSize: 14)
label.textColor = UIColor.mainTextColor
label.numberOfLines = 0
return label
}()
contentView.addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.left.equalTo(22)
make.centerY.equalToSuperview()
make.height.equalTo(20)
make.top.bottom.equalToSuperview()
make.left.equalTo(21)
make.right.equalTo(-21)
}
}
}
......
......@@ -12,7 +12,7 @@ class YHImageViewController: YHBaseViewController {
var resultView: UIImageView!
var resultButton: UIButton!
var imgString: String!
var viewModel: YHWorkExperienceViewModel!
var viewModel: YHBaseViewModel!
override func viewDidLoad() {
super.viewDidLoad()
......@@ -66,19 +66,8 @@ class YHImageViewController: YHBaseViewController {
func getData() {
self.viewModel.getPublicImageUrl(imgString) {[weak self] success, error in
guard let self = self else { return }
guard let url = success else { return }
guard success != nil else { return }
self.resultView.kf.setImage(with: URL(string: success))
}
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}
......@@ -198,16 +198,10 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo
if self.viewModel.mainModel.is_project_introduction == 1 {
return 1
} else {
if viewModel.mainModel.not_need_upload_file == 1 {
return 1
}
return 2
}
}
if stepView.currentIndex == 4 {
if viewModel.mainModel.not_need_upload_file == 1 {
return 1
}
return 2
}
return baseDataSource?.count ?? 0
......@@ -252,6 +246,7 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo
} else if stepView.currentIndex == 2 {
let cell = tableView.dequeueReusableCell(withClass: YHWorkHighlightsTableViewCell.self)
cell.dataSource = viewModel.mainModel.highlights
cell.detailSwitch.isOn = viewModel.mainModel.is_project_introduction == 1
cell.exampleBlock = {[weak self] in
guard let self = self else { return }
let mainVc = YHWorkExampleViewController()
......@@ -348,6 +343,7 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo
} else {
let cell = tableView.dequeueReusableCell(withClass: YHWorkFileSyncTableViewCell.self)
cell.dataSource = fileDataSource
cell.isHidden = viewModel.mainModel.not_need_upload_file == 1 && isShowMessageSelect
cell.addIntroductionBlock = { [weak self] in
guard let self = self else { return }
YHImagePickerView.show() {[weak self] image in
......@@ -398,6 +394,7 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo
} else {
let cell = tableView.dequeueReusableCell(withClass: YHWorkFileSyncTableViewCell.self)
cell.dataSource = fileDataSource
cell.isHidden = viewModel.mainModel.not_need_upload_file == 1 && isShowMessageSelect
cell.addIntroductionBlock = { [weak self] in
guard let self = self else { return }
YHImagePickerView.show() {[weak self] image in
......@@ -444,7 +441,7 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo
guard let self = self else { return }
self.viewModel.updateModel(model)
let id = model.id
if id != .id1 && id != .id3 && id != .id4 && id != .id7 && id != .id8 && id != .id12 && id != .id14 && id != .id17 && id != .id17 && id != .id18 {
if id != .id1 && id != .id3 && id != .id4 && id != .id7 && id != .id8 && id != .id12 && id != .id14 && id != .id16 && id != .id17 && id != .id18 {
self.updateDataSource()
}
}
......
......@@ -281,14 +281,16 @@ class YHWorkIntroductionViewController: YHBaseViewController {
}
@objc func startClick() {
YHDatePickView.show(type: .yyyymmdd) { date in
view.endEditing(true)
YHDatePickView.show(type: .yyyymmdd, title: "请选择开始时间") { date in
self.startTextField.text = date
self.dataSource.project_start_time = date
}
}
@objc func endClick() {
YHDatePickView.show(type: .yyyymmdd) { date in
view.endEditing(true)
YHDatePickView.show(type: .yyyymmdd, title: "请选择结束时间") { date in
self.endTextField.text = date
self.dataSource.project_end_time = date
}
......
......@@ -22,7 +22,7 @@ class YHWorkExperienceViewModel: YHBaseViewModel {
let item1 = YHWorkExperienceModel(id: .id2, isNeed: true, title: "用人单位性质", isUserKeyBoard: false, prompts: "请输入", message: mainModel.industry, type: .nature, isShowPrompts: isShowPrompt, alertMessage:"请选择用人单位性质")
let item2 = YHWorkExperienceModel(id: .id3, isNeed: false, title: "用人单位介绍", isUserKeyBoard: true, prompts: "如方便提供,请填写", message: mainModel.company_introduce)
let item3 = YHWorkExperienceModel(id: .id4, isNeed: false, title: "用人单位官网", isUserKeyBoard: true, prompts: "如有,请输入官网链接", message: mainModel.company_website)
let item4 = YHWorkExperienceModel(id: .id5, isNeed: true, title: "出生国家/地区", isUserKeyBoard: false, prompts: nil, message: mainModel.location.country, type: .country, isShowPrompts: isShowPrompt, alertMessage:"请选择工作国家/地区")
let item4 = YHWorkExperienceModel(id: .id5, isNeed: true, title: "出生国家/地区", isUserKeyBoard: false, prompts: "请选择", message: mainModel.location.country, type: .country, isShowPrompts: isShowPrompt, alertMessage:"请选择工作国家/地区")
var string = ""
let array = mainModel.location.area
for item in array {
......@@ -34,7 +34,7 @@ class YHWorkExperienceViewModel: YHBaseViewModel {
let item7 = YHWorkExperienceModel(id: .id9, isNeed: true, title: "入职年月", isUserKeyBoard: false, prompts: "请选择", message: mainModel.entry_time, type: .time, isShowPrompts: isShowPrompt, alertMessage:"请选择入职年月")
let item8 = YHWorkExperienceModel(id: .id10, isNeed: true, title: "离职年月", isUserKeyBoard: false, prompts: "请选择", message: mainModel.departure_time, type: .time, isShowPrompts: isShowPrompt, alertMessage:"请选择离职年月")
let item9 = YHWorkExperienceModel(id: .id11, isNeed: true, title: "工作证明文件", isUserKeyBoard: false, prompts: "请选择", message: mainModel.work_certificate, type: .certificate, isShowPrompts: isShowPrompt, alertMessage:"请选择工作证明文件")
let item10 = YHWorkExperienceModel(id: .id12, isNeed: false, title: "职责性质", isUserKeyBoard: true, prompts: "请选择", message: mainModel.duty, isShowPrompts: isShowPrompt, alertMessage:"请输入职责性质")
let item10 = YHWorkExperienceModel(id: .id12, isNeed: true, title: "职责性质", isUserKeyBoard: true, prompts: "请选择", message: mainModel.duty, isShowPrompts: isShowPrompt, alertMessage:"请输入职责性质")
let item11 = YHWorkExperienceModel(id: .id13, isNeed: false, title: "相关工作经验是否属于国际工作经验", isUserKeyBoard: false, prompts: "", message: "\(mainModel.international_work_experience)", leftButtonString: "是", rightButtonString: "否")
let addressCountry = mainModel.location.country
var section = YHSectionWorkExperienceModel()
......@@ -276,44 +276,6 @@ class YHWorkExperienceViewModel: YHBaseViewModel {
}
}
// 上传方法
func uploadImage(_ image: UIImage, callBackBlock:@escaping (_ success: String?, _ error:YHErrorModel?)->()) {
let strUrl = "https://test-comserver.galaxy-immi.com/oss/upload/storage"
let boundary = UUID().uuidString
let headers: HTTPHeaders = [
"Content-type": "multipart/form-data; boundary=\(boundary)",
"businessCode": "4001001"
]
let _ = YHNetRequest.uplaodRequest(url: strUrl, headers: headers, image: image) { [weak self] json, code in
guard let _ = self else { return }
if json.code == 200 {
callBackBlock(json.data as? String, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(nil, error)
}
} failBlock: { err in
callBackBlock(nil, err)
}
}
func getPublicImageUrl(_ url: String, callBackBlock:@escaping (_ success: String?, _ error:YHErrorModel?)->()) {
let strUrl = "https://test-comserver.galaxy-immi.com/oss/storage/convertToPublicURL" + "?fileUrl=\(url)"
let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
//1. json字符串 转 对象
guard let _ = self else { return }
if json.code == 200 {
callBackBlock(json.data as? String, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(nil, error)
}
} failBlock: { err in
callBackBlock(nil,err)
}
}
func requestFileMessage(_ url: String, callBackBlock:@escaping (_ success: Bool, _ model: YHFileContent?,_ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.ocrFileContent + "?file_url=\(url)"
// let params: [String : Any] = ["url": url]
......
......@@ -54,47 +54,8 @@ class YHWorkIntroductionViewModel: YHBaseViewModel {
}
}
// 上传方法
func uploadImage(_ image: UIImage, callBackBlock:@escaping (_ success: String?, _ error:YHErrorModel?)->()) {
let strUrl = "https://test-comserver.galaxy-immi.com/oss/upload/storage"
let boundary = UUID().uuidString
let headers: HTTPHeaders = [
"Content-type": "multipart/form-data; boundary=\(boundary)",
"businessCode": "4001001"
]
let _ = YHNetRequest.uplaodRequest(url: strUrl, headers: headers, image: image) { [weak self] json, code in
guard let _ = self else { return }
if json.code == 200 {
callBackBlock(json.data as? String, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(nil, error)
}
} failBlock: { err in
callBackBlock(nil, err)
}
}
func getPublicImageUrl(_ url: String, callBackBlock:@escaping (_ success: String?, _ error:YHErrorModel?)->()) {
let strUrl = "https://test-comserver.galaxy-immi.com/oss/storage/convertToPublicURL" + "?fileUrl=\(url)"
let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
//1. json字符串 转 对象
guard let _ = self else { return }
if json.code == 200 {
callBackBlock(json.data as? String, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(nil, error)
}
} failBlock: { err in
callBackBlock(nil,err)
}
}
func requestFileMessage(_ url: String, callBackBlock:@escaping (_ success: Bool, _ model: YHFileContent?,_ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.WorkExperience.ocrFileContent + "?file_url=\(url)"
// let params: [String : Any] = ["url": url]
let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
......
......@@ -187,3 +187,41 @@ extension String {
}
}
extension String {
/// 指定关键词高亮
/// - Parameter keyWords: 关键词
/// - Parameter color: 高亮颜色
func highlight(keyWords: String?, highlightColor color: UIColor) -> NSAttributedString {
let string: String = self
let attributeString = NSMutableAttributedString(string: string)
guard let keyWords = keyWords else { return attributeString }
let attribute: [NSAttributedString.Key: Any] = [.foregroundColor: color]
// 需要改变的文本
let ranges = ranges(of: keyWords, options: .caseInsensitive)
for range in ranges where range.location + range.length <= string.count {
attributeString.addAttributes(attribute, range: range)
}
return attributeString
}
/// 查找字符串中子字符串的NSRange
/// - Parameters:
/// - substring: 子字符串
/// - options: 匹配选项
/// - locale: 本地化
/// - Returns: 子字符串的NSRange数组
func ranges(of substring: String, options: CompareOptions = [], locale: Locale? = nil) -> [NSRange] {
var ranges: [Range<Index>] = []
while let range = range(of: substring, options: options, range: (ranges.last?.upperBound ?? self.startIndex)..<self.endIndex, locale: locale) {
ranges.append(range)
}
// [range]转换为[NSRange]返回
return ranges.compactMap({NSRange($0, in: self)})
}
/// range转换为NSRange
func toNSRange(from range: Range<String.Index>) -> NSRange {
return NSRange(range, in: self)
}
}
......@@ -168,4 +168,10 @@ class YHAllApiName {
//工作经验
static let previewWorkExpInfoApi = "infoflow/work/preview"
}
struct OSS {
static let uploadApi = "oss/upload/storage"
static let getPublicApi = "oss/storage/convertToPublicURL"
static let getPublicUrlsApi = "oss/storage/batchConvertToPublicURL"
}
}
......@@ -17,6 +17,9 @@ class YHBaseUrlManager {
// static let baseUrlTest : String = "https://test-api-gateway.galaxy-immi.com/" //智汇银河 - 微信小程序
static let baseUrlTest : String = "http://test.api.diymanager.galaxy-immi.com/" //APP 使用域名
static let baseOOSUrlTest : String = "https://test-comserver.galaxy-immi.com/"
static let baseOOSUrlRelease : String = "http://comserver.galaxy-immi.com" //APP 使用域名
//正式环境
static let baseUrlRelease : String = "http://test.api.diymanager.galaxy-immi.com/"
......@@ -40,6 +43,14 @@ class YHBaseUrlManager {
#endif
}
func curOssURL() -> String {
#if DEBUG
return urlForEditing ?? YHBaseUrlManager.baseOOSUrlTest
#else
return YHBaseUrlManager.baseOOSUrlRelease
#endif
}
// MARK: - 当前使用的url
func h5URL() -> String {
#if DEBUG
......
{
"images" : [
{
"filename" : "截屏2023-03-21 16.03 1.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "截屏2023-03-21 16.03 1@2x.png",
"filename" : "Rectangle 2533@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "截屏2023-03-21 16.03 1@3x.png",
"filename" : "Rectangle 2533@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
......
{
"images" : [
{
"filename" : "截屏2023-03-21 16.11 1.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "截屏2023-03-21 16.11 1@2x.png",
"filename" : "Rectangle 2532@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "截屏2023-03-21 16.11 1@3x.png",
"filename" : "Rectangle 2532@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
......
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