Commit 170b6236 authored by Steven杜宇's avatar Steven杜宇

no message

parents df29bb15 da0981c1
This diff is collapsed.
......@@ -233,7 +233,7 @@ extension YHInformationPerfectListVC {
make.height.equalTo(48)
}
submitBtn.layoutIfNeeded()
submitBtn.backgroundGradient()
submitBtn.addYinHeGradualLayer()
submitBtn.isHidden = hasSubmitFlag
......@@ -285,7 +285,7 @@ extension YHInformationPerfectListVC {
make.left.equalTo(submitHoldView.snp.centerX).offset(6)
}
infoButton.layoutIfNeeded()
infoButton.backgroundGradient()
infoButton.addYinHeGradualLayer()
homeTableView.delegate = self
homeTableView.dataSource = self
......
......@@ -72,7 +72,7 @@ private extension YHBasicInfoFillBottomView {
}
nextButton.layoutIfNeeded()
nextButton.backgroundGradient()
nextButton.addYinHeGradualLayer()
}
@objc func save() {
......
......@@ -66,7 +66,7 @@ class YHBottomNextView: UIView {
nextButton.layoutIfNeeded()
nextButton.backgroundGradient()
nextButton.addYinHeGradualLayer()
}
......
......@@ -173,8 +173,6 @@ class YHImagePickerView: UIView {
imagePicker.delegate = self
//设置来源
imagePicker.sourceType = .camera
//允许编辑
imagePicker.allowsEditing = true
//打开相机
UIViewController.current?.present(imagePicker, animated: true, completion: { () -> Void in
......@@ -190,7 +188,6 @@ class YHImagePickerView: UIView {
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = .photoLibrary
imagePicker.allowsEditing = true
// 这一句,开始调用图库
UIViewController.current?.present(imagePicker,animated: true)
}
......@@ -304,7 +301,7 @@ extension YHImagePickerView: UINavigationControllerDelegate, UIImagePickerContro
"businessCode": "4001001"
]
// 创建MultipartFormData对象
var multipartFormData = MultipartFormData()
let multipartFormData = MultipartFormData()
// 将图片添加到multipartFormData中
multipartFormData.append(imageData, withName: "file", fileName: "image.jpg", mimeType: "image/jpeg")
......
......@@ -279,10 +279,16 @@ class YHMainInformationCardTableViewCell: UITableViewCell {
@objc func frontImageClick() {
if type == .identity {
if viewModel.mainModel.certificates.cn_identity_card.img_front.count != 0 {
let vc = YHImageViewController()
vc.imgString = viewModel.mainModel.certificates.cn_identity_card.img_front
UIViewController.current?.navigationController?.pushViewController(vc)
return
}
} else {
if viewModel.mainModel.certificates.hk_macao_pass.img_front.count != 0 {
let vc = YHImageViewController()
vc.imgString = viewModel.mainModel.certificates.hk_macao_pass.img_front
UIViewController.current?.navigationController?.pushViewController(vc)
return
}
}
......@@ -334,10 +340,16 @@ class YHMainInformationCardTableViewCell: UITableViewCell {
@objc func backSurfaceImageClick() {
if type == .identity {
if viewModel.mainModel.certificates.cn_identity_card.img_back.count != 0 {
let vc = YHImageViewController()
vc.imgString = viewModel.mainModel.certificates.cn_identity_card.img_back
UIViewController.current?.navigationController?.pushViewController(vc)
return
}
} else {
if viewModel.mainModel.certificates.hk_macao_pass.img_back.count != 0 {
let vc = YHImageViewController()
vc.imgString = viewModel.mainModel.certificates.hk_macao_pass.img_back
UIViewController.current?.navigationController?.pushViewController(vc)
return
}
}
......
......@@ -75,7 +75,8 @@ class YHPreviewControllerHoldViewController: UIViewController {
arrItemVCs.append(vc)
}
do {
let vc = YHPreviewFamilyMemberViewController()
//工作经验
let vc = YHPreviewWorkExpViewController()
arrItemVCs.append(vc)
}
do {
......
......@@ -212,20 +212,6 @@ extension YHPreviewMainViewController {
make.right.equalTo(-20.5)
}
}
// private func loadFirstItem() {
// DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
// self.homeTableView.es.stopPullToRefresh(ignoreDate: true,ignoreFooter: false)
// self.homeTableView.reloadData()
// }
// }
//
// private func loadFakeData() {
// DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
// self.homeTableView.es.stopLoadingMore()
// self.homeTableView.reloadData()
// }
// }
}
// MARK: - UITableViewDelegate 和 UITableViewDataSource
......
//
// YHPreviewWorkExpViewController.swift
// galaxy
//
// Created by davidhuangA on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
/*
*工作经验 预览
*/
class YHPreviewWorkExpViewController: YHPreviewBaseViewController {
private let previewVM : YHPreviewViewModel = YHPreviewViewModel()
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
loadData()
}
}
private extension YHPreviewWorkExpViewController {
func setupUI() {
self.homeTableView.register(YHPreviewInfoCell.self,forCellReuseIdentifier: YHPreviewInfoCell.cellReuseIdentifier)
self.homeTableView.reloadData()
}
func loadData() {
if let orderID = UserDefaults.standard.value(forKey: "orderIdForPreview") {
previewVM.getPreviewForWorkExpInfo(params: ["order_id" : orderID]) { success, error in
if success == true {
} else {
}
self.homeTableView.reloadData()
}
} else {
printLog("error : orderID 为空")
}
}
}
// MARK: - UITableViewDelegate 和 UITableViewDataSource
extension YHPreviewWorkExpViewController {
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return previewVM.arrDataForWorkExpInfo.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withClass: YHPreviewInfoCell.self)
cell.selectionStyle = .none
cell.model = previewVM.arrDataForWorkExpInfo[indexPath.row]
return cell
}
}
......@@ -14,10 +14,9 @@ enum YHPreviewInfoSessionModelType: Int {
case idCardInfoType = 1 //1-证件信息 类型
case idPictureType = 2 //2-证件照片 类型
case questionAndAnswer = 3 //3-问答 类型
case workExp = 4 //4-工作经验
}
struct YHPreviewInfoSessionModel {
var cellType : YHPreviewInfoSessionModelType = .countryInfoType
var cellTitle : String = ""
......
//
// YHWorkExpDataModel.swift
// galaxy
//
// Created by davidhuangA on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
struct YHWorkExpDataModel {
var title : String
var data : [Any] = []
}
//
// WorkExpInfoPreviewModel.swift
// galaxy
//
// Created by davidhuangA on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import SmartCodable
class YHWorkExpInfoPreviewModel: SmartCodable {
var list : [WorkExpInfoPreviewDetailModel]?
var count : Int = 0
required init() {
}
}
class WorkExpInfoPreviewDetailModel: SmartCodable {
var id: Int = 0
var order_id: Int = 0
var company_name: String = ""
var is_famous_enterprise: Int = 0
var duty: String = ""
var entry_time: String = ""
var departure_time: String = ""
var industry: String = ""
var location: AddressPreviewModel?
var location_aboard: Int = 0
var professional_level: 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 work_certificate: String = ""
var executives_certificate: String = ""
var is_executives: Int = 0
var wduty: String = ""
var highlights: String = ""
var file: [WorkExpFilePreviewModel]?
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 is_project_introduction: Int = 0
var customer_center_id: Int = 0
var projects: [ProjectPreviewModel]?
required init() {
}
}
class WorkExpFilePreviewModel: SmartCodable {
var fileName: String = ""
var fileUrl: String = ""
required init() {
}
}
class AddressPreviewModel: SmartCodable {
var area: [String] = []
var country: String = ""
var details: String = ""
var foreign: String = ""
required init() {
}
}
class ProjectPreviewModel: SmartCodable {
var id: Int = 0
var order_id: Int = 0
var work_id: Int = 0
var project_name: String = ""
var project_start_time: String = ""
var project_end_time: String = ""
var project_highlights: String = ""
var update_from_appid: Int = 0
var create_from_appid: Int = 0
var customer_center_id: Int = 0
var created_at: String = ""
var updated_at: String = ""
var deleted_at: String = ""
required init() {
}
}
......@@ -61,7 +61,6 @@ extension YHPreviewInfoCell {
}
}
else if model?.cellType == .idCardInfoType {
guard let model = model else { return }
let view = YHPreviewInfoCertificateInformationItemsView(frame: .zero)
view.dataModel = model
......@@ -71,8 +70,6 @@ extension YHPreviewInfoCell {
}
}
else if model?.cellType == .idPictureType {
guard let model = model else { return }
let view = YHPreviewInfoCertificatePictureItemsView(frame: .zero)
view.dataModel = model
......@@ -81,9 +78,7 @@ extension YHPreviewInfoCell {
make.edges.equalTo(0)
}
}
else if model?.cellType == .questionAndAnswer {
guard let model = model else { return }
let view = YHPreviewInfoQuestionAndAnswerItemsView(frame: .zero)
view.dataModel = model
......@@ -92,7 +87,9 @@ extension YHPreviewInfoCell {
make.edges.equalTo(0)
}
}
else if model?.cellType == .workExp {
//工作经验
}
else {
}
......
......@@ -9,6 +9,10 @@
import UIKit
class YHPreviewViewModel: YHBaseViewModel {
//工作经验
var workExpInfoPreviewModel : YHWorkExpInfoPreviewModel?
var arrDataForWorkExpInfo : [YHPreviewInfoSessionModel] = []
//学历/专业资格
var academicInfoPreviewModel : YHAcademicPreviewModel?
var arrDataForAcademicInfo : [YHPreviewInfoSessionModel] = []
......@@ -37,6 +41,33 @@ class YHPreviewViewModel: YHBaseViewModel {
extension YHPreviewViewModel {
//工作经验 预览
func getPreviewForWorkExpInfo(params:[String:Any], callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Preview.previewWorkExpInfoApi
let _ = YHNetRequest.getRequest(url: strUrl, params:params) {[weak self] json, code in
guard let self = self else { return }
printLog("model 是 ==> \(json)")
if json.code == 200 {
let dic = json.data as? [AnyHashable : Any]
guard let resultModel = YHWorkExpInfoPreviewModel.deserialize(dict: dic) else {
let error = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description())
callBackBlock(false,error)
return
}
workExpInfoPreviewModel = resultModel
installDataForWorkExpInfo()
callBackBlock(true,nil)
} else {
let error = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg)
callBackBlock(false,error)
}
} failBlock: { err in
callBackBlock(false,err)
}
}
//获取学历/专业 预览数据
func getPreviewForAcademicInfo(params:[String:Any], callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Preview.previewAcademicAndProfessionalQualificationInfoApi
......@@ -182,6 +213,83 @@ extension YHPreviewViewModel {
}
private extension YHPreviewViewModel {
//组装 工作经验 数据
func installDataForWorkExpInfo() {
guard let model0 = workExpInfoPreviewModel else { return}
arrDataForWorkExpInfo.removeAll()
if let list = model0.list,list.isEmpty == false {
for(index,model) in list.enumerated() {
var arr1 : [YHPreviewQuestionAndAnswerModel] = []
do {
//1.基本信息
let tmp1 = YHPreviewQuestionAndAnswerModel(question: "用人单位:", answer: model.company_name)
let tmp2 = YHPreviewQuestionAndAnswerModel(question: "用人单位性质:", answer: model.industry)
let tmp3 = YHPreviewQuestionAndAnswerModel(question: "用人单位介绍:", answer: model.company_introduce)
let tmp4 = YHPreviewQuestionAndAnswerModel(question: "用人单位官网:", answer: model.company_website)
var title = "-"
if let item = model.location {
title = item.country + "-" + item.details
}
let tmp5 = YHPreviewQuestionAndAnswerModel(question: "工作地点:", answer: title)
let tmp6 = YHPreviewQuestionAndAnswerModel(question: "职位:", answer: model.position)
let tmp7 = YHPreviewQuestionAndAnswerModel(question: "入职年月:", answer: model.entry_time)
let tmp8 = YHPreviewQuestionAndAnswerModel(question: "离职年月:", answer: model.departure_time)
let tmp9 = YHPreviewQuestionAndAnswerModel(question: "工作证明文件:", answer: model.work_certificate)
let tmp10 = YHPreviewQuestionAndAnswerModel(question: "职责性质:", answer: model.duty)
title = model.international_work_experience == 0 ? "否" : "是"
let tmp11 = YHPreviewQuestionAndAnswerModel(question: "相关工作是否属国际工作经验:", answer:title)
let tmp12 = YHPreviewQuestionAndAnswerModel(question: "企业人数规模:", answer:String(model.company_member_total))
let tmp13 = YHPreviewQuestionAndAnswerModel(question: "行政架构层级:", answer:String(model.administrative_level))
let tmp14 = YHPreviewQuestionAndAnswerModel(question: "下属管理人数:", answer:String(model.company_manage_total))
let tmp15 = YHPreviewQuestionAndAnswerModel(question: "公司营业额/港元(近一年):", answer:String(model.turnover))
let tmp16 = YHPreviewQuestionAndAnswerModel(question: "职业水平类别:", answer:String(model.professional_level))
arr1.append(contentsOf: [tmp1,tmp2,tmp3,tmp4,tmp5,tmp6,tmp7,tmp8,tmp9,tmp10,tmp11,tmp12,tmp13,tmp14,tmp15,tmp16])
}
let dataModel1 = YHWorkExpDataModel(title: "", data: arr1)
var arr2 : [YHPreviewQuestionAndAnswerModel] = []
do {
//2.
let tmp1 = YHPreviewQuestionAndAnswerModel(question: "公司业务性质/范畴/所属行业:", answer:model.business_nature)
let tmp2 = YHPreviewQuestionAndAnswerModel(question: "工作职责:", answer:model.wduty)
let tmp3 = YHPreviewQuestionAndAnswerModel(question: "工作亮点:", answer:model.highlights)
arr2.append(contentsOf: [tmp1,tmp2,tmp3])
}
let dataModel2 = YHWorkExpDataModel(title: "", data: arr2)
var arr3 : [Any] = []
do {
//3.项目介绍
if let items = model.projects,items.isEmpty == false {
for(index,item) in items.enumerated() {
let tmp1 = YHPreviewQuestionAndAnswerModel(question: "项目名称", answer:item.project_name)
let title = item.project_start_time + "-" + item.project_end_time
let tmp2 = YHPreviewQuestionAndAnswerModel(question: "项目时间", answer:title)
let tmp3 = YHPreviewQuestionAndAnswerModel(question: "项目业绩/亮点", answer:item.project_highlights)
var arrT : [YHPreviewQuestionAndAnswerModel] = [tmp1,tmp2,tmp3]
let dataModelTemp = YHWorkExpDataModel(title: "", data: arrT)
arr3.append(dataModelTemp)
}
}
}
do {
//4.简历/工作总结:
if let items = model.file,items.isEmpty == false {
var arrT : [Any] = []
for(index,item) in items.enumerated() {
arrT.append(item)
}
}
}
}
}
}
//组装 学历/专业资格 数据
func installDataForAcademicInfo() {
......
//
// YHImageClipperViewController.swift
// galaxy
//
// Created by EDY on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
/*
let clipperVC = YHImageClipperViewController()
clipperVC.setBaseImg(image, resultImgSize: clippedImgSize!, type: clipperType)
clipperVC.cancelClippedHandler = {
}
clipperVC.successClippedHandler = {[weak self]img in
if self?.clippedImageHandler != nil{
self?.clippedImageHandler!(img)
}
}
self.pushViewController(clipperVC, animated: true)
*/
import UIKit
class YHImageClipperViewController: YHBaseViewController {
typealias CancelClippedHandlerBlock = ()->Void
typealias SuccessClippedHandlerBlock = (_ content: String) -> Void
//MARK Public
public var cancelClippedHandler:CancelClippedHandlerBlock?
public var successClippedHandler:SuccessClippedHandlerBlock?
public func setBaseImg(_ baseImg: UIImage, resultImgSize: CGSize, type: YHClipperType) {
clipperView = YHClipperView(frame: CGRect(x: 0, y: (isIphoneX() ? 88:64), width: KScreenWidth, height: KScreenHeight - k_Height_safeAreaInsetsBottom() - 54 - (isIphoneX() ? 88:64)))
clipperView?.resultImgSize = resultImgSize
clipperView?.baseImg = baseImg
clipperView?.type = type
self.view.addSubview(clipperView!)
}
//MARK Private
private var clipperView: YHClipperView?
private var cannalButton: YHClipperButton!
private var backImageButton: YHClipperButton!
private var sureButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .black
self.hidesBottomBarWhenPushed = true
if #available(iOS 11.0, *) {
} else {
self.automaticallyAdjustsScrollViewInsets = false
}
// Do any additional setup after loading the view.
setView()
}
func setView() {
sureButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 15)
button.backgroundColor = UIColor(hex: 0x2274ee)
button.contentHorizontalAlignment = .center
button.setTitle("确认", for: .normal)
button.setTitleColor( UIColor(hex:0xffffff), for: .normal)
button.layer.cornerRadius = kCornerRadius6
button.clipsToBounds = true
button.addTarget(self, action: #selector(sureBtnClick), for: .touchUpInside)
return button
}()
view.addSubview(sureButton)
sureButton.snp.makeConstraints { make in
make.right.equalTo(-16)
make.bottom.equalTo(-10 - k_Height_safeAreaInsetsBottom())
make.height.equalTo(44)
make.width.equalTo(93)
}
cannalButton = {
let button = YHClipperButton()
button.setContent("image_clipper_cannal", "取消")
button.addTarget(self, action: #selector(cannalBtnClick), for: .touchUpInside)
return button
}()
view.addSubview(cannalButton)
cannalButton.snp.makeConstraints { make in
make.centerY.equalTo(sureButton.snp.centerY)
make.left.equalTo(30)
make.height.equalTo(44)
make.width.equalTo(30)
}
backImageButton = {
let button = YHClipperButton()
button.setContent("image_clipper_back", "复原")
button.addTarget(self, action: #selector(backImageBtnClick), for: .touchUpInside)
return button
}()
view.addSubview(backImageButton)
backImageButton.snp.makeConstraints { make in
make.centerY.equalTo(sureButton.snp.centerY)
make.left.equalTo(80)
make.height.equalTo(44)
make.width.equalTo(30)
}
}
@objc private func cannalBtnClick() {
if cancelClippedHandler != nil {
cancelClippedHandler!()
}
self.navigationController?.popViewController()
}
@objc private func backImageBtnClick() {
// if cancelClippedHandler != nil {
// cancelClippedHandler!()
// }
}
@objc private func sureBtnClick() {
let clippedImg = self.clipperView?.clipImg()
let vc = YHImageResultViewController()
vc.img = clippedImg
vc.successHandlerBlock = { [weak self] result in
guard let self = self else { return }
if successClippedHandler != nil {
successClippedHandler!(result)
}
}
self.navigationController?.pushViewController(vc)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.isNavigationBarHidden = false
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
//
// YHImageResultViewController.swift
// galaxy
//
// Created by EDY on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHImageResultViewController: YHBaseViewController {
typealias SuccessHandlerBlock = (_ relult: String) -> Void
var successHandlerBlock: SuccessHandlerBlock?
var resultView: UIImageView!
var bottomView: YHResultBottomView!
var img: UIImage!
var viewModel: YHWorkExperienceViewModel!
override func viewDidLoad() {
super.viewDidLoad()
viewModel = YHWorkExperienceViewModel()
gk_navTitle = "照片"
setView()
// Do any additional setup after loading the view.
}
func setView() {
resultView = {
let step = UIImageView()
step.contentMode = .scaleAspectFit
step.image = img
return step
}()
view.addSubview(resultView)
resultView.snp.makeConstraints { make in
make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
make.left.right.equalTo(view)
make.bottom.equalTo(-k_Height_safeAreaInsetsBottom() - 54)
}
bottomView = {
let bottom = YHResultBottomView()
bottom.nextblock = {[weak self] in
guard let self = self else { return }
YHHUD.show(.progress(message: ""))
self.viewModel.uploadImage(self.img) {[weak self] success, error in
guard let self = self else { return }
guard let url = success else { return }
self.viewModel.getPublicImageUrl(url) {[weak self] success, error in
guard let self = self else { return }
guard let url = success else { return }
self.viewModel.requestFileMessage(url) {[weak self] success, model, error in
guard let self = self else { return }
if success {
YHHUD.hide()
if let block = self.successHandlerBlock {
block(model?.content ?? "")
let mineVC = YHWorkExperienceViewController()
var targetVC : UIViewController!
for controller in self.navigationController!.viewControllers {
if controller.isKind(of: mineVC.classForCoder) {
targetVC = controller
}
}
if targetVC != nil {
self.navigationController?.popToViewController(targetVC, animated: true)
}
}
} else {
YHHUD.hide()
YHHUD.flash(message: error?.errorMsg ?? "")
}
}
}
}
}
return bottom
}()
view.addSubview(bottomView)
bottomView.snp.makeConstraints { make in
make.left.right.bottom.equalTo(view)
make.height.equalTo(k_Height_safeAreaInsetsBottom() + 64)
}
}
}
//
// YHImageViewController.swift
// galaxy
//
// Created by EDY on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHImageViewController: YHBaseViewController {
var resultView: UIImageView!
var resultButton: UIButton!
var imgString: String!
var viewModel: YHWorkExperienceViewModel!
override func viewDidLoad() {
super.viewDidLoad()
viewModel = YHWorkExperienceViewModel()
view.backgroundColor = .black
self.hidesBottomBarWhenPushed = true
if #available(iOS 11.0, *) {
} else {
self.automaticallyAdjustsScrollViewInsets = false
}
setView()
getData()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.isNavigationBarHidden = false
}
func setView() {
resultView = {
let step = UIImageView()
step.contentMode = .scaleAspectFit
return step
}()
view.addSubview(resultView)
resultView.snp.makeConstraints { make in
make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
make.left.right.equalTo(view)
make.bottom.equalTo(-k_Height_safeAreaInsetsBottom() - 54)
}
resultButton = {
let button = UIButton(type: .custom)
button.addTarget(self, action: #selector(back), for: .touchUpInside)
return button
}()
view.addSubview(resultButton)
resultButton.snp.makeConstraints { make in
make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
make.left.right.equalTo(view)
make.bottom.equalTo(-k_Height_safeAreaInsetsBottom() - 54)
}
}
@objc func back() {
self.navigationController?.popViewController()
}
func getData() {
self.viewModel.getPublicImageUrl(imgString) {[weak self] success, error in
guard let self = self else { return }
guard let url = success 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.
}
*/
}
......@@ -238,27 +238,14 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo
guard let self = self else { return }
YHImagePickerView.show() {[weak self] image in
guard let self = self else { return }
YHHUD.show(.progress(message: ""))
self.viewModel.uploadImage(image) {[weak self] success, error in
let clipperVC = YHImageClipperViewController()
clipperVC.setBaseImg(image, resultImgSize: CGSize(width: 300, height: 300), type: .Stay)
clipperVC.successClippedHandler = {[weak self] result in
guard let self = self else { return }
guard let url = success else { return }
self.viewModel.getPublicImageUrl(url) {[weak self] success, error in
guard let self = self else { return }
guard let url = success else { return }
self.viewModel.requestFileMessage(url) {[weak self] success, model, error in
guard let self = self else { return }
if success {
YHHUD.hide()
self.viewModel.mainModel.wduty = model?.content ?? ""
cell.dataSource = viewModel.mainModel.wduty
} else {
YHHUD.hide()
YHHUD.flash(message: error?.errorMsg ?? "")
}
}
}
self.viewModel.mainModel.wduty = result
cell.dataSource = viewModel.mainModel.wduty
}
self.navigationController?.pushViewController(clipperVC, animated: true)
}
}
return cell
......@@ -294,27 +281,14 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo
guard let self = self else { return }
YHImagePickerView.show() {[weak self] image in
guard let self = self else { return }
YHHUD.show(.progress(message: ""))
self.viewModel.uploadImage(image) {[weak self] success, error in
let clipperVC = YHImageClipperViewController()
clipperVC.setBaseImg(image, resultImgSize: CGSize(width: 300, height: 300), type: .Stay)
clipperVC.successClippedHandler = {[weak self] result in
guard let self = self else { return }
guard let url = success else { return }
self.viewModel.getPublicImageUrl(url) {[weak self] success, error in
guard let self = self else { return }
guard let url = success else { return }
self.viewModel.requestFileMessage(url) {[weak self] success, model, error in
guard let self = self else { return }
if success {
YHHUD.hide()
self.viewModel.mainModel.highlights = model?.content ?? ""
cell.dataSource = viewModel.mainModel.highlights
} else {
YHHUD.hide()
YHHUD.flash(message: error?.errorMsg ?? "")
}
}
}
self.viewModel.mainModel.highlights = result
cell.dataSource = viewModel.mainModel.highlights
}
self.navigationController?.pushViewController(clipperVC, animated: true)
}
}
return cell
......@@ -455,6 +429,10 @@ extension YHWorkExperienceViewController: UITableViewDelegate, UITableViewDataSo
return
}
}
} else {
let vc = YHImageViewController()
vc.imgString = model.fileUrl
UIViewController.current?.navigationController?.pushViewController(vc)
}
}
return cell
......
......@@ -205,27 +205,14 @@ class YHWorkIntroductionViewController: YHBaseViewController {
guard let self = self else { return }
YHImagePickerView.show() {[weak self] image in
guard let self = self else { return }
YHHUD.show(.progress(message: "加载中"))
self.viewModel.uploadImage(image) {[weak self] success, error in
let clipperVC = YHImageClipperViewController()
clipperVC.setBaseImg(image, resultImgSize: CGSize(width: 300, height: 300), type: .Stay)
clipperVC.successClippedHandler = {[weak self] result in
guard let self = self else { return }
guard let url = success else { return }
self.viewModel.getPublicImageUrl(url) {[weak self] success, error in
guard let self = self else { return }
guard let url = success else { return }
self.viewModel.requestFileMessage(url) {[weak self] success, model, error in
guard let self = self else { return }
if success {
YHHUD.hide()
self.dataSource.project_highlights = model?.content
self.messageTextField.text = model?.content
} else {
YHHUD.hide()
YHHUD.flash(message: error?.errorMsg ?? "")
}
}
}
self.dataSource.project_highlights = result
self.messageTextField.text = result
}
self.navigationController?.pushViewController(clipperVC, animated: true)
}
}
return view
......
//
// YHClipperButton.swift
// galaxy
//
// Created by EDY on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHClipperButton: UIButton {
var topImageView: UIImageView!
var bottomTitleLabel: UILabel!
override init(frame: CGRect) {
super.init(frame: frame)
setView()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setView() {
topImageView = {
let view = UIImageView()
return view
}()
addSubview(topImageView)
topImageView.snp.makeConstraints { make in
make.top.centerX.equalToSuperview()
make.width.height.equalTo(21)
}
bottomTitleLabel = {
let label = UILabel()
label.font = UIFont.PFSC_B(ofSize: 11)
label.textAlignment = .center
label.textColor = UIColor.white
return label
}()
addSubview(bottomTitleLabel)
bottomTitleLabel.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.height.equalTo(15)
}
}
func setContent(_ image: String, _ title: String) {
bottomTitleLabel.text = title
topImageView.image = UIImage(named: image)
}
/*
// Only override draw() if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func draw(_ rect: CGRect) {
// Drawing code
}
*/
}
//
// YHResultBottomView.swift
// galaxy
//
// Created by EDY on 2024/3/5.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHResultBottomView: UIView {
typealias Block = () -> ()
var nextblock: Block?
var nextButton: UIButton!
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .white
setUpView()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setUpView() {
nextButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 15)
button.backgroundColor = UIColor(hex: 0x2274ee)
button.contentHorizontalAlignment = .center
button.setTitle("开始识别", for: .normal)
button.setTitleColor(UIColor(hex:0xffffff), for: .normal)
button.layer.cornerRadius = kCornerRadius6
button.clipsToBounds = true
button.addTarget(self, action: #selector(goNext), for: .touchUpInside)
return button
}()
addSubview(nextButton)
nextButton.snp.makeConstraints { make in
make.right.equalTo(-16)
make.top.equalTo(10)
make.height.equalTo(44)
make.left.equalTo(16)
}
// nextButton.layoutIfNeeded()
// nextButton.backgroundGradient()
// nextButton.addYinHeGradualLayer()
}
@objc func goNext() {
if let block = nextblock {
block()
}
}
}
......@@ -187,7 +187,6 @@ extension YHWorkResponsibilitiesTableViewCell: UITextViewDelegate {
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
let newLength = (textView.text as NSString).length + text.count - range.length
return newLength <= 2000
}
}
......@@ -120,7 +120,7 @@ class YHInformationFillTipsAlertView: UIView {
make.height.equalTo(48)
}
checkBtn.layoutIfNeeded()//非常重要!!!!
checkBtn.backgroundGradient()
checkBtn.addYinHeGradualLayer()
......
......@@ -88,7 +88,7 @@ class YHLoginTipsView: UIView {
loginBtn.addTarget(self, action: #selector(clickLoginBtn), for: .touchUpInside)
loginBtn.layoutIfNeeded()
loginBtn.backgroundGradient()
loginBtn.addYinHeGradualLayer()
}
required init?(coder: NSCoder) {
......
......@@ -184,7 +184,7 @@ class YHSubmintAllInfoSuccessTipView: UIView {
make.height.equalTo(45)
}
agreeButton.layoutIfNeeded()
agreeButton.backgroundGradient()
agreeButton.addYinHeGradualLayer()
}
......
......@@ -128,7 +128,8 @@ class YHSubmitAllInfoCheckView: UIView {
make.height.equalTo(45)
}
agreeButton.layoutIfNeeded()
agreeButton.backgroundGradient()
agreeButton.addYinHeGradualLayer()
agreeButton.addYinHeGradualLayer()
}
......
......@@ -100,33 +100,6 @@ extension UIButton {
}
}
extension UIButton {
/// 渐变背景
@discardableResult
func backgroundGradient<T: UIButton>() -> T {
let gradientLayer = CAGradientLayer()
//几个颜色
gradientLayer.colors = UIColor.arrBrandGradaterColors.map { $0.cgColor }
//颜色的分界点
gradientLayer.locations = [0, 1.0]
//开始
gradientLayer.startPoint = CGPoint(x: 0.12, y: 0.25)
//结束,主要是控制渐变方向
gradientLayer.endPoint = CGPoint(x: 0.38, y: 0.25)
//多大区域
gradientLayer.frame = bounds
UIGraphicsBeginImageContext(gradientLayer.frame.size)
if let context = UIGraphicsGetCurrentContext() {
gradientLayer.render(in: context)
let outputImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
setBackgroundImage(outputImage, for: .normal)
}
return self as! T
}
}
// 扩大点击范围
extension UIButton{
......
......@@ -165,5 +165,7 @@ class YHAllApiName {
static let previewFamilyInfoApi = "infoflow/information/family"
//学历/专业资格
static let previewAcademicAndProfessionalQualificationInfoApi = "infoflow/education/preview"
//工作经验
static let previewWorkExpInfoApi = "infoflow/work/preview"
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "image_clipper_back@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "image_clipper_back@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "image_clipper_cannal@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "image_clipper_cannal@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
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