优化操作提示

This commit is contained in:
2025-11-24 20:52:00 +08:00
parent 93bae2de17
commit 47107b45df
+27 -19
View File
@@ -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,32 +937,21 @@ export default function RolePermissions() {
const result = await deleteRole(role.id, false);
if (result.success) {
// 根据是否有用户解绑,显示不同的成功提示
if (userCount > 0) {
toastService.success(`角色删除成功,已自动解除 ${userCount} 个用户的角色绑定`);
} else {
toastService.success(result.message);
}
// 重新加载数据
await loadData();
// 如果删除的是当前选中的角色,清除选中状态
if (selectedRole?.id === role.id) {
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);
}
}
} catch (error) {
console.error('删除角色失败:', error);
toastService.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>
)}