<template>
|
<div class="main">
|
<div class="header">
|
<div class="top">
|
<div class="top-exit" v-if="userType === '1'" @click="() => { router.push('/screen') }">
|
<img src="@/assets/images/exit.png" alt="" />
|
<span>选择系统</span>
|
</div>
|
<div class="top-name">金川水电站生态流量监测系统</div>
|
<div class="top-modal">
|
公告弹窗提示
|
<el-switch v-model="openWarn" />
|
</div>
|
</div>
|
<div class="nav">
|
<div v-for="(item,index) in btnList" :key="index" @click="navTo(item)" class="plain" :class="item.url === route.path ? 'active' : ''">
|
<span>{{ item.name }}</span>
|
</div>
|
</div>
|
</div>
|
<div class="content">
|
<router-view></router-view>
|
<div class="warningBox" v-if="openWarn">
|
<img src="@/assets/images/flow/warn-icon.png" alt="">
|
<div class="text">{{text}}</div>
|
</div>
|
</div>
|
</div>
|
</template>
|
<script setup>
|
import{ useRouter,useRoute } from 'vue-router'
|
import useUserStore from '@/store/modules/user.js'
|
import {onMounted, ref, watch} from "vue";
|
import { getUserType } from '@/utils/auth'
|
|
const userStore = useUserStore()
|
|
const router = useRouter()
|
const route = ref(useRoute())
|
const btnList = ref([
|
{name:'首页总览',url:'/flow/home'},
|
{name:'生态流量',url:'/flow/ecology'},
|
{name:'图像监测', url:'/flow/graphic'},
|
{name:'设备管理',url:'/flow/shebei'},
|
{name:'报警管理',url:'/flow/warning'},
|
{name:'报表管理',url:'/flow/report'},
|
])
|
const userType = ref(getUserType())
|
|
const openWarn = ref(false)
|
const text = ref('新扎沟口流量监测点水位到达下限值, 金川水电站生态流量监测点水位到达下限值,流量监测点水位到达下限值')
|
let timer = null;
|
|
watch(openWarn, (newVal) => {
|
if(newVal){
|
splitText()
|
} else {
|
clearInterval(timer)
|
}
|
})
|
|
// 设置警告滚动
|
const splitText = () => {
|
timer = setInterval(function () {
|
const val = text.value.substring(1) + text.value.substring(0,1)
|
text.value = val
|
}, 300)
|
}
|
|
const navTo = (item) =>{
|
router.push(item.url)
|
}
|
|
onMounted(() => {
|
if(userStore.userType == 1) {
|
btnList.value.push({name:'系统管理',url:'/user'})
|
}
|
})
|
|
</script>
|
|
<style lang="scss" scoped>
|
.main{
|
width: 100%;
|
height: 100%;
|
.header{
|
width: 100%;
|
height: 14%;
|
background-color: rgb(82, 120, 128);
|
position: relative;
|
.top{
|
height: 60%;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
font-weight: 700;
|
color: #fff;
|
position: relative;
|
z-index: 100;
|
.top-exit{
|
position: absolute;
|
left: 100px;
|
cursor: pointer;
|
font-size: 20px;
|
img{
|
width: 30px;
|
vertical-align: top;
|
margin-right: 10px;
|
}
|
}
|
.top-name{
|
font-size: 48px;
|
}
|
.top-modal{
|
position: absolute;
|
right: 100px;
|
cursor: pointer;
|
}
|
}
|
.nav{
|
display: flex;
|
height: 40%;
|
position: relative;
|
z-index: 100;
|
.plain{
|
flex-grow: 1;
|
height: 100%;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
border: 1px solid #fff;
|
background-color: rgba(23, 108, 229, 0.3);
|
color: #fff;
|
font-size: 22px;
|
cursor: pointer;
|
}
|
.active{
|
background-color: #91BDDB;
|
}
|
}
|
}
|
.content{
|
width: 100%;
|
height: 86%;
|
.warningBox{
|
position: absolute;
|
left: 0;
|
top: 15.5%;
|
z-index: 100;
|
width: 100%;
|
padding: 0 150px;
|
height: 100px;
|
display: flex;
|
align-items: center;
|
background: linear-gradient( 270deg,
|
rgba(255,74,74,0) 0%,
|
rgba(255,74,74,0.5) 8%,
|
rgba(255,74,74,0.5) 50%,
|
rgba(255,74,74,0.5) 92%,
|
rgba(255,74,74,0) 100%);
|
.text{
|
margin: 0 30px;
|
color: #fff;
|
font-size: 36px;
|
overflow: hidden;
|
white-space: nowrap;
|
}
|
}
|
}
|
}
|
</style>
|