优化操作提示
This commit is contained in:
@@ -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>
|
||||||
)}
|
)}
|
||||||
|
|||||||
Reference in New Issue
Block a user