Browse Source

feat: 添加删除用户确认弹窗

master
dark 1 month ago
parent
commit
ecc519e322
  1. 60
      frontend/react-shadcn/pc/src/pages/UserManagementPage.tsx

60
frontend/react-shadcn/pc/src/pages/UserManagementPage.tsx

@ -33,6 +33,9 @@ export function UserManagementPage() {
}, []) }, [])
const [error, setError] = useState<string | null>(null) const [error, setError] = useState<string | null>(null)
const [deleteConfirmOpen, setDeleteConfirmOpen] = useState(false)
const [userToDelete, setUserToDelete] = useState<User | null>(null)
const [isDeleting, setIsDeleting] = useState(false)
const fetchUsers = async () => { const fetchUsers = async () => {
try { try {
@ -80,14 +83,24 @@ export function UserManagementPage() {
} }
} }
const handleDeleteUser = async (id: number) => { const openDeleteConfirm = (user: User) => {
if (!confirm('确定要删除该用户吗?')) return setUserToDelete(user)
setDeleteConfirmOpen(true)
}
const handleDeleteUser = async () => {
if (!userToDelete) return
try { try {
await apiClient.deleteUser(id) setIsDeleting(true)
await apiClient.deleteUser(userToDelete.id)
setDeleteConfirmOpen(false)
setUserToDelete(null)
await fetchUsers() await fetchUsers()
} catch (error) { } catch (error) {
console.error('Failed to delete user:', error) console.error('Failed to delete user:', error)
alert('删除用户失败') alert('删除用户失败')
} finally {
setIsDeleting(false)
} }
} }
@ -211,7 +224,7 @@ export function UserManagementPage() {
<Button <Button
variant="ghost" variant="ghost"
size="sm" size="sm"
onClick={() => handleDeleteUser(user.id)} onClick={() => openDeleteConfirm(user)}
className="text-red-400 hover:text-red-300" className="text-red-400 hover:text-red-300"
> >
<Trash2 className="h-4 w-4" /> <Trash2 className="h-4 w-4" />
@ -286,6 +299,45 @@ export function UserManagementPage() {
/> />
</div> </div>
</Modal> </Modal>
{/* Delete Confirmation Modal */}
<Modal
isOpen={deleteConfirmOpen}
onClose={() => {
setDeleteConfirmOpen(false)
setUserToDelete(null)
}}
title="确认删除"
size="sm"
footer={
<>
<Button
variant="outline"
onClick={() => {
setDeleteConfirmOpen(false)
setUserToDelete(null)
}}
disabled={isDeleting}
>
</Button>
<Button
variant="destructive"
onClick={handleDeleteUser}
disabled={isDeleting}
>
{isDeleting ? '删除中...' : '确认删除'}
</Button>
</>
}
>
<div className="py-4">
<p className="text-gray-300">
<span className="font-medium text-white">{userToDelete?.username}</span>
</p>
<p className="text-sm text-gray-500 mt-2"></p>
</div>
</Modal>
</div> </div>
) )
} }

Loading…
Cancel
Save