对齐旅拍相册详情页 Android UI,并修复网格预览与布局问题。
重构相册详情为信息卡片、Tab 筛选、排序、批量删除与底部上传栏;修复网格重叠、禁用按钮蒙层,并支持点击预览大图。同步扩展素材列表 API 与 ViewModel 分页逻辑,并优化有线传图缩略图与传输性能。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -0,0 +1,57 @@
|
||||
//
|
||||
// TravelAlbumDetailInfoCard.swift
|
||||
// suixinkan
|
||||
//
|
||||
// 旅拍相册详情信息卡片,对齐 Android AlbumInfoCard。
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
/// 旅拍相册详情顶部信息卡片。
|
||||
struct TravelAlbumDetailInfoCard: View {
|
||||
let album: TravelAlbumItem
|
||||
let onCallClick: (String) -> Void
|
||||
|
||||
var body: some View {
|
||||
HStack(spacing: 12) {
|
||||
RoundedRectangle(cornerRadius: TravelAlbumDetailDesign.infoIconCornerRadius)
|
||||
.fill(AppDesign.primary)
|
||||
.frame(width: TravelAlbumDetailDesign.infoIconSize, height: TravelAlbumDetailDesign.infoIconSize)
|
||||
.overlay {
|
||||
Image(systemName: "list.clipboard.fill")
|
||||
.font(.system(size: 28))
|
||||
.foregroundStyle(.white)
|
||||
}
|
||||
|
||||
VStack(alignment: .leading, spacing: 6) {
|
||||
Text("手机号 \(OrderListUI.maskPhone(album.displayPhone))")
|
||||
.font(.system(size: 14, weight: .medium))
|
||||
.foregroundStyle(TravelAlbumDetailDesign.text333)
|
||||
Text("创建时间 \(album.createdAt)")
|
||||
.font(.system(size: 12))
|
||||
.foregroundStyle(TravelAlbumDetailDesign.text999)
|
||||
}
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
Button {
|
||||
onCallClick(album.displayPhone)
|
||||
} label: {
|
||||
Circle()
|
||||
.fill(TravelAlbumDetailDesign.lightBlue)
|
||||
.frame(width: TravelAlbumDetailDesign.callButtonSize, height: TravelAlbumDetailDesign.callButtonSize)
|
||||
.overlay {
|
||||
Image(systemName: "phone.fill")
|
||||
.font(.system(size: 20))
|
||||
.foregroundStyle(AppDesign.primary)
|
||||
}
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
.accessibilityLabel("拨打电话")
|
||||
}
|
||||
.padding(.horizontal, 14)
|
||||
.padding(.vertical, 14)
|
||||
.background(Color.white)
|
||||
.clipShape(RoundedRectangle(cornerRadius: TravelAlbumDetailDesign.cardCornerRadius))
|
||||
.shadow(color: TravelAlbumDetailDesign.cardShadow, radius: TravelAlbumDetailDesign.cardShadowRadius, x: 0, y: 1)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user