CNLiveDigitalMineRealNameCell.swift 6.37 KB
//
//  CNLiveDigitalMineRealNameCell.swift
//  metaCode
//
//  Created by zx on 2024/6/19.
//  我的实名认证 页面cell

import Foundation
import SnapKit

class CNLiveDigitalMineRealNameCell:UITableViewCell{
    
    var _userMdl : MineGetUserMsgVerifyUsersModel?
    var userMdl : MineGetUserMsgVerifyUsersModel? {
        get{
            _userMdl
        }
        set{
            _userMdl = newValue!
            setupNewUI(model: _userMdl!)
        }
    }
    
    lazy var whiteView :UIView = {
        let whiteView = UIView(frame: CGRect(x: 15, y:0, width: KSreenWidth-30, height:152+15 ))
        whiteView.backgroundColor = .white
        whiteView.layer.cornerRadius = 12
        whiteView.clipsToBounds = true
        return whiteView
    }()
    lazy var authNameTitleLabel: UILabel = {
        let titleLabel = UILabel()
        titleLabel.textColor = HexColor("#333333")
        titleLabel.textAlignment = .center
        titleLabel.text = "我的实名认证"
        titleLabel.font = UIFont(name: "PingFangSC-Medium", size: 17.0)
        return titleLabel
    }()
    lazy var yanjingBtn: UIButton = {
        let  closeBtn = UIButton(type: .custom)
        closeBtn.frame = CGRect(x: 0, y: 0, width: 27+20, height: 24+10)
        closeBtn.setImage(UIImage(named: "auth_real_biyan"), for: .normal)
        closeBtn.setImage(UIImage(named: "auth_real_zhengyan"), for: .selected)
        closeBtn.addTarget(self, action: #selector(yanjingBtnAction), for: .touchUpInside)
        return closeBtn
    }()

    
    
    lazy var nameBgView :UIView = {
        let whiteView = UIView()
        whiteView.backgroundColor = HexColor("#F4F7FE")
        whiteView.layer.cornerRadius = 12
        whiteView.clipsToBounds = true
        return whiteView
    }()
    lazy var nameTitleLabel: UILabel = {
        let titleLabel = UILabel()
        titleLabel.textColor = HexColor("#333333")
        titleLabel.textAlignment = .left
        titleLabel.text = ""
        titleLabel.font = Font_15
        return titleLabel
    }()
    lazy var idTitleLabel: UILabel = {
        let titleLabel = UILabel()
        titleLabel.textColor = HexColor("#333333")
        titleLabel.textAlignment = .left
        titleLabel.text = ""
        titleLabel.font = Font_15
        return titleLabel
    }()
    lazy var nameLineView :UIView = {
        let whiteView = UIView()
        whiteView.backgroundColor = HexColor("#1961FE")
        return whiteView
    }()
    
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        self.selectionStyle = .none
        self.contentView.backgroundColor = .clear
        self.backgroundColor = .clear
        self.initUI()
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    func initUI(){
        self.contentView.addSubview(self.whiteView)
        self.whiteView.addSubview(self.authNameTitleLabel)
        self.authNameTitleLabel.snp.makeConstraints { make in
            make.left.equalTo(15)
            make.top.equalTo(15)
        }
        
        self.whiteView.addSubview(self.yanjingBtn)
        self.yanjingBtn.snp.makeConstraints { make in
            make.right.equalToSuperview()
            make.centerY.equalTo(self.authNameTitleLabel.snp.centerY)
            make.width.equalTo(27+20)
            make.height.equalTo(24+10)
        }
        
        self.whiteView.addSubview(self.nameBgView)
        self.nameBgView.snp.makeConstraints { make in
            make.left.equalTo(15)
            make.top.equalTo(self.authNameTitleLabel.snp.bottom).offset(15)
            make.right.equalToSuperview().offset(-15)
            make.height.equalTo(83)
        }
        
        self.nameBgView.addSubview(self.nameTitleLabel)
        self.nameTitleLabel.snp.makeConstraints { make in
            make.left.equalTo(15)
            make.top.equalTo(15)
        }
        self.nameBgView.addSubview(self.idTitleLabel)
        self.idTitleLabel.snp.makeConstraints { make in
            make.left.equalTo(15)
            make.top.equalTo(self.nameTitleLabel.snp.bottom).offset(10)
        }

        self.nameBgView.addSubview(self.nameLineView)
        self.nameLineView.snp.makeConstraints { make in
            make.left.equalTo(0)
            make.width.equalTo(2.5)
            make.height.equalTo(13)
            make.centerY.equalTo(self.nameTitleLabel.snp.centerY)
        }
        
        
    }
    
    func setupNewUI(model:MineGetUserMsgVerifyUsersModel){
        //闭眼,隐藏部分数据
        let nameStr = (self.userMdl?.name ?? "")
        let maskedName = maskName(name: nameStr)
        self.nameTitleLabel.text = "姓   名:"+maskedName
        
        let idStr = (self.userMdl?.idNo ?? "")
        let maskedIDCardNumber = maskIDCardNumber(idCardNumber: idStr) // 输出:123***********5678
        self.idTitleLabel.text = "证件号:"+maskedIDCardNumber
    }
    
    @objc func yanjingBtnAction(button:UIButton){
        button.isSelected = !button.isSelected
        if !button.isSelected{
            //闭眼,隐藏部分数据
            let nameStr = (self.userMdl?.name ?? "")
            let maskedName = maskName(name: nameStr)
            self.nameTitleLabel.text = "姓   名:"+maskedName
            
            let idStr = (self.userMdl?.idNo ?? "")
            let maskedIDCardNumber = maskIDCardNumber(idCardNumber: idStr) // 输出:123***********5678
            self.idTitleLabel.text = "证件号:"+maskedIDCardNumber
        }else{
            //睁眼,显示全部数据
            self.nameTitleLabel.text = "姓   名:"+(self.userMdl?.name ?? "")
            self.idTitleLabel.text = "证件号:"+(self.userMdl?.idNo ?? "")
        }
    }
    func maskName(name: String) -> String {
        guard name.count > 0 else { return "" }
        // 假设我们只显示姓名的第一个字符,其余用星号代替
        return name.prefix(1) + String(repeating: "*", count: name.count - 1)
    }
      
    func maskIDCardNumber(idCardNumber: String) -> String {
        guard idCardNumber.count == 18 else { return idCardNumber } //身份证号码18位
          
        // 显示前3位和后4位,中间用星号代替
        let start = idCardNumber.prefix(3)
        let end = idCardNumber.suffix(4)
        let middle = String(repeating: "*", count: idCardNumber.count - 7)
        return start + middle + end
    }
}