"use client" import * as React from "react" import { useState } from "react" import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from "@/components/ui/dialog" import { InputOTP, InputOTPGroup, InputOTPSlot, } from "@/components/ui/input-otp" import { Button } from "@/components/ui/button" import { Spinner } from "@/components/ui/spinner" interface PasswordDialogProps { isOpen: boolean onOpenChange: (open: boolean) => void onConfirm: (password: string) => void loading?: boolean title?: string description?: string } /** * 密码输入对话框 * * 用于敏感操作前的二次确认 */ export function PasswordDialog({ isOpen, onOpenChange, onConfirm, loading = false, title = "请输入密码", description = "为了您的账户安全,请输入6位认证密码进行验证" }: PasswordDialogProps) { const [password, setPassword] = useState("") const handleConfirm = () => { if (password.length === 6) { onConfirm(password) } } /* 当对话框关闭时重置密码*/ React.useEffect(() => { if (!isOpen) { setPassword("") } }, [isOpen]) return ( {title} {description}
{ if (e.key === 'Enter' && password.length === 6 && !loading) { handleConfirm() } }} >
) }