This commit is contained in:
@@ -125,6 +125,8 @@
|
||||
clearable
|
||||
size="small"
|
||||
style="width: 180px"
|
||||
@input="handleRoleSearch"
|
||||
@clear="handleRoleSearch('')"
|
||||
/>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
@@ -555,9 +557,16 @@
|
||||
})
|
||||
|
||||
// 加载所有角色列表
|
||||
const loadAllRoles = async () => {
|
||||
const loadAllRoles = async (keyword: string = '') => {
|
||||
try {
|
||||
const res = await RoleService.getRoles({ page: 1, pageSize: 100 })
|
||||
const params: any = {
|
||||
page: 1,
|
||||
pageSize: keyword ? 100 : 20 // 搜索时加载更多,默认20条
|
||||
}
|
||||
if (keyword) {
|
||||
params.role_name = keyword
|
||||
}
|
||||
const res = await RoleService.getRoles(params)
|
||||
if (res.code === 0) {
|
||||
allRoles.value = res.data.items || []
|
||||
}
|
||||
@@ -607,12 +616,24 @@
|
||||
roles = roles.filter((role) => role.role_type === 1)
|
||||
}
|
||||
|
||||
// 根据搜索关键词过滤
|
||||
if (!leftRoleFilter.value) return roles
|
||||
const keyword = leftRoleFilter.value.toLowerCase()
|
||||
return roles.filter((role) => role.role_name.toLowerCase().includes(keyword))
|
||||
return roles
|
||||
})
|
||||
|
||||
// 搜索防抖定时器
|
||||
let roleSearchTimer: any = null
|
||||
|
||||
// 远程搜索角色
|
||||
const handleRoleSearch = (keyword: string) => {
|
||||
// 清除之前的定时器
|
||||
if (roleSearchTimer) {
|
||||
clearTimeout(roleSearchTimer)
|
||||
}
|
||||
// 设置新的定时器,500ms 后执行搜索
|
||||
roleSearchTimer = setTimeout(async () => {
|
||||
await loadAllRoles(keyword)
|
||||
}, 500)
|
||||
}
|
||||
|
||||
// 计算属性:过滤后的已分配角色
|
||||
const filteredAssignedRoles = computed(() => {
|
||||
const assignedRolesList = allRoles.value.filter((role) => selectedRoles.value.includes(role.ID))
|
||||
@@ -674,18 +695,16 @@
|
||||
// 移除单个角色
|
||||
const removeSingleRole = async (roleId: number) => {
|
||||
try {
|
||||
// 从已分配列表中移除该角色
|
||||
const newRoles = selectedRoles.value.filter((id) => id !== roleId)
|
||||
await AccountService.assignRolesToAccount(currentAccountId.value, newRoles)
|
||||
await AccountService.removeRoleFromAccount(currentAccountId.value, roleId)
|
||||
|
||||
selectedRoles.value = newRoles
|
||||
// 从本地已分配列表中移除该角色
|
||||
selectedRoles.value = selectedRoles.value.filter((id) => id !== roleId)
|
||||
|
||||
ElMessage.success('角色移除成功')
|
||||
// 刷新列表以更新角色显示
|
||||
await getAccountList()
|
||||
} catch (error) {
|
||||
console.error('移除角色失败:', error)
|
||||
ElMessage.error('角色移除失败')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user