优化操作提示
This commit is contained in:
@@ -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() {
|
||||
<p style={{ marginBottom: '16px', fontSize: '15px', lineHeight: '1.6' }}>
|
||||
您确定要删除角色 <strong>"{deleteTarget.role.role_name}"</strong> 吗?
|
||||
</p>
|
||||
{deleteTarget.userCount !== undefined && deleteTarget.userCount > 0 && (
|
||||
<p style={{
|
||||
marginBottom: '16px',
|
||||
color: '#ff6b00',
|
||||
fontSize: '14px',
|
||||
padding: '12px',
|
||||
backgroundColor: '#fff7e6',
|
||||
borderLeft: '3px solid #ff6b00',
|
||||
borderRadius: '4px'
|
||||
}}>
|
||||
⚠️ 该角色当前关联了 <strong>{deleteTarget.userCount}</strong> 个用户,删除后将自动解除这些用户的角色绑定。
|
||||
</p>
|
||||
)}
|
||||
<p style={{ marginBottom: '16px', color: '#666', fontSize: '14px' }}>
|
||||
此操作将永久删除该角色,且无法恢复。
|
||||
此操作将永久删除该角色、相关的权限配置和路由分配,且无法恢复。
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user