|
|
@@ -1,96 +1,81 @@
|
|
|
<template>
|
|
|
- <div class="avue-top">
|
|
|
- <div class="top-bar__left">
|
|
|
- <div class="avue-breadcrumb"
|
|
|
- :class="[{ 'avue-breadcrumb--active': isCollapse }]"
|
|
|
- v-if="showCollapse">
|
|
|
- <i class="icon-navicon"
|
|
|
- @click="setCollapse"></i>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="top-bar__title">
|
|
|
- <div class="top-bar__item--show" style="vertical-align: top;">{{website.indexTitle}}</div>
|
|
|
- <div class="top-bar__item top-bar__item--show"
|
|
|
- v-if="showMenu">
|
|
|
- <top-menu ref="topMenu"></top-menu>
|
|
|
+ <div class="topWH" style="height: 10.8rem;background-color: #042352;">
|
|
|
+ <div class="top-bar__left " style="left: 0;">
|
|
|
+ <div class="" style="position: relative;" :style="titleW">
|
|
|
+ <img src="/img/icon/top-bg.png" class="topWH">
|
|
|
+ <div class="top-title">
|
|
|
+ {{title}}
|
|
|
+ </div>
|
|
|
+ <div class="tab-left">
|
|
|
+ <div v-if="index<menu.length/ 2" @click="menuClick(item)" v-for="(item,index) in menu" :key="index">
|
|
|
+ <div :class="selectedIndex==item.index?'selected':''" class="tabName" style="margin-right: 1.875rem;">
|
|
|
+ <span>{{item.name}}</span>
|
|
|
+ <img v-if="selectedIndex==index" src="/img/icon/top-selected.png" class="tab-bottom" />
|
|
|
+ <div v-else class="tab-bottom" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="tab-right">
|
|
|
+ <div v-if="index>=menu.length/ 2" @click="selectedIndex=index" v-for="(item,index) in menu" :key="index">
|
|
|
+ <div :class="selectedIndex==item.index?'selected':''" class="tabName" style="margin-left: 1.875rem;">
|
|
|
+ <span>{{item.name}}</span>
|
|
|
+ <img v-if="selectedIndex==index" src="/img/icon/top-selected.png" class="tab-bottom" />
|
|
|
+ <div v-else class="tab-bottom" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <span class="top-bar__item"
|
|
|
- v-if="showSearch">
|
|
|
- <top-search></top-search>
|
|
|
- </span>
|
|
|
</div>
|
|
|
<div class="top-bar__right">
|
|
|
- <el-tooltip v-if="showColor"
|
|
|
- effect="dark"
|
|
|
- :content="$t('navbar.color')"
|
|
|
- placement="bottom">
|
|
|
+ <div>
|
|
|
+ <i style="font-style: normal; margin-right: 3rem;color: #FFFFFF;font-size: 16px;">{{time}}</i>
|
|
|
+ </div>
|
|
|
+ <el-tooltip v-if="showColor" effect="light" :content="$t('navbar.color')" placement="bottom">
|
|
|
<div class="top-bar__item">
|
|
|
<top-color></top-color>
|
|
|
</div>
|
|
|
</el-tooltip>
|
|
|
- <el-tooltip v-if="showDebug"
|
|
|
- effect="dark"
|
|
|
- :content="logsFlag?$t('navbar.bug'):logsLen+$t('navbar.bugs')"
|
|
|
- placement="bottom">
|
|
|
+ <el-tooltip v-if="showDebug" effect="light" :content="logsFlag?$t('navbar.bug'):logsLen+$t('navbar.bugs')"
|
|
|
+ placement="bottom">
|
|
|
<div class="top-bar__item">
|
|
|
<top-logs></top-logs>
|
|
|
</div>
|
|
|
</el-tooltip>
|
|
|
- <el-tooltip v-if="showLock"
|
|
|
- effect="dark"
|
|
|
- :content="$t('navbar.lock')"
|
|
|
- placement="bottom">
|
|
|
+ <el-tooltip v-if="showLock" effect="light" :content="$t('navbar.lock')" placement="bottom">
|
|
|
<div class="top-bar__item">
|
|
|
<top-lock></top-lock>
|
|
|
</div>
|
|
|
</el-tooltip>
|
|
|
- <el-tooltip v-if="showTheme"
|
|
|
- effect="dark"
|
|
|
- :content="$t('navbar.theme')"
|
|
|
- placement="bottom">
|
|
|
+ <el-tooltip v-if="showTheme" effect="light" :content="$t('navbar.theme')" placement="bottom">
|
|
|
<div class="top-bar__item top-bar__item--show">
|
|
|
<top-theme></top-theme>
|
|
|
</div>
|
|
|
</el-tooltip>
|
|
|
- <el-tooltip effect="dark"
|
|
|
- :content="$t('navbar.notice')"
|
|
|
- placement="bottom">
|
|
|
+ <el-tooltip effect="light" :content="$t('navbar.notice')" placement="bottom">
|
|
|
<div class="top-bar__item top-bar__item--show">
|
|
|
<top-notice></top-notice>
|
|
|
</div>
|
|
|
</el-tooltip>
|
|
|
- <el-tooltip effect="dark"
|
|
|
- :content="$t('navbar.language')"
|
|
|
- placement="bottom">
|
|
|
- <div class="top-bar__item top-bar__item--show">
|
|
|
- <top-lang></top-lang>
|
|
|
- </div>
|
|
|
- </el-tooltip>
|
|
|
- <el-tooltip v-if="showFullScren"
|
|
|
- effect="dark"
|
|
|
- :content="isFullScren?$t('navbar.screenfullF'):$t('navbar.screenfull')"
|
|
|
- placement="bottom">
|
|
|
+ <el-tooltip v-if="showFullScren" effect="light"
|
|
|
+ :content="isFullScren?$t('navbar.screenfullF'):$t('navbar.screenfull')" placement="bottom">
|
|
|
<div class="top-bar__item">
|
|
|
- <i :class="isFullScren?'icon-tuichuquanping':'icon-quanping'"
|
|
|
- @click="handleScreen"></i>
|
|
|
+ <i :class="isFullScren?'icon-tuichuquanping icon':'icon-quanping icon'" @click="handleScreen"></i>
|
|
|
</div>
|
|
|
</el-tooltip>
|
|
|
- <img class="top-bar__img"
|
|
|
- :src="userInfo.avatar">
|
|
|
+ <div style="margin-left: 20px;"></div>
|
|
|
<el-dropdown>
|
|
|
<span class="el-dropdown-link">
|
|
|
- {{userInfo.userName}}
|
|
|
- <i class="el-icon-arrow-down el-icon--right"></i>
|
|
|
+ <i class="icon">{{userInfo.userName || 'admin'}}</i>
|
|
|
+ <i class="el-icon-arrow-down el-icon--right icon" style="font-size: 18px;"></i>
|
|
|
</span>
|
|
|
- <el-dropdown-menu slot="dropdown">
|
|
|
+ <el-dropdown-menu slot="dropdown" >
|
|
|
<el-dropdown-item>
|
|
|
<router-link to="/">{{$t('navbar.dashboard')}}</router-link>
|
|
|
</el-dropdown-item>
|
|
|
<el-dropdown-item>
|
|
|
<router-link to="/info/index">{{$t('navbar.userinfo')}}</router-link>
|
|
|
</el-dropdown-item>
|
|
|
- <el-dropdown-item @click.native="logout"
|
|
|
- divided>{{$t('navbar.logOut')}}
|
|
|
+ <el-dropdown-item @click.native="logout" divided>{{$t('navbar.logOut')}}
|
|
|
</el-dropdown-item>
|
|
|
</el-dropdown-menu>
|
|
|
</el-dropdown>
|
|
|
@@ -103,9 +88,17 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
- import {resetRouter} from '@/router/router'
|
|
|
- import {mapGetters, mapState} from "vuex";
|
|
|
- import {fullscreenToggel, listenfullscreen} from "@/util/util";
|
|
|
+ import {
|
|
|
+ resetRouter
|
|
|
+ } from '@/router/router'
|
|
|
+ import {
|
|
|
+ mapGetters,
|
|
|
+ mapState
|
|
|
+ } from "vuex";
|
|
|
+ import {
|
|
|
+ fullscreenToggel,
|
|
|
+ listenfullscreen
|
|
|
+ } from "@/util/util";
|
|
|
import topLock from "./top-lock";
|
|
|
import topMenu from "./top-menu";
|
|
|
import topSearch from "./top-search";
|
|
|
@@ -115,6 +108,7 @@
|
|
|
import topNotice from './top-notice'
|
|
|
import topLang from "./top-lang";
|
|
|
import navbar from "./nav/nav-bar.vue";
|
|
|
+ import dateTime from '@/util/dateTime.js'
|
|
|
|
|
|
export default {
|
|
|
components: {
|
|
|
@@ -130,14 +124,64 @@
|
|
|
},
|
|
|
name: "top",
|
|
|
data() {
|
|
|
- return {};
|
|
|
+ return {
|
|
|
+ activeName: 'second',
|
|
|
+
|
|
|
+ timer: null,
|
|
|
+ time: '',
|
|
|
+ title: "智慧园区大数据平台",
|
|
|
+
|
|
|
+ selectedIndex: 0,
|
|
|
+ menu: [{
|
|
|
+ name: '全景园区',
|
|
|
+ value: 0
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '智能运营中心',
|
|
|
+ value: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '智能安防',
|
|
|
+ value: 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '一脸通',
|
|
|
+ value: 3
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '停车管理',
|
|
|
+ value: 4
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '能耗管理',
|
|
|
+ value: 5
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '环境管理',
|
|
|
+ value: 6
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '消防管理',
|
|
|
+ value: 7
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '红色园区',
|
|
|
+ value: 8
|
|
|
+ }
|
|
|
+ ],
|
|
|
+
|
|
|
+ };
|
|
|
},
|
|
|
filters: {},
|
|
|
created() {
|
|
|
+ this.getTime()
|
|
|
},
|
|
|
mounted() {
|
|
|
listenfullscreen(this.setScreen);
|
|
|
},
|
|
|
+ destroyed() {
|
|
|
+ clearInterval(this.timer)
|
|
|
+ },
|
|
|
computed: {
|
|
|
...mapState({
|
|
|
showDebug: state => state.common.showDebug,
|
|
|
@@ -161,6 +205,14 @@
|
|
|
])
|
|
|
},
|
|
|
methods: {
|
|
|
+ getTime() {
|
|
|
+ this.timer = setInterval(() => {
|
|
|
+ this.time = dateTime.format()
|
|
|
+ }, 1000)
|
|
|
+ },
|
|
|
+ menuClick(item) {
|
|
|
+ this.selectedIndex = item.value
|
|
|
+ },
|
|
|
handleScreen() {
|
|
|
fullscreenToggel();
|
|
|
},
|
|
|
@@ -178,7 +230,9 @@
|
|
|
}).then(() => {
|
|
|
this.$store.dispatch("LogOut").then(() => {
|
|
|
resetRouter();
|
|
|
- this.$router.push({path: "/login"});
|
|
|
+ this.$router.push({
|
|
|
+ path: "/login"
|
|
|
+ });
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
@@ -186,5 +240,74 @@
|
|
|
};
|
|
|
</script>
|
|
|
|
|
|
-<style lang="scss" scoped>
|
|
|
+<style lang="scss">
|
|
|
+ .topWH {
|
|
|
+ width: 100vw;
|
|
|
+ height: 10.2rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ .icon {
|
|
|
+ color: #02EEFF;
|
|
|
+ font-size: 20px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .top-title {
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ position: absolute;
|
|
|
+ bottom: 1rem;
|
|
|
+ left: calc(50% - 14rem);
|
|
|
+ font-size: 1.3rem;
|
|
|
+ font-family: '宋体';
|
|
|
+ color: #FFFFFF;
|
|
|
+ font-weight: 800;
|
|
|
+ font-style: normal;
|
|
|
+ width: 28.75rem;
|
|
|
+ height: 4.375rem;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ .tab-left {
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-end;
|
|
|
+ position: absolute;
|
|
|
+ bottom: 1.4rem;
|
|
|
+ left: 1.2rem;
|
|
|
+ width: 31%;
|
|
|
+ }
|
|
|
+
|
|
|
+ .tab-right {
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-start;
|
|
|
+ position: absolute;
|
|
|
+ bottom: 1.4rem;
|
|
|
+ right: 1.2rem;
|
|
|
+ width: 31%;
|
|
|
+ }
|
|
|
+
|
|
|
+ .tabName {
|
|
|
+ font-style: normal;
|
|
|
+ color: #FFFFFF;
|
|
|
+ font-size: 0.98rem;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+
|
|
|
+ .tab-bottom {
|
|
|
+ width: 70%;
|
|
|
+ height: 0.36rem;
|
|
|
+ margin-top: 0.4rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ .selected {
|
|
|
+ font-weight: 800;
|
|
|
+ color: #02eeff;
|
|
|
+ }
|
|
|
+
|
|
|
+ .tabName:hover {
|
|
|
+ color: #02eeff;
|
|
|
+ }
|
|
|
</style>
|