You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

172 lines
4.1 KiB
Vue

2 years ago
<template>
<div>
<div class="title">智慧物联监控平台</div>
<div>
<div v-if="isIndex" :class="`menu ${nowMenu==='1'? 'menuClick' :''}`" style="left: 2%" @click="toLink('index')">
2 years ago
<span>
监控主页
</span>
</div>
<div :class="`menu ${nowMenu==='2'? 'menuClick' :''}`" style="left: 9%">
2 years ago
<el-dropdown trigger="click" @command="dropdownLink">
2 years ago
<span class="el-dropdown-link">
2 years ago
{{ name }} <i class="el-icon-arrow-down el-icon--right"></i>
2 years ago
</span>
2 years ago
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="i in selectSecnesList" :key="i.sceneId"
:command="{router:i.router,name:i.sceneName}">{{
2 years ago
i.sceneName
}}
</el-dropdown-item>
2 years ago
</el-dropdown-menu>
</el-dropdown>
</div>
2 years ago
<div :class="`menu ${nowMenu==='3'? 'menuClick' :''}`" style="left: 16%" @click="toLink('equipmentMonitoring')">
2 years ago
<span>
设备监测
</span>
</div>
2 years ago
<div :class="`menu ${nowMenu==='4'? 'menuClick' :''}`" style="left: 23%" @click="toLink('senso')">
2 years ago
<span>
传感器汇总
</span>
</div>
</div>
<div class="right">
2 years ago
<span>
</span>
</div>
2 years ago
<div class="rightImg" @click="toIndex">
2 years ago
</div>
</div>
</template>
<script>
import {
selectSecnes
} from '@/api/board/nav'
export default {
data() {
return {
2 years ago
selectSecnesList: [],
name: '智慧场景',
isIndex: true,
sceneId: 0,
2 years ago
}
},
props: {
nowMenu: {
type: String,
default: '1'
},
},
async mounted() {
await this.setSelectSecnes()
if (this.$store.state.user.permissions.includes('business:monitor:index') || this.$store.state.user.permissions.includes('*:*:*')) {
this.isIndex = true
} else {
this.isIndex = false
}
2 years ago
if (this.$route.name === 'SmartScene') {
if (this.$route.query?.name) {
2 years ago
this.name = this.$route.query?.name
} else {
let routerData = this.selectSecnesList.find(e => e.sceneId === this.sceneId)
await this.$router.push({
path: "/board/" + (routerData.router || 'smartScene'),
query: {name: routerData.sceneName}
});
2 years ago
}
}
2 years ago
},
methods: {
async setSelectSecnes() {
const {data} = await selectSecnes()
this.selectSecnesList = data
let defaultSceneId = data.find(e => e.defaultFlag === '1').sceneId
this.sceneId = defaultSceneId
this.$emit('sceneIdChange',defaultSceneId);
2 years ago
},
// sceneIdChange(){
//
// },
2 years ago
toLink(e) {
this.$router.push({path: "/board/" + e});
2 years ago
},
2 years ago
dropdownLink(e) {
2 years ago
this.name = e.name
2 years ago
this.$router.push({path: "/board/" + (e.router || 'smartScene'), query: {name: e.name}});
},
toIndex() {
this.$router.push({path: "/index"});
2 years ago
}
}
};
</script>
<style lang="less" scoped>
.menu {
background-image: url("~@/assets/board/common/subheadClick1.png");
background-repeat: no-repeat;
background-size: 100% 100%;
position: absolute;
width: 8vw;
height: 1.66vw;
top: 3.8%;
line-height: 1.66vw;
font-size: 0.8vw;
color: #d4d4d4;
text-align: center;
}
.menu .el-dropdown {
font-size: 0.8vw;
color: #d4d4d4;
}
.menuClick {
background-image: url("~@/assets/board/common/subheadClick.png");
color: #f3f3f3;
}
.title {
position: absolute;
top: 3%;
left: 50%;
font-size: 2vw;
letter-spacing: 12px;
transform: translate(-50%, -50%);
color: #f6f6f6;
}
.rightImg {
transform: rotateX(180deg);
background-image: url('~@/assets/board/common/subheadClick1.png');
background-repeat: no-repeat;
background-size: 100% 100%;
position: absolute;
width: 8vw;
height: 1.66vw;
top: 3.8%;
left: 71%;
}
.right {
position: absolute;
width: 8vw;
height: 1.66vw;
top: 3.8%;
left: 71%;
line-height: 1.66vw;
font-size: 0.8vw;
color: #d4d4d4;
text-align: center;
}
</style>