| | |
| | | <div class="rightWrapper"> |
| | | <div class="rightMenu"> |
| | | <ul class="infinite-list menu_ul"> |
| | | <li |
| | | @click="setMenuMove(index, item)" |
| | | v-for="(item, index) in listMenu" |
| | | class="infinite-list-item" |
| | | > |
| | | <div |
| | | class="menuImage" |
| | | :class="changeSelectStyle == index ? item.checkClass : item.class" |
| | | ></div> |
| | | <div |
| | | class="menulabel" |
| | | :class="{ changeStyle: changeSelectStyle == index }" |
| | | > |
| | | {{ item.label }} |
| | | <li 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 |
| | | class="menulabel" |
| | | :class="{ changeStyle: changeSelectStyle == index }" |
| | | > |
| | | {{ item.cnName }} |
| | | </div> |
| | | </div> |
| | | <div class="secondMenuDiv" v-show="item.show"> |
| | | <div |
| | | v-for="res in item.children" |
| | | @click="setLiClick(res)" |
| | | :class="{ changeLiStyle: changeliSelect == res.cnName }" |
| | | > |
| | | {{ res.cnName }} |
| | | </div> |
| | | </div> |
| | | </li> |
| | | </ul> |
| | |
| | | </div> |
| | | <color-change></color-change> |
| | | </div> |
| | | |
| | | <!-- --> |
| | | <!-- <div class="menu"></div> |
| | | <div class="userInfo"> |
| | | <img src="../assets/img/user.png" alt="" /> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { logout } from '@/api/api'; |
| | | import { logout, selectMenuRecursive } from '@/api/api'; |
| | | import { removeToken, getToken } from '@/utils/auth'; |
| | | import customElMenu from '../components/customElMenu.vue'; |
| | | import { queryMenuTree } from '../api/api'; |
| | | import colorChange from '../views/maintenance/colorChange.vue'; |
| | | import { containsCoordinate } from 'ol/extent'; |
| | | import Vue from 'vue'; |
| | | export default { |
| | | name: 'navMenu', |
| | | //import引入的组件需要注入到对象中才能使用 |
| | |
| | | formLabelWidth: '70px', |
| | | count: 5, |
| | | changeSelectStyle: 5, |
| | | changeliSelect: null, |
| | | changeSelectdiv: false, |
| | | listMenu: [ |
| | | { |
| | | label: '数据质检', |
| | | class: 'm1', |
| | | cnName: '数据质检', |
| | | css: 'm1', |
| | | checkClass: 'm11', |
| | | url: '', |
| | | }, |
| | | { |
| | | label: '数据交换', |
| | | class: 'm2', |
| | | cnName: '数据交换', |
| | | css: 'm2', |
| | | checkClass: 'm21', |
| | | url: '', |
| | | }, |
| | | { |
| | | label: '数据管理', |
| | | class: 'm3', |
| | | checkClass: 'm31', |
| | | url: '', |
| | | }, |
| | | { |
| | | label: '服务管理', |
| | | class: 'm4', |
| | | cnName: '服务管理', |
| | | css: 'm4', |
| | | checkClass: 'm41', |
| | | url: '', |
| | | }, |
| | | { |
| | | label: '综合展示', |
| | | class: 'm5', |
| | | checkClass: 'm51', |
| | | url: '', |
| | | }, |
| | | { |
| | | label: '运维管理', |
| | | class: 'm6', |
| | | checkClass: 'm61', |
| | | url: '', |
| | | }, |
| | | ], |
| | | showFlag: null, |
| | | }; |
| | | }, |
| | | created() {}, |
| | |
| | | }, |
| | | //鼠标移入菜单事件 |
| | | setMenuMove(index, item) { |
| | | this.$router.push(item.url); |
| | | var that = this; |
| | | |
| | | if (item.perms != null) { |
| | | this.$router.push(item.url); |
| | | 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 = !this.listMenu[index].show; |
| | | Vue.set(this.listMenu, index, newItem); |
| | | } |
| | | } |
| | | |
| | | this.changeSelectStyle = index; |
| | | }, |
| | | setShowFalseDiv(bolean) { |
| | | var index = this.showFlag; |
| | | let newItem = this.listMenu[index]; |
| | | newItem.show = bolean; |
| | | Vue.set(this.listMenu, index, newItem); |
| | | }, |
| | | setLiClick(res) { |
| | | this.setShowFalseDiv(false); |
| | | this.changeliSelect = res.cnName; |
| | | this.$router.push(res.url); |
| | | }, |
| | | async getMenuTree() { |
| | | //获取目录树最大ID,新建节点使用 |
| | |
| | | } |
| | | } |
| | | }, |
| | | setMenuTree(res) { |
| | | console.log(res); |
| | | for (var i = 0; i < res.length; i++) { |
| | | for (var j = 0; j < this.listMenu.length; j++) { |
| | | if (this.listMenu[j].label == res[i].cnName) { |
| | | this.listMenu[j].url = res[i].perms; |
| | | } |
| | | async setMenuTree(res) { |
| | | for (var i in res) { |
| | | 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; |
| | | }); |
| | | } |
| | | this.listMenu.push(res[i]); |
| | | } |
| | | console.log(this.listMenu); |
| | | }, |
| | | treeData(source) { |
| | | let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆 |
| | |
| | | color: #2e95fb !important; |
| | | background: linear-gradient(#112f57, #122344) !important; |
| | | } |
| | | .secondMenuDiv { |
| | | position: absolute; |
| | | z-index: 30; |
| | | 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> |