// 新建发布弹窗(应用/版本/环境/Commit/说明 + 提交申请) // Logan.Li import { useState } from 'react'; import { Input } from '@/components/ui/input'; import { Textarea } from '@/components/ui/textarea'; import { Label } from '@/components/ui/label'; import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import { Plus, Loader2 } from 'lucide-react'; import { releaseApi } from '@/api'; import { toast } from 'sonner'; interface ReleaseCreateDialogProps { open: boolean; onOpenChange: (open: boolean) => void; onSuccess?: () => void; } const EMPTY_FORM = { appName: '', version: '', environment: 'dev', commitId: '', commitMsg: '', description: '', }; export function ReleaseCreateDialog({ open, onOpenChange, onSuccess }: ReleaseCreateDialogProps) { const [form, setForm] = useState({ ...EMPTY_FORM }); const [submitting, setSubmitting] = useState(false); const update = (key: keyof typeof form, value: string) => setForm((prev) => ({ ...prev, [key]: value })); // 提交发布申请 // Logan.Li const handleSubmit = async () => { if (!form.appName.trim() || !form.version.trim()) { toast.error('请填写应用名称和版本号'); return; } setSubmitting(true); try { await releaseApi.createRelease({ app_name: form.appName.trim(), version: form.version.trim(), environment: form.environment, commit_id: form.commitId.trim(), commit_msg: form.commitMsg.trim(), description: form.description.trim(), }); toast.success('发布申请已提交'); onOpenChange(false); setForm({ ...EMPTY_FORM }); onSuccess?.(); } catch { toast.error('创建失败'); } finally { setSubmitting(false); } }; return ( 新建发布 创建新的应用版本发布申请
update('appName', e.target.value)} placeholder="如:用户中心服务" className="mt-1 dg-input" />
update('version', e.target.value)} placeholder="v1.0.0" className="mt-1 dg-input" />
update('commitId', e.target.value)} placeholder="abc1234" className="mt-1 dg-input" />
update('commitMsg', e.target.value)} placeholder="feat: 新增功能" className="mt-1 dg-input" />