| | |
| | | <template> |
| | | <div class="NavBox"> |
| | | <div class="NavBox" |
| | | @click.stop> |
| | | <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" |
| | | > |
| | | <div> |
| | | <div class="contentDiv" |
| | | @click="setMenuMove(index, item)" |
| | | v-for="(item, index) in listMenu"> |
| | | <div style="display: flex;align-items: center"> |
| | | <div class="ImgMenu"> |
| | | <div |
| | | class="menuImage" |
| | | :class="changeSelectStyle == index ? item.checkClass : item.css" |
| | | ></div> |
| | | <div class="menuImage" |
| | | :class="changeSelectStyle == index ? item.checkClass : item.css"></div> |
| | | </div> |
| | | <div |
| | | class="menulabel" |
| | | :class="{ changeStyle: changeSelectStyle == index }" |
| | | > |
| | | <div class="menulabel" |
| | | :class="{ changeStyle: changeSelectStyle == index }"> |
| | | <span v-show="language"> {{ item.cnName }}</span> <span v-show="!language"> {{ item.enName }}</span> |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="secondMenuDiv subpage_Div" |
| | | v-show="index == showFlag ? true :false" |
| | | > |
| | | <div |
| | | v-for="res in item.children" |
| | | @click="setLiClick(res,index)" |
| | | :class="{ changeLiStyle: changeliSelect == res.cnName }" |
| | | > |
| | | <div class="secondMenuDiv subpage_Div" |
| | | v-show="index == showFlag ? true :false"> |
| | | <div v-for="res in item.children" |
| | | @click="setLiClick(res,index)" |
| | | :class="{ changeLiStyle: changeliSelect == res.cnName }"> |
| | | <span v-show="language"> {{ res.cnName }}</span> <span v-show="!language"> {{ res.enName }}</span> |
| | | </div> |
| | | </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"> |
| | | <span>{{ this.$store.state.uname }}</span> |
| | | <el-link |
| | | @click="logOut" |
| | | :underline="false" |
| | | class="elLink" |
| | | >{{ $t('common.logout') }}</el-link> |
| | | </div> |
| | | |
| | | </div> |
| | | <div class="userLanguage"> |
| | | <div class="userImage user2"></div> |
| | | <div class="TextLanguage"> |
| | | <el-link |
| | | @click="switchLang" |
| | | :underline="false" |
| | | class="elLink" |
| | | >{{$t("common.language")}}</el-link> |
| | | </div> |
| | | <div class="TextLanguage"> |
| | | <el-link |
| | | @click="themeChange" |
| | | :underline="false" |
| | | class="elLink" |
| | | > 主题切换</el-link> |
| | | <el-link @click="logOut" |
| | | :underline="false" |
| | | class="elLink">{{ $t('common.logout') }}</el-link> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { logout, selectMenuRecursive, sign_insertOpLog } from '@/api/api'; |
| | | import { removeToken, getToken } from '@/utils/auth'; |
| | | 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 { queryMenuTree,getPerms } from '../api/api'; |
| | | import colorChange from '../views/maintenance/colorChange.vue'; |
| | | import { containsCoordinate } from 'ol/extent'; |
| | | import Vue from 'vue'; |
| | | import Vue,{ nextTick } from 'vue'; |
| | | import $ from 'jquery' |
| | | export default { |
| | | name: 'navMenu', |
| | |
| | | customElMenu, |
| | | colorChange, |
| | | }, |
| | | data() { |
| | | data () { |
| | | return { |
| | | |
| | | themeColor: true, |
| | |
| | | ] |
| | | }; |
| | | }, |
| | | created() { }, |
| | | mounted() { |
| | | this.$store.state.themeflag = false; |
| | | created () { }, |
| | | mounted () { |
| | | this.$store.state.themeflag=false; |
| | | $("#app").removeClass("Black_theme"); |
| | | this.getMenuTree(); |
| | | if (sessionStorage.getItem('changeliSelect')) { |
| | | this.$set(this, 'changeliSelect', sessionStorage.getItem('changeliSelect')) |
| | | 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: { |
| | | themeChange() { |
| | | this.$store.state.themeflag = !this.$store.state.themeflag; |
| | | if (this.$store.state.themeflag == true) { |
| | | closeSecondMenu () { |
| | | this.showFlag=null |
| | | }, |
| | | themeChange () { |
| | | this.$store.state.themeflag=!this.$store.state.themeflag; |
| | | if(this.$store.state.themeflag==true) { |
| | | $("#app").addClass("Black_theme"); |
| | | |
| | | } else { |
| | |
| | | } |
| | | |
| | | }, |
| | | async getCookies() { |
| | | var boolean = this.getTimeCookies(); |
| | | if (boolean != true) { |
| | | async getCookies () { |
| | | var boolean=this.getTimeCookies(); |
| | | if(boolean!=true) { |
| | | this.$router.push('/login'); |
| | | return; |
| | | } |
| | | if (this.$store.state.permsEntity.length == 0) { |
| | | const data = await getPerms(); |
| | | this.$store.state.permsEntity = data.result; |
| | | if(this.$store.state.permsEntity.length==0) { |
| | | const data=await getPerms(); |
| | | this.$store.state.permsEntity=data.result; |
| | | } |
| | | |
| | | this.$store.state.uname = JSON.parse( |
| | | this.$store.state.uname=JSON.parse( |
| | | localStorage.getItem('LFToken') |
| | | ).uname; |
| | | this.$store.state.unid = JSON.parse( |
| | | this.$store.state.unid=JSON.parse( |
| | | localStorage.getItem('LFToken') |
| | | ).userid; |
| | | this.$router.push('/'); |
| | | }, |
| | | getTimeCookies() { |
| | | var time1 = new Date(JSON.parse(localStorage.getItem('LFToken')).time); |
| | | var time2 = new Date(); |
| | | if (time2 > time1) { |
| | | 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 false; |
| | | } else { |
| | | return true; |
| | | } |
| | | }, |
| | | |
| | | //主题切换 |
| | | setThemeColors() { }, |
| | | async signInsertOpLog(m1, m2) { |
| | | var obj = { |
| | | |
| | | //主题切换 |
| | | setThemeColors () { }, |
| | | async signInsertOpLog (m1,m2) { |
| | | var obj={ |
| | | m1: m1, |
| | | m2: m2, |
| | | } |
| | | const data = await sign_insertOpLog(obj); |
| | | const data=await sign_insertOpLog(obj); |
| | | }, |
| | | //鼠标移入菜单事件 |
| | | setMenuMove(index, item) { |
| | | if (item.perms != null) { |
| | | setMenuMove (index,item) { |
| | | |
| | | if(item.perms!=null&&item.perms!="") { |
| | | this.$router.push(item.url); |
| | | if (this.showFlag != null) { |
| | | if(this.showFlag!=null) { |
| | | |
| | | this.changeliSelect = '%%'; |
| | | this.showFlag = null; |
| | | this.changeliSelect='%%'; |
| | | this.showFlag=null; |
| | | } |
| | | if (item.url == "Thematic") { |
| | | this.signInsertOpLog("综合展示", item.cnName) |
| | | if(item.url=="Thematic") { |
| | | this.signInsertOpLog("综合展示",item.cnName) |
| | | this.$nextTick(function() { |
| | | location.reload(); |
| | | }) |
| | | |
| | | } |
| | | |
| | | this.changeSelectStyle=index; |
| | | sessionStorage.setItem('changeSelectStyle',index) |
| | | } else { |
| | | if (this.showFlag != index) { |
| | | this.showFlag = index; |
| | | |
| | | if(this.showFlag!=index) { |
| | | this.showFlag=index; |
| | | } else { |
| | | this.showFlag = null; |
| | | this.showFlag=null; |
| | | } |
| | | } |
| | | // |
| | | if (index === 4 || index === 5 || index === 6) { |
| | | // |
| | | if(index===4||index===5||index===6) { |
| | | sessionStorage.removeItem('changeliSelect') |
| | | this.$set(this, 'changeliSelect', null) |
| | | this.$set(this,'changeliSelect',null) |
| | | } |
| | | sessionStorage.setItem('changeSelectStyle', index) |
| | | 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); |
| | | |
| | | }, |
| | | 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; |
| | | if (index != null) { |
| | | let newItem = this.listMenu[index]; |
| | | setShowFalseDiv (bolean) { |
| | | var index=this.showFlag; |
| | | if(index!=null) { |
| | | let newItem=this.listMenu[index]; |
| | | |
| | | newItem.show = bolean; |
| | | Vue.set(this.listMenu, index, newItem); |
| | | newItem.show=bolean; |
| | | Vue.set(this.listMenu,index,newItem); |
| | | } |
| | | }, |
| | | setLiClick(res, index) { |
| | | this.signInsertOpLog(this.listMenu[index].cnName, res.cnName) |
| | | 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; |
| | | sessionStorage.setItem('changeliSelect', res.cnName) |
| | | if (res.url.indexOf('http') != -1) { |
| | | this.$store.reporturl = res.url; |
| | | sessionStorage.setItem('iframehttpurl', this.$store.reporturl) |
| | | this.$router.push('/QualityInspection'); |
| | | this.changeliSelect=res.cnName; |
| | | 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'); |
| | |
| | | // this.$bus.$emit('changeNaveUrl', res.url); |
| | | // } |
| | | } else { |
| | | this.$store.reporturl = null; |
| | | sessionStorage.setItem('iframehttpurl', null) |
| | | this.$store.reporturl=null; |
| | | sessionStorage.setItem('iframehttpurl',null) |
| | | // sessionStorage.setItem('changeliSelect', null) |
| | | this.$router.push(res.url); |
| | | this.$store.commit('currentPerms', res.perms); |
| | | this.$store.commit('currentPerms',res.perms); |
| | | } |
| | | this.setShowFalseDiv(false) |
| | | }, 100) |
| | | },100) |
| | | |
| | | }, |
| | | async getMenuTree() { |
| | | async getMenuTree () { |
| | | this.getCookies(); |
| | | const data = await queryMenuTree(); |
| | | const data=await queryMenuTree(); |
| | | |
| | | var that = this; |
| | | if (data.code == 200) { |
| | | var that=this; |
| | | if(data.code==200) { |
| | | |
| | | if (data.result.length != 0) { |
| | | let menuLists = data.result.filter((value) => { |
| | | return value.pid == 1; |
| | | if(data.result.length!=0) { |
| | | let menuLists=data.result.filter((value) => { |
| | | return value.pid==1; |
| | | }); |
| | | |
| | | that.menuList = menuLists; |
| | | that.menuList=menuLists; |
| | | |
| | | that.setMenuTree(menuLists); |
| | | } else { |
| | |
| | | } |
| | | } |
| | | }, |
| | | async setMenuTree(res) { |
| | | 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({ id: res[i].id }); |
| | | for(var i in res) { |
| | | res[i].checkClass=res[i].css+'1'; |
| | | res[i].show=false; //控制显隐 |
| | | |
| | | if (result.code == 200) { |
| | | res[i].children = result.result.filter((value) => { |
| | | return value.pid == res[i].id; |
| | | }); |
| | | 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.isShow==1; |
| | | }) |
| | | .filter((value) => { |
| | | return value.pid==res[i].id; |
| | | }); |
| | | |
| | | } |
| | | this.listMenu.push(res[i]); |
| | |
| | | // } else { |
| | | // this.changeSelectStyle = this.listMenu.length - 1; |
| | | // } |
| | | this.changeSelectStyle = sessionStorage.getItem('changeSelectStyle') |
| | | |
| | | this.changeSelectStyle=sessionStorage.getItem('changeSelectStyle') |
| | | // var strartMneu = res[i].children[0]; |
| | | // this.$store.commit('currentPerms', strartMneu.perms); |
| | | // this.changeliSelect = strartMneu.cnName; |
| | |
| | | } |
| | | } |
| | | }, |
| | | treeData(source) { |
| | | let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆 |
| | | treeData (source) { |
| | | let cloneData=JSON.parse(JSON.stringify(source)); // 对源数据深度克隆 |
| | | // console.log(cloneData); |
| | | if (cloneData.length != 0) { |
| | | if(cloneData.length!=0) { |
| | | return cloneData.filter((father) => { |
| | | // 循环所有项 |
| | | let branchArr = cloneData.filter((child) => father.id == child.pid); // 对比ID,分别上下级菜单,并返回数据 |
| | | branchArr.length > 0 ? (father.children = branchArr) : ''; // 给父级添加一个children属性,并赋值 |
| | | let branchArr=cloneData.filter((child) => father.id==child.pid); // 对比ID,分别上下级菜单,并返回数据 |
| | | branchArr.length>0? (father.children=branchArr):''; // 给父级添加一个children属性,并赋值 |
| | | // 属于同一对象问题,例如:令 a=b、c=1 ,然后再令 b.c=c , 那么 a.c=b.c=c=1 ;同理,后续令 c.d=2 ,那么 a.c.d 也是=2; |
| | | // 由此循环多次后,就能形成相应的树形数据结构 |
| | | return father.pid == 1; // 返回一级菜单 |
| | | return father.pid==1; // 返回一级菜单 |
| | | }); |
| | | } else { |
| | | this.$message({ |
| | |
| | | }); |
| | | } |
| | | }, |
| | | logOut() { |
| | | this.$confirm('确认是否退出登录?', '提示', { |
| | | logOut () { |
| | | this.$confirm('确认是否退出登录?','提示',{ |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | }) |
| | | .then(async () => { |
| | | const data = await logout({ token: getToken() }); |
| | | const data=await logout({ token: getToken() }); |
| | | // console.log(data); |
| | | if (data.code != 200) { |
| | | if(data.code!=200) { |
| | | return this.$message.error('退出登录失败'); |
| | | } |
| | | removeToken(); |
| | |
| | | }); |
| | | }); |
| | | }, |
| | | switchLang() { |
| | | switchLang () { |
| | | //当前en |
| | | if (this.lang == 'en') { |
| | | if(this.lang=='en') { |
| | | //语言换成zh |
| | | this.lang = 'zh'; |
| | | this.language = true; |
| | | this.$store.state.language = true; |
| | | this.lang='zh'; |
| | | this.language=true; |
| | | this.$store.state.language=true; |
| | | //菜单换为zh |
| | | this.$store.commit('changeLang', 'zh'); |
| | | this.$store.commit('changeLang','zh'); |
| | | //i18换成zh |
| | | this.$i18n.locale = this.lang; |
| | | this.$i18n.locale=this.lang; |
| | | } |
| | | //当前zh |
| | | else { |
| | | this.lang = 'en'; |
| | | this.language = false; |
| | | this.$store.state.language = false; |
| | | this.$i18n.locale = this.lang; |
| | | this.$store.commit('changeLang', 'en'); //传递点击的节点 |
| | | this.lang='en'; |
| | | this.language=false; |
| | | this.$store.state.language=false; |
| | | this.$i18n.locale=this.lang; |
| | | this.$store.commit('changeLang','en'); //传递点击的节点 |
| | | } |
| | | }, |
| | | handleselect(index, indexPath, e) { |
| | | handleselect (index,indexPath,e) { |
| | | // console.log(e.$attrs.perms); |
| | | this.$store.commit('currentPerms', e.$attrs.perms.perms); |
| | | if (Window.ws != null) { |
| | | this.$store.commit('currentPerms',e.$attrs.perms.perms); |
| | | if(Window.ws!=null) { |
| | | Window.ws.close(); |
| | | Window.ws.onclose = () => { |
| | | Window.ws.onclose=() => { |
| | | console.log('服务器关闭'); |
| | | }; |
| | | Window.ws = null; |
| | | 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))) { |
| | | this.$store.commit('getIframe',index); |
| | | } else if(isNaN(Number(index))) { |
| | | this.$router.push(index); |
| | | } |
| | | }, |
| | | }, |
| | | watch: { |
| | | $route() { |
| | | let str = this.$route.path; |
| | | if (str[0] == '/') { |
| | | this.activeIndex = str.slice(1); |
| | | $route () { |
| | | let str=this.$route.path; |
| | | if(str[0]=='/') { |
| | | this.activeIndex=str.slice(1); |
| | | } |
| | | }, |
| | | }, |
| | | created() { |
| | | this.$store.reporturl = null; |
| | | let str = this.$route.path; |
| | | if (str[0] == '/') { |
| | | this.activeIndex = str.slice(1); |
| | | created () { |
| | | this.$store.reporturl=null; |
| | | let str=this.$route.path; |
| | | if(str[0]=='/') { |
| | | this.activeIndex=str.slice(1); |
| | | } |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | |
| | | |