+
+
-
俱乐部任职(顶栏切换范围)
-
+ 俱乐部任职
+
添加俱乐部
-
{{ a.club_label }}{{ a.is_primary ? '(主任职)' : '' }}
- 任职:{{ a.role_name }}
- 移除
+ {{ a.role_name }}
+ 移除
-
- 暂未分配俱乐部;需集团高层添加后,用户顶栏才可切换
+
+ 暂未分配俱乐部
-
-
+
+
- 各俱乐部功能角色
+ 功能角色
@@ -228,19 +219,20 @@
class="role-tag"
>
{{ role.role_name || role.role_code }}
-
+
-
该俱乐部暂无功能角色
-
- 可选角色:{{ block.catalogRoles.map(r => r.role_name).join('、') }}
+
暂无功能角色
+
+ 可分配:{{ block.catalogRoles.map(r => r.role_name).join('、') }}
-
- 请由集团高层先分配俱乐部任职;再点击各俱乐部「添加角色」绑定菜单权限
-
@@ -407,9 +399,22 @@ const roleClubLabel = (role) => {
return `[${cname}] ${role.role_name || role.role_code || ''}`
}
+const canManageRolesForClub = (clubId) => {
+ const cid = clubId || ''
+ if (canManageClubAssignments.value) return true
+ return manageableClubIds.value.includes(cid)
+}
+
+const visibleRolesForRow = (row) => {
+ const roles = row.roles || []
+ if (canManageClubAssignments.value) return roles
+ return roles.filter((r) => manageableClubIds.value.includes(r.club_id || ''))
+}
+
// 权限状态
const hasPermission = ref(true)
const canManageClubAssignments = ref(false)
+const manageableClubIds = ref([])
// 角色列表(用于筛选和添加)
const roleList = ref([])
@@ -474,14 +479,14 @@ const availableRolesForUser = computed(() => {
})
const roleBindClubOptions = computed(() => {
- const fromAssign = (currentUserAssignments.value || [])
- .filter((a) => a.club_id)
+ const source = (currentUserAssignments.value || [])
+ .filter((a) => a.club_id && canManageRolesForClub(a.club_id))
.map((a) => ({
club_id: a.club_id,
name: a.club_label || clubNameMap.value[a.club_id] || a.club_id,
}))
- if (fromAssign.length) return fromAssign
- return clubOptions.value
+ if (source.length) return source
+ return clubOptions.value.filter((c) => canManageRolesForClub(c.club_id))
})
const clubRoleBlocks = computed(() => {
@@ -520,6 +525,13 @@ const clubRoleBlocks = computed(() => {
return blocks
})
+const visibleClubRoleBlocks = computed(() => {
+ if (canManageClubAssignments.value) {
+ return clubRoleBlocks.value
+ }
+ return clubRoleBlocks.value.filter((b) => canManageRolesForClub(b.club_id))
+})
+
// 添加用户弹窗
const addUserDialogVisible = ref(false)
const newUserForm = ref({
@@ -532,13 +544,13 @@ const newUserRoleCodes = ref([])
const addingUser = ref(false)
// ==================== 接口调用 ====================
-// 获取角色列表(全部俱乐部,用于分俱乐部绑角色)
+// 获取角色列表(集团高层拉全部,俱乐部超管仅本俱乐部)
const fetchRoleList = async () => {
try {
- let res = await request.post('/houtai/hqyhjsgl', { username, all_clubs: true })
- if (res.code !== 0) {
- res = await request.post('/houtai/hqyhjsgl', { username })
- }
+ const res = await request.post('/houtai/hqyhjsgl', {
+ username,
+ all_clubs: canManageClubAssignments.value,
+ })
if (res.code === 0) {
roleList.value = res.data.roles || []
return true
@@ -591,6 +603,7 @@ const fetchUserList = async () => {
userList.value = res.data.list || []
total.value = res.data.total || 0
canManageClubAssignments.value = !!res.data.can_manage_club_assignments
+ manageableClubIds.value = res.data.manageable_club_ids || []
} else {
ElMessage.error(res.msg || '获取用户列表失败')
}
@@ -846,10 +859,8 @@ onMounted(async () => {
return
}
await loadClubOptions()
- const success = await fetchRoleList()
- if (success) {
- await fetchUserList()
- }
+ await fetchUserList()
+ await fetchRoleList()
})