import { View, Text, Image, Swiper, SwiperItem } from '@tarojs/components' import Taro from '@tarojs/taro' import { useState } from 'react' import './index.scss' import { getProductById } from '../../utils/productConfig' import { addDesign } from '../../utils/store' import ThemeToggle from '../../components/ThemeToggle' import { useThemeContext } from '../../context/ThemeContext' import { getProductIconImg } from '../../utils/productConfig' const HERO_COLORS = ['#FFE4EC', '#FFF0F5', '#FCE4EC'] export default function ProductPage() { const { theme } = useThemeContext() const [showModal, setShowModal] = useState(false) const [quantity, setQuantity] = useState(1) const params = Taro.getCurrentInstance().router?.params const productId = params?.id || '' const product = getProductById(productId) if (!product) { return ( 商品未找到 ) } const handleAddToList = () => { setQuantity(1) setShowModal(true) } const confirmAdd = () => { addDesign(product, quantity) setShowModal(false) Taro.showToast({ title: `已加入设计清单 x${quantity}`, icon: 'success' }) setTimeout(() => Taro.navigateBack(), 1200) } const goToDIY = () => { Taro.navigateTo({ url: `/pages/diy/index?source=product&productId=${product.id}&quantity=1` }) } const modQty = (delta: number) => { setQuantity(q => Math.max(1, Math.min(99, q + delta))) } return ( Taro.navigateBack()}>← 商品详情 {/* 轮播 Hero */} {product.images && product.images.length > 0 ? ( product.images.map((img, idx) => ( )) ) : ( HERO_COLORS.map((color, idx) => ( {product.name} )) )} {/* 基本信息 */} 单价 ¥{product.price} 工期 {product.leadTime} 尺寸 {product.mask.width} × {product.mask.height} px {/* 详细介绍 */} 商品介绍 {product.description} {/* 底部操作栏 */} 起价 ¥{product.price} 加入设计清单 立即下单 {/* 安全区占位(防止内容被 action-bar 遮挡) */} {/* 数量选择弹窗 */} {showModal && ( 加入设计清单 {product.name} 数量 modQty(-1)}>- {quantity} modQty(1)}>+ 小计 ¥{(product.price * quantity).toFixed(2)} setShowModal(false)}> 取消 确定 )} ) }