zhgdyun/src/components/layoutQu.vue
2022-07-15 09:47:14 +08:00

221 lines
6.4 KiB
Vue

<template>
<div class="maxBox">
<div class=" flex topfirst">
<div class="title">工地监管服务平台</div>
<div class="tabs flex">
<el-tabs
v-model="activeName"
v-for="(item, index) in menuData"
:key="index"
@tab-click="handleClick(index, item.moduleId)"
>
<el-tab-pane
class="el-tab-pane"
:label="item.moduleName"
:name="item.moduleId"
>
</el-tab-pane>
</el-tabs>
</div>
<div class="bigScreen">
<img style="width:15px;height:15px; margin-right:5px;" src='@/assets/images/menu/screenicon.png' class="icon" />
<span style="margin-right:30px;">控制面板</span>
<img style="width:15px;height:15px; margin-right:5px;" src='@/assets/images/menu/closeicon.png' class="icon" />
<span @click="toBack()">退出</span>
</div>
</div>
<div class="flex">
<div class="left">
<!-- :default-active="menuTwo[0].path" -->
<el-menu
class="el-menu-vertical-demo"
@open="handleOpen"
@close="handleClose"
@select="selectEvent"
:route="true"
>
<div v-for="(item, index) in menuTwo" :key="index">
<!-- 没有三级菜单的 -->
<el-menu-item v-if="item.menuList == ''" :index="item.path">
<!-- <i class="el-icon-menu"></i> -->
<!-- @/assets/images/icon-bigData.png -->
<img style="width:20px;height:20px;margin-right:10px;" :src="require('@/assets/images/menu/' + item.icon + '.png')" class="icon" />
<span slot="title">{{ item.menuName }}</span>
</el-menu-item>
<el-submenu v-else :index="item.menuId">
<template slot="title">
<!-- <i class="el-icon-location"></i> -->
<img style="width:20px;height:20px; margin-right:10px;" :src="require('@/assets/images/menu/' + item.icon + '.png')" class="icon" />
<span>{{ item.menuName }}</span>
</template>
<div v-if="menuTwo[index].menuList != ''">
<div v-for="(item, index) in menuTwo[index].menuList">
<el-menu-item v-if="item.menuList == ''" :index="item.menuId">
<!-- <i class="el-icon-menu"></i> -->
<span slot="title">{{ item.menuName }}</span>
</el-menu-item>
<el-submenu v-else :index="item.menuId">
<template slot="title">{{ item.menuName }}</template>
<div v-if="item.menuList != ''">
<!-- <img style="width:20px;height:20px; margin-right:10px;" :src="require('@/assets/images/menu/' + item.icon + '.png')" class="icon" /> -->
<el-menu-item
v-for="(item2, index) in item.menuList"
:key="index"
:index="item2.menuId"
>{{ item2.menuName }}</el-menu-item
>
</div>
</el-submenu>
</div>
</div>
</el-submenu>
</div>
</el-menu>
</div>
<div class="right">
<router-view></router-view>
<!-- <div>
<img class="noData" src='../../assets/images/menu/noData.png' />
<p class="pnoData">暂无数据</p>
</div> -->
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
activeName: "1544872925246009346",
userInfo: "", //返回的信息
menuData: [], //第一级
menuTwo: [], //第二级
menuThree: [], //第三级
menuId: "",
noChildren: false,
};
},
created() {
this.userInfo = this.$store.state.userInfo;
this.menuData = this.userInfo.menuAuthority.moduleList;
// this.$router.push({path:this.menuData[1].modulePath})
console.log('menuData',this.menuData)
this.menuId = this.menuData[1].moduleId;
this.menuData = this.menuData.filter((item) => {
return item.labelName == "衢州版";
});
},
methods: {
// 退出
toBack(){
// window.open("/index.html#/projectList", "_self");
this.$router.path({path:'/projectList'})
localStorage.setItem('model','defaultModel')
},
handleClick(val, id) {
console.log(val, id);
localStorage.setItem("menuId", id);
this.menuId = id;
this.clickIndex == val;
this.menuTwo = this.menuData[val].menuList;
console.log("二级路由内容", this.menuTwo);
},
handleOpen(key, keyPath) {
console.log(key, keyPath);
},
handleClose(key, keyPath) {
console.log(key, keyPath);
},
selectEvent(index,val){
console.log('index',index)
console.log('val',val)
if(index == val.menuId){
// this.$router.push({ path: val.path })
}
}
},
};
</script>
<style lang="less" scoped>
.maxBox {
background-color: rgb(245, 245, 245);
}
.title{
flex:1;
display:inline-block;
font-size:24px;
margin-right:50px;
margin-left:50px;
height: 100px;
line-height:100px;
margin-bottom:17px;
}
.tabs{
flex:8;
}
.bigScreen{
flex:1;
margin-right:100px;
}
.topfirst {
height: 100px;
width: 100%;
display:inline-block;
background-color: rgb(255, 255, 255);
box-shadow: 0px 6px 11px 0px rgba(0, 0, 0, 0.15);
border-radius:10px;
margin-bottom: 20px;
}
.flex {
display: flex;
align-items: center;
.left {
margin-right: 10px;
flex: 1;
height: 900px;
overflow: auto;
background-color:rgb(255, 255, 255);
border-radius:10px;
}
.right {
margin-right: 10px;
flex: 7;
height: 900px;
background-color:rgb(255, 255, 255);
border-radius:10px;
.noData{
width:300px;
height:200px;
}
.pnoData{
color:rgb(38, 95, 246);
}
}
}
::v-deep .el-tabs__item {
font-size: 18px;
// color:rgb(146, 146, 146);
margin-right: 40px;
}
::v-deep .el-tabs__nav-wrap::after {
width: 0px;
background-color: rgb(38, 95, 246);
}
::v-deep .el-menu-item.is-active {
color: white;
font-size:18px;
border-radius:20px;
margin-left:20px;
background-color:rgb(57, 109, 247);
}
::v-deep .el-menu-item__title{
font-size:18px;
}
// ::v-deep .el-menu--horizontal > .el-menu-item {
// border-right: none;
// text-decoration: none;
// }
</style>