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

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

parents 050d98a7 93be7c37
This diff is collapsed.
...@@ -89,6 +89,17 @@ class YHServiceOrderListView: YHBaseViewController { ...@@ -89,6 +89,17 @@ class YHServiceOrderListView: YHBaseViewController {
vc.orderId = orderId vc.orderId = orderId
UIViewController.current?.navigationController?.pushViewController(vc) UIViewController.current?.navigationController?.pushViewController(vc)
} else if type == 7 {
//递交确认
let viewModel = YHServiceCenterViewModel()
viewModel.getServiceMainDocUrl(orderId: orderId) {success, error in
let vc = YHH5WebViewVC()
vc.url = viewModel.url
vc.isFullScreenFlag = false
vc.isNeedRefreshDataFlag = true
UIViewController.current?.navigationController?.pushViewController(vc)
}
} else if type == 11 || type == 12 || type == 14 { } else if type == 11 || type == 12 || type == 14 {
// 11 原则批等待结果 // 11 原则批等待结果
......
...@@ -13,13 +13,14 @@ class YHLookResignResultViewController: YHBaseViewController { ...@@ -13,13 +13,14 @@ class YHLookResignResultViewController: YHBaseViewController {
var orderId: Int = 0 var orderId: Int = 0
// 批次id // 批次id
var batchId: Int = 0 var batchId: Int = 0
var state = 1 var state = 2
lazy var viewModel: YHResignUploadDocListViewModel = { lazy var viewModel: YHResignUploadDocListViewModel = {
let vm = YHResignUploadDocListViewModel() let vm = YHResignUploadDocListViewModel()
return vm return vm
}() }()
var headView: YHLookResignResultHeadView! var headView: YHLookResignResultHeadView!
var privacyView: YHLookResignResultPrivateView!
lazy var tableView: UITableView = { lazy var tableView: UITableView = {
let tableView = UITableView(frame:.zero, style:.grouped) let tableView = UITableView(frame:.zero, style:.grouped)
...@@ -32,7 +33,9 @@ class YHLookResignResultViewController: YHBaseViewController { ...@@ -32,7 +33,9 @@ class YHLookResignResultViewController: YHBaseViewController {
tableView.dataSource = self tableView.dataSource = self
tableView.backgroundColor = .clear tableView.backgroundColor = .clear
tableView.register(YHLookResignResultStateOneTableViewCell.self, forCellReuseIdentifier: YHLookResignResultStateOneTableViewCell.cellReuseIdentifier) tableView.register(YHLookResignResultStateOneTableViewCell.self, forCellReuseIdentifier: YHLookResignResultStateOneTableViewCell.cellReuseIdentifier)
tableView.register(YHTravelDocsPreparationTipsCell.self, forCellReuseIdentifier: YHTravelDocsPreparationTipsCell.cellReuseIdentifier) tableView.register(YHLookResignResultStateTwoTableViewCell.self, forCellReuseIdentifier: YHLookResignResultStateTwoTableViewCell.cellReuseIdentifier)
tableView.register(YHLookResignResultStateThreeTableViewCell.self, forCellReuseIdentifier: YHLookResignResultStateThreeTableViewCell.cellReuseIdentifier)
tableView.register(YHLookResignResultStateThreePeopleTableViewCell.self, forCellReuseIdentifier: YHLookResignResultStateThreePeopleTableViewCell.cellReuseIdentifier)
return tableView return tableView
}() }()
...@@ -134,6 +137,23 @@ private extension YHLookResignResultViewController { ...@@ -134,6 +137,23 @@ private extension YHLookResignResultViewController {
} else { } else {
bottomView.isHidden = false bottomView.isHidden = false
rewardBtn.setTitle("去缴费", for: .normal) rewardBtn.setTitle("去缴费", for: .normal)
tableView.snp.remakeConstraints { make in
make.left.equalToSuperview()
make.right.equalToSuperview()
make.top.equalToSuperview()
make.bottom.equalTo(-138)
}
privacyView = {
let view = YHLookResignResultPrivateView()
return view
}()
view.addSubview(privacyView)
privacyView.snp.makeConstraints { make in
make.bottom.equalTo(-98)
make.left.equalTo(0)
make.height.equalTo(40)
make.right.equalTo(0)
}
} }
} }
...@@ -149,21 +169,64 @@ private extension YHLookResignResultViewController { ...@@ -149,21 +169,64 @@ private extension YHLookResignResultViewController {
extension YHLookResignResultViewController: UITableViewDelegate, UITableViewDataSource { extension YHLookResignResultViewController: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int { func numberOfSections(in tableView: UITableView) -> Int {
return 3 if state == 0 {
return 3
} else if state == 1 {
return 1
} else {
return 2
}
} }
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if state == 2 {
if section == 1 {
return 1
}
return 2
}
return 1 return 1
} }
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let approveCell = tableView.dequeueReusableCell(withIdentifier: YHLookResignResultStateOneTableViewCell.cellReuseIdentifier, for: indexPath) as! YHLookResignResultStateOneTableViewCell if state == 0 {
approveCell.title = "第" + convertNumberToChineseText(indexPath.section + 1) + "批" let approveCell = tableView.dequeueReusableCell(withIdentifier: YHLookResignResultStateOneTableViewCell.cellReuseIdentifier, for: indexPath) as! YHLookResignResultStateOneTableViewCell
return approveCell approveCell.title = "第" + convertNumberToChineseText(indexPath.section + 1) + "批"
return approveCell
} else if state == 1 {
let approveCell = tableView.dequeueReusableCell(withIdentifier: YHLookResignResultStateTwoTableViewCell.cellReuseIdentifier, for: indexPath) as! YHLookResignResultStateTwoTableViewCell
approveCell.dataSource = [1,2,3,4,5,6]
return approveCell
} else {
if indexPath.section == 0 {
let approveCell = tableView.dequeueReusableCell(withIdentifier: YHLookResignResultStateThreePeopleTableViewCell.cellReuseIdentifier, for: indexPath) as! YHLookResignResultStateThreePeopleTableViewCell
approveCell.title = "第" + convertNumberToChineseText(indexPath.section + 1) + "批"
return approveCell
} else {
let approveCell = tableView.dequeueReusableCell(withIdentifier: YHLookResignResultStateThreeTableViewCell.cellReuseIdentifier, for: indexPath) as! YHLookResignResultStateThreeTableViewCell
approveCell.dataSource = [1,2,3,4,5,6]
return approveCell
}
}
} }
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 140 if state == 0 {
return 140
}
if state == 1 {
// return 258
let number = (6 - 1) / 2
return CGFloat(208 + 116 * number)
}
if indexPath.section == 0 {
return 126
}
// return 242
let number = (6 - 1) / 2
return CGFloat(192 + 116 * number)
} }
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
......
//
// YHLookResignAlertView.swift
// galaxy
//
// Created by EDY on 2024/10/12.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import AttributedString
class YHLookResignAlertView: UIView {
var dismissBlock: (() -> Void)?
var centerView: UIView!
var titleLabel: UILabel!
var messageLabel: UILabel!
var closeButton: UIButton!
var sureButton: UIButton!
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor(white: 0.5, alpha: 0.1)
let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap))
tap.delegate = self
addGestureRecognizer(tap)
setView()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setView() {
backgroundColor = UIColor(hex: 0x0000, alpha: 0.5)
centerView = {
let view = UIView()
view.backgroundColor = .white
return view
}()
addSubview(centerView)
centerView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.height.equalTo(497)
}
titleLabel = {
let label = UILabel()
label.text = "缴费须知"
label.font = UIFont.PFSC_M(ofSize: 26)
label.textColor = UIColor.mainTextColor
return label
}()
centerView.addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.top.equalTo(20)
make.height.equalTo(36)
make.left.equalTo(20)
}
closeButton = {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "service_card_close"), for: .normal)
button.addTarget(self, action: #selector(dismiss), for: .touchUpInside)
return button
}()
centerView.addSubview(closeButton)
closeButton.snp.makeConstraints { make in
make.right.equalTo(-20)
make.height.equalTo(24)
make.width.equalTo(24)
make.top.equalTo(26)
}
sureButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 14)
button.contentHorizontalAlignment = .center
button.setTitle("我已阅读并同意", for: .normal)
button.setTitleColor(UIColor.white, for: .normal)
button.backgroundColor = UIColor.brandMainColor
button.addTarget(self, action: #selector(sure), for: .touchUpInside)
button.layer.cornerRadius = kCornerRadius3
button.clipsToBounds = true
return button
}()
centerView.addSubview(sureButton)
sureButton.snp.makeConstraints { make in
make.right.equalTo(-20)
make.left.equalTo(20)
make.height.equalTo(48)
make.bottom.equalTo(-42)
}
messageLabel = {
let label = UILabel()
label.numberOfLines = 0
let a = ASAttributedString.init("根据港府政策,获批后缴费领取新电子签证时,申请人应身在香港;", .font(UIFont.PFSC_M(ofSize:14)), .foreground(UIColor.mainTextColor70))
let b = ASAttributedString.init("请勿在香港境外点击缴费链接", .font(UIFont.PFSC_M(ofSize:14)),.foreground(UIColor.failColor))
let c = ASAttributedString.init(",避免签证被锁,导致需重发签证,对您造成时间、费用成本损失,甚至身份失效\n\n建议入境香港后,远离海关,", .font(UIFont.PFSC_M(ofSize:14)), .foreground(UIColor.mainTextColor70))
let d = ASAttributedString.init("至少2个小时后再进行缴费", .font(UIFont.PFSC_M(ofSize:14)),.foreground(UIColor.failColor))
let e = ASAttributedString.init(",避免香港海关系统还未识别到入境记录!", .font(UIFont.PFSC_M(ofSize:14)), .foreground(UIColor.mainTextColor70))
label.attributed.text = a+b+c+d+e
return label
}()
centerView.addSubview(messageLabel)
messageLabel.snp.makeConstraints { make in
make.top.equalTo(68)
make.left.equalTo(20)
make.right.equalTo(-20)
}
centerView.layoutIfNeeded()
let corner = UIRectCorner(rawValue: UIRectCorner.topLeft.rawValue | UIRectCorner.topRight.rawValue)
let path = UIBezierPath(roundedRect:bounds,byRoundingCorners: corner,cornerRadii:CGSizeMake(kCornerRadius6, kCornerRadius6))
let layer = CAShapeLayer()
layer.frame = centerView.bounds
layer.path = path.cgPath
centerView.layer.mask = layer
}
@objc private func handleTap(_ sender: AnyObject?) {
dismiss()
}
static func show(dismiss: (() -> Void)? = nil) {
let view = YHLookResignAlertView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: KScreenHeight))
view.dismissBlock = dismiss
let window = UIApplication.shared.yhKeyWindow()
window?.addSubview(view)
}
@objc func dismiss() {
removeFromSuperview()
}
@objc func sure() {
if self.dismissBlock != nil {
self.dismissBlock!()
}
dismiss()
}
}
extension YHLookResignAlertView: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer:UIGestureRecognizer, shouldReceive touch:UITouch) -> Bool {
if touch.view == self {
return true
}
return false
}
}
//
// YHLookResignGuideLineView.swift
// galaxy
//
// Created by EDY on 2024/10/12.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHLookResignGuideLineView: UIView {
typealias Block = () -> ()
var block: Block?
lazy var blackMaskView: UIView = {
let view = UIView()
view.backgroundColor = UIColor(hex: 0x0F1214, alpha: 0.5)
// let tap = UITapGestureRecognizer(target: self, action: #selector(dismiss))
// view.addGestureRecognizer(tap)
return view
}()
lazy var whiteContentView: UIView = {
let view = UIView()
view.backgroundColor = .white
return view
}()
lazy var bottomView: UIView = {
let view = UIView()
view.backgroundColor = .clear
view.addSubview(self.rewardBtn)
self.rewardBtn.snp.makeConstraints { make in
make.top.equalToSuperview().offset(10)
make.left.equalTo(kMargin)
make.right.equalTo(-kMargin)
make.height.equalTo(44)
}
view.layer.zPosition = 10
return view
}()
//我已知悉,确认
lazy var rewardBtn: UIButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 15)
button.contentHorizontalAlignment = .center
button.setTitle("我已知悉,确认", for: .normal)
button.setTitleColor(UIColor.white, for: .normal)
button.layer.cornerRadius = kCornerRadius3
button.clipsToBounds = true
button.addTarget(self, action: #selector(clickSureBtn), for: .touchUpInside)
button.backgroundColor = UIColor.brandMainColor
return button
}()
lazy var myScrollView: UIScrollView = {
let view = UIScrollView()
view.backgroundColor = .clear
view.showsVerticalScrollIndicator = false
view.delegate = self
return view
}()
lazy var bkgImageV: UIImageView = {
let imageV = UIImageView()
imageV.image = UIImage(named: "look_resign_guide_line")
imageV.contentMode = .scaleToFill
imageV.clipsToBounds = true
return imageV
}()
lazy var bkgImageV2: UIImageView = {
let imageV = UIImageView()
imageV.image = UIImage(named: "look_resign_guide_line_bg")
imageV.contentMode = .scaleToFill
imageV.clipsToBounds = true
return imageV
}()
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override init(frame: CGRect) {
super.init(frame: frame)
setupUI()
}
private var timer : Timer?
private var maxCount : Int = 5
//之前是否展示过
var ischeckBeforeFlag : Bool = false {
didSet {
if ischeckBeforeFlag {
setButtonEnable(true)
} else {
setButtonEnable(false)
startTimer()
}
}
}
}
extension YHLookResignGuideLineView {
static func sheetView() -> YHLookResignGuideLineView {
let view = YHLookResignGuideLineView(frame:UIScreen.main.bounds)
return view
}
func show() {
UIApplication.shared.yhKeyWindow()?.addSubview(self)
UIView.animate(withDuration: 0.5) {
let whiteHeight = KScreenHeight - k_Height_NavigationtBarAndStatuBar
self.whiteContentView.frame = CGRect(x: 0, y: KScreenHeight - whiteHeight, width: KScreenWidth, height: whiteHeight)
}
}
@objc func dismiss() {
self.removeFromSuperview()
}
@objc func clickSureBtn() {
self.block?()
dismiss()
}
}
private extension YHLookResignGuideLineView {
@objc func timerFired() {
// 定时器触发时执行的代码
print("Timer fired")
self.maxCount = self.maxCount - 1
if self.maxCount < 0 {
self.stopTimer()
self.setButtonEnable(true)
} else {
rewardBtn.setTitle("请上滑看完指引后操作(\(maxCount)s)", for: .normal)
}
}
func startTimer() {
stopTimer()
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(timerFired), userInfo: nil, repeats: true)
RunLoop.current.add(timer!, forMode: .common)
}
func stopTimer() {
maxCount = 5
timer?.invalidate()
timer = nil
}
func setButtonEnable(_ enable : Bool) {
rewardBtn.isEnabled = enable
if enable {
rewardBtn.setTitle("我已知悉,确认", for: .normal)
rewardBtn.backgroundColor = UIColor.brandMainColor
} else {
rewardBtn.setTitle("请上滑看完指引后操作(5s)", for: .normal)
rewardBtn.backgroundColor = UIColor(hex: 0xB7C0CC, alpha: 1.0)
}
}
func setupUI() {
self.addSubview(blackMaskView)
self.addSubview(whiteContentView)
let corner = UIRectCorner(rawValue: UIRectCorner.topLeft.rawValue | UIRectCorner.topRight.rawValue)
let path = UIBezierPath(roundedRect:bounds,byRoundingCorners: corner,cornerRadii:CGSizeMake(kCornerRadius6, kCornerRadius6));
let layer = CAShapeLayer();
layer.frame = whiteContentView.bounds;
layer.path = path.cgPath;
whiteContentView.layer.mask = layer;
whiteContentView.clipsToBounds = true
blackMaskView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
let whiteHeight = KScreenHeight - k_Height_NavigationtBarAndStatuBar
// whiteContentView.snp.makeConstraints { make in
// make.left.right.bottom.equalToSuperview()
// make.height.equalTo(whiteHeight)
// }
whiteContentView.frame = CGRect(x: 0, y: KScreenHeight, width: KScreenWidth, height: whiteHeight)
whiteContentView.addSubview(bkgImageV2)
bkgImageV2.snp.makeConstraints { make in
make.top.left.right.equalToSuperview()
make.height.equalTo(375)
}
whiteContentView.addSubview(bottomView)
bottomView.snp.makeConstraints { make in
make.bottom.left.right.equalToSuperview()
make.height.equalTo(98)
}
whiteContentView.addSubview(myScrollView)
myScrollView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(20)
make.right.equalToSuperview()
make.width.equalTo(KScreenWidth)
make.height.equalTo(whiteHeight-98 - 20)
}
if let tmpImage = UIImage(named:"look_resign_guide_line") {
myScrollView.addSubview(bkgImageV)
bkgImageV.snp.makeConstraints { make in
make.top.centerX.equalToSuperview()
make.width.equalTo(335.fix)
make.height.equalTo(1435.fix)
}
myScrollView.contentSize = CGSize(width: KScreenWidth, height: 1435.fix)
}
}
}
extension YHLookResignGuideLineView : UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if !ischeckBeforeFlag {
let scrollViewContentHeight = scrollView.contentSize.height
let scrollOffsetThreshold = scrollViewContentHeight - scrollView.bounds.size.height
// 当前滚动位置
let currentOffset = scrollView.contentOffset.y
if currentOffset > scrollOffsetThreshold { // 接近底部
// 滚动到了底部
ischeckBeforeFlag = true
stopTimer()
setButtonEnable(true)
} else {
// 没有滚动到底部
}
}
}
}
//
// YHLookResignResultPrivateView.swift
// galaxy
//
// Created by EDY on 2024/10/12.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import AttributedString
class YHLookResignResultPrivateView: UIView {
var agreeButton: UIButton!
var messageLabel: UILabel!
var isAgree: Bool = false {
didSet{
agreeButton.isSelected = isAgree
}
}
override init(frame: CGRect) {
super.init(frame: frame)
setView()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setView() {
backgroundColor = .white
agreeButton = {
let button = UIButton(type: .custom)
button.setBackgroundImage(UIImage(named: "login_privacy_disagree_glay"), for: .normal)
button.setBackgroundImage(UIImage(named: "login_privacy_agree"), for: .selected)
button.addTarget(self, action: #selector(agreeClick), for: .touchUpInside)
return button
}()
addSubview(agreeButton)
agreeButton.snp.makeConstraints { make in
make.centerY.equalToSuperview()
make.left.equalTo(16)
make.height.equalTo(13)
make.width.equalTo(13)
}
messageLabel = {
let label = UILabel()
let a = ASAttributedString.init("已阅读并同意", .font(UIFont.PFSC_M(ofSize:13)), .foreground(UIColor.mainTextColor50))
let c = ASAttributedString.init("缴费须知", .font(UIFont.PFSC_M(ofSize:13)),.foreground(UIColor.brandMainColor), .action {
// 跳转引导
YHLookResignAlertView.show { [weak self] in
guard let self = self else { return }
self.agreeButton.isSelected = true
self.isAgree = self.agreeButton.isSelected
}
})
let e = ASAttributedString.init(",请勿在香港境外点击缴费链接", .font(UIFont.PFSC_M(ofSize:13)), .foreground(UIColor.mainTextColor50))
label.attributed.text = a+c+e
return label
}()
addSubview(messageLabel)
messageLabel.snp.makeConstraints { make in
make.left.equalTo(agreeButton.snp.right).offset(10)
make.centerY.equalToSuperview()
make.height.equalTo(20)
}
agreeButton.YH_clickEdgeInsets = UIEdgeInsets(top: 50, left: 50, bottom: 50, right: 50)
}
@objc func agreeClick() {
agreeButton.isSelected = !agreeButton.isSelected
isAgree = agreeButton.isSelected
}
}
//
// YHLookResignResultStateThreePeopleTableViewCell.swift
// galaxy
//
// Created by EDY on 2024/10/12.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHLookResignResultStateThreePeopleTableViewCell: UITableViewCell {
static let cellReuseIdentifier = "YHLookResignResultStateThreePeopleTableViewCell"
typealias ExperienceListBlock = (_ model: YHResignUploadDocModel, _ section: Int) -> ()
var clickBlock: ExperienceListBlock?
var centerView: UIView!
var flagView: UIView!
var titleLabel: UILabel!
var peopleLabel: UILabel!
var peopleValueLabel: UILabel!
var docLabel: UILabel!
var docValueLabel: UILabel!
var lineView: UIView!
var title: String = "" {
didSet {
titleLabel.text = title
}
}
var dataSource: [YHResignUploadDocModel]? {
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(0)
make.bottom.equalTo(0)
}
flagView = {
let view = UIView()
view.backgroundColor = UIColor.brandMainColor
return view
}()
centerView.addSubview(flagView)
flagView.snp.makeConstraints { make in
make.left.equalTo(0)
make.top.equalTo(18)
make.height.equalTo(16)
make.width.equalTo(4)
}
titleLabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 15)
label.text = "第一批"
label.textColor = UIColor.mainTextColor
return label
}()
centerView.addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.left.equalTo(16)
make.top.equalTo(16)
make.height.equalTo(20)
make.right.equalTo(-20)
}
lineView = {
let view = UIView()
view.backgroundColor = UIColor.separatorColor
return view
}()
centerView.addSubview(lineView)
lineView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.bottom.equalTo(-4)
make.height.equalTo(0.5)
}
peopleLabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 14)
label.text = "获批时间:"
label.textColor = UIColor.mainTextColor50
return label
}()
centerView.addSubview(peopleLabel)
peopleLabel.snp.makeConstraints { make in
make.left.equalTo(16)
make.top.equalTo(52)
make.height.equalTo(20)
make.right.equalTo(-18)
}
peopleValueLabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 14)
label.text = "2024年06月01日"
label.textColor = UIColor.mainTextColor50
label.textAlignment = .right
return label
}()
centerView.addSubview(peopleValueLabel)
peopleValueLabel.snp.makeConstraints { make in
make.left.equalTo(16)
make.top.equalTo(52)
make.height.equalTo(20)
make.right.equalTo(-16)
}
docLabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 14)
label.text = "缴费截止时间:"
label.textColor = UIColor.mainTextColor50
return label
}()
centerView.addSubview(docLabel)
docLabel.snp.makeConstraints { make in
make.left.equalTo(16)
make.top.equalTo(84)
make.height.equalTo(20)
make.right.equalTo(-16)
}
peopleValueLabel = {
let label = UILabel()
label.textColor = UIColor.mainTextColor50
label.font = UIFont.PFSC_M(ofSize: 14)
label.text = "2024年06月01日"
label.textAlignment = .right
return label
}()
centerView.addSubview(peopleValueLabel)
peopleValueLabel.snp.makeConstraints { make in
make.left.equalTo(16)
make.top.equalTo(84)
make.height.equalTo(20)
make.right.equalTo(-16)
}
}
func updateAllViews() {
}
}
//
// YHLookResignResultStateThreeTableViewCell.swift
// galaxy
//
// Created by EDY on 2024/10/12.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import AttributedString
class YHLookResignResultStateThreeTableViewCell: UITableViewCell {
static let cellReuseIdentifier = "YHLookResignResultStateThreeTableViewCell"
typealias ExperienceListBlock = (_ model: YHResignUploadDocModel, _ section: Int) -> ()
var clickBlock: ExperienceListBlock?
var centerView: UIView!
var flagView: UIView!
var flagImageView: UIImageView!
var flagLabel: UILabel!
var mainItemView: UIView!
var dataSource: [Int]? {
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(0)
make.bottom.equalTo(0)
}
flagView = {
let view = UIView()
view.backgroundColor = UIColor.contentBkgColor
return view
}()
centerView.addSubview(flagView)
flagView.snp.makeConstraints { make in
make.left.top.equalTo(12)
make.right.equalTo(-12)
make.height.equalTo(44)
}
flagLabel = {
let label = UILabel()
let a = ASAttributedString.init("请查看", .font(UIFont.PFSC_M(ofSize:14)), .foreground(UIColor.mainTextColor50))
let b = ASAttributedString.init("《", .font(UIFont.PFSC_M(ofSize:14)),.foreground(UIColor.brandMainColor))
let c = ASAttributedString.init("领取续签签证指引", .font(UIFont.PFSC_M(ofSize:14)),.foreground(UIColor.brandMainColor), .underline(.single), .action {
// 跳转引导
let view = YHLookResignGuideLineView.sheetView()
view.ischeckBeforeFlag = false
view.block = {
}
view.show()
})
let d = ASAttributedString.init(" 》", .font(UIFont.PFSC_M(ofSize:14)),.foreground(UIColor.brandMainColor))
let e = ASAttributedString.init("根据指引操作", .font(UIFont.PFSC_M(ofSize:14)), .foreground(UIColor.mainTextColor50))
label.attributed.text = a+b+c+d+e
return label
}()
flagView.addSubview(flagLabel)
flagLabel.snp.makeConstraints { make in
make.left.equalTo(12)
make.top.bottom.equalToSuperview()
make.right.equalTo(-12)
}
mainItemView = {
let view = UIView()
return view
}()
centerView.addSubview(mainItemView)
mainItemView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.top.equalTo(56)
}
}
func updateAllViews() {
guard let dataSource = dataSource else { return }
mainItemView.removeSubviews()
if dataSource.count == 1 {
let view = YHLookResignResultItemView(frame: .zero)
mainItemView.addSubview(view)
view.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalTo(20)
make.width.equalTo(197)
make.height.equalTo(142)
}
} else {
var count = 0
for item in dataSource {
let y: Int = count / 2
let x: Int = count % 2
let view = YHLookResignResultItemView(frame: .zero)
mainItemView.addSubview(view)
view.snp.makeConstraints { make in
if x == 0 {
make.left.equalTo(20)
} else {
make.right.equalTo(-20)
}
make.top.equalTo(y * 116 + 15)
make.width.equalTo(140.fix)
make.height.equalTo(101)
}
count = count + 1
}
}
}
}
//
// YHLookResignResultStateTwoTableViewCell.swift
// galaxy
//
// Created by EDY on 2024/10/12.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import AttributedString
class YHLookResignResultStateTwoTableViewCell: UITableViewCell {
static let cellReuseIdentifier = "YHLookResignResultStateTwoTableViewCell"
typealias ExperienceListBlock = (_ model: YHResignUploadDocModel, _ section: Int) -> ()
var clickBlock: ExperienceListBlock?
var centerView: UIView!
var flagView: UIView!
var flagImageView: UIImageView!
var flagLabel: UILabel!
var mainItemView: UIView!
var dataSource: [Int]? {
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(0)
make.bottom.equalTo(0)
}
flagView = {
let view = UIView()
view.backgroundColor = UIColor(hex: 0xfff5eb)
return view
}()
centerView.addSubview(flagView)
flagView.snp.makeConstraints { make in
make.left.top.equalTo(12)
make.right.equalTo(-12)
make.height.equalTo(60)
}
flagImageView = {
let view = UIImageView()
view.image = UIImage(named: "resign_upload_doc_flag")
return view
}()
flagView.addSubview(flagImageView)
flagImageView.snp.makeConstraints { make in
make.left.equalTo(12)
make.top.equalTo(15)
make.width.height.equalTo(14)
}
flagLabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 13)
label.text = "如无及时递交,可能导致身份丢失!请及时查看补件清单并上传资料!"
label.textColor = UIColor(hex: 0xff8000)
label.numberOfLines = 0
return label
}()
flagView.addSubview(flagLabel)
flagLabel.snp.makeConstraints { make in
make.left.equalTo(34)
make.top.equalTo(12)
make.right.equalTo(-12)
}
mainItemView = {
let view = UIView()
return view
}()
centerView.addSubview(mainItemView)
mainItemView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.top.equalTo(72)
}
}
func updateAllViews() {
guard let dataSource = dataSource else { return }
mainItemView.removeSubviews()
if dataSource.count == 1 {
let view = YHLookResignResultItemView(frame: .zero)
mainItemView.addSubview(view)
view.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalTo(20)
make.width.equalTo(197)
make.height.equalTo(142)
}
} else {
var count = 0
for item in dataSource {
let y: Int = count / 2
let x: Int = count % 2
let view = YHLookResignResultItemView(frame: .zero)
mainItemView.addSubview(view)
view.snp.makeConstraints { make in
if x == 0 {
make.left.equalTo(20)
} else {
make.right.equalTo(-20)
}
make.top.equalTo(y * 116 + 15)
make.width.equalTo(140.fix)
make.height.equalTo(101)
}
count = count + 1
}
}
}
}
class YHLookResignResultItemView: UIImageView {
var titleLabel: UILabel!
override init(frame: CGRect) {
super.init(frame:frame)
createUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func createUI() {
self.image = UIImage(named: "look_resign_result_mail_two")
titleLabel = {
let label = UILabel()
label.textColor = UIColor.mainTextColor
label.textAlignment = .center
label.font = UIFont.PFSC_B(ofSize:17)
label.text = "欧阳唯一欧阳"
label.numberOfLines = 0
return label
}()
self.addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.right.equalTo(-10)
make.left.equalTo(10)
make.top.equalTo(20)
make.bottom.equalTo(self.snp.centerY)
}
}
}
//
// YHResignDocumentUploadSignedDocument.swift
// galaxy
//
// Created by alexzzw on 2024/10/12.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import Foundation
class YHResignDocumentUploadSignedDocument {
var name: String = ""
var url: String = ""
func getUploadDict() -> [String: Any] {
return ["name": name, "url": url]
}
}
//
// YHResignDocumentUploadStatus.swift
// galaxy
//
// Created by alexzzw on 2024/10/8.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import Foundation
enum YHResignDocumentUploadStatus: Int, CaseIterable {
case pendingUpload = 0
case notSent = 1
case sending = 2
case sent = 3
case received = 4
case approved = 5
case rejected = 6
var description: String {
switch self {
case .pendingUpload:
return "待上传"
case .notSent:
return "未发送"
case .sending:
return "发送中"
case .sent:
return "已发送"
case .received:
return "已签收"
case .approved:
return "审核通过"
case .rejected:
return "驳回"
}
}
}
...@@ -10,7 +10,7 @@ import UIKit ...@@ -10,7 +10,7 @@ import UIKit
class YHResignDocumentStatusCell: YHResignDocumentCell { class YHResignDocumentStatusCell: YHResignDocumentCell {
enum ButtonsLayoutStyle: Int { enum ButtonsLayoutStyle: Int {
case one = 0, two, three case one = 0, two, three, four
} }
struct ButtonsConfig { struct ButtonsConfig {
...@@ -23,6 +23,7 @@ class YHResignDocumentStatusCell: YHResignDocumentCell { ...@@ -23,6 +23,7 @@ class YHResignDocumentStatusCell: YHResignDocumentCell {
private var leftButtonClickEvent: (() -> Void)? private var leftButtonClickEvent: (() -> Void)?
private var midButtonClickEvent: (() -> Void)? private var midButtonClickEvent: (() -> Void)?
private var rightButtonClickEvent: (() -> Void)? private var rightButtonClickEvent: (() -> Void)?
private var farRightButtonClickEvent: (() -> Void)?
private lazy var infoTitleLabel: UILabel = { private lazy var infoTitleLabel: UILabel = {
let label = UILabel() let label = UILabel()
...@@ -53,7 +54,7 @@ class YHResignDocumentStatusCell: YHResignDocumentCell { ...@@ -53,7 +54,7 @@ class YHResignDocumentStatusCell: YHResignDocumentCell {
private lazy var fileIconView: UIImageView = { private lazy var fileIconView: UIImageView = {
let view = UIImageView() let view = UIImageView()
view.image = UIImage(named: "resign_doc_file_icon") view.image = UIImage(named: "my_cer_type_word")
return view return view
}() }()
...@@ -103,6 +104,15 @@ class YHResignDocumentStatusCell: YHResignDocumentCell { ...@@ -103,6 +104,15 @@ class YHResignDocumentStatusCell: YHResignDocumentCell {
return button return button
}() }()
private lazy var farRightButton: UIButton = {
let button = UIButton(type: .custom)
button.isHidden = true
button.setTitleColor(UIColor.brandMainColor, for: .normal)
button.titleLabel?.font = .PFSC_R(ofSize: 14)
button.addTarget(self, action: #selector(farRightButtonDidClick(_:)), for: .touchUpInside)
return button
}()
private lazy var leftLineView: UIView = { private lazy var leftLineView: UIView = {
let view = UIView() let view = UIView()
view.isHidden = true view.isHidden = true
...@@ -116,6 +126,13 @@ class YHResignDocumentStatusCell: YHResignDocumentCell { ...@@ -116,6 +126,13 @@ class YHResignDocumentStatusCell: YHResignDocumentCell {
view.backgroundColor = .separatorColor view.backgroundColor = .separatorColor
return view return view
}() }()
private lazy var farRightLineView: UIView = {
let view = UIView()
view.isHidden = true
view.backgroundColor = .separatorColor
return view
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier) super.init(style: style, reuseIdentifier: reuseIdentifier)
...@@ -149,6 +166,10 @@ extension YHResignDocumentStatusCell { ...@@ -149,6 +166,10 @@ extension YHResignDocumentStatusCell {
@objc private func rightButtonDidClick(_ sender: UIButton) { @objc private func rightButtonDidClick(_ sender: UIButton) {
rightButtonClickEvent?() rightButtonClickEvent?()
} }
@objc private func farRightButtonDidClick(_ sender: UIButton) {
farRightButtonClickEvent?()
}
} }
extension YHResignDocumentStatusCell { extension YHResignDocumentStatusCell {
...@@ -190,6 +211,8 @@ extension YHResignDocumentStatusCell { ...@@ -190,6 +211,8 @@ extension YHResignDocumentStatusCell {
rightButton.isHidden = true rightButton.isHidden = true
leftLineView.isHidden = true leftLineView.isHidden = true
rightLineView.isHidden = true rightLineView.isHidden = true
farRightButton.isHidden = true
farRightLineView.isHidden = true
if let first = buttonsConfig.names.first { if let first = buttonsConfig.names.first {
leftButton.setTitle(first, for: .normal) leftButton.setTitle(first, for: .normal)
...@@ -209,12 +232,19 @@ extension YHResignDocumentStatusCell { ...@@ -209,12 +232,19 @@ extension YHResignDocumentStatusCell {
make.left.top.equalToSuperview() make.left.top.equalToSuperview()
make.width.height.equalTo(0) make.width.height.equalTo(0)
} }
farRightButton.snp.remakeConstraints { make in
make.left.top.equalToSuperview()
make.width.height.equalTo(0)
}
case .two: case .two:
leftButton.isHidden = false leftButton.isHidden = false
midButton.isHidden = false midButton.isHidden = false
rightButton.isHidden = true rightButton.isHidden = true
leftLineView.isHidden = false leftLineView.isHidden = false
rightLineView.isHidden = true rightLineView.isHidden = true
farRightButton.isHidden = true
farRightLineView.isHidden = true
if buttonsConfig.names.count > 1 { if buttonsConfig.names.count > 1 {
leftButton.setTitle(buttonsConfig.names[0], for: .normal) leftButton.setTitle(buttonsConfig.names[0], for: .normal)
midButton.setTitle(buttonsConfig.names[1], for: .normal) midButton.setTitle(buttonsConfig.names[1], for: .normal)
...@@ -244,6 +274,10 @@ extension YHResignDocumentStatusCell { ...@@ -244,6 +274,10 @@ extension YHResignDocumentStatusCell {
make.left.top.equalToSuperview() make.left.top.equalToSuperview()
make.width.height.equalTo(0) make.width.height.equalTo(0)
} }
farRightButton.snp.remakeConstraints { make in
make.left.top.equalToSuperview()
make.width.height.equalTo(0)
}
case .three: case .three:
leftButton.isHidden = false leftButton.isHidden = false
...@@ -251,6 +285,9 @@ extension YHResignDocumentStatusCell { ...@@ -251,6 +285,9 @@ extension YHResignDocumentStatusCell {
rightButton.isHidden = false rightButton.isHidden = false
leftLineView.isHidden = false leftLineView.isHidden = false
rightLineView.isHidden = false rightLineView.isHidden = false
farRightButton.isHidden = true
farRightLineView.isHidden = true
if buttonsConfig.names.count > 2 { if buttonsConfig.names.count > 2 {
leftButton.setTitle(buttonsConfig.names[0], for: .normal) leftButton.setTitle(buttonsConfig.names[0], for: .normal)
midButton.setTitle(buttonsConfig.names[1], for: .normal) midButton.setTitle(buttonsConfig.names[1], for: .normal)
...@@ -294,6 +331,79 @@ extension YHResignDocumentStatusCell { ...@@ -294,6 +331,79 @@ extension YHResignDocumentStatusCell {
make.top.right.bottom.equalToSuperview() make.top.right.bottom.equalToSuperview()
make.width.equalTo(leftButton) make.width.equalTo(leftButton)
} }
farRightButton.snp.remakeConstraints { make in
make.left.top.equalToSuperview()
make.width.height.equalTo(0)
}
case .four:
leftButton.isHidden = false
midButton.isHidden = false
rightButton.isHidden = false
leftLineView.isHidden = false
rightLineView.isHidden = false
farRightButton.isHidden = false
farRightLineView.isHidden = false
if buttonsConfig.names.count > 3 {
leftButton.setTitle(buttonsConfig.names[0], for: .normal)
midButton.setTitle(buttonsConfig.names[1], for: .normal)
rightButton.setTitle(buttonsConfig.names[2], for: .normal)
farRightButton.setTitle(buttonsConfig.names[3], for: .normal)
}
if buttonsConfig.actions.count > 3 {
leftButtonClickEvent = buttonsConfig.actions[0]
leftButton.addTarget(self, action: #selector(leftButtonDidClick(_:)), for: .touchUpInside)
midButtonClickEvent = buttonsConfig.actions[1]
midButton.addTarget(self, action: #selector(midButtonDidClick(_:)), for: .touchUpInside)
rightButtonClickEvent = buttonsConfig.actions[2]
rightButton.addTarget(self, action: #selector(rightButtonDidClick(_:)), for: .touchUpInside)
farRightButtonClickEvent = buttonsConfig.actions[3]
farRightButton.addTarget(self, action: #selector(farRightButtonDidClick(_:)), for: .touchUpInside)
}
leftButton.snp.remakeConstraints { make in
make.left.top.bottom.equalToSuperview()
}
leftLineView.snp.remakeConstraints { make in
make.left.equalTo(leftButton.snp.right)
make.height.equalTo(16)
make.width.equalTo(0.5)
make.centerY.equalToSuperview()
}
midButton.snp.remakeConstraints { make in
make.left.equalTo(leftLineView.snp.right)
make.top.bottom.equalToSuperview()
make.width.equalTo(leftButton)
}
rightLineView.snp.remakeConstraints { make in
make.left.equalTo(midButton.snp.right)
make.height.equalTo(16)
make.width.equalTo(0.5)
make.centerY.equalToSuperview()
}
rightButton.snp.remakeConstraints { make in
make.left.equalTo(rightLineView.snp.right)
make.top.bottom.equalToSuperview()
make.width.equalTo(leftButton)
}
farRightLineView.snp.remakeConstraints { make in
make.left.equalTo(rightButton.snp.right)
make.height.equalTo(16)
make.width.equalTo(0.5)
make.centerY.equalToSuperview()
}
farRightButton.snp.remakeConstraints { make in
make.left.equalTo(farRightLineView.snp.right)
make.top.right.bottom.equalToSuperview()
make.width.equalTo(leftButton)
}
} }
} }
...@@ -307,7 +417,7 @@ extension YHResignDocumentStatusCell { ...@@ -307,7 +417,7 @@ extension YHResignDocumentStatusCell {
fileCoverView.addSubview(fileNameLabel) fileCoverView.addSubview(fileNameLabel)
subContainerView.addSubview(bottomLineView) subContainerView.addSubview(bottomLineView)
subContainerView.addSubview(buttonsCoverView) subContainerView.addSubview(buttonsCoverView)
buttonsCoverView.addSubviews([leftButton, leftLineView, midButton, rightLineView, rightButton]) buttonsCoverView.addSubviews([leftButton, leftLineView, midButton, rightLineView, rightButton, farRightLineView, farRightButton])
infoTitleLabel.snp.makeConstraints { make in infoTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18) make.left.equalToSuperview().offset(18)
...@@ -387,6 +497,19 @@ extension YHResignDocumentStatusCell { ...@@ -387,6 +497,19 @@ extension YHResignDocumentStatusCell {
rightButton.snp.makeConstraints { make in rightButton.snp.makeConstraints { make in
make.left.equalTo(rightLineView.snp.right) make.left.equalTo(rightLineView.snp.right)
make.top.bottom.equalToSuperview()
make.width.equalTo(leftButton)
}
farRightLineView.snp.makeConstraints { make in
make.left.equalTo(rightButton.snp.right)
make.height.equalTo(16)
make.width.equalTo(0.5)
make.centerY.equalToSuperview()
}
farRightButton.snp.makeConstraints { make in
make.left.equalTo(farRightLineView.snp.right)
make.top.right.bottom.equalToSuperview() make.top.right.bottom.equalToSuperview()
make.width.equalTo(leftButton) make.width.equalTo(leftButton)
} }
......
//
// YHResignDocumentUploadActionCell.swift
// galaxy
//
// Created by alexzzw on 2024/10/8.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHResignDocumentUploadActionCell: YHResignDocumentCell {
static let cellReuseIdentifier = "YHResignDocumentUploadActionCell"
var uploadButtonClickEvent: (() -> Void)?
var sureButtonClickEvent: (() -> Void)?
private lazy var uploadView: YHWorkItemAddView = {
let view = YHWorkItemAddView()
view.addBtn.setTitle("上传已签署件".local, for: .normal)
view.addBtn.setImage(UIImage(named: "document_upload"), for: .normal)
view.clickBlock = {[weak self] in
guard let self = self else { return }
self.uploadButtonClickEvent?()
}
return view
}()
private lazy var promptLabel: UILabel = {
let label = UILabel()
label.font = UIFont.PFSC_R(ofSize: 12)
label.textColor = UIColor.labelTextColor2
label.numberOfLines = 0
label.lineBreakMode = .byCharWrapping
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineHeightMultiple = 1.19
let attributedText = NSAttributedString(
string: "注意:1.支持PDF、JPEG、JPG、PNG、BMP、TIFF文件格式,文件大小不限制;2.上传成功后会自动更新文件名;3.最多上传10张图片或文件,若有问题联系文案老师",
attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle]
)
label.attributedText = attributedText
return label
}()
private lazy var sureButton: UIButton = {
let button = UIButton(type: .custom)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 16)
let buttonName = "确定已上传,提交"
button.setTitle(buttonName, for: .normal)
button.setTitle(buttonName, for: .highlighted)
button.setTitleColor( UIColor(hex:0xffffff), for: .normal)
button.setTitleColor( UIColor(hex:0xffffff), for: .highlighted)
button.addTarget(self, action: #selector(sureButtonClicked), for: .touchUpInside)
button.layer.cornerRadius = kCornerRadius3
button.clipsToBounds = true
button.backgroundColor = .brandMainColor
return button
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupCellInfo(uploadName: String, isUploadButtonEnable: Bool = false, isSureButtonEnable: Bool = false, topMargin: CGFloat = 16) {
uploadView.addBtn.setTitle(uploadName.local, for: .normal)
uploadView.alpha = isUploadButtonEnable ? 1 : 0.4
uploadView.addBtn.isEnabled = isUploadButtonEnable
sureButton.alpha = isSureButtonEnable ? 1 : 0.4
sureButton.isEnabled = isSureButtonEnable
uploadView.snp.remakeConstraints { make in
make.top.equalToSuperview().offset(topMargin)
make.left.equalToSuperview().offset(18)
make.right.equalToSuperview().offset(-18)
make.height.equalTo(45)
}
}
}
extension YHResignDocumentUploadActionCell {
@objc private func sureButtonClicked() {
sureButtonClickEvent?()
}
private func setupUI() {
updateCellCorner(.bottom)
subContainerView.addSubview(uploadView)
subContainerView.addSubview(promptLabel)
subContainerView.addSubview(sureButton)
uploadView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(16)
make.left.equalToSuperview().offset(18)
make.right.equalToSuperview().offset(-18)
make.height.equalTo(45)
}
promptLabel.snp.makeConstraints { make in
make.top.equalTo(uploadView.snp.bottom).offset(16)
make.left.equalTo(uploadView.snp.left)
make.right.lessThanOrEqualToSuperview().offset(-18)
}
sureButton.snp.makeConstraints { make in
make.top.equalTo(promptLabel.snp.bottom).offset(16)
make.left.equalTo(uploadView.snp.left)
make.right.equalTo(uploadView.snp.right)
make.bottom.equalToSuperview().offset(-16)
make.height.equalTo(46)
}
}
}
//
// YHResignDocumentUploadFileCell.swift
// galaxy
//
// Created by alexzzw on 2024/10/8.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHResignDocumentUploadFileCell: YHResignDocumentCell {
static let cellReuseIdentifier = "YHResignDocumentUploadFileCell"
var editButtonClickEvent: (() -> Void)?
private lazy var fileIconView: UIImageView = {
let view = UIImageView()
view.image = UIImage(named: "my_cer_type_word")
return view
}()
private lazy var fileNameLabel: UILabel = {
let label = UILabel()
label.textColor = UIColor(hexString: "#222222")
label.font = .PFSC_M(ofSize: 14)
label.numberOfLines = 0
label.lineBreakMode = .byCharWrapping
return label
}()
private lazy var editButton: UIButton = {
let button = UIButton(type: .custom)
button.setBackgroundImage(UIImage(named: "my_cer_btn_edit"), for: .normal)
button.addTarget(self, action: #selector(editButtonClicked), for: .touchUpInside)
return button
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupCellInfo(_ fileName: String, cellType: YHResignRoundCellType = .mid) {
fileNameLabel.text = fileName
updateFileIcon(fileName)
updateCellCorner(cellType)
}
}
extension YHResignDocumentUploadFileCell {
@objc private func editButtonClicked() {
editButtonClickEvent?()
}
private func setupUI() {
updateCellCorner(.mid)
subContainerView.addSubview(fileIconView)
subContainerView.addSubview(fileNameLabel)
subContainerView.addSubview(editButton)
editButton.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-18)
make.centerY.equalToSuperview()
make.width.height.equalTo(16)
}
fileIconView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(24)
make.centerY.equalToSuperview()
make.width.height.equalTo(31)
}
fileNameLabel.snp.makeConstraints { make in
make.top.greaterThanOrEqualToSuperview().offset(16)
make.left.equalTo(fileIconView.snp.right).offset(12)
make.right.lessThanOrEqualTo(editButton.snp.left).offset(-10)
make.centerY.equalToSuperview()
make.bottom.lessThanOrEqualToSuperview().offset(-16)
}
editButton.YH_clickEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
}
private func updateFileIcon(_ fileName: String) {
let suffix = fileName.pathExtension.lowercased()
var iconImgName = ""
if suffix == "jpeg" {
iconImgName = "my_cer_type_jpg"
} else if suffix == "jpg" {
iconImgName = "my_cer_type_jpg"
} else if suffix == "png" {
iconImgName = "my_cer_type_png"
} else if suffix == "pdf" {
iconImgName = "my_cer_type_pdf"
} else if suffix == "doc" || suffix == "docx" {
iconImgName = "my_cer_type_word"
} else if suffix == "ppt" || suffix == "pptx" {
iconImgName = "my_cer_type_ppt"
} else if suffix == "bmp" {
iconImgName = "my_cer_type_bmp"
} else if suffix == "tiff" {
iconImgName = "my_cer_type_tiff"
} else if suffix == "xls" || suffix == "xlsx" {
iconImgName = "my_cer_type_excel"
}
fileIconView.image = UIImage(named: iconImgName)
}
}
//
// YHResignDocumentUploadHeaderCell.swift
// galaxy
//
// Created by alexzzw on 2024/10/8.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHResignDocumentUploadHeaderCell: YHResignDocumentCell {
static let cellReuseIdentifier = "YHResignDocumentUploadHeaderCell"
private lazy var infoTitleLabel: UILabel = {
let label = UILabel()
label.font = .PFSC_M(ofSize: 17)
label.textColor = .mainTextColor
return label
}()
private lazy var bottomLineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
return view
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupCellInfo(_ title: String?) {
infoTitleLabel.text = title
}
}
extension YHResignDocumentUploadHeaderCell {
private func setupUI() {
updateCellCorner(.top)
subContainerView.addSubview(infoTitleLabel)
subContainerView.addSubview(bottomLineView)
bottomLineView.snp.makeConstraints { make in
make.bottom.equalToSuperview()
make.height.equalTo(0.5)
make.left.equalToSuperview().offset(18)
make.right.equalToSuperview().offset(-18)
}
infoTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18)
make.right.lessThanOrEqualToSuperview().offset(-18)
make.top.equalToSuperview().offset(16)
make.bottom.equalToSuperview().offset(-12)
}
}
}
...@@ -8,6 +8,11 @@ ...@@ -8,6 +8,11 @@
import UIKit import UIKit
enum YHResignDocumentUploadSignedDocType: Int {
case upload = 1
case submit = 2
}
class YHResignDocumentViewModel: YHBaseViewModel { class YHResignDocumentViewModel: YHBaseViewModel {
var documentList: YHResignDocumentListModel = YHResignDocumentListModel() var documentList: YHResignDocumentListModel = YHResignDocumentListModel()
...@@ -156,4 +161,42 @@ class YHResignDocumentViewModel: YHBaseViewModel { ...@@ -156,4 +161,42 @@ class YHResignDocumentViewModel: YHBaseViewModel {
} }
} }
func sendOriginalDoc(_ docId: Int, _ email: String, callBackBlock: @escaping (_ success: Bool, _ error: YHErrorModel?) -> () ) {
let params: [String : Any] = ["docId": docId, "email": email]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.ResignDocument.sendOriginalDoc
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { json, code in
//1. json字符串 转 对象
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)
}
}
func uploadSignedDoc(_ docId: Int, type: YHResignDocumentUploadSignedDocType, _ signedDocument: [YHResignDocumentUploadSignedDocument], callBackBlock: @escaping (_ success: Bool, _ error: YHErrorModel?) -> () ) {
let docDics = signedDocument.map {
$0.getUploadDict()
}
let params: [String : Any] = ["docId": docId,
"type": type.rawValue,
"signedDocument": docDics]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.ResignDocument.uploadSignedDoc
let _ = YHNetRequest.postRequest(url: strUrl, params: params) { json, code in
//1. json字符串 转 对象
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)
}
}
} }
...@@ -108,6 +108,11 @@ extension YHServiceOrderProgressTableViewCell { ...@@ -108,6 +108,11 @@ extension YHServiceOrderProgressTableViewCell {
titleLabel.text = "我的文书" titleLabel.text = "我的文书"
messageLabel.text = "您的文书还没确认哦~" messageLabel.text = "您的文书还没确认哦~"
} }
if model.type == 7 {
titleLabel.text = "递交确认"
messageLabel.text = "您的信息确认签署还没生成哦~"
buttonLabel.text = "去确认"
}
let b: ASAttributedString = .init(NSAttributedString(string: "\(model.percentage)"), .font(UIFont(name: "DINAlternate-Bold", size: 24)!),.foreground(UIColor.mainTextColor.withAlphaComponent(0.3))) let b: ASAttributedString = .init(NSAttributedString(string: "\(model.percentage)"), .font(UIFont(name: "DINAlternate-Bold", size: 24)!),.foreground(UIColor.mainTextColor.withAlphaComponent(0.3)))
let bb: ASAttributedString = .init("%", .font(UIFont.PFSC_M(ofSize: 10)),.foreground(UIColor.mainTextColor.withAlphaComponent(0.3))) let bb: ASAttributedString = .init("%", .font(UIFont.PFSC_M(ofSize: 10)),.foreground(UIColor.mainTextColor.withAlphaComponent(0.3)))
progressLabel.attributed.text = b + bb progressLabel.attributed.text = b + bb
...@@ -267,6 +272,16 @@ extension YHServiceOrderProgressTableViewCell { ...@@ -267,6 +272,16 @@ extension YHServiceOrderProgressTableViewCell {
} }
} }
if model.type == 7 {
titleLabel.text = "递交确认"
let a: ASAttributedString = .init("您还有", .font(UIFont.PFSC_M(ofSize: 13)),.foreground(UIColor.yhGreyColor))
let aa: ASAttributedString = .init(NSAttributedString(string: "\(model.num)项"), .font(UIFont.PFSC_M(ofSize: 13)),.foreground(UIColor.brandMainColor))
let aaa: ASAttributedString = .init("信息确认签署待完成哦~", .font(UIFont.PFSC_M(ofSize: 13)),.foreground(UIColor.yhGreyColor))
messageLabel.attributed.text = a + aa + aaa
buttonLabel.text = "去确认"
}
let b: ASAttributedString = .init(NSAttributedString(string: "\(model.percentage)"), .font(UIFont(name: "DINAlternate-Bold", size: 24)!),.foreground(UIColor.mainTextColor)) let b: ASAttributedString = .init(NSAttributedString(string: "\(model.percentage)"), .font(UIFont(name: "DINAlternate-Bold", size: 24)!),.foreground(UIColor.mainTextColor))
let bb: ASAttributedString = .init("%", .font(UIFont.PFSC_M(ofSize: 10)),.foreground(UIColor.mainTextColor.withAlphaComponent(0.3))) let bb: ASAttributedString = .init("%", .font(UIFont.PFSC_M(ofSize: 10)),.foreground(UIColor.mainTextColor.withAlphaComponent(0.3)))
progressLabel.attributed.text = b + bb progressLabel.attributed.text = b + bb
...@@ -491,6 +506,10 @@ extension YHServiceOrderProgressTableViewCell { ...@@ -491,6 +506,10 @@ extension YHServiceOrderProgressTableViewCell {
titleLabel.text = "我的文书" titleLabel.text = "我的文书"
messageLabel.text = "恭喜您,文书已全部定稿~" messageLabel.text = "恭喜您,文书已全部定稿~"
} }
if model.type == 7 {
titleLabel.text = "递交确认"
messageLabel.text = "恭喜您,信息确认签署已完成~"
}
if model.type == 15 { if model.type == 15 {
titleLabel.text = "港府获批结果" titleLabel.text = "港府获批结果"
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
// //
import UIKit import UIKit
import SmartCodable
class YHServiceCenterViewModel: YHBaseViewModel { class YHServiceCenterViewModel: YHBaseViewModel {
//合同列表 数据 //合同列表 数据
...@@ -14,6 +15,7 @@ class YHServiceCenterViewModel: YHBaseViewModel { ...@@ -14,6 +15,7 @@ class YHServiceCenterViewModel: YHBaseViewModel {
//服务中心进度模型 //服务中心进度模型
var arrDataForSeviceCenterProgress: [YHServiceCenterProgressModel] = [] var arrDataForSeviceCenterProgress: [YHServiceCenterProgressModel] = []
var mainModel: YHServiceCenterMainModel = YHServiceCenterMainModel() var mainModel: YHServiceCenterMainModel = YHServiceCenterMainModel()
var url: String = ""
} }
//请求接口 //请求接口
...@@ -122,5 +124,40 @@ extension YHServiceCenterViewModel { ...@@ -122,5 +124,40 @@ extension YHServiceCenterViewModel {
callBackBlock(false,err) callBackBlock(false,err)
} }
} }
func getServiceMainDocUrl(orderId: Int, callBackBlock:@escaping (_ success: Bool, _ error:YHErrorModel?)->()) {
let params: [String : Any] = ["order_id": orderId]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Signature.signUrl
let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
if json.code == 200 {
DispatchQueue.global().async {
guard let dic = json.data?.peel as? [String : Any], let resultModel = YHDocModel.deserialize(from: dic) else {
DispatchQueue.main.async {
callBackBlock(false,nil)
}
return
}
DispatchQueue.main.async {
self.url = resultModel.url
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)
}
}
//
} }
struct YHDocModel : SmartCodable {
var url : String = ""
}
...@@ -334,6 +334,7 @@ class YHAllApiName { ...@@ -334,6 +334,7 @@ class YHAllApiName {
// 查看签署状态 // 查看签署状态
static let signCallBack = "infoflow/sign/sign-callback" static let signCallBack = "infoflow/sign/sign-callback"
static let personal = "infoflow/sign/check-personal-status" static let personal = "infoflow/sign/check-personal-status"
static let signUrl = "infoflow/get-sign-url"
} }
//我的文书 //我的文书
...@@ -546,6 +547,10 @@ class YHAllApiName { ...@@ -546,6 +547,10 @@ class YHAllApiName {
static let previewResginDocument = "super-app/renewal/views" static let previewResginDocument = "super-app/renewal/views"
// 获取临时链接 // 获取临时链接
static let getResginDocumentUrl = "super-app/renewal/doc/url" static let getResginDocumentUrl = "super-app/renewal/doc/url"
// 发送原始文件
static let sendOriginalDoc = "super-app/renewal/send-original-doc"
// 上传签署文件
static let uploadSignedDoc = "super-app/renewal/upload-signed-doc"
} }
// 续签预约 // 续签预约
......
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "look_resign_guide_line@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "look_resign_guide_line@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "look_resign_guide_line_bg@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "look_resign_guide_line_bg@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "look_resign_result_mail_four@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "look_resign_result_mail_four@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "look_resign_result_mail_one@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "look_resign_result_mail_one@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "look_resign_result_mail_three@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "look_resign_result_mail_three@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "look_resign_result_mail_two@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "look_resign_result_mail_two@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "resign_upload_doc_flag@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "resign_upload_doc_flag@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