From aa7373f0632d0d659c58272cfbdf1ee224d2c556 Mon Sep 17 00:00:00 2001 From: april <1317795103@qq.com> Date: Fri, 18 Aug 2023 18:32:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AF=BC=E8=88=AA=E6=B7=B7=E5=90=88?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E7=BB=86=E8=8A=82=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 3 ++- .eslintrc.cjs | 6 +++++ src/layout/components/Sidebar/TopMenu.vue | 30 ++++++++++++++++++--- src/layout/components/Sidebar/index.vue | 4 +-- src/layout/index.vue | 33 ++++++++++------------- src/router/index.ts | 1 + src/store/modules/permission.ts | 17 +++++++++--- src/styles/sidebar.scss | 33 ++++++++++++++++++++++- 8 files changed, 97 insertions(+), 30 deletions(-) diff --git a/.editorconfig b/.editorconfig index dd76572..00ee2de 100644 --- a/.editorconfig +++ b/.editorconfig @@ -5,7 +5,8 @@ root = true [*] charset = utf-8 # 设置文件字符集为 utf-8 end_of_line = lf # 控制换行类型(lf | cr | crlf) -indent_style = tab # 缩进风格(tab | space) +indent_style = space # 缩进风格(tab | space) +indent_size = 2 # 缩进大小 insert_final_newline = true # 始终在文件末尾插入一个新行 # 表示仅 md 文件适用以下规则 diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 3300699..69c2fc7 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -64,6 +64,12 @@ module.exports = { }, ], "vue/multi-word-component-names": "off", + "prettier/prettier": [ + "error", + { + useTabs: false, // 不使用制表符 + }, + ], }, // eslint不能对html文件生效 overrides: [ diff --git a/src/layout/components/Sidebar/TopMenu.vue b/src/layout/components/Sidebar/TopMenu.vue index 63530b1..39c6862 100644 --- a/src/layout/components/Sidebar/TopMenu.vue +++ b/src/layout/components/Sidebar/TopMenu.vue @@ -3,15 +3,34 @@ import { usePermissionStore } from "@/store/modules/permission"; import variables from "@/styles/variables.module.scss"; import { useAppStore } from "@/store/modules/app"; import { translateRouteTitleI18n } from "@/utils/i18n"; +import { useRouter } from "vue-router"; const appStore = useAppStore(); const activePath = computed(() => appStore.activeTopMenu); +const router = useRouter(); +// 递归跳转 +const goFirst = (menu: any[]) => { + if (!menu.length) return; + const [first] = menu; + if (first.children) { + goFirst(first.children); + } else { + router.push({ + name: first.name, + }); + } +}; const selectMenu = (index: string) => { appStore.changeTopActive(index); + permissionStore.getMixLeftMenu(index); + const { mixLeftMenu } = permissionStore; + goFirst(mixLeftMenu); }; const permissionStore = usePermissionStore(); const topMenu = ref([]); onMounted(() => { - topMenu.value = permissionStore.routes.filter((el) => !el.meta?.hidden); + topMenu.value = permissionStore.routes.filter( + (item) => !item.meta || !item.meta.hidden + ); });