拆分宣传页视图并扩充 Mock 数据,合作订单支持获客员备注名并修复线索图片网格尺寸。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-02 17:43:04 +08:00
parent 1b1e93b9ca
commit 328c4321f4
41 changed files with 2529 additions and 1436 deletions

View File

@ -89,8 +89,14 @@ struct OrderEntity: Decodable, Identifiable, Equatable, Hashable {
let showOrderSource: Int
let referralOrderNo: String
let referralSalerName: String
let referralSalerPhotogRemarkName: String
let referralOrder: BoundReferralOrder?
///
var displayReferralSalerName: String {
referralSalerPhotogRemarkName.saleUserDisplayName(primaryName: referralSalerName)
}
enum CodingKeys: String, CodingKey {
case photogUid = "photog_uid"
case orderNumber = "order_number"
@ -123,6 +129,7 @@ struct OrderEntity: Decodable, Identifiable, Equatable, Hashable {
case showOrderSource = "show_order_source"
case referralOrderNo = "referral_order_no"
case referralSalerName = "referral_saler_name"
case referralSalerPhotogRemarkName = "photog_remark_name"
case referralOrder = "referral_order"
}
@ -160,6 +167,7 @@ struct OrderEntity: Decodable, Identifiable, Equatable, Hashable {
showOrderSource = try container.decodeLossyInt(forKey: .showOrderSource) ?? 0
referralOrderNo = try container.decodeLossyString(forKey: .referralOrderNo)
referralSalerName = try container.decodeLossyString(forKey: .referralSalerName)
referralSalerPhotogRemarkName = try container.decodeLossyString(forKey: .referralSalerPhotogRemarkName)
referralOrder = try container.decodeIfPresent(BoundReferralOrder.self, forKey: .referralOrder)
}
}

View File

@ -52,12 +52,13 @@ extension ReferralOrder {
}
extension BoundReferralOrder {
func toOrderSourceSelection(fallbackSalerName: String = "") -> OrderSourceSelection? {
func toOrderSourceSelection(fallbackSalerName: String = "", fallbackPhotogRemarkName: String = "") -> OrderSourceSelection? {
let referralNo = orderNo.trimmingCharacters(in: .whitespacesAndNewlines)
guard !referralNo.isEmpty else { return nil }
let personName = salerName.isEmpty
? (fallbackSalerName.isEmpty ? "" : fallbackSalerName)
: salerName
let fallbackDisplayName = fallbackPhotogRemarkName.saleUserDisplayName(primaryName: fallbackSalerName)
let personName = displaySalerName.isEmpty
? (fallbackDisplayName.isEmpty ? "" : fallbackDisplayName)
: displaySalerName
let remarkText: String
if !remark.isEmpty {
remarkText = remark
@ -85,14 +86,18 @@ extension BoundReferralOrder {
extension OrderEntity {
func toBoundOrderSourceSelection() -> OrderSourceSelection? {
if let referralOrder,
let selection = referralOrder.toOrderSourceSelection(fallbackSalerName: referralSalerName) {
let selection = referralOrder.toOrderSourceSelection(
fallbackSalerName: referralSalerName,
fallbackPhotogRemarkName: referralSalerPhotogRemarkName
) {
return selection
}
guard !referralOrderNo.isEmpty else { return nil }
let personName = displayReferralSalerName.isEmpty ? "" : displayReferralSalerName
return OrderSourceSelection(
person: OrderSourcePerson(
key: "",
name: referralSalerName.isEmpty ? "" : referralSalerName,
name: personName,
phone: ""
),
lead: OrderSourceLead(