diff --git a/app/routes/role-permissions._index.tsx b/app/routes/role-permissions._index.tsx index bfcc19f..23cb2be 100644 --- a/app/routes/role-permissions._index.tsx +++ b/app/routes/role-permissions._index.tsx @@ -792,6 +792,7 @@ export default function RolePermissions() { type: 'role' | 'userRole'; role?: RoleInfo; user?: UserInfo; + userCount?: number; // 删除角色时,关联的用户数量 } | null>(null); const [deleteCountdown, setDeleteCountdown] = useState(3); @@ -899,7 +900,7 @@ export default function RolePermissions() { }; // 删除角色 - 显示确认Modal - const handleDeleteRole = (role: RoleInfo) => { + const handleDeleteRole = async (role: RoleInfo) => { // 系统角色禁止删除 if (role.is_system_role) { toastService.error('系统角色不能删除'); @@ -913,8 +914,12 @@ export default function RolePermissions() { return; } + // 获取该角色关联的用户数量 + const users = await getRoleUsers(role.id); + const userCount = users.length; + // 打开确认删除Modal - setDeleteTarget({ type: 'role', role }); + setDeleteTarget({ type: 'role', role, userCount }); setDeleteCountdown(3); setShowDeleteConfirm(true); }; @@ -924,6 +929,7 @@ export default function RolePermissions() { if (!deleteTarget || deleteTarget.type !== 'role' || !deleteTarget.role) return; const role = deleteTarget.role; + const userCount = deleteTarget.userCount || 0; setShowDeleteConfirm(false); setDeleteTarget(null); @@ -931,7 +937,12 @@ export default function RolePermissions() { const result = await deleteRole(role.id, false); if (result.success) { - toastService.success(result.message); + // 根据是否有用户解绑,显示不同的成功提示 + if (userCount > 0) { + toastService.success(`角色删除成功,已自动解除 ${userCount} 个用户的角色绑定`); + } else { + toastService.success(result.message); + } // 重新加载数据 await loadData(); // 如果删除的是当前选中的角色,清除选中状态 @@ -939,23 +950,7 @@ export default function RolePermissions() { setSelectedRole(null); } } else { - // 如果有用户关联,询问是否强制删除 - if (result.message.includes('用户')) { - if (confirm(result.message + '\n\n是否强制删除并解除所有用户关联?')) { - const forceResult = await deleteRole(role.id, true); - if (forceResult.success) { - toastService.success('角色已强制删除'); - await loadData(); - if (selectedRole?.id === role.id) { - setSelectedRole(null); - } - } else { - toastService.error(forceResult.message); - } - } - } else { - toastService.error(result.message); - } + toastService.error(result.message); } } catch (error) { console.error('删除角色失败:', error); @@ -1364,8 +1359,21 @@ export default function RolePermissions() {
您确定要删除角色 "{deleteTarget.role.role_name}" 吗?
+ {deleteTarget.userCount !== undefined && deleteTarget.userCount > 0 && ( ++ ⚠️ 该角色当前关联了 {deleteTarget.userCount} 个用户,删除后将自动解除这些用户的角色绑定。 +
+ )}- 此操作将永久删除该角色,且无法恢复。 + 此操作将永久删除该角色、相关的权限配置和路由分配,且无法恢复。
)}