diff --git a/README.md b/README.md index 59669ff..1ea7231 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## 简介 vue-element-perfect 是一个后台前端解决方案,它使用了最新的前端技术栈、动态路由,权限验证,并且有着丰富的组件,企业级中后台解决方案,可免费商用,同时支持PC、平板、手机 - +本项目也参考了很多开源的项目、 ### 在线预览 - gitee国内访问地址:https://yuanzbz.gitee.io/vue-admin-perfect/#/home - github site : https://zouzhibin.github.io/vue-admin-perfect/ diff --git a/src/components/Theme/index.vue b/src/components/Theme/index.vue index 446d8e1..54cd9c8 100644 --- a/src/components/Theme/index.vue +++ b/src/components/Theme/index.vue @@ -24,6 +24,7 @@ > +
diff --git a/src/layout/LayoutColumns/index.vue b/src/layout/LayoutColumns/index.vue index ff352ee..31c1580 100644 --- a/src/layout/LayoutColumns/index.vue +++ b/src/layout/LayoutColumns/index.vue @@ -1,12 +1,61 @@ @@ -14,25 +63,160 @@ import { ref, computed, watch } from "vue"; import { useRoute, useRouter } from "vue-router"; import {usePermissionStore} from "@/store/modules/permission" +import { useSettingStore } from "@/store/modules/setting"; +import SubItem from '../components/SubMenu/SubItem.vue' +import Footer from '../components/Footer/index.vue' +import SubMenu from '../components/SubMenu/SubMenu.vue' +import TagsView from '../components/TagsView/index.vue' const PermissionStore = usePermissionStore() - +const SettingStore = useSettingStore() const route = useRoute() - +const router = useRouter(); +import HeaderToolRight from '../components/Header/ToolRight.vue' +import HeaderToolLeft from '../components/Header/ToolLeft.vue' +import Main from '../components/Main/index.vue' // 获取路由 const permission_routes = computed(() => PermissionStore.permission_routes) +// 获取路由 +const menusRoutes = computed(()=>{ + return PermissionStore.permission_routes.filter(item=>!item.hidden) +}) + +const activeCurrentMenu = ref('') +// 主题配置 +const themeConfig = computed(() =>SettingStore.themeConfig) +const isCollapse = computed(() =>!SettingStore.isCollapse) +const activeMenu = computed(() => { + const { meta, path } = route + if (meta.activeMenu) { + return meta.activeMenu + } + return path +}) +const basePath = ref('/') +const subMenus = ref([]) + +watch(()=>[route],()=>{ + if (!menusRoutes.value.length) return; + const [firstMenu] = route.matched + activeCurrentMenu.value = firstMenu.path; + let menuItem = menusRoutes.value.find(item=>firstMenu.path === item.path) + if(menuItem&&menuItem.children?.length) { + subMenus.value = menuItem.children + }else { + subMenus.value = [] + } + basePath.value = firstMenu.path +},{ + deep: true, + immediate:true +}) + +const handleChangeMenu = (item)=>{ + router.push(item.path); +} diff --git a/src/layout/components/Header/components/Hamburger.vue b/src/layout/components/Header/components/Hamburger.vue index e209be8..46c0da7 100644 --- a/src/layout/components/Header/components/Hamburger.vue +++ b/src/layout/components/Header/components/Hamburger.vue @@ -1,6 +1,6 @@ - +