'use client'; import { useEffect } from 'react'; import { useForm, Controller } from 'react-hook-form'; import { useOrgStore } from '../store'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@/components/ui/table'; import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerClose, } from '@/components/ui/drawer'; import { Dialog, DialogContent, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Plus, Trash2, X } from 'lucide-react'; interface UserDrawerProps { open: boolean; onOpenChange: (open: boolean) => void; } export const UserDrawer = ({ open, onOpenChange }: UserDrawerProps) => { const { orgId, users, getOrg, addUser, removeUser, setUserFormData: setUserFormData, userFormData, showUserEdit, setShowUserEdit, } = useOrgStore(); const { handleSubmit, formState: { errors }, reset, register, control, } = useForm(); useEffect(() => { if (open && orgId) { getOrg(); } }, [open, orgId, getOrg]); useEffect(() => { if (!showUserEdit) return; // 确保 userFormData 已更新后再重置表单 console.log('Resetting form with userFormData:', userFormData); if (userFormData?.id) { reset({ id: userFormData.id, username: userFormData.username, role: userFormData.role || 'member' }); } else { reset({ id: '', username: '', role: 'member' }); } }, [showUserEdit, userFormData, reset]); const handleAddUser = async (data: any) => { const res = await addUser({ ...data, action: 'add' }); if (res.code === 200) { setShowUserEdit(false); setUserFormData({}); } }; const handleRemoveUser = async (uid: string) => { await removeUser(uid); }; const handleEditUser = (user: any) => { console.log('Editing user:', user); setUserFormData(user); // 使用 setTimeout 确保 userFormData 更新后再打开弹窗 setShowUserEdit(true); }; return ( <> 用户管理
用户ID 用户名 角色 操作 {users.map((user) => ( {user.id} {user.username} {user.role || 'member'} ))}
{userFormData?.id ? '编辑用户' : '添加用户'}
{errors.id && {errors.id.message as string}}
{userFormData?.username}
(
)} />
); };