import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Textarea } from '@/components/ui/textarea'; import { Label } from '@/components/ui/label'; import { Checkbox } from '@/components/ui/checkbox'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Shield } from 'lucide-react'; export interface RoleFormData { name: string; code: string; description: string; permission_ids: number[]; } export interface PermissionOption { id: number; name: string; code: string; type?: string; } interface RoleFormDialogProps { open: boolean; onOpenChange: (open: boolean) => void; editingRole: any | null; form: RoleFormData; setForm: React.Dispatch>; saving: boolean; onSubmit: () => void; permissions: PermissionOption[]; } export function RoleFormDialog({ open, onOpenChange, editingRole, form, setForm, saving, onSubmit, permissions, }: RoleFormDialogProps) { const togglePermission = (id: number, checked: boolean) => { setForm((prev) => { const set = new Set(prev.permission_ids); if (checked) { set.add(id); } else { set.delete(id); } return { ...prev, permission_ids: Array.from(set) }; }); }; return ( {editingRole ? '编辑角色' : '新建角色'} {editingRole ? '修改角色信息与权限' : '创建新的系统角色并分配权限'}
setForm({ ...form, name: e.target.value })} className="bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500" placeholder="如:运维工程师" />
setForm({ ...form, code: e.target.value })} disabled={!!editingRole} className="bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500 disabled:opacity-60" placeholder="如:ops_engineer" />