Commit 52d9b311 authored by pete谢兆麟's avatar pete谢兆麟

整理

parent 95ddf51b
This diff is collapsed.
//
// YHMakePlanViewController.swift
// galaxy
//
// Created by EDY on 2025/3/27.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHMakePlanViewController: YHBaseViewController {
var items: [[Int]] = []
let viewModel = YHSchemeViewModel()
lazy var tableView: UITableView = {
let tableView = UITableView(frame: .zero, style: .grouped)
if #available(iOS 11.0, *) {
tableView.contentInsetAdjustmentBehavior = .never
}
tableView.showsVerticalScrollIndicator = false
tableView.backgroundColor = .clear
tableView.separatorStyle = .none
tableView.delegate = self
tableView.dataSource = self
tableView.register(cellWithClass: YHMakePlanCell.self)
tableView.tableHeaderView = YHMakePlanHeadView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: 333.fix + 44))
return tableView
}()
lazy var priceView: YHMakePlanBottomView = {
let view = YHMakePlanBottomView()
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
// gk_navTitle = "续签至永居方案私人订制"
gk_navTitleColor = .white
gk_navBarAlpha = 1
// gk_navBackgroundImage = UIImage(named: "my_scheme_nav")
gk_backImage = UIImage(named: "back_icon_white")
// Create and add to your view
view.addSubview(priceView)
priceView.snp.makeConstraints { make in
make.bottom.left.right.equalToSuperview()
make.height.equalTo(98)
}
// Configure with data
priceView.configure(price: "489800") {
print("Action button tapped!")
YHMakePlanShareAlertView.show { _ in
}
}
self.view.addSubview(tableView)
tableView.snp.makeConstraints { make in
make.top.left.right.equalToSuperview()
make.bottom.equalTo(-98)
}
requestData()
}
func requestData() {
tableView.reloadData()
}
func submitTargets() {
}
}
extension YHMakePlanViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// return items.count
return 4
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withClass: YHMakePlanCell.self) as? YHMakePlanCell else {
return UITableViewCell()
}
cell.dataSource = [CompanyPackageData(title: "香港身份申请至永居删除", subtitle: "香港高才入境计划申请到永居全流程", companyName: "", priceTag: "", price: "¥20000.00", showCheckmark: true)]
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 158 + 16
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = UIView()
return view
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 0.01
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let view = UIView()
return view
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 0.01
}
}
//
// YHMakePlanBottomView.swift
// galaxy
//
// Created by EDY on 2025/3/28.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHMakePlanBottomView: UIView {
// MARK: - UI Elements
private lazy var priceLabel: UILabel = {
let label = UILabel()
label.font = UIFont.systemFont(ofSize: 24, weight: .bold)
label.textColor = .black
label.textAlignment = .left
return label
}()
private lazy var priceButton: UIButton = {
let label = UIButton()
label.setTitle(">", for: .normal)
label.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .medium)
label.setTitleColor(UIColor.systemBlue, for: .normal)
label.addTarget(self, action: #selector(handleAction), for: .touchUpInside)
return label
}()
private lazy var actionButton: UIButton = {
let button = UIButton(type: .system)
button.setTitle("去办理 →", for: .normal)
button.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .medium)
button.setTitleColor(UIColor.systemBlue, for: .normal)
button.addTarget(self, action: #selector(handleAction), for: .touchUpInside)
return button
}()
// MARK: - Properties
var price: String = "" {
didSet {
priceLabel.text = "\(price)"
}
}
var actionHandler: (() -> Void)?
// MARK: - Initialization
override init(frame: CGRect) {
super.init(frame: frame)
setupUI()
setupConstraints()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
// MARK: - Setup
private func setupUI() {
backgroundColor = .white
addSubview(priceLabel)
addSubview(priceButton)
addSubview(actionButton)
}
private func setupConstraints() {
priceLabel.snp.makeConstraints { make in
make.top.equalToSuperview().offset(20)
make.left.equalToSuperview().offset(16)
make.height.equalTo(28)
}
priceButton.snp.makeConstraints { make in
make.left.equalTo(priceLabel.snp.right)
make.width.height.equalTo(16)
make.centerY.equalTo(priceLabel.snp.centerY)
}
actionButton.snp.makeConstraints { make in
make.top.equalToSuperview().offset(9)
make.right.equalToSuperview().offset(-16)
make.width.equalTo(120)
make.height.equalTo(46)
}
}
// MARK: - Action
@objc private func handleAction() {
actionHandler?()
}
// MARK: - Configuration
func configure(price: String, actionText: String? = nil, actionHandler: (() -> Void)? = nil) {
self.price = price
if let actionText = actionText {
actionButton.setTitle(actionText, for: .normal)
}
self.actionHandler = actionHandler
}
}
//
// YHMakePlanCardView.swift
// galaxy
//
// Created by EDY on 2025/3/28.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHMakePlanCardView: UIView {
// MARK: - UI Elements
private lazy var containerView: UIView = {
let view = UIView()
view.backgroundColor = .white
return view
}()
private lazy var titleLabel: UILabel = {
let label = UILabel()
label.font = UIFont.systemFont(ofSize: 16, weight: .semibold)
label.textColor = .darkText
label.numberOfLines = 1
return label
}()
private lazy var subtitleLabel: UILabel = {
let label = UILabel()
label.font = UIFont.systemFont(ofSize: 13, weight: .regular)
label.textColor = .gray
label.numberOfLines = 2
return label
}()
private lazy var companyImageView: UIImageView = {
let view = UIImageView()
view.backgroundColor = UIColor(red: 0.95, green: 0.95, blue: 0.96, alpha: 1.0)
return view
}()
private lazy var storeButton: UIButton = {
let button = UIButton()
button.setTitle("星企航(7年)", for: .normal)
button.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .medium)
button.setTitleColor(UIColor.systemBlue, for: .normal)
// button.addTarget(self, action: #selector(handleAction), for: .touchUpInside)
return button
}()
private lazy var priceTagView: UILabel = {
let label = UILabel()
label.font = UIFont.systemFont(ofSize: 14, weight: .medium)
label.textColor = UIColor(red: 0.2, green: 0.4, blue: 0.8, alpha: 1.0)
return label
}()
private lazy var selectButton: UIButton = {
let button = UIButton()
button.backgroundColor = .red
// button.addTarget(self, action: #selector(handleAction), for: .touchUpInside)
return button
}()
// MARK: - Initialization
override init(frame: CGRect) {
super.init(frame: frame)
setupUI()
setupConstraints()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
// MARK: - Setup
private func setupUI() {
addSubview(containerView)
containerView.addSubview(titleLabel)
containerView.addSubview(subtitleLabel)
containerView.addSubview(companyImageView)
containerView.addSubview(priceTagView)
containerView.addSubview(storeButton)
containerView.addSubview(selectButton)
}
private func setupConstraints() {
containerView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
titleLabel.snp.makeConstraints { make in
make.top.equalToSuperview().offset(16)
make.left.equalToSuperview().offset(110)
make.right.equalToSuperview().offset(-16)
}
subtitleLabel.snp.makeConstraints { make in
make.top.equalToSuperview().offset(40)
make.left.equalToSuperview().offset(110)
make.right.equalToSuperview().offset(-16)
}
companyImageView.snp.makeConstraints { make in
make.top.equalTo(18)
make.left.equalTo(16)
make.height.width.equalTo(86)
}
storeButton.snp.makeConstraints { make in
make.top.equalToSuperview().offset(60)
make.left.equalToSuperview().offset(110)
make.width.equalTo(97)
make.height.equalTo(22)
}
priceTagView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(86)
make.left.equalToSuperview().offset(110)
make.right.equalToSuperview().offset(-16)
}
selectButton.snp.makeConstraints { make in
make.right.bottom.equalTo(-18)
make.height.width.equalTo(16)
}
}
// MARK: - Configuration
func configure(with data: CompanyPackageData) {
titleLabel.text = data.title
subtitleLabel.text = data.subtitle
priceTagView.text = data.price
}
}
struct CompanyPackageData {
let title: String
let subtitle: String
let companyName: String
let priceTag: String
let price: String
let showCheckmark: Bool
}
//
// YHMakePlanCell.swift
// galaxy
//
// Created by EDY on 2025/3/28.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHMakePlanCell: UITableViewCell {
// typealias InformationBlock = (_ model: YHItemModel) -> Void
var centerView: UIView!
var titleLabel: UILabel!
var mainItemView: UIView!
var country: String = ""
var dataSource: [CompanyPackageData]? {
didSet {
updateAllViews()
}
}
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() {
contentView.backgroundColor = .clear
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(7)
make.bottom.equalTo(-7)
}
titleLabel = {
let label = UILabel()
label.font = UIFont.PFSC_M(ofSize: 15)
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(20)
make.right.equalTo(-18)
}
mainItemView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6
return view
}()
centerView.addSubview(mainItemView)
mainItemView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.top.equalTo(36)
}
}
func updateAllViews() {
titleLabel.text = "基础身份续签"
mainItemView.removeSubviews()
var y = 0
for i in 0 ..< (dataSource?.count ?? 0) {
if i != 0 || i != (dataSource?.count ?? 0) - 1 {
let line = UIView()
line.backgroundColor = UIColor.separatorColor
mainItemView.addSubview(line)
line.snp.makeConstraints { make in
make.left.equalTo(18)
make.top.equalTo(y)
make.height.equalTo(1)
make.right.equalTo(-18)
}
y += 1
}
var h = 121
let itemView = YHMakePlanCardView()
itemView.configure(with: CompanyPackageData(title: "香港身份申请至永居删除", subtitle: "香港高才入境计划申请到永居全流程", companyName: "", priceTag: "", price: "¥20000.00", showCheckmark: true))
mainItemView.addSubview(itemView)
itemView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(y)
make.height.equalTo(h)
}
y += h
}
}
}
//
// YHMakePlanCusttomHeadView.swift
// galaxy
//
// Created by EDY on 2025/3/27.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHMakePlanCusttomHeadView: UIView {
// Data
private let tabs = ["基础身份", "工作联系", "生活联系", "投资联系"]
private var buttons: [UIButton] = []
private var selectedIndex: Int = 0
// UI Components
private lazy var stackView: UIStackView = {
let stack = UIStackView()
stack.axis = .horizontal
stack.distribution = .fillEqually
return stack
}()
private let underlineView: UIView = {
let view = UIView()
view.backgroundColor = .systemBlue
return view
}()
// MARK: - Initialization
override init(frame: CGRect) {
super.init(frame: frame)
setupUI()
setupConstraints()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
setupUI()
setupConstraints()
}
// MARK: - Setup
private func setupUI() {
backgroundColor = .systemBackground
// Create buttons
tabs.enumerated().forEach { index, title in
let button = UIButton(type: .system)
button.setTitle(title, for: .normal)
button.titleLabel?.font = UIFont.systemFont(ofSize: 14)
button.setTitleColor(index == 0 ? .systemBlue : .gray, for: .normal)
button.tag = index
button.addTarget(self, action: #selector(tabTapped(_:)), for: .touchUpInside)
buttons.append(button)
stackView.addArrangedSubview(button)
}
addSubview(stackView)
addSubview(underlineView)
}
private func setupConstraints() {
stackView.snp.makeConstraints { make in
make.top.equalToSuperview()
make.leading.trailing.equalToSuperview()
make.height.equalTo(40)
}
underlineView.snp.makeConstraints { make in
make.top.equalTo(stackView.snp.bottom)
make.height.equalTo(2)
make.width.equalToSuperview().dividedBy(tabs.count)
make.leading.equalToSuperview()
}
}
// MARK: - Actions
@objc private func tabTapped(_ sender: UIButton) {
let newIndex = sender.tag
guard newIndex != selectedIndex else { return }
// Update colors
buttons[selectedIndex].setTitleColor(.gray, for: .normal)
buttons[newIndex].setTitleColor(.systemBlue, for: .normal)
// Animate underline
UIView.animate(withDuration: 0.3) {
self.underlineView.snp.updateConstraints { make in
make.leading.equalToSuperview().offset(sender.frame.origin.x)
}
self.layoutIfNeeded()
}
selectedIndex = newIndex
}
}
//
// YHMakePlanHeadView.swift
// galaxy
//
// Created by EDY on 2025/3/27.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHMakePlanHeadView: UIView {
private lazy var centerImageView: UIImageView = {
let view = UIImageView()
view.image = UIImage(named: "plan_head_bg")
return view
}()
private lazy var centerView: YHMakePlanStateHeadView = {
let view = YHMakePlanStateHeadView()
view.backgroundColor = .white
view.layer.cornerRadius = 4
return view
}()
private lazy var logoImageView: UIImageView = {
let view = UIImageView()
view.image = UIImage(named: "plan_head_logo")
return view
}()
private lazy var custtomView: YHMakePlanCusttomHeadView = {
let view = YHMakePlanCusttomHeadView()
return view
}()
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor(hex: 0x070E33)
setUpView()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func update(type: YHGCApplicationType, name: String) {
}
private func setUpView() {
addSubview(centerImageView)
addSubview(centerView)
addSubview(logoImageView)
addSubview(custtomView)
centerImageView.snp.makeConstraints { make in
make.left.right.top.equalToSuperview()
make.height.equalTo(333.fix)
}
centerView.snp.makeConstraints { make in
make.left.equalTo(16)
make.right.equalTo(-16)
make.height.equalTo(88)
make.bottom.equalTo(centerImageView.snp.bottom).offset(-16)
}
logoImageView.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.height.equalTo(109)
make.width.equalTo(272)
make.top.equalTo(96)
}
custtomView.snp.makeConstraints { make in
make.bottom.left.right.equalToSuperview()
make.height.equalTo(44)
}
}
}
//
// YHMakePlanShareAlertView.swift
// galaxy
//
// Created by EDY on 2025/3/29.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHMakePlanShareAlertView: UIView {
typealias Block = (Int) -> Void
var block: Block?
var centerView: UIView!
var sureButton: UIButton!
var leftButton: YHShareButton!
var rightButton: YHShareButton!
static func show(callBack: @escaping ((Int) -> Void)) {
let view = YHMakePlanShareAlertView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: KScreenHeight))
view.block = callBack
let window = UIApplication.shared.yhKeyWindow()
window?.addSubview(view)
}
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
view.layer.cornerRadius = kCornerRadius3
return view
}()
addSubview(centerView)
centerView.snp.makeConstraints { make in
make.bottom.left.right.equalToSuperview()
make.height.equalTo(216)
}
sureButton = {
let button = UIButton(type: .custom)
button.backgroundColor = .black
button.addTarget(self, action: #selector(dismiss), for: .touchUpInside)
return button
}()
centerView.addSubview(sureButton)
sureButton.snp.makeConstraints { make in
make.bottom.equalTo(-54)
make.left.equalTo(20)
make.right.equalTo(-20)
make.height.equalTo(46)
}
leftButton = {
let button = YHShareButton()
button.setContent("invitation_with_gifts_share_center", "微信好友")
button.addTarget(self, action: #selector(peopleClick), for: .touchUpInside)
return button
}()
centerView.addSubview(leftButton)
leftButton.snp.makeConstraints { make in
make.top.equalTo(20)
make.right.equalTo(centerView.snp.centerX).offset(-33)
make.height.equalTo(74)
make.width.equalTo(52)
}
rightButton = {
let button = YHShareButton()
button.setContent("invitation_with_gifts_share_center", "复制链接")
button.addTarget(self, action: #selector(wxClick), for: .touchUpInside)
return button
}()
centerView.addSubview(rightButton)
rightButton.snp.makeConstraints { make in
make.top.equalTo(20)
make.left.equalTo(centerView.snp.centerX).offset(33)
make.height.equalTo(74)
make.width.equalTo(52)
}
}
@objc func wxClick() {
// guard let combinedImage = combinedImageFrom(imageView: centerImageView) else { return }
YHShareManager.shared.sendLinkContent("香港身份规划专属礼包,限时领取!", "资深银河规划专家1V1评估方案", UIImage(named: "invitation_with_gifts_share_other") ?? UIImage(), link: YHBaseUrlManager.shared.curH5URL() + "superAppBridge.html#/evaluation?channel=lkhtj-app&customer_id=\(YHLoginManager.shared.userModel?.id ?? "")&scene_id=30")
// YHShareManager.shared.sendImageContent(combinedImage)
}
@objc func peopleClick() {
// guard let combinedImage = combinedImageFrom(imageView: centerImageView) else { return }
// YHShareManager.shared.sendImageContent(combinedImage, WXSceneTimeline)
YHShareManager.shared.sendLinkContent("香港身份规划专属礼包,限时领取!", "资深银河规划专家1V1评估方案", UIImage(named: "invitation_with_gifts_share_other") ?? UIImage(), link: YHBaseUrlManager.shared.curH5URL() + "superAppBridge.html#/evaluation?channel=lkhtj-app&customer_id=\(YHLoginManager.shared.userModel?.id ?? "")&scene_id=30", WXSceneTimeline)
}
@objc private func handleTap(_ sender: AnyObject?) {
dismiss()
}
@objc func dismiss() {
removeFromSuperview()
}
@objc func orderButtonClick() {
if let block = block {
block(1)
}
dismiss()
}
@objc func guideButtonClick() {
if let block = block {
block(2)
}
dismiss()
}
}
extension YHMakePlanShareAlertView: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if touch.view == self {
return true
}
return false
}
}
//
// YHMakePlanStateHeadView.swift
// galaxy
//
// Created by EDY on 2025/3/27.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHMakePlanStateHeadView: UIView {
// MARK: - UI Components
private let yearsLabel: UILabel = {
let label = UILabel()
label.text = "5"
label.font = .boldSystemFont(ofSize: 32)
label.textColor = .label
label.textAlignment = .center
return label
}()
private let yearsDescriptionLabel: UILabel = {
let label = UILabel()
label.text = "预计可续期(年)"
label.font = .systemFont(ofSize: 14)
label.textColor = .secondaryLabel
label.textAlignment = .center
return label
}()
private let percentageLabel: UILabel = {
let label = UILabel()
label.text = "90%"
label.font = .boldSystemFont(ofSize: 32)
label.textColor = .label
label.textAlignment = .center
return label
}()
private let progressDescriptionLabel: UILabel = {
let label = UILabel()
label.text = "续签综合通过率"
label.font = .systemFont(ofSize: 14)
label.textColor = .secondaryLabel
label.textAlignment = .center
return label
}()
// MARK: - Initialization
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
setupConstraints()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
setupView()
setupConstraints()
}
// MARK: - Setup
private func setupView() {
addSubview(yearsLabel)
addSubview(yearsDescriptionLabel)
addSubview(percentageLabel)
addSubview(progressDescriptionLabel)
}
private func setupConstraints() {
yearsLabel.snp.makeConstraints { make in
make.top.equalToSuperview().offset(16)
make.left.equalToSuperview().offset(16)
make.right.equalTo(self.snp.centerX)
}
yearsDescriptionLabel.snp.makeConstraints { make in
make.top.equalTo(yearsLabel.snp.bottom).offset(4)
make.left.equalToSuperview().offset(16)
make.right.equalTo(self.snp.centerX)
}
percentageLabel.snp.makeConstraints { make in
make.top.equalToSuperview().offset(16)
make.right.equalToSuperview().offset(-16)
make.left.equalTo(self.snp.centerX)
}
progressDescriptionLabel.snp.makeConstraints { make in
make.top.equalTo(percentageLabel.snp.bottom).offset(4)
make.right.equalToSuperview().offset(-16)
make.left.equalTo(self.snp.centerX)
}
}
// MARK: - Configuration
func configure(years: Int, percentage: Float) {
yearsLabel.text = "\(years)"
percentageLabel.text = "\(Int(percentage * 100))%"
}
}
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