|
|
@@ -8,28 +8,12 @@
|
|
|
|
|
|
<div class="header-center">
|
|
|
<a-space>
|
|
|
- <NavItem
|
|
|
- :label="$t('header.conversation')"
|
|
|
- to="/chat/history"
|
|
|
- v-hasPermi="'system:conversation:talk'"
|
|
|
- icon_name="header-huihua"
|
|
|
- />
|
|
|
- <NavItem
|
|
|
- :label="$t('header.knowledge')"
|
|
|
- to="/knowledge"
|
|
|
- v-hasPermi="'system:knowledge'"
|
|
|
- icon_name="header-zhishiku"
|
|
|
- />
|
|
|
- <NavItem :label="$t('header.model')" to="/model" v-hasPermi="'system:model'" icon_name="header-moxingguanli" />
|
|
|
- <!-- <NavItem :label="$t('header.agent')" to="/agent" icon_name="header-agent" /> -->
|
|
|
- <NavItem :label="'小数'" to="/xiaoshu" v-hasPermi="'system:xiaoshu'" icon_name="header-agent" />
|
|
|
- <NavItem
|
|
|
- :label="$t('header.intelligent')"
|
|
|
- to="/intelligent"
|
|
|
- v-hasPermi="'system:conversation:talk'"
|
|
|
- icon_name="header-zhinengti"
|
|
|
- />
|
|
|
- <PermissionDropdownV1 :label="$t('header.permission')" v-hasPermi="'system:permission'" />
|
|
|
+ <div v-for="item in nav_list" :key="item.to">
|
|
|
+ <NavItem :label="item.label" :to="item.to" :icon_name="item.icon_name" />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <PermissionDropdownV1 :dropdown_list="dropdown_list" :label="$t('header.permission')"
|
|
|
+ v-hasPermi="'system:permission'" />
|
|
|
|
|
|
<NavItem label="临时: RagFlow Chat" to="/ragchat" icon_name="header-zhinengti" />
|
|
|
</a-space>
|
|
|
@@ -54,11 +38,13 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
+import { ref, onMounted } from 'vue';
|
|
|
import { setI18nLanguage } from '../../i18n';
|
|
|
import { getCurrentTheme, setThemeDark, setThemeLight } from '../../base/theme';
|
|
|
import { requestScreenFull, toggleScreenFull } from '../../3rd-libs/screenfull';
|
|
|
|
|
|
import { useCurrentUserStore } from '../../base/store/use-current-user';
|
|
|
+import { localST_RoutesList } from '../../base/storage';
|
|
|
|
|
|
import NavItem from './NavItem.vue';
|
|
|
|
|
|
@@ -72,7 +58,8 @@ import BtnSettings from './header-btns/BtnSettings.vue';
|
|
|
import BtnCurrentUser from './header-btns/BtnCurrentUser.vue';
|
|
|
|
|
|
const currentUser = useCurrentUserStore();
|
|
|
-
|
|
|
+const nav_list = ref([])
|
|
|
+const dropdown_list = ref([])
|
|
|
/**
|
|
|
* 请求网页全屏
|
|
|
*/
|
|
|
@@ -84,6 +71,42 @@ const handleNameChange = () => {
|
|
|
// const nm = Math.random() * 99989 + '';
|
|
|
// currentUser.updateName(nm);
|
|
|
};
|
|
|
+const formatMenuItems = (list) => {
|
|
|
+
|
|
|
+ return list.map(item => {
|
|
|
+ // 过滤掉meta.title为'权限管理'
|
|
|
+ if (item.meta.title === '权限管理') {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (item.resourceType.id && item.resourceType.id == '0') {
|
|
|
+ // 只处理菜单项
|
|
|
+ return {
|
|
|
+ label: item.meta.title,
|
|
|
+ to: item.path,
|
|
|
+ icon_name: item.meta.icon || 'header-zhinengti' // 假设icon_name是根据name字段来命名的
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ }).filter(item => item !== null); // 过滤掉null值
|
|
|
+}
|
|
|
+const formatPermissionItems = (permissionList) => {
|
|
|
+ return permissionList.children.map(item => {
|
|
|
+ return {
|
|
|
+ label: item.meta.title,
|
|
|
+ path: item.path,
|
|
|
+ };
|
|
|
+ }).filter(item => item !== null); // 过滤掉null值
|
|
|
+}
|
|
|
+onMounted(() => {
|
|
|
+ // 延迟渲染菜单,防止菜单渲染时还没获取到权限信息
|
|
|
+ const routesList = JSON.parse(localST_RoutesList.getItem());
|
|
|
+
|
|
|
+ nav_list.value = formatMenuItems(routesList)
|
|
|
+ const permissionList = routesList.find(item => item.meta.title === '权限管理');
|
|
|
+ dropdown_list.value = permissionList ? formatPermissionItems(permissionList) : []
|
|
|
+
|
|
|
+});
|
|
|
</script>
|
|
|
|
|
|
<style lang="css" scoped>
|