feat: add knowledge management pages
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import * as React from 'react'
|
||||
import {
|
||||
Bot,
|
||||
BookOpen,
|
||||
BriefcaseBusiness,
|
||||
ClipboardList,
|
||||
Database,
|
||||
@@ -8,6 +9,7 @@ import {
|
||||
Library,
|
||||
Menu,
|
||||
ScrollText,
|
||||
Search,
|
||||
Settings,
|
||||
ShieldCheck,
|
||||
Ticket,
|
||||
@@ -23,6 +25,7 @@ import { Sheet, SheetContent, SheetHeader, SheetTitle } from '@/components/ui/sh
|
||||
|
||||
const iconMap = {
|
||||
audit: ScrollText,
|
||||
book_open: BookOpen,
|
||||
bot: Bot,
|
||||
briefcase: BriefcaseBusiness,
|
||||
database: Database,
|
||||
@@ -30,6 +33,7 @@ const iconMap = {
|
||||
library: Library,
|
||||
menu: Menu,
|
||||
roles: UserCog,
|
||||
search: Search,
|
||||
settings: Settings,
|
||||
shield: ShieldCheck,
|
||||
ticket: Ticket,
|
||||
@@ -57,6 +61,41 @@ function visibleChildren(menu: AuthMenu) {
|
||||
return menu.children.filter((item) => item.is_visible && item.is_enabled)
|
||||
}
|
||||
|
||||
const knowledgeNavGroup: AuthMenu = {
|
||||
id: -100,
|
||||
code: 'knowledge_builtin',
|
||||
title: '知识库',
|
||||
path: '#/knowledge',
|
||||
icon: 'book_open',
|
||||
permission_code: 'knowledge.view',
|
||||
is_visible: true,
|
||||
is_enabled: true,
|
||||
children: [
|
||||
{
|
||||
id: -101,
|
||||
code: 'knowledge_bases',
|
||||
title: '知识库',
|
||||
path: '#/knowledge',
|
||||
icon: 'book_open',
|
||||
permission_code: 'knowledge.view',
|
||||
is_visible: true,
|
||||
is_enabled: true,
|
||||
children: []
|
||||
},
|
||||
{
|
||||
id: -102,
|
||||
code: 'knowledge_search',
|
||||
title: '知识检索',
|
||||
path: '#/knowledge/search',
|
||||
icon: 'search',
|
||||
permission_code: 'knowledge.view',
|
||||
is_visible: true,
|
||||
is_enabled: true,
|
||||
children: []
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
type SidebarNavContentProps = {
|
||||
groups: AuthMenu[]
|
||||
currentHash: string
|
||||
@@ -120,7 +159,11 @@ type AppSidebarProps = {
|
||||
export function AppSidebar({ mobileOpen = false, onMobileOpenChange }: AppSidebarProps) {
|
||||
const { user } = useAuth()
|
||||
const currentHash = useCurrentHash()
|
||||
const groups = (user?.menus ?? []).filter((menu) => menu.is_visible && menu.is_enabled)
|
||||
const menuGroups = (user?.menus ?? []).filter((menu) => menu.is_visible && menu.is_enabled)
|
||||
const hasKnowledgeMenu = menuGroups.some(
|
||||
(group) => group.code.startsWith('knowledge') || visibleChildren(group).some((item) => item.path.startsWith('#/knowledge'))
|
||||
)
|
||||
const groups = hasKnowledgeMenu ? menuGroups : [...menuGroups, knowledgeNavGroup]
|
||||
|
||||
return (
|
||||
<>
|
||||
|
||||
Reference in New Issue
Block a user