ehs/ruoyi-ui/src/views/index.vue

241 lines
7.1 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<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>