import React, { useState, useEffect } from 'react'; import { useDispatch } from 'react-redux'; import { get, put } from '../../../services/api'; import { showNotification } from '../../../store/notification.slice'; import UserPermissionDetails from './UserPermissionDetails'; export default function UserPermissions() { const dispatch = useDispatch(); const [users, setUsers] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [selectedUser, setSelectedUser] = useState(null); const [showDetailsModal, setShowDetailsModal] = useState(false); // 获取用户列表 useEffect(() => { const fetchUsers = async () => { try { setLoading(true); const response = await get('/users/permissions/'); if (response && response.code === 200) { setUsers(response.data.users || []); } else { setError('获取用户列表失败'); } } catch (error) { console.error('获取用户列表失败:', error); setError('获取用户列表失败'); } finally { setLoading(false); } }; fetchUsers(); }, []); // 打开用户权限详情弹窗 const handleOpenDetailsModal = (user) => { setSelectedUser(user); setShowDetailsModal(true); }; // 关闭用户权限详情弹窗 const handleCloseDetailsModal = () => { setShowDetailsModal(false); setSelectedUser(null); }; // 保存用户权限更改 const handleSavePermissions = async (userId, updatedPermissions) => { try { const response = await put(`/users/${userId}/permissions/`, { permissions: updatedPermissions, }); if (response && response.code === 200) { // 更新用户列表中的权限信息 setUsers( users.map((user) => { if (user.id === userId) { return { ...user, permissions: { ...user.permissions, ...response.data.permissions, }, }; } return user; }) ); dispatch( showNotification({ message: '权限更新成功', type: 'success', }) ); // 关闭弹窗 handleCloseDetailsModal(); } else { dispatch( showNotification({ message: '权限更新失败', type: 'danger', }) ); } } catch (error) { console.error('权限更新失败:', error); dispatch( showNotification({ message: '权限更新失败', type: 'danger', }) ); } }; // 渲染加载状态 if (loading) { return (
加载中...

加载用户列表...

); } // 渲染错误状态 if (error) { return (
{error}
); } // 渲染空状态 if (users.length === 0) { return (
暂无用户数据
); } // 渲染用户列表 return ( <>
用户权限管理
{users.map((user) => ( ))}
用户名 姓名 部门 职位 权限 操作
{user.username} {user.name} {user.department} {user.position} {user.permissions_count && (
{user.permissions_count.read > 0 && ( 只读: {user.permissions_count.read} )} {user.permissions_count.edit > 0 && ( 编辑: {user.permissions_count.edit} )} {user.permissions_count.admin > 0 && ( 管理: {user.permissions_count.admin} )}
)}
{/* 用户权限详情弹窗 */} {showDetailsModal && selectedUser && ( )} ); }