'use client' import {FormLabel} from '@/components/ui/form' import {merge} from '@/lib/utils' import {RadioGroupItem} from '@/components/ui/radio-group' import {ReactNode} from 'react' export type FormOptionProps = { id: string value: string label?: string description?: string price?: string discount?: number compare: string className?: string children?: ReactNode } export default function FormOption(props: FormOptionProps) { // 安全地解析价格 const priceNum = props.price ? parseFloat(props.price) : NaN const isValidPrice = !isNaN(priceNum) && priceNum > 0 const discount = typeof props.discount === 'number' ? props.discount : undefined const hasDiscount = isValidPrice && discount !== undefined && discount < 100 const discountedPrice = hasDiscount ? priceNum * discount / 100 : null const formatPrice = (price: number | string): string => { const num = typeof price === 'string' ? parseFloat(price) : price // 如果是 NaN 或无效值,返回空字符串 if (isNaN(num) || !isFinite(num)) return '' const str = num.toString() if (!str.includes('.')) return str const decimal = str.split('.')[1] if (/^0+$/.test(decimal)) return Math.floor(num).toString() if (decimal.length <= 2) return str return num.toFixed(4).replace(/\.?0+$/, '') } return ( <> {props.children ? props.children : ( <> {props.label} {props.description && !isValidPrice && (

{props.description}

)} {isValidPrice && (
{hasDiscount ? ( <>

¥{formatPrice(discountedPrice!)}/IP

原价:{formatPrice(props.price!)}/IP

{/* {props.discount}折 */} ) : (

¥{formatPrice(props.price!)}/IP

)}
)} )}
) }