import { useEffect, useState } from "react" import { toast } from "sonner" import { submitCashOut } from "@/api/cashOut" import { Button } from "@/components/ui/button" import { Dialog, DialogContent, DialogHeader, DialogTitle, } from "@/components/ui/dialog" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" const ALIPAY_ACCOUNT_RE = /^(?:1[3-9]\d{9}|[a-zA-Z\d._-]*@[a-zA-Z\d.-]{1,10}\.[a-zA-Z\d]{1,20})$/ const CUSTOMER_SERVICE_URL = "https://admin.qidian.qq.com/template/blue/mp/menu/qr-code-jump.html?linkType=0&env=ol&kfuin=2852138148&fid=299&key=f377ec024ca45115a03a7632c7bda230&cate=1&source=&isLBS=&isCustomEntry=&type=16&ftype=1&_type=wpa&qidian=true" interface CashOutDialogProps { open: boolean onOpenChange: (open: boolean) => void balance: number onSubmitted?: () => void } export function CashOutDialog({ open, onOpenChange, balance, onSubmitted, }: CashOutDialogProps) { const [step, setStep] = useState<"notice" | "form">("notice") const [money, setMoney] = useState("") const [reason, setReason] = useState("") const [alipayAccount, setAlipayAccount] = useState("") const [realName, setRealName] = useState("") const [submitting, setSubmitting] = useState(false) useEffect(() => { if (!open) { setSubmitting(false) // setStep("notice") } }, [open]) const handleSubmit = async () => { const cashOutMoney = Number(money) if (!Number.isFinite(cashOutMoney) || cashOutMoney <= 0) { toast.error("抱歉!请重新输入提现金额!") return } if (cashOutMoney > balance) { toast.error("抱歉!您提现的额度大于余额,请重新输入提现金额!") return } if (!realName.trim()) { toast.error("抱歉!请重新输入姓名!") return } if ( !alipayAccount.trim() || !ALIPAY_ACCOUNT_RE.test(alipayAccount.trim()) ) { toast.error("抱歉!请重新输入支付宝账号!") return } setSubmitting(true) const res = await submitCashOut({ cash_out_money: money, reason: reason.trim(), alipay_account: alipayAccount.trim(), real_name: realName.trim(), }) setSubmitting(false) if (!res.success) { toast.error(res.message || "提现异常!请重试或联系客服。") return } if (!res.data) { toast.error("提现异常!请重试或联系客服。") return } toast.success( "提现请求发送成功,我们会在5到7个工作日进行处理,请注意查看资金明细。", ) setMoney("") setReason("") setAlipayAccount("") setRealName("") onOpenChange(false) onSubmitted?.() } return ( {step === "notice" ? ( <> 余额提现

聚IP涵盖十余种全网知名旗舰产品,总有一款适合您!

联系客服帮您推荐合适的产品,我们将最大努力满足您的需求!

) : ( <> 余额提现

当前可用余额: ¥{balance.toFixed(2)}

setMoney(e.target.value)} className="h-11 bg-gray-50 border-gray-200" placeholder="请输入提现金额" />
setReason(e.target.value)} className="h-11 bg-gray-50 border-gray-200" placeholder="请输入提现理由" />
setAlipayAccount(e.target.value)} className="h-11 bg-gray-50 border-gray-200" placeholder="请输入支付宝账号" />
setRealName(e.target.value)} className="h-11 bg-gray-50 border-gray-200" placeholder="请输入与支付宝关联的真实姓名" />
)}
) }