完善实名认证、钱包与打卡点模块 UI 与业务逻辑。
对齐 Android 实名认证流程与审核页、钱包提现/积分兑换界面,优化打卡点列表与详情交互,并补充相关资源、主题 token 与单元测试。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -3,111 +3,5 @@
|
||||
// suixinkan
|
||||
//
|
||||
|
||||
import SnapKit
|
||||
import UIKit
|
||||
|
||||
/// 实名认证审核状态页,展示审核结果与证件预览。
|
||||
final class RealNameAuthAuditViewController: BaseViewController {
|
||||
|
||||
private let info: RealNameInfo
|
||||
|
||||
private let scrollView = UIScrollView()
|
||||
private let contentStack = UIStackView()
|
||||
private let statusBadge = ProfileStatusBadgeView()
|
||||
private let rejectLabel = UILabel()
|
||||
private let frontImageView = UIImageView()
|
||||
private let backImageView = UIImageView()
|
||||
|
||||
init(info: RealNameInfo) {
|
||||
self.info = info
|
||||
super.init(nibName: nil, bundle: nil)
|
||||
}
|
||||
|
||||
@available(*, unavailable)
|
||||
required init?(coder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
override func setupNavigationBar() {
|
||||
title = "认证状态"
|
||||
}
|
||||
|
||||
override func setupUI() {
|
||||
view.backgroundColor = UIColor(hex: 0xF7FAFF)
|
||||
contentStack.axis = .vertical
|
||||
contentStack.spacing = 16
|
||||
|
||||
rejectLabel.numberOfLines = 0
|
||||
rejectLabel.font = .systemFont(ofSize: 14)
|
||||
rejectLabel.textColor = UIColor(hex: 0xEF4444)
|
||||
|
||||
[frontImageView, backImageView].forEach {
|
||||
$0.contentMode = .scaleAspectFit
|
||||
$0.backgroundColor = UIColor(hex: 0xF8FAFC)
|
||||
$0.layer.cornerRadius = 8
|
||||
$0.clipsToBounds = true
|
||||
$0.snp.makeConstraints { make in make.height.equalTo(160) }
|
||||
}
|
||||
|
||||
view.addSubview(scrollView)
|
||||
scrollView.addSubview(contentStack)
|
||||
|
||||
contentStack.addArrangedSubview(makeTitle("审核状态"))
|
||||
contentStack.addArrangedSubview(statusBadge)
|
||||
if let reason = info.rejectReason, !reason.isEmpty, info.auditStatus == 3 {
|
||||
rejectLabel.text = "驳回原因:\(reason)"
|
||||
contentStack.addArrangedSubview(rejectLabel)
|
||||
}
|
||||
contentStack.addArrangedSubview(makeInfoRow("姓名", info.realName))
|
||||
contentStack.addArrangedSubview(makeInfoRow("身份证号", maskID(info.idCardNo)))
|
||||
contentStack.addArrangedSubview(makeTitle("身份证国徽面"))
|
||||
contentStack.addArrangedSubview(backImageView)
|
||||
contentStack.addArrangedSubview(makeTitle("身份证人像面"))
|
||||
contentStack.addArrangedSubview(frontImageView)
|
||||
|
||||
applyStatus()
|
||||
frontImageView.loadRemoteImage(urlString: info.frontUrl)
|
||||
backImageView.loadRemoteImage(urlString: info.backUrl)
|
||||
}
|
||||
|
||||
override func setupConstraints() {
|
||||
scrollView.snp.makeConstraints { make in make.edges.equalToSuperview() }
|
||||
contentStack.snp.makeConstraints { make in
|
||||
make.edges.equalToSuperview().inset(16)
|
||||
make.width.equalTo(scrollView).offset(-32)
|
||||
}
|
||||
}
|
||||
|
||||
private func applyStatus() {
|
||||
switch info.auditStatus {
|
||||
case 2:
|
||||
statusBadge.apply(style: .auditApproved, text: "已实名认证")
|
||||
case 3:
|
||||
statusBadge.apply(style: .auditRejected, text: "审核不通过")
|
||||
default:
|
||||
statusBadge.apply(style: .auditPending, text: info.auditStatusText ?? "审核中")
|
||||
}
|
||||
}
|
||||
|
||||
private func makeTitle(_ text: String) -> UILabel {
|
||||
let label = UILabel()
|
||||
label.text = text
|
||||
label.font = .systemFont(ofSize: 15, weight: .semibold)
|
||||
return label
|
||||
}
|
||||
|
||||
private func makeInfoRow(_ title: String, _ value: String) -> UILabel {
|
||||
let label = UILabel()
|
||||
label.font = .systemFont(ofSize: 14)
|
||||
label.textColor = AppColor.text666
|
||||
label.text = "\(title):\(value)"
|
||||
return label
|
||||
}
|
||||
|
||||
private func maskID(_ value: String) -> String {
|
||||
guard value.count > 8 else { return value }
|
||||
let prefix = value.prefix(4)
|
||||
let suffix = value.suffix(4)
|
||||
return "\(prefix)**********\(suffix)"
|
||||
}
|
||||
}
|
||||
/// 兼容旧调用入口;审核页现已与实名认证提交页共用同一套页面实现。
|
||||
typealias RealNameAuthAuditViewController = RealNameAuthViewController
|
||||
|
||||
Reference in New Issue
Block a user