'use client' import { Dialog, DialogContent, DialogFooter, DialogTitle, DialogTrigger, } from '@/components/ui/dialog' import {Button} from '@/components/ui/button' import {Form, FormField} from '@/components/ui/form' import {useForm} from 'react-hook-form' import zod from 'zod' import FormOption from '@/components/composites/purchase/_client/option' import {RadioGroup} from '@/components/ui/radio-group' import Image from 'next/image' import wechat from '@/components/composites/purchase/_assets/wechat.svg' import alipay from '@/components/composites/purchase/_assets/alipay.svg' import {zodResolver} from '@hookform/resolvers/zod' import {tradeRecharge} from '@/actions/trade' import {toast} from 'sonner' import {useRouter} from 'next/navigation' const schema = zod.object({ method: zod.enum(['alipay', 'wechat']), amount: zod.number().min(1, '充值金额必须大于 0'), }) type Schema = zod.infer export type RechargeModelProps = {} export default function RechargeModal(props: RechargeModelProps) { const form = useForm({ resolver: zodResolver(schema), defaultValues: { method: 'alipay', amount: 50, }, }) const router = useRouter() const onSubmit = async (data: Schema) => { try { const resp = await tradeRecharge(data) if (!resp.success) { throw new Error(resp.message) } // todo 跳转支付页 router.push('/pay') } catch (e) { toast.error(`充值失败`, { description: (e as Error).message, }) } } return ( 充值中心
{/* 充值额度 */} name={`amount`} label={`充值额度`} className={`flex flex-col gap-4`}> {({id, field}) => ( field.onChange(Number(v))} className={`flex flex-col gap-2`}>
)} {/* 支付方式 */} {({id, field}) => ( {`支付宝 支付宝 {`微信 微信 )}
) }