拆分宣传页视图并扩充 Mock 数据,合作订单支持获客员备注名并修复线索图片网格尺寸。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -0,0 +1,65 @@
|
||||
//
|
||||
// ScenicPromotionFullStateView.swift
|
||||
// suixinkan
|
||||
//
|
||||
// Created by Codex on 2026/7/2.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
/// 宣传页 Empty / Error 通用状态视图。
|
||||
struct ScenicPromotionFullStateView: View {
|
||||
let icon: String
|
||||
let title: String
|
||||
let message: String
|
||||
let buttonTitle: String
|
||||
let action: () -> Void
|
||||
|
||||
var body: some View {
|
||||
VStack(spacing: 18) {
|
||||
Spacer()
|
||||
|
||||
Image(systemName: icon)
|
||||
.font(.system(size: 48, weight: .semibold))
|
||||
.foregroundStyle(Color(hex: 0x0B79FF))
|
||||
.frame(width: 92, height: 92)
|
||||
.background(.white.opacity(0.75), in: RoundedRectangle(cornerRadius: 24))
|
||||
|
||||
VStack(spacing: 8) {
|
||||
Text(title)
|
||||
.font(.system(size: 22, weight: .bold))
|
||||
.foregroundStyle(Color(hex: 0x143D78))
|
||||
Text(message)
|
||||
.font(.system(size: 14, weight: .medium))
|
||||
.foregroundStyle(Color(hex: 0x5F789E))
|
||||
.multilineTextAlignment(.center)
|
||||
}
|
||||
|
||||
Button(action: action) {
|
||||
Text(buttonTitle)
|
||||
.font(.system(size: 16, weight: .bold))
|
||||
.foregroundStyle(.white)
|
||||
.frame(width: 150, height: 46)
|
||||
.background(Color(hex: 0x0B79FF), in: Capsule())
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
|
||||
Spacer()
|
||||
}
|
||||
.padding(28)
|
||||
}
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
#Preview("空数据") {
|
||||
ZStack {
|
||||
ScenicPromotionSkyBackground().ignoresSafeArea()
|
||||
ScenicPromotionFullStateView(
|
||||
icon: "doc.text.image",
|
||||
title: "暂无宣传页数据",
|
||||
message: "当前景区还没有配置排队导览宣传内容",
|
||||
buttonTitle: "重新加载"
|
||||
) {}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user