Pārlūkot izejas kodu

修复经典布局和分栏布局不设置redirect时,界面异常无法切换分组,点击分组会新增空白选项卡的问题
优化经典布局和分栏布局导航菜单只有一个菜单时也显示,避免没有设置redirect时自动隐藏无法点击的问题,导航栏无菜单时自动隐藏导航栏

zhontai 2 gadi atpakaļ
vecāks
revīzija
e078d6c57f

+ 3 - 1
src/layout/component/aside.vue

@@ -123,7 +123,9 @@ onBeforeMount(() => {
     let { layout, isClassicSplitMenu } = themeConfig.value
     if (layout === 'classic' && isClassicSplitMenu) {
       // 经典布局分割菜单只有一项子级时,收起左侧导航菜单
-      res.children.length <= 1 ? (themeConfig.value.isCollapse = true) : (themeConfig.value.isCollapse = false)
+      // res.children.length <= 1 ? (themeConfig.value.isCollapse = true) : (themeConfig.value.isCollapse = false)
+      // 经典布局分割菜单无子级时,收起左侧导航菜单
+      !res.children || res.children.length < 1 ? (themeConfig.value.isCollapse = true) : (themeConfig.value.isCollapse = false)
       state.menuList = []
       state.menuList = res.children
     }

+ 6 - 3
src/layout/component/columnsAside.vue

@@ -97,8 +97,9 @@ const onColumnsAsideMenuClick = async (v: RouteItem) => {
   if (redirect) router.push(redirect)
   else router.push(path)
   // 一个路由设置自动收起菜单
-  if (!v.children) themeConfig.value.isCollapse = true
-  else if (v.children.length > 1) themeConfig.value.isCollapse = false
+  // if (!v.children) themeConfig.value.isCollapse = true
+  // else if (v.children.length > 1) themeConfig.value.isCollapse = false
+  !v.children || v.children.length < 1 ? (themeConfig.value.isCollapse = true) : (themeConfig.value.isCollapse = false)
 }
 // 鼠标移入时,显示当前的子级菜单
 const onColumnsAsideMenuMouseenter = (v: RouteRecordRaw, k: number) => {
@@ -133,7 +134,9 @@ const setFilterRoutes = () => {
   if (Object.keys(resData).length <= 0) return false
   onColumnsAsideDown(resData.item?.k)
   // 刷新时,初始化一个路由设置自动收起菜单
-  resData.children.length <= 1 ? (themeConfig.value.isCollapse = true) : (themeConfig.value.isCollapse = false)
+  // resData.children.length <= 1 ? (themeConfig.value.isCollapse = true) : (themeConfig.value.isCollapse = false)
+  // 刷新时,初始化无路由设置自动收起菜单
+  !resData.children || resData.children.length < 1 ? (themeConfig.value.isCollapse = true) : (themeConfig.value.isCollapse = false)
   mittBus.emit('setSendColumnsChildren', resData)
 }
 // 传送当前子级数据到菜单中

+ 8 - 1
src/layout/navBars/tagsView/tagsView.vue

@@ -190,6 +190,9 @@ const singleAddTagsView = (path: string, to?: RouteToFrom) => {
 }
 // 1、添加 tagsView:未设置隐藏(isHide)也添加到在 tagsView 中(可开启多标签详情,单标签详情)
 const addTagsView = (path: string, to?: RouteToFrom) => {
+  if (to?.meta?.isDir) {
+    return
+  }
   // 防止拿取不到路由信息
   nextTick(async () => {
     let item: RouteItem
@@ -383,9 +386,13 @@ const onTagsClick = (v: RouteItem, k: number) => {
   state.tagsRefsIndex = k
   router.push(v)
   // 分栏布局时,收起/展开菜单
+  // if (getThemeConfig.value.layout === 'columns') {
+  //   const item: RouteItem = routesList.value.find((r: RouteItem) => r.path.indexOf(`/${v.path.split('/')[1]}`) > -1)
+  //   !item.children ? (getThemeConfig.value.isCollapse = true) : (getThemeConfig.value.isCollapse = false)
+  // }
   if (getThemeConfig.value.layout === 'columns') {
     const item: RouteItem = routesList.value.find((r: RouteItem) => r.path.indexOf(`/${v.path.split('/')[1]}`) > -1)
-    !item.children ? (getThemeConfig.value.isCollapse = true) : (getThemeConfig.value.isCollapse = false)
+    item.meta?.isHide ? (getThemeConfig.value.isCollapse = true) : (getThemeConfig.value.isCollapse = false)
   }
 }
 // 处理 url,地址栏链接有参数时,tagsview 右键菜单刷新功能失效问题,感谢 @ZzZz-RIPPER、@dejavuuuuu

+ 1 - 0
src/router/backEnd.ts

@@ -134,6 +134,7 @@ export async function getBackEndControlRoutes() {
           status: 1,
           remark: null,
           order: menu.sort,
+          isDir: !menu.viewPath,
         },
       })
     })

+ 1 - 0
src/types/global.d.ts

@@ -48,6 +48,7 @@ declare type RouteItem<T = any> = {
     isDynamicPath?: string
     isIframeOpen?: string
     loading?: boolean
+    isDir?: boolean
   }
   children: T[]
   query?: { [key: string]: T }

+ 1 - 1
src/utils/other.ts

@@ -66,7 +66,7 @@ export function setTagsViewNameI18n(item: any) {
     }
   } else {
     // 非自定义 tagsView 名称
-    tagsViewName = i18n.global.t(meta.title)
+    if (meta.title) tagsViewName = i18n.global.t(meta.title)
   }
   return tagsViewName
 }