fix: 后台用户按俱乐部分配角色,菜单与多俱乐部权限对齐

This commit is contained in:
XingQue
2026-07-06 19:14:01 +08:00
parent bb540ced45
commit 1c57cea841
11 changed files with 164 additions and 87 deletions

View File

@@ -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>

View File

@@ -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) {