fix(checkout): 设计效果确认页消费贴纸 edits 滤镜 + 按 zIndex 排层

与 DIY 工作台同一 stickerFilter 逻辑(diy-fix-workflow 问题5 的 R3 待办),
修复贴纸编辑保存后确认页预览与工作台图片不一致;
图层顺序改为按 zIndex(无 zIndex 按数组序兜底),与 WCD 打包规则一致。

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-09-15 06:06:42 +08:00
co-authored by Claude
parent 3de6128cae
commit ba95037d05
+23 -1
View File
@@ -105,6 +105,27 @@ export default function CheckoutPage() {
const hasStickers = design && design.designData && design.designData.stickers && design.designData.stickers.length > 0
const hasLegacyImage = design && design.designData ? design.designData.imageSrc : undefined
// 预览消费贴纸 edits(亮度/色相/对比度 → CSS filter),与 DIY 工作台同一呈现逻辑
//diy-fix-workflow 问题5 的 R3 待办:不消费会导致确认页图片与工作台不一致)
const stickerFilter = (s: { edits?: { brightness?: number; hue?: number; contrast?: number } }) => {
const ed = s.edits
if (!ed) return undefined
const b = ed.brightness || 0
const h = ed.hue || 0
const c = ed.contrast || 0
if (b === 0 && h === 0 && c === 0) return undefined
return `brightness(${100 + b}%) hue-rotate(${h}deg) contrast(${100 + c}%)`
}
// 图层顺序与 WCD 打包规则一致(按 zIndex,无 zIndex 按数组序兜底)
const previewStickers = hasStickers
? design.designData!.stickers!
.map((s: any, i: number) => ({ s, z: typeof s.zIndex === 'number' ? s.zIndex : i }))
.sort((a, b) => a.z - b.z)
.map((it) => it.s)
: []
const formatAddress = (region: string[] | undefined, detail: string) => {
const regionText = region ? region.join(' ') : ''
return regionText ? `${regionText} ${detail}` : detail
@@ -159,13 +180,14 @@ export default function CheckoutPage() {
<View className='checkout-canvas surface-card'>
<View className='canvas-area' style={maskStyle}>
{hasStickers ? (
design.designData.stickers.map((s: any) => (
previewStickers.map((s: any) => (
<Image
key={s.id}
className='checkout-image'
src={s.src}
style={{
transform: `translate(${s.x}px, ${s.y}px) scale(${s.scale || 1})`,
filter: stickerFilter(s),
width: s.width || 200,
height: s.height || 200
}}