| | |
| | | <template> |
| | | <div class="topMenu"> |
| | | <div class="logo"></div> |
| | | <div class="headerTitle"> |
| | | <!-- <p class="textp1">管道基础大数据平台</p> |
| | | <p class="textp2">Pipeline basic big data platform</p> --> |
| | | </div> |
| | | <div class="rightWrapper"> |
| | | <div class="rightMenu"> |
| | | <ul class="infinite-list menu_ul"> |
| | | <li |
| | | <div class="NavBox"> |
| | | <div class="topBox"> |
| | | <div class="topTitle"></div> |
| | | <div class="topMenu"> |
| | | <div class="menuContent"> |
| | | <div |
| | | class="contentDiv" |
| | | @click="setMenuMove(index, item)" |
| | | v-for="(item, index) in listMenu" |
| | | class="infinite-list-item" |
| | | > |
| | | <div @click="setMenuMove(index, item)"> |
| | | <div |
| | | class="menuImage" |
| | | :class="changeSelectStyle == index ? item.checkClass : item.css" |
| | | ></div> |
| | | <div> |
| | | <div class="ImgMenu"> |
| | | <div |
| | | class="menuImage" |
| | | :class="changeSelectStyle == index ? item.checkClass : item.css" |
| | | ></div> |
| | | </div> |
| | | <div |
| | | class="menulabel" |
| | | :class="{ changeStyle: changeSelectStyle == index }" |
| | | > |
| | | {{ item.cnName }} |
| | | <span v-show="language"> {{ item.cnName }}</span> <span v-show="!language"> {{ item.enName }}</span> |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="secondMenuDiv" |
| | | v-show="item.show" |
| | | v-show="index == showFlag ? true :false" |
| | | > |
| | | <div |
| | | v-for="res in item.children" |
| | | @click="setLiClick(res)" |
| | | @click="setLiClick(res,index)" |
| | | :class="{ changeLiStyle: changeliSelect == res.cnName }" |
| | | > |
| | | {{ res.cnName }} |
| | | <span v-show="language"> {{ res.cnName }}</span> <span v-show="!language"> {{ res.enName }}</span> |
| | | </div> |
| | | </div> |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="rightUser"> |
| | | <div |
| | | @click="logOut" |
| | | class="topdiv topUser" |
| | | > |
| | | <div class="topUser"> |
| | | <div class="userName"> |
| | | <div class="userImage user1"></div> |
| | | <div class="userText"> |
| | | <span>{{ this.$store.state.uname }}</span> |
| | | <el-link class="elLink">{{ $t('common.logout') }}</el-link> |
| | | <el-link |
| | | @click="logOut" |
| | | :underline="false" |
| | | class="elLink" |
| | | >{{ $t('common.logout') }}</el-link> |
| | | </div> |
| | | |
| | | </div> |
| | | <div |
| | | @click="switchLang" |
| | | class="topdiv botLingo" |
| | | class="userLanguage" |
| | | > |
| | | <div class="userImage user2"></div> |
| | | <div class="userText">Language</div> |
| | | <div class="TextLanguage"> |
| | | <el-link |
| | | :underline="false" |
| | | class="elLink" |
| | | >{{$t("common.language")}}</el-link> |
| | | </div> |
| | | </div> |
| | | <color-change></color-change> |
| | | |
| | | </div> |
| | | <!-- --> |
| | | <!-- <div class="menu"></div> |
| | | <div class="userInfo"> |
| | | <img src="../assets/img/user.png" alt="" /> |
| | | <span>admin</span> |
| | | <span >注销</span> |
| | | |
| | | <span> 切换语言</span> |
| | | </div> --> |
| | | </div> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | changeSelectdiv: false, |
| | | listMenu: [], |
| | | showFlag: null, |
| | | language: true |
| | | }; |
| | | }, |
| | | created() { }, |
| | |
| | | }, |
| | | //主题切换 |
| | | setThemeColors() { }, |
| | | closeAllChildren() { |
| | | for (var i in this.listMenu) { |
| | | let newItem = this.listMenu[i]; |
| | | newItem.show = false; |
| | | Vue.set(this.listMenu, i, newItem); |
| | | } |
| | | }, |
| | | |
| | | //鼠标移入菜单事件 |
| | | setMenuMove(index, item) { |
| | | this.closeAllChildren(); |
| | | |
| | | if (item.perms != null) { |
| | | this.$router.push(item.url); |
| | | if (this.showFlag != null) { |
| | | this.setShowFalseDiv(false); |
| | | |
| | | this.changeliSelect = '%%'; |
| | | this.showFlag = null; |
| | | } |
| | | } else { |
| | | if (this.showFlag != index) { |
| | | this.showFlag = index; |
| | | this.setShowFalseDiv(true); |
| | | |
| | | } else { |
| | | let newItem = this.listMenu[index]; |
| | | newItem.show = !newItem.show; |
| | | Vue.set(this.listMenu, index, newItem); |
| | | this.showFlag = null; |
| | | } |
| | | } |
| | | |
| | | this.changeSelectStyle = index; |
| | | }, |
| | | closeAllChildren() { |
| | | var val = this.listMenu |
| | | for (var i = 0; i < val.length; i++) { |
| | | let newItem = val[i]; |
| | | newItem.show = false; |
| | | |
| | | Vue.set(val, i, newItem); |
| | | |
| | | } |
| | | }, |
| | | setShowFalseDiv(bolean) { |
| | | var index = this.showFlag; |
| | | let newItem = this.listMenu[index]; |
| | | newItem.show = bolean; |
| | | Vue.set(this.listMenu, index, newItem); |
| | | }, |
| | | setLiClick(res) { |
| | | this.changeliSelect = res.cnName; |
| | | if (res.url.indexOf('http') != -1) { |
| | | if (this.$store.reporturl == null) { |
| | | this.$store.reporturl = res.url; |
| | | this.$router.push('/WareInspection'); |
| | | } else { |
| | | this.$bus.$emit('changeNaveUrl', res.url); |
| | | } |
| | | } else { |
| | | this.$store.reporturl = null; |
| | | this.$router.push(res.url); |
| | | this.$store.commit('currentPerms', res.perms); |
| | | if (index != null) { |
| | | let newItem = this.listMenu[index]; |
| | | |
| | | newItem.show = bolean; |
| | | Vue.set(this.listMenu, index, newItem); |
| | | } |
| | | this.closeAllChildren(); |
| | | }, |
| | | setLiClick(res, index) { |
| | | |
| | | setTimeout(() => { |
| | | this.changeliSelect = res.cnName; |
| | | if (res.url.indexOf('http') != -1) { |
| | | if (this.$store.reporturl == null) { |
| | | this.$store.reporturl = res.url; |
| | | this.$router.push('/WareInspection'); |
| | | } else { |
| | | this.$bus.$emit('changeNaveUrl', res.url); |
| | | } |
| | | } else { |
| | | this.$store.reporturl = null; |
| | | this.$router.push(res.url); |
| | | this.$store.commit('currentPerms', res.perms); |
| | | } |
| | | this.setShowFalseDiv(false) |
| | | }, 100) |
| | | |
| | | }, |
| | | async getMenuTree() { |
| | | this.getCookies(); |
| | | const data = await queryMenuTree(); |
| | | |
| | | var that = this; |
| | | if (data.code == 200) { |
| | | |
| | | if (data.result.length != 0) { |
| | | let menuLists = data.result.filter((value) => { |
| | | return value.pid == 1; |
| | | }); |
| | | |
| | | that.menuList = menuLists; |
| | | |
| | | that.setMenuTree(menuLists); |
| | | } else { |
| | | alert('暂无菜单栏数据'); |
| | |
| | | res[i].checkClass = res[i].css + '1'; |
| | | res[i].show = false; //控制显隐 |
| | | if (res[i].perms == null) { |
| | | const result = await selectMenuRecursive({ name: res[i].cnName }); |
| | | res[i].children = result.result.filter((value) => { |
| | | return value.pid == res[i].id; |
| | | }); |
| | | 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; |
| | | }); |
| | | |
| | | } |
| | | this.listMenu.push(res[i]); |
| | | this.changeSelectStyle = this.listMenu.length - 1; |
| | | // var strartMneu = res[i].children[0]; |
| | |
| | | if (this.lang == 'en') { |
| | | //语言换成zh |
| | | this.lang = 'zh'; |
| | | this.language = true; |
| | | //菜单换为zh |
| | | this.$store.commit('changeLang', 'zh'); |
| | | //i18换成zh |
| | |
| | | //当前zh |
| | | else { |
| | | this.lang = 'en'; |
| | | this.language = false; |
| | | this.$i18n.locale = this.lang; |
| | | this.$store.commit('changeLang', 'en'); //传递点击的节点 |
| | | } |
| | |
| | | }, |
| | | }, |
| | | created() { |
| | | this.$store.reporturl=null; |
| | | this.$store.reporturl = null; |
| | | let str = this.$route.path; |
| | | if (str[0] == '/') { |
| | | this.activeIndex = str.slice(1); |
| | |
| | | </script> |
| | | <style lang="less" scoped> |
| | | //@import url(); 引入公共css类 |
| | | .topMenu { |
| | | .NavBox { |
| | | width: 100%; |
| | | height: 100%; |
| | | background-image: linear-gradient(rgb(34, 33, 33), rgb(27, 31, 78)); |
| | | display: flex; |
| | | justify-content: space-between; |
| | | .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; |
| | | |
| | | .logo { |
| | | width: 80px; |
| | | height: 80px; |
| | | // margin-left: 30px; |
| | | // margin-top: 33px; |
| | | // background: url('../assets/img/图层 34.png') no-repeat 100% 100%; |
| | | } |
| | | // .rightWrapper { |
| | | // width: 70%; |
| | | // height: 100%; |
| | | // display: flex; |
| | | // .menu { |
| | | // height: 100%; |
| | | // width: 80%; |
| | | // background-color: rgb(120, 121, 120); |
| | | // ul { |
| | | // display: flex; |
| | | // justify-content: space-around; |
| | | // li { |
| | | // width: 120px; |
| | | // height: 120px; |
| | | // background: #bfa; |
| | | // } |
| | | // } |
| | | // } |
| | | .rightWrapper { |
| | | float: right; |
| | | margin-right: 48px; |
| | | margin-top: 32px; |
| | | height: 80px; |
| | | float: left; |
| | | .rightMenu { |
| | | height: 100%; |
| | | float: left; |
| | | margin-right: 40px; |
| | | |
| | | .menu_ul { |
| | | list-style: none; |
| | | flex: 1; |
| | | height: 100px; |
| | | .menuContent { |
| | | width: 100%; |
| | | height: 100%; |
| | | display: flex; |
| | | .contentDiv { |
| | | margin-left: 1%; |
| | | } |
| | | } |
| | | .menu_ul li { |
| | | float: left; |
| | | margin-right: 70px; |
| | | } |
| | | .menulabel { |
| | | font-size: 19px; |
| | | font-family: Source Han Sans CN; |
| | | font-weight: 500; |
| | | color: #ffffff; |
| | | } |
| | | .changeStyle { |
| | | color: #fec801; |
| | | .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; |
| | |
| | | } |
| | | .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/menu62.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .m71 { |
| | | background: url("../assets/img/menu/qwyzt-h.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | } |
| | | .rightUser { |
| | | height: 100%; |
| | | float: left; |
| | | min-width: 130px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | .topdiv { |
| | | width: 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; |
| | | .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; |
| | | width: 150px; |
| | | font-family: Microsoft YaHei; |
| | | font-weight: 400; |
| | | color: #ffffff; |
| | | text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.35); |
| | | } |
| | | font-family: Microsoft YaHei; |
| | | font-weight: 400; |
| | | color: #ffffff; |
| | | text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.35); |
| | | } |
| | | .topUser { |
| | | flex-shrink: 0; |
| | | } |
| | | .botLingo { |
| | | flex-shrink: 1; |
| | | .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; |
| | | } |
| | | } |
| | | // .userInfo { |
| | | // background-color: pink; |
| | | |
| | | // // width: 138px; |
| | | // font-size: 16px; |
| | | // font-family: Microsoft YaHei; |
| | | // font-weight: 400; |
| | | // color: #fcfcfc; |
| | | // // display: flex; |
| | | // // justify-content: space-between; |
| | | // // align-items: center; |
| | | // // cursor: pointer; |
| | | // } |
| | | |
| | | .headerTitle { |
| | | margin-top: 49px; |
| | | margin-left: 120px; |
| | | .secondMenuDiv { |
| | | position: absolute; |
| | | width: 323px; |
| | | height: 70px; |
| | | background: url("../assets/img/LOGO.png") no-repeat center; |
| | | // .textp1 { |
| | | // font-size: 36px; |
| | | // font-family: Microsoft YaHei; |
| | | // font-weight: bold; |
| | | // color: #ffffff; |
| | | // background: linear-gradient(0deg, #79a8ff 0%, #ffffff 100%); |
| | | // -webkit-background-clip: text; |
| | | // -webkit-text-fill-color: transparent; |
| | | // } |
| | | // .textp2 { |
| | | // font-size: 9px; |
| | | // font-family: Microsoft YaHei; |
| | | // font-weight: 300; |
| | | // color: #ffffff; |
| | | // display: flex; |
| | | // background: linear-gradient(0deg, #79a8ff 0%, #ffffff 100%); |
| | | // -webkit-background-clip: text; |
| | | // -webkit-text-fill-color: transparent; |
| | | // } |
| | | 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); |
| | | } |
| | | } |
| | | .elLink { |
| | | margin-left: 5px; |
| | | font-size: 15px; |
| | | margin-bottom: 4px; |
| | | } |
| | | |
| | | /deep/.el-link.el-link--default:hover { |
| | | color: #409eff !important; |
| | | } |
| | |
| | | /deep/ li.el-menu-item.is-active { |
| | | // 添加样式,只针对导航栏首菜单 |
| | | background-color: transparent; |
| | | } |
| | | .el-submenu /deep/.el-submenu__title:hover { |
| | | color: #2e95fb !important; |
| | | background: linear-gradient(#112f57, #122344) !important; |
| | | } |
| | | .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; |
| | | width: 100px; |
| | | } |
| | | |
| | | .changeLiStyle { |
| | | color: #fec801; |
| | | background: linear-gradient(180deg, #002992, #080472); |
| | | } |
| | | } |
| | | } |
| | | </style> |