fix: 后台用户按俱乐部分配角色,菜单与多俱乐部权限对齐
This commit is contained in:
@@ -43,7 +43,7 @@
|
||||
<el-button type="primary" @click="fetchUserList">搜索</el-button>
|
||||
<el-button @click="resetFilters">重置</el-button>
|
||||
</div>
|
||||
<el-button type="success" @click="openAddUserDialog">
|
||||
<el-button v-if="canAddUser" type="success" @click="openAddUserDialog">
|
||||
<el-icon><Plus /></el-icon> 添加用户
|
||||
</el-button>
|
||||
</div>
|
||||
@@ -399,6 +399,10 @@ const roleClubLabel = (role) => {
|
||||
return `[${cname}] ${role.role_name || role.role_code || ''}`
|
||||
}
|
||||
|
||||
const canAddUser = computed(() => {
|
||||
return canManageClubAssignments.value || manageableClubIds.value.length > 0
|
||||
})
|
||||
|
||||
const canManageRolesForClub = (clubId) => {
|
||||
const cid = clubId || ''
|
||||
if (canManageClubAssignments.value) return true
|
||||
@@ -411,7 +415,7 @@ const visibleRolesForRow = (row) => {
|
||||
return roles.filter((r) => manageableClubIds.value.includes(r.club_id || ''))
|
||||
}
|
||||
|
||||
// 权限状态
|
||||
// 权限状态:集团高管 / 俱乐部超管 / 000001 均可访问
|
||||
const hasPermission = ref(true)
|
||||
const canManageClubAssignments = ref(false)
|
||||
const manageableClubIds = ref([])
|
||||
@@ -605,6 +609,8 @@ const fetchUserList = async () => {
|
||||
total.value = res.data.total || 0
|
||||
canManageClubAssignments.value = !!res.data.can_manage_club_assignments
|
||||
manageableClubIds.value = res.data.manageable_club_ids || []
|
||||
} else if (res.code === 403) {
|
||||
hasPermission.value = false
|
||||
} else {
|
||||
ElMessage.error(res.msg || '获取用户列表失败')
|
||||
}
|
||||
@@ -853,7 +859,7 @@ const confirmAddUser = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化
|
||||
// 初始化:先拉用户列表(含 manageable_club_ids),再拉角色列表
|
||||
onMounted(async () => {
|
||||
if (!username) {
|
||||
ElMessage.error('未获取到用户信息')
|
||||
@@ -861,7 +867,9 @@ onMounted(async () => {
|
||||
}
|
||||
await loadClubOptions()
|
||||
await fetchUserList()
|
||||
await fetchRoleList()
|
||||
if (hasPermission.value) {
|
||||
await fetchRoleList()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
@@ -371,6 +371,7 @@ const removePermission = async (perm) => {
|
||||
username,
|
||||
action: 'remove_permission',
|
||||
role_code: currentRole.value.role_code,
|
||||
target_club_id: currentRole.value.club_id || '',
|
||||
perm_code: perm.perm_code
|
||||
})
|
||||
if (res.code === 0) {
|
||||
|
||||
Reference in New Issue
Block a user