// 发布管理 - 审批/驳回弹窗(自包含提交逻辑) // Logan.Li import { useState, useEffect } from 'react'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { AlertCircle, X, Check, Loader2 } from 'lucide-react'; import { releaseApi } from '@/api'; import { toast } from 'sonner'; interface ReleaseApproveDialogProps { release: any | null; open: boolean; onOpenChange: (open: boolean) => void; onSuccess?: () => void; } export function ReleaseApproveDialog({ release, open, onOpenChange, onSuccess }: ReleaseApproveDialogProps) { const [submitting, setSubmitting] = useState(false); // 提交完成即重置 loading(防复用) // Logan.Li useEffect(() => { if (!open) setSubmitting(false); }, [open]); const handleApprove = async (approved: boolean) => { if (!release) return; setSubmitting(true); try { if (approved) { await releaseApi.approveRelease(release.id); toast.success('审批通过'); } else { await releaseApi.rejectRelease(release.id); toast.success('已驳回'); } onOpenChange(false); onSuccess?.(); } catch { toast.error(approved ? '审批失败' : '驳回失败'); } finally { setSubmitting(false); } }; return ( 审批发布 {release?.app_name} - {release?.version}
{release?.description && (

发布说明

{release.description}

)}
确认审批后将进入部署就绪状态
); }