// // OrderSourceLeadContentView.swift // suixinkan // import SnapKit import UIKit /// 带客单摘要内容,对齐 Android `SourceLeadContent`。 final class OrderSourceLeadContentView: UIView { var onCallPhone: ((String) -> Void)? var onImageTap: (([String], Int) -> Void)? private let phoneRow = UIStackView() private let phoneTitleLabel = UILabel() private let phoneValueLabel = UILabel() private let remarkLabel = UILabel() private let imageRow = UIStackView() private let emptyImageLabel = UILabel() private var currentImages: [String] = [] override init(frame: CGRect) { super.init(frame: frame) setupUI() } @available(*, unavailable) required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } /// 应用带客单展示内容。 func apply(lead: OrderSourceLead, compact: Bool, enablePhoneCall: Bool = true) { let phone = lead.userPhone.trimmingCharacters(in: .whitespacesAndNewlines) phoneRow.isHidden = phone.isEmpty phoneValueLabel.text = phone phoneValueLabel.textColor = enablePhoneCall ? AppColor.primary : AppColor.text333 phoneValueLabel.isUserInteractionEnabled = enablePhoneCall && !phone.isEmpty let remark = lead.remark.trimmingCharacters(in: .whitespacesAndNewlines) remarkLabel.isHidden = remark.isEmpty remarkLabel.text = remark remarkLabel.font = compact ? .systemFont(ofSize: 12) : .systemFont(ofSize: 13) remarkLabel.numberOfLines = compact ? 2 : 4 imageRow.arrangedSubviews.forEach { $0.removeFromSuperview() } emptyImageLabel.isHidden = true if lead.images.isEmpty { if !compact { emptyImageLabel.isHidden = false } } else { currentImages = lead.images lead.images.prefix(3).enumerated().forEach { index, url in let imageView = UIImageView() imageView.contentMode = .scaleAspectFill imageView.clipsToBounds = true imageView.layer.cornerRadius = 6 imageView.backgroundColor = OrderTokens.sourceLeadPlaceholder imageView.loadRemoteImage(urlString: url, placeholderColor: OrderTokens.sourceLeadPlaceholder) imageView.isUserInteractionEnabled = true imageView.tag = index imageView.addGestureRecognizer( UITapGestureRecognizer(target: self, action: #selector(imageTapped(_:))) ) imageRow.addArrangedSubview(imageView) imageView.snp.makeConstraints { make in make.height.equalTo(imageView.snp.width) } } let placeholders = max(0, 3 - min(lead.images.count, 3)) if placeholders > 0 { (0..