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

证件管理小白条 身份证 电子签证

parent 61a428ab
This diff is collapsed.
......@@ -171,6 +171,9 @@ extension YHServiceOrderListView : UITableViewDelegate,UITableViewDataSource {
//添加在港记录
} else if tag == 4 {
//续签证件管理
let vc = YHResignCertificateListViewController()
vc.orderId = orderID
UIViewController.current?.navigationController?.pushViewController(vc)
}
}
return view
......
......@@ -11,14 +11,14 @@ import UIKit
class YHResignCertificateListViewController: YHBaseViewController {
var tableView: UITableView!
var orderId: Int = 0
var viewModel = YHResignCertificateListViewModel()
override func viewDidLoad() {
super.viewDidLoad()
gk_navTitle = "续签证件管理"
gk_navBackgroundColor = .white
gk_navBarAlpha = 1.0
setView()
getData()
}
override func viewWillAppear(_ animated: Bool) {
......@@ -27,7 +27,10 @@ class YHResignCertificateListViewController: YHBaseViewController {
}
func getData() {
viewModel.getResignCertificateList(orderId: orderId) {[weak self] success, error in
guard let self = self else { return }
self.tableView.reloadData()
}
}
func setView() {
......@@ -40,13 +43,14 @@ class YHResignCertificateListViewController: YHBaseViewController {
tableView.dataSource = self
tableView.showsVerticalScrollIndicator = false
tableView.showsHorizontalScrollIndicator = false
tableView.register(cellWithClass: YHAdopterAddNewTableViewCell.self)
tableView.register(cellWithClass: YHResignCertificateListTableViewCell.self)
return tableView
}()
view.addSubview(tableView)
tableView.snp.makeConstraints { make in
make.top.equalTo(k_Height_NavigationtBarAndStatuBar + 8)
make.left.right.bottom.equalTo(view)
make.left.right.equalTo(view)
make.bottom.equalTo(-k_Height_safeAreaInsetsBottom())
}
}
......@@ -59,18 +63,67 @@ extension YHResignCertificateListViewController: UITableViewDelegate, UITableVie
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withClass: YHAdopterAddNewTableViewCell.self)
cell.clickBlock = { [weak self] model in
guard let self = self else { return }
let cell = tableView.dequeueReusableCell(withClass: YHResignCertificateListTableViewCell.self)
var model: [YHResignCertificateModel] = []
if indexPath.row == 0 {
model = self.viewModel.mainModel.TRAVEL
cell.titleLabel.text = "旅行证件(港澳通行证/护照)"
}
if indexPath.row == 1 {
model = self.viewModel.mainModel.E_VISA
cell.titleLabel.text = "最新一次电子签证"
}
if indexPath.row == 2 {
model = self.viewModel.mainModel.HK_ID_CARD
cell.titleLabel.text = "香港身份证"
}
if indexPath.row == 3 {
model = self.viewModel.mainModel.SMALL_WHITE_BAR
cell.titleLabel.text = "最新一次小白条"
}
cell.dataSource = model
cell.clickBlock = { [weak self] model in
guard let self = self else { return }
if indexPath.row == 0 {
}
return cell
if indexPath.row == 1 {
let vc = YHResignCertificateDetailEVisaViewController()
vc.data = model
self.navigationController?.pushViewController(vc)
}
if indexPath.row == 2 {
let vc = YHResignCertificateDetailViewController()
vc.detailType = .HongKongCard
vc.dataModel = model
self.navigationController?.pushViewController(vc)
}
if indexPath.row == 3 {
let vc = YHResignCertificateDetailViewController()
vc.detailType = .SmallWhiteNote
vc.dataModel = model
self.navigationController?.pushViewController(vc)
}
}
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let count = 3
return CGFloat(52 + count * 52)
var count = 0
if indexPath.row == 0 {
count = self.viewModel.mainModel.TRAVEL.count
}
if indexPath.row == 1 {
count = self.viewModel.mainModel.E_VISA.count
}
if indexPath.row == 2 {
count = self.viewModel.mainModel.HK_ID_CARD.count
}
if indexPath.row == 3 {
count = self.viewModel.mainModel.SMALL_WHITE_BAR.count
}
return CGFloat(68 + count * 52)
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
......
//
// YHResignCertificateModel.swift
// galaxy
//
// Created by EDY on 2024/9/12.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import SmartCodable
class YHResignCertificateMainModel: SmartCodable {
var E_VISA: [YHResignCertificateModel] = []
var HK_ID_CARD: [YHResignCertificateModel] = []
var SMALL_WHITE_BAR: [YHResignCertificateModel] = []
var TRAVEL: [YHResignCertificateModel] = []
required init() {
}
}
class YHResignCertificateModel: SmartCodable {
var age: Int = 0
var birthday: String = ""
var cert_type: String = ""
var created_at: String = ""
var deleted_at: String = ""
var group: Int = 0
var id: Int = 0
var name: String = ""
var order_id: Int = 0
var remark: String = ""
var status: Int = 0
var updated_at: String = ""
var upload_require: String = ""
var user_id: Int = 0
var user_type: String = ""
var valid_date: String = ""
var cert_info: YHResignCertificateInfoModel = YHResignCertificateInfoModel()
required init() {
}
}
class YHResignCertificateInfoModel: SmartCodable {
var e_visa_url: String = "" //电子签证的url
var name: String = "" //电子签证名称
var upload_at: String = ""
var idcard_url: String = "" //香港身份证的url
var small_white_note_name: String = ""
var small_white_note_url: String = ""
var small_white_note_validity_end: String = ""
var small_white_note_validity_start: String = ""
var sign_type: String = ""
var img_back: String = ""
var img_front: String = ""
var issue_end: String = ""
var issue_start: String = ""
required init() {
}
}
//
// YHResignCertificateEvisaTableViewCell.swift
// galaxy
//
// Created by EDY on 2024/9/12.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHResignCertificateEvisaTableViewCell: UITableViewCell {
typealias ResignCertificateBlock = (_ model: YHResignCertificateModel) -> ()
var clickBlock: ResignCertificateBlock?
typealias ExperienceListBlock = (_ model: YHWorkExperienceFileModel, _ type: YHWorkFileClickType) -> ()
var experienceListBlock: ExperienceListBlock?
typealias NewFileBlock = () -> ()
var newFileBlock: NewFileBlock?
var centerView: UIView!
var titleLabel: UILabel!
var lineView: UIView!
var itemView: YHWorkFileItemView!
var bottomView: YHWorkItemAddView!
var dataSource: [YHWorkExperienceFileModel]?{
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 = .clear
centerView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6
return view
}()
contentView.addSubview(centerView)
centerView.snp.makeConstraints { make in
make.left.equalTo(16)
make.right.equalTo(-16)
make.top.equalTo(16)
make.bottom.equalToSuperview()
}
titleLabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 17)
label.text = "*卢华臣的电子签证"
label.textColor = UIColor.mainTextColor
return label
}()
centerView.addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(16)
make.height.equalTo(24)
make.right.equalTo(-20)
}
lineView = {
let view = UIView()
view.backgroundColor = UIColor.separatorColor
return view
}()
centerView.addSubview(lineView)
lineView.snp.makeConstraints { make in
make.left.equalTo(18)
make.right.equalTo(-18)
make.height.equalTo(0.5)
make.top.equalTo(51.5)
}
itemView = {
let view = YHWorkFileItemView()
view.block = {[weak self] model, type in
guard let self = self else { return }
if let block = self.experienceListBlock {
block(model, type)
}
}
return view
}()
centerView.addSubview(itemView)
itemView.snp.makeConstraints { make in
make.left.equalToSuperview()
make.right.equalToSuperview()
make.height.equalTo(74)
make.bottom.equalToSuperview()
}
bottomView = {
let view = YHWorkItemAddView()
view.addBtn.setTitle("上传".local, for: .normal)
view.clickBlock = {[weak self] in
guard let self = self else { return }
if let block = self.newFileBlock {
block()
}
}
return view
}()
centerView.addSubview(bottomView)
bottomView.snp.makeConstraints { make in
make.right.equalTo(-18)
make.left.equalTo(18)
make.height.equalTo(45)
make.bottom.equalTo(-16)
}
}
func updateAllViews() {
guard let model = dataSource, model.count != 0 else {
bottomView.isHidden = false
itemView.isHidden = true
return
}
itemView.dataSource = model.first
bottomView.isHidden = true
itemView.isHidden = false
}
}
//
// YHResignCertificateListTableViewCell.swift
// galaxy
//
// Created by EDY on 2024/9/12.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHResignCertificateListTableViewCell: UITableViewCell {
typealias ResignCertificateBlock = (_ model: YHResignCertificateModel) -> ()
var clickBlock: ResignCertificateBlock?
var centerView: UIView!
var titleLabel: UILabel!
var mainItemView: UIView!
var lineView: UIView!
var dataSource: [YHResignCertificateModel]? {
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 = .clear
centerView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6
return view
}()
contentView.addSubview(centerView)
centerView.snp.makeConstraints { make in
make.left.equalTo(16)
make.right.equalTo(-16)
make.top.equalTo(8)
make.bottom.equalTo(-8)
}
titleLabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 17)
label.text = "新增受养人"
label.textColor = UIColor.mainTextColor
return label
}()
centerView.addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(16)
make.height.equalTo(24)
make.right.equalTo(-20)
}
mainItemView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6
return view
}()
centerView.addSubview(mainItemView)
mainItemView.snp.makeConstraints { make in
make.bottom.left.right.equalToSuperview()
make.top.equalTo(52)
}
}
func updateAllViews() {
mainItemView.removeSubviews()
guard let dataSource = dataSource else {
return
}
var total = 0
for i in 0 ..< dataSource.count {
let line = UIView()
line.backgroundColor = UIColor.separatorColor
mainItemView.addSubview(line)
line.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(total)
make.height.equalTo(0.5)
make.right.equalTo(-18)
}
total = total + 1
let itemView = YHResignCertificateView()
itemView.clickBlock = {[weak self] model in
guard let self = self else { return }
if let block = self.clickBlock {
block(model)
}
}
let model = dataSource[i]
itemView.tag = 4000 + i
itemView.dataSource = dataSource[i]
mainItemView.addSubview(itemView)
itemView.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(total)
make.height.equalTo(51)
make.right.equalTo(-18)
}
total = total + 51
}
}
}
class YHResignCertificateView: UIView {
typealias ItemBlock = (_ model: YHResignCertificateModel) -> ()
var clickBlock: ItemBlock?
var titleLabel: UILabel!
var subTitleLabel: UILabel!
var explainLabel: UILabel!
var nextStepImageView: UIImageView!
var centerButton: UIButton!
var dataSource: YHResignCertificateModel? {
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.font = UIFont.PFSC_B(ofSize: 14)
label.textAlignment = .left
label.numberOfLines = 2
label.textColor = UIColor.mainTextColor
return label
}()
addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.left.top.bottom.equalToSuperview()
}
subTitleLabel = {
let label = UILabel()
label.font = UIFont.PFSC_B(ofSize: 12)
label.textAlignment = .left
label.numberOfLines = 2
label.textColor = UIColor.mainTextColor50
return label
}()
addSubview(subTitleLabel)
subTitleLabel.snp.makeConstraints { make in
make.top.bottom.equalToSuperview()
make.left.equalTo(titleLabel.snp.right)
}
explainLabel = {
let label = UILabel()
label.font = UIFont.PFSC_R(ofSize: 14)
label.textAlignment = .right
label.textColor = UIColor.labelTextColor2
return label
}()
addSubview(explainLabel)
explainLabel.snp.makeConstraints { make in
make.right.equalTo(-24)
make.left.equalToSuperview()
make.height.equalTo(20)
make.centerY.equalToSuperview()
}
nextStepImageView = {
let imageView = UIImageView()
imageView.image = UIImage(named: "form_right_arrow")
return imageView
}()
addSubview(nextStepImageView)
nextStepImageView.snp.makeConstraints { make in
make.right.equalToSuperview()
make.centerY.equalTo(explainLabel.snp.centerY)
make.height.width.equalTo(20)
}
centerButton = {
let button = UIButton(type: .custom)
button.addTarget(self, action: #selector(centerClick), for: .touchUpInside)
return button
}()
addSubview(centerButton)
centerButton.snp.makeConstraints { make in
make.right.top.bottom.equalToSuperview()
make.left.equalTo(112)
}
}
func updateAllViews() {
guard let dataSource = dataSource else { return }
titleLabel.text = dataSource.name
if dataSource.status == 1 {
explainLabel.text = "待上传"
explainLabel.textColor = UIColor.brandMainColor
nextStepImageView.image = UIImage(named: "service_adopter_income_start")
}
if dataSource.status == 2 {
explainLabel.text = "已完成"
explainLabel.textColor = UIColor(hex: 0x3cc694)
nextStepImageView.image = UIImage(named: "service_adopter_income_success")
}
if dataSource.age < 12 {
explainLabel.text = "无需提供"
explainLabel.textColor = UIColor.mainTextColor18
nextStepImageView.isHidden = true
explainLabel.snp.remakeConstraints { make in
make.right.left.equalToSuperview()
make.height.equalTo(20)
make.centerY.equalToSuperview()
}
} else {
nextStepImageView.isHidden = false
explainLabel.snp.remakeConstraints { make in
make.right.equalTo(-24)
make.left.equalToSuperview()
make.height.equalTo(20)
make.centerY.equalToSuperview()
}
}
if dataSource.cert_type == "PASS_PORT" {
subTitleLabel.text = "(护照入境)"
} else if dataSource.cert_type == "HK_PASS_PORT" {
subTitleLabel.text = "(港澳通行证入境)"
} else {
subTitleLabel.text = ""
}
}
@objc func centerClick() {
if let block = clickBlock {
block(self.dataSource ?? YHResignCertificateModel())
}
}
func isShowDelete(_ index: Int, isShow: Bool) {
if isShow {
explainLabel.isHidden = true
nextStepImageView.isHidden = true
} else {
explainLabel.isHidden = false
nextStepImageView.isHidden = false
}
}
}
//
// YHResignCertificateDetailViewModel.swift
// galaxy
//
// Created by EDY on 2024/9/12.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHResignCertificateDetailViewModel: YHBaseViewModel {
func submitResignCertificateUpdate(_ params: [String : Any],callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.ResignCertificate.update
let _ = YHNetRequest.postRequest(url: strUrl,params: params) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
printLog("model 是 ==> \(json)")
if json.code == 200 {
callBackBlock(true,nil)
} else {
let err = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg.isEmpty ? "" : json.msg)
callBackBlock(false,err)
}
} failBlock: { err in
callBackBlock(false,err)
}
}
}
//
// YHResignCertificateListViewModel.swift
// galaxy
//
// Created by EDY on 2024/9/12.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHResignCertificateListViewModel: YHBaseViewModel {
var mainModel : YHResignCertificateMainModel = YHResignCertificateMainModel()
func getResignCertificateList(orderId: Int, callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let param = ["orderId": orderId]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.ResignCertificate.resignCertificateList
let _ = YHNetRequest.getRequest(url: strUrl, params: param) { [weak self] json, code in
//1. json字符串 转 对象
guard self != nil else { return }
if json.code == 200 {
guard let dic = json.data?.peel as? [String : Any], let data = dic["data"] as? [String: Any], let result = YHResignCertificateMainModel.deserialize(from: data) else {
callBackBlock(false,nil)
return
}
self?.mainModel = result
callBackBlock(true, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code),errorMsg: json.msg.count > 0 ? json.msg : "数据错误")
callBackBlock(false,error)
}
} failBlock: { err in
callBackBlock(false,err)
}
}
}
......@@ -21,7 +21,7 @@ class YHServiceMoreAlertView: UIView {
centerView.snp.remakeConstraints { make in
make.right.equalTo(-20)
make.height.equalTo(112)
make.width.equalTo(132)
make.width.equalTo(164)
make.top.equalTo(85)
}
} else {
......@@ -29,7 +29,7 @@ class YHServiceMoreAlertView: UIView {
centerView.snp.remakeConstraints { make in
make.right.equalTo(-20)
make.height.equalTo(64)
make.width.equalTo(132)
make.width.equalTo(164)
make.top.equalTo(85)
}
}
......@@ -69,14 +69,14 @@ class YHServiceMoreAlertView: UIView {
centerView.snp.makeConstraints { make in
make.right.equalTo(-20)
make.height.equalTo(64)
make.width.equalTo(132)
make.width.equalTo(164)
make.top.equalTo(85)
}
orderButton = {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "service_more_order"), for: .normal)
button.setTitle("我的订单", for: .normal)
button.setTitle("我的订单 ", for: .normal)
button.setTitleColor(UIColor.mainTextColor, for: .normal)
button.titleLabel?.font = UIFont.PFSC_R(ofSize: 16)
button.addTarget(self, action: #selector(orderButtonClick), for: .touchUpInside)
......@@ -86,14 +86,14 @@ class YHServiceMoreAlertView: UIView {
orderButton.snp.makeConstraints { make in
make.right.equalTo(-20)
make.height.equalTo(20)
make.width.equalTo(92)
make.width.equalTo(124)
make.top.equalTo(24)
}
guideButton = {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "service_more_guide"), for: .normal)
button.setTitle("操作指引", for: .normal)
button.setTitle("获批操作指引", for: .normal)
button.setTitleColor(UIColor.mainTextColor, for: .normal)
button.titleLabel?.font = UIFont.PFSC_R(ofSize: 16)
button.addTarget(self, action: #selector(guideButtonClick), for: .touchUpInside)
......@@ -103,7 +103,7 @@ class YHServiceMoreAlertView: UIView {
guideButton.snp.makeConstraints { make in
make.right.equalTo(-20)
make.height.equalTo(20)
make.width.equalTo(92)
make.width.equalTo(124)
make.bottom.equalTo(-24)
}
orderButton.iconInLeft(spacing: 8)
......
......@@ -521,4 +521,8 @@ class YHAllApiName {
static let resignMaterialList = "super-app/identity-renewal/renewal-batch-list"
}
struct ResignCertificate {
static let resignCertificateList = "super-app/certificate/list"
static let update = "super-app/certificate/update"
}
}
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