| | |
| | | <template> |
| | | <div class="NavBox"> |
| | | <div |
| | | class="NavBox" |
| | | @click.stop |
| | | > |
| | | <div class="topBox"> |
| | | <div class="topTitle"></div> |
| | | <div class="topMenu"> |
| | |
| | | @click="setMenuMove(index, item)" |
| | | v-for="(item, index) in listMenu" |
| | | > |
| | | <div> |
| | | <div style="display: flex;align-items: center"> |
| | | <div class="ImgMenu"> |
| | | <div |
| | | class="menuImage" |
| | |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="secondMenuDiv" |
| | | class="secondMenuDiv subpage_Div" |
| | | v-show="index == showFlag ? true :false" |
| | | > |
| | | <div |
| | |
| | | </div> |
| | | </div> |
| | | <div class="topUser"> |
| | | <div class="userLanguage"> |
| | | <div |
| | | class="userImage theme" |
| | | @click="themeChange" |
| | | ></div> |
| | | <div |
| | | class="userImage user2" |
| | | @click="switchLang" |
| | | ></div> |
| | | |
| | | </div> |
| | | <div class="userName"> |
| | | <div class="userImage user1"></div> |
| | | <div class="userText"> |
| | |
| | | class="elLink" |
| | | >{{ $t('common.logout') }}</el-link> |
| | | </div> |
| | | |
| | | </div> |
| | | <div |
| | | @click="switchLang" |
| | | class="userLanguage" |
| | | > |
| | | <div class="userImage user2"></div> |
| | | <div class="TextLanguage"> |
| | | <el-link |
| | | :underline="false" |
| | | class="elLink" |
| | | >{{$t("common.language")}}</el-link> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { logout, selectMenuRecursive } from '@/api/api'; |
| | | import { logout, selectMenuRecursive, sign_insertOpLog } from '@/api/api'; |
| | | import { removeToken, getToken } from '@/utils/auth'; |
| | | import customElMenu from '../components/customElMenu.vue'; |
| | | import { queryMenuTree, getPerms } from '../api/api'; |
| | | import colorChange from '../views/maintenance/colorChange.vue'; |
| | | import { containsCoordinate } from 'ol/extent'; |
| | | import Vue from 'vue'; |
| | | import $ from 'jquery' |
| | | export default { |
| | | name: 'navMenu', |
| | | //import引入的组件需要注入到对象中才能使用 |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | |
| | | themeColor: true, |
| | | oriData: [], //原始树数据 |
| | | dirData: [], //el树数据 |
| | |
| | | changeSelectdiv: false, |
| | | listMenu: [], |
| | | showFlag: null, |
| | | language: true |
| | | language: true, |
| | | nowPage: [ |
| | | { |
| | | name: '/Archive', |
| | | index: 3 |
| | | }, |
| | | { |
| | | name: '/dataApplication', |
| | | index: 3 |
| | | }, |
| | | { |
| | | name: '/ExportMap', |
| | | index: 3 |
| | | }, |
| | | { |
| | | name: '/Synthesis', |
| | | index: 3 |
| | | }, |
| | | { |
| | | name: '/dataController', |
| | | index: 4 |
| | | }, |
| | | { |
| | | name: '/mochaitmo', |
| | | index: 5 |
| | | } |
| | | ] |
| | | }; |
| | | }, |
| | | created() { }, |
| | | mounted() { |
| | | this.$store.state.themeflag = false; |
| | | $("#app").removeClass("Black_theme"); |
| | | this.getMenuTree(); |
| | | if (sessionStorage.getItem('changeliSelect')) { |
| | | this.$set(this, 'changeliSelect', sessionStorage.getItem('changeliSelect')) |
| | | // this.changeliSelect = sessionStorage.getItem('changeliSelect') |
| | | } |
| | | document.body.addEventListener('click', () => { |
| | | this.showFlag = null; |
| | | }, false); |
| | | // this.$bus.$on('closeMenuSecond', res => { |
| | | // this.showFlag = null; |
| | | // }) |
| | | window.addEventListener('message', (e) => { |
| | | |
| | | this.showFlag = null; |
| | | }) |
| | | }, |
| | | computed: {}, |
| | | methods: { |
| | | closeSecondMenu() { |
| | | this.showFlag = null |
| | | }, |
| | | themeChange() { |
| | | this.$store.state.themeflag = !this.$store.state.themeflag; |
| | | if (this.$store.state.themeflag == true) { |
| | | $("#app").addClass("Black_theme"); |
| | | |
| | | } else { |
| | | $("#app").removeClass("Black_theme"); |
| | | } |
| | | |
| | | }, |
| | | async getCookies() { |
| | | var boolean = this.getTimeCookies(); |
| | | if (boolean != true) { |
| | |
| | | const data = await getPerms(); |
| | | this.$store.state.permsEntity = data.result; |
| | | } |
| | | |
| | | this.$store.state.uname = JSON.parse( |
| | | localStorage.getItem('LFToken') |
| | | ).uname; |
| | | this.$store.state.unid = JSON.parse( |
| | | localStorage.getItem('LFToken') |
| | | ).userid; |
| | | this.$router.push('/'); |
| | | }, |
| | | getTimeCookies() { |
| | | if (!localStorage.getItem('LFToken')) { |
| | | return false |
| | | } |
| | | var time1 = new Date(JSON.parse(localStorage.getItem('LFToken')).time); |
| | | var time2 = new Date(); |
| | | if (time2 > time1) { |
| | |
| | | return true; |
| | | } |
| | | }, |
| | | |
| | | //主题切换 |
| | | setThemeColors() { }, |
| | | |
| | | async signInsertOpLog(m1, m2) { |
| | | var obj = { |
| | | m1: m1, |
| | | m2: m2, |
| | | } |
| | | const data = await sign_insertOpLog(obj); |
| | | }, |
| | | //鼠标移入菜单事件 |
| | | setMenuMove(index, item) { |
| | | |
| | | if (item.perms != null) { |
| | | if (item.perms != null && item.perms != "") { |
| | | this.$router.push(item.url); |
| | | if (this.showFlag != null) { |
| | | |
| | | this.changeliSelect = '%%'; |
| | | this.showFlag = null; |
| | | } |
| | | if (item.url == "Thematic") { |
| | | this.signInsertOpLog("综合展示", item.cnName) |
| | | } |
| | | |
| | | this.changeSelectStyle = index; |
| | | sessionStorage.setItem('changeSelectStyle', index) |
| | | } else { |
| | | if (this.showFlag != index) { |
| | | this.showFlag = index; |
| | | |
| | | } else { |
| | | this.showFlag = null; |
| | | } |
| | | } |
| | | // |
| | | if (index === 4 || index === 5 || index === 6) { |
| | | sessionStorage.removeItem('changeliSelect') |
| | | this.$set(this, 'changeliSelect', null) |
| | | } |
| | | |
| | | this.changeSelectStyle = index; |
| | | |
| | | }, |
| | | closeAllChildren() { |
| | | var val = this.listMenu |
| | |
| | | } |
| | | }, |
| | | setLiClick(res, index) { |
| | | this.changeSelectStyle = index; |
| | | sessionStorage.setItem('changeSelectStyle', index) |
| | | sessionStorage.removeItem('hanleselectmochaitmo') |
| | | sessionStorage.removeItem('hanleselectindex') |
| | | |
| | | // this.signInsertOpLog(this.listMenu[index].cnName, res.cnName) |
| | | setTimeout(() => { |
| | | this.changeliSelect = res.cnName; |
| | | if (res.url.indexOf('http') != -1) { |
| | | if (location.href.indexOf('/WareInspection') == -1) { |
| | | this.$store.reporturl = res.url; |
| | | this.$router.push('/WareInspection'); |
| | | } else { |
| | | this.$bus.$emit('changeNaveUrl', res.url); |
| | | } |
| | | sessionStorage.setItem('changeliSelect', res.cnName) |
| | | if (res.url.indexOf('{fmeHost}') != -1) { |
| | | this.$store.reporturl = res.url; |
| | | sessionStorage.setItem('iframehttpurl', this.$store.reporturl) |
| | | this.$router.push('/QualityInspection'); |
| | | // if (location.href.indexOf('/WareInspection') == -1) { |
| | | // this.$store.reporturl = res.url; |
| | | // this.$router.push('/WareInspection'); |
| | | // } else { |
| | | // this.$bus.$emit('changeNaveUrl', res.url); |
| | | // } |
| | | } else { |
| | | this.$store.reporturl = null; |
| | | sessionStorage.setItem('iframehttpurl', null) |
| | | // sessionStorage.setItem('changeliSelect', null) |
| | | this.$router.push(res.url); |
| | | this.$store.commit('currentPerms', res.perms); |
| | | } |
| | |
| | | for (var i in res) { |
| | | res[i].checkClass = res[i].css + '1'; |
| | | res[i].show = false; //控制显隐 |
| | | if (res[i].perms == null) { |
| | | |
| | | if (res[i].perms == null || res[i].perms == "") { |
| | | const result = await selectMenuRecursive({ id: res[i].id }); |
| | | |
| | | if (result.code == 200) { |
| | | |
| | | res[i].children = result.result.filter((value) => { |
| | | return value.pid == res[i].id; |
| | | }); |
| | | return value.isShow == 1; |
| | | }) |
| | | .filter((value) => { |
| | | return value.pid == res[i].id; |
| | | }); |
| | | |
| | | } |
| | | this.listMenu.push(res[i]); |
| | | this.changeSelectStyle = this.listMenu.length - 1; |
| | | // this.changeSelectStyle = this.listMenu.length - 1; |
| | | // this.changeSelectStyle = 0 |
| | | // const nowPage = this.nowPage |
| | | // if (sessionStorage.getItem('routerName')) { |
| | | // for (let index = 0; index < nowPage.length; index++) { |
| | | // if (this.$route.path === nowPage[index].name) { |
| | | // this.$set(this, 'changeSelectStyle', nowPage[index].index) |
| | | // } |
| | | // } |
| | | // } else { |
| | | // this.changeSelectStyle = this.listMenu.length - 1; |
| | | // } |
| | | |
| | | this.changeSelectStyle = sessionStorage.getItem('changeSelectStyle') |
| | | // var strartMneu = res[i].children[0]; |
| | | // this.$store.commit('currentPerms', strartMneu.perms); |
| | | // this.changeliSelect = strartMneu.cnName; |
| | |
| | | //语言换成zh |
| | | this.lang = 'zh'; |
| | | this.language = true; |
| | | this.$store.state.language = true; |
| | | //菜单换为zh |
| | | this.$store.commit('changeLang', 'zh'); |
| | | //i18换成zh |
| | |
| | | else { |
| | | this.lang = 'en'; |
| | | this.language = false; |
| | | this.$store.state.language = false; |
| | | this.$i18n.locale = this.lang; |
| | | this.$store.commit('changeLang', 'en'); //传递点击的节点 |
| | | } |
| | |
| | | }; |
| | | Window.ws = null; |
| | | } |
| | | |
| | | if (index.indexOf('http') != -1) { |
| | | debugger |
| | | if (index.indexOf('{fmeHost}') != -1) { |
| | | this.$router.push('/databaseMonitoring'); |
| | | this.$store.commit('getIframe', index); |
| | | } else if (isNaN(Number(index))) { |
| | |
| | | }, |
| | | }; |
| | | </script> |
| | | <style lang="less" scoped> |
| | | //@import url(); 引入公共css类 |
| | | .NavBox { |
| | | width: 100%; |
| | | height: 100%; |
| | | background-image: linear-gradient(rgb(34, 33, 33), rgb(27, 31, 78)); |
| | | .topBox { |
| | | width: 100%; |
| | | height: 100%; |
| | | display: flex; |
| | | justify-content: space-around; |
| | | align-items: center; |
| | | .topTitle { |
| | | width: 435px; |
| | | height: 70px; |
| | | background: url("../assets/img/LOGO.png") no-repeat center; |
| | | } |
| | | .topMenu { |
| | | width: auto; |
| | | |
| | | flex: 1; |
| | | height: 100px; |
| | | .menuContent { |
| | | width: 100%; |
| | | height: 100%; |
| | | display: flex; |
| | | .contentDiv { |
| | | margin-left: 1%; |
| | | } |
| | | } |
| | | .ImgMenu { |
| | | width: 100%; |
| | | height: auto; |
| | | display: flex; |
| | | justify-content: center; |
| | | } |
| | | .menuImage { |
| | | width: 70px; |
| | | height: 70px; |
| | | } |
| | | .menulabel { |
| | | font-size: 14px; |
| | | font-family: Source Han Sans CN; |
| | | font-weight: 500; |
| | | color: #ffffff; |
| | | text-align: center; |
| | | width: 120px; |
| | | } |
| | | .changeStyle { |
| | | color: #fec801; |
| | | } |
| | | .m1 { |
| | | background: url("../assets/img/menu/menu11.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .m2 { |
| | | background: url("../assets/img/menu/menu21.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .m3 { |
| | | background: url("../assets/img/menu/menu31.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .m4 { |
| | | background: url("../assets/img/menu/menu41.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .m5 { |
| | | background: url("../assets/img/menu/menu51.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .m6 { |
| | | background: url("../assets/img/menu/menu61.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .m7 { |
| | | background: url("../assets/img/menu/qwyzt.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .m11 { |
| | | background: url("../assets/img/menu/menu12.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .m21 { |
| | | background: url("../assets/img/menu/menu22.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .m31 { |
| | | background: url("../assets/img/menu/menu32.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .m41 { |
| | | background: url("../assets/img/menu/menu42.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .m51 { |
| | | background: url("../assets/img/menu/menu52.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .m61 { |
| | | background: url("../assets/img/menu/menu62.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .m71 { |
| | | background: url("../assets/img/menu/qwyzt-h.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | } |
| | | |
| | | .topUser { |
| | | height: 70px; |
| | | |
| | | .userName { |
| | | margin: 0px 10px; |
| | | |
| | | display: flex; |
| | | justify-content: space-between; |
| | | height: 30px; |
| | | } |
| | | .userLanguage { |
| | | margin: 0px 10px; |
| | | margin-top: 10px; |
| | | |
| | | display: flex; |
| | | |
| | | height: 30px; |
| | | } |
| | | .userImage { |
| | | width: 30px; |
| | | height: 30px; |
| | | float: left; |
| | | margin-right: 10px; |
| | | } |
| | | .user1 { |
| | | background: url("../assets/img/user.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .user2 { |
| | | background: url("../assets/img/EN.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .userText { |
| | | font-size: 15px; |
| | | |
| | | line-height: 30px; |
| | | font-family: Microsoft YaHei; |
| | | font-weight: 400; |
| | | color: #ffffff; |
| | | text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.35); |
| | | } |
| | | .TextLanguage { |
| | | font-size: 15px; |
| | | |
| | | line-height: 30px; |
| | | font-family: Microsoft YaHei; |
| | | font-weight: 400; |
| | | color: #ffffff; |
| | | text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.35); |
| | | } |
| | | } |
| | | .elLink { |
| | | margin-left: 5px; |
| | | font-size: 15px; |
| | | margin-bottom: 4px; |
| | | } |
| | | } |
| | | |
| | | .secondMenuDiv { |
| | | position: absolute; |
| | | z-index: 1024; |
| | | margin-top: 10px; |
| | | border: 1px solid white; |
| | | border-radius: 5px; |
| | | div { |
| | | line-height: 30px; |
| | | background: #303030; |
| | | padding: 10px; |
| | | font-size: 18px; |
| | | font-family: Microsoft YaHei; |
| | | font-weight: 400; |
| | | color: #ffffff; |
| | | line-height: 49px; |
| | | min-width: 120px; |
| | | } |
| | | .changeLiStyle { |
| | | color: #fec801; |
| | | background: linear-gradient(180deg, #002992, #080472); |
| | | } |
| | | } |
| | | |
| | | /deep/.el-link.el-link--default:hover { |
| | | color: #409eff !important; |
| | | } |
| | | /deep/ .el-link.el-link--default { |
| | | color: white !important; |
| | | } |
| | | /deep/ ul.el-menu-vertical-demo.el-menu { |
| | | // 添加背景颜色 |
| | | background-image: rgba(255, 255, 255, 0.1) !important; |
| | | } |
| | | |
| | | /deep/ li.el-menu-item.is-active { |
| | | // 添加样式,只针对导航栏首菜单 |
| | | background-color: transparent; |
| | | } |
| | | } |
| | | </style> |