<template> <el-menu :default-active="activeMenu" mode="horizontal" @select="handleSelect" > <template v-for="(item, index) in topMenus"> <el-menu-item :style="{ '--theme': theme } " :index="item.path" :key="index" > <!-- <svg-icon v-if="item.meta && item.meta.icon && item.meta.icon !== '#'" :icon-class="item.meta.icon" /> --> <img :src="item.meta.img" style="height: 40px; width:auto;" alt=""> {{ item.meta.title }} </el-menu-item> </template> </el-menu> </template> <script> import { constantRoutes } from "@/router"; import { eventBus } from '@/main.js'; import { getOverTimeId } from "@/api/ehs/ehsHiddenDanger"; import { updateEhsMyMessage } from "@/api/ehs/ehsMyMessage"; // 隐藏侧边栏路由 const hideList = ["/index", "/user/profile"]; export default { data() { return { // 顶部栏初始数 visibleNumber: 50, // 当前激活菜单的 index currentIndex: undefined, img1:require('../assets/images/icon/menu (6).png'), img2:require('../assets/images/icon/menu (10).png'), img3:require('../assets/images/icon/menu (2).png'), img4:require('../assets/images/icon/menu (7).png'), img5:require('../assets/images/xzzf.png'), img6:require('../assets/images/icon/menu (8).png'), img7:require('../assets/images/icon/menu (9).png'), img8:require('../assets/images/icon/menu (1).png'), img9:require('../assets/images/icon/menu (11).png'), img10:require('../assets/images/icon/menu (5).png'), img11:require('../assets/images/icon/menu (12).png'), img12:require('../assets/images/icon/menu (4).png'), }; }, computed: { theme() { return this.$store.state.settings.theme; }, // 顶部显示菜单 topMenus() { let topMenus = []; let imgArr= [this.img1,this.img2,this.img3,this.img4,this.img5,this.img6,this.img7,this.img8,this.img9,this.img10,this.img11,this.img12] this.routers.map((menu,index) => { if (menu.hidden !== true) { // 兼容顶部栏一级菜单内部跳转 if (menu.path === "/") { topMenus.push(menu.children[0]); } else { menu.meta.img = imgArr[index] topMenus.push(menu); } } }); return topMenus; }, // 所有的路由信息 routers() { return this.$store.state.permission.topbarRouters; }, // 设置子路由 childrenMenus() { var childrenMenus = []; this.routers.map((router) => { for (var item in router.children) { if (router.children[item].parentPath === undefined) { if (router.path === "/") { router.children[item].path = "/" + router.children[item].path; } else { if (!this.ishttp(router.children[item].path)) { router.children[item].path = router.path + "/" + router.children[item].path; } } router.children[item].parentPath = router.path; } childrenMenus.push(router.children[item]); } }); return constantRoutes.concat(childrenMenus); }, // 默认激活的菜单 activeMenu() { const path = this.$route.path; let activePath = path; if ( path !== undefined && path.lastIndexOf("/") > 0 && hideList.indexOf(path) === -1 ) { const tmpPath = path.substring(1, path.length); activePath = "/" + tmpPath.substring(0, tmpPath.indexOf("/")); if (!this.$route.meta.link) { this.$store.dispatch("app/toggleSideBarHide", false); } } else if (!this.$route.children) { activePath = path; this.$store.dispatch("app/toggleSideBarHide", true); } this.activeRoutes(activePath); return activePath; }, }, created() { this.openAlert(); }, mounted() { //一秒后执行一次get方法,打印1 this.timer = setTimeout(this.get, 1000); }, //销毁定时器,不然会一直存在 beforeDestroy() { clearTimeout(this.timer); }, methods: { openAlert() { getOverTimeId().then(response => { console.log(response); if(response.code == 200){ if(response.data.myMessageDesc!="" && response.data.myMessageDesc!=null){ this.$confirm(response.data.myMessageDesc , '隐患信息', { confirmButtonText: '查看', cancelButtonText: '取消', type: 'warning' }).then(() => { updateEhsMyMessage({"myMessageId":response.data.myMessageId,"myMessageState":"Y"}).then(response => { this.$router.push({ path: '/ehsHiddenDangerMenu/ehsHiddenDanger', query: {overTime: "10" } }); }); }).catch(() => { /* this.$message({ type: 'info', message: '已取消删除' });*/ }); } } }); }, // 菜单选择事件 handleSelect(key, keyPath) { this.currentIndex = key; const route = this.routers.find((item) => item.path === key); eventBus.$emit('toLogo', route); if (this.ishttp(key)) { // http(s):// 路径新窗口打开 window.open(key, "_blank"); } else if (!route || !route.children) { // 没有子路由路径内部打开 const routeMenu = this.childrenMenus.find((item) => item.path === key); if (routeMenu && routeMenu.query) { let query = JSON.parse(routeMenu.query); this.$router.push({ path: key, query: query }); } else { this.$router.push({ path: key }); } this.$store.dispatch("app/toggleSideBarHide", true); } else { // 显示左侧联动菜单 this.activeRoutes(key); this.$store.dispatch("app/toggleSideBarHide", false); } }, // 当前激活的路由 activeRoutes(key) { var routes = []; if (this.childrenMenus && this.childrenMenus.length > 0) { this.childrenMenus.map((item) => { if (key == item.parentPath || (key == "index" && "" == item.path)) { routes.push(item); } }); } if (routes.length > 0) { this.$store.commit("SET_SIDEBAR_ROUTERS", routes); } else { this.$store.dispatch("app/toggleSideBarHide", true); } }, ishttp(url) { return url.indexOf("http://") !== -1 || url.indexOf("https://") !== -1; }, }, }; </script> <style lang="scss" scoped> .el-menu-item { display: block; text-align: center; width: 20%; line-height: 100px; height: auto; border: 1px solid #c1c1c1 !important; color: #494848; font-weight: 600; font-size: 17px; letter-spacing: 1px; } .el-menu.el-menu--horizontal { border-bottom: transparent; // margin-left: 45px; // margin-top: 40px; width: 95%; margin: 30px auto; } .el-menu-item.is-active { border: 1px solid #{'var(--theme)'} !important; color: #3b3d41; } </style>