Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ddcbe65856 | |||
| 994dc360ae |
@@ -76,7 +76,7 @@ async function fetchSummary() {
|
||||
async function fetchAnnouncement() {
|
||||
announcementLoading.value = true
|
||||
try {
|
||||
const res = await authApi.getPublicConfig('announcement')
|
||||
const res = await authApi.getPublicConfig('system.announcement')
|
||||
if (res.code === 200 && res.data) announcement.value = String(res.data)
|
||||
} finally {
|
||||
announcementLoading.value = false
|
||||
|
||||
@@ -171,7 +171,7 @@ onMounted(() => {
|
||||
<template v-else>
|
||||
<div class="flex items-center gap-3">
|
||||
<Label>允许用户注册</Label>
|
||||
<Switch v-model:checked="allowRegister" />
|
||||
<Switch v-model="allowRegister" />
|
||||
<span class="text-sm text-muted-foreground">{{ allowRegister ? '已开启' : '已关闭' }}</span>
|
||||
</div>
|
||||
<div class="flex justify-end">
|
||||
|
||||
@@ -131,6 +131,18 @@ const menuRoleId = ref(0)
|
||||
const menuTree = ref<UserMenu[]>([])
|
||||
const selectedMenuIds = ref<number[]>([])
|
||||
|
||||
/** 递归将 edges.children 转换为 children */
|
||||
function normalizeMenuTree(nodes: any[]): UserMenu[] {
|
||||
if (!nodes?.length) return []
|
||||
return nodes.map(node => {
|
||||
const edgeChildren = node.edges?.children
|
||||
const directChildren = node.children
|
||||
const rawChildren = edgeChildren?.length ? edgeChildren : directChildren
|
||||
const children = rawChildren?.length ? normalizeMenuTree(rawChildren) : undefined
|
||||
return { ...node, children }
|
||||
})
|
||||
}
|
||||
|
||||
async function openMenuAuth(roleId: number) {
|
||||
menuRoleId.value = roleId
|
||||
menuLoading.value = true
|
||||
@@ -140,8 +152,10 @@ async function openMenuAuth(roleId: number) {
|
||||
systemMenuApi.getTree(),
|
||||
systemRoleApi.getMenu(roleId),
|
||||
])
|
||||
menuTree.value = treeRes.data ?? []
|
||||
selectedMenuIds.value = (roleMenuRes.data as number[]) ?? []
|
||||
menuTree.value = normalizeMenuTree(treeRes.data ?? [])
|
||||
// getMenu 返回的是菜单 ID 数组
|
||||
const ids = roleMenuRes.data
|
||||
selectedMenuIds.value = Array.isArray(ids) ? ids : []
|
||||
} catch {
|
||||
toast.error('获取菜单数据失败')
|
||||
} finally {
|
||||
@@ -314,8 +328,8 @@ const MenuTreeCheckbox: ReturnType<typeof defineComponent> = defineComponent({
|
||||
h('div', { class: 'flex items-center gap-2', style: { paddingLeft: `${props.depth * 20}px` } }, [
|
||||
h(Checkbox, {
|
||||
id: `menu-${props.menu.id}`,
|
||||
checked: props.selectedIds.includes(props.menu.id),
|
||||
'onUpdate:checked': () => emit('toggle', props.menu.id),
|
||||
modelValue: props.selectedIds.includes(props.menu.id),
|
||||
'onUpdate:modelValue': () => emit('toggle', props.menu.id),
|
||||
}),
|
||||
h(Label, { for: `menu-${props.menu.id}`, class: 'cursor-pointer text-sm' }, () => props.menu.name || props.menu.label),
|
||||
]),
|
||||
|
||||
@@ -313,8 +313,8 @@ async function fetchUsers(params: PageParams): Promise<PageResponse<any>> {
|
||||
>
|
||||
<Checkbox
|
||||
:id="`role-${role.id}`"
|
||||
:checked="selectedRoleIds.includes(role.id)"
|
||||
@update:checked="toggleRole(role.id)"
|
||||
:model-value="selectedRoleIds.includes(role.id)"
|
||||
@update:model-value="toggleRole(role.id)"
|
||||
/>
|
||||
<Label :for="`role-${role.id}`" class="cursor-pointer">
|
||||
{{ role.name }}
|
||||
|
||||
Reference in New Issue
Block a user