'use client'; import * as React from 'react'; import { useState } from 'react'; import { Button } from '@nice/ui/components/button'; import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@nice/ui/components/dialog'; import { Input } from '@nice/ui/components/input'; import { Label } from '@nice/ui/components/label'; import { DeptSelect, MultipleRoleSelector, SingleDeptSelector } from '@/components/selector'; import type { UserDialogState } from './types.js'; import { Textarea } from '@nice/ui/components/textarea'; // 用户对话框组件 interface UserDialogProps { dialog: UserDialogState; onClose: () => void; onSave: (data: { username: string; roleIds: string[]; organizationId: string; password: string; description?: string; }) => void; } export function UserDialog({ dialog, onClose, onSave }: UserDialogProps) { const [username, setUsername] = useState(dialog.user?.username || ''); const [roleIds, setRoleIds] = useState(dialog.user?.roleIds || []); const [organizationId, setOrganizationId] = useState(dialog.user?.organizationId || ''); const [password, setPassword] = useState('123456'); const [description, setDescription] = useState(dialog.user?.description || ''); // 重置表单数据 React.useEffect(() => { if (dialog.open) { setUsername(dialog.user?.username || ''); setRoleIds(dialog.user?.roleIds || []); setOrganizationId(dialog.user?.organizationId || ''); setPassword('123456'); setDescription(dialog.user?.description || ''); } }, [dialog]); const handleSave = () => { if (!username.trim()) return; if (roleIds.length === 0) return; onSave({ username: username.trim(), roleIds, organizationId, password, description: description.trim(), }); onClose(); }; const getDialogTitle = () => { return dialog.user ? '编辑用户' : '新增用户'; }; return ( !open && onClose()}> {getDialogTitle()}
setUsername(e.target.value)} />