优化操作提示

This commit is contained in:
2025-11-24 20:52:00 +08:00
parent 93bae2de17
commit 47107b45df
+29 -21
View File
@@ -792,6 +792,7 @@ export default function RolePermissions() {
type: 'role' | 'userRole'; type: 'role' | 'userRole';
role?: RoleInfo; role?: RoleInfo;
user?: UserInfo; user?: UserInfo;
userCount?: number; // 删除角色时,关联的用户数量
} | null>(null); } | null>(null);
const [deleteCountdown, setDeleteCountdown] = useState(3); const [deleteCountdown, setDeleteCountdown] = useState(3);
@@ -899,7 +900,7 @@ export default function RolePermissions() {
}; };
// 删除角色 - 显示确认Modal // 删除角色 - 显示确认Modal
const handleDeleteRole = (role: RoleInfo) => { const handleDeleteRole = async (role: RoleInfo) => {
// 系统角色禁止删除 // 系统角色禁止删除
if (role.is_system_role) { if (role.is_system_role) {
toastService.error('系统角色不能删除'); toastService.error('系统角色不能删除');
@@ -913,8 +914,12 @@ export default function RolePermissions() {
return; return;
} }
// 获取该角色关联的用户数量
const users = await getRoleUsers(role.id);
const userCount = users.length;
// 打开确认删除Modal // 打开确认删除Modal
setDeleteTarget({ type: 'role', role }); setDeleteTarget({ type: 'role', role, userCount });
setDeleteCountdown(3); setDeleteCountdown(3);
setShowDeleteConfirm(true); setShowDeleteConfirm(true);
}; };
@@ -924,6 +929,7 @@ export default function RolePermissions() {
if (!deleteTarget || deleteTarget.type !== 'role' || !deleteTarget.role) return; if (!deleteTarget || deleteTarget.type !== 'role' || !deleteTarget.role) return;
const role = deleteTarget.role; const role = deleteTarget.role;
const userCount = deleteTarget.userCount || 0;
setShowDeleteConfirm(false); setShowDeleteConfirm(false);
setDeleteTarget(null); setDeleteTarget(null);
@@ -931,7 +937,12 @@ export default function RolePermissions() {
const result = await deleteRole(role.id, false); const result = await deleteRole(role.id, false);
if (result.success) { if (result.success) {
toastService.success(result.message); // 根据是否有用户解绑,显示不同的成功提示
if (userCount > 0) {
toastService.success(`角色删除成功,已自动解除 ${userCount} 个用户的角色绑定`);
} else {
toastService.success(result.message);
}
// 重新加载数据 // 重新加载数据
await loadData(); await loadData();
// 如果删除的是当前选中的角色,清除选中状态 // 如果删除的是当前选中的角色,清除选中状态
@@ -939,23 +950,7 @@ export default function RolePermissions() {
setSelectedRole(null); setSelectedRole(null);
} }
} else { } else {
// 如果有用户关联,询问是否强制删除 toastService.error(result.message);
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) { } catch (error) {
console.error('删除角色失败:', error); console.error('删除角色失败:', error);
@@ -1364,8 +1359,21 @@ export default function RolePermissions() {
<p style={{ marginBottom: '16px', fontSize: '15px', lineHeight: '1.6' }}> <p style={{ marginBottom: '16px', fontSize: '15px', lineHeight: '1.6' }}>
<strong>"{deleteTarget.role.role_name}"</strong> <strong>"{deleteTarget.role.role_name}"</strong>
</p> </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 style={{ marginBottom: '16px', color: '#666', fontSize: '14px' }}>
</p> </p>
</div> </div>
)} )}