{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-fvue\\src\\views\\menuContent.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\views\\menuContent.vue","mtime":1667327530216},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport {mapState, mapActions} from 'vuex'\r\nimport templateHref from '@/components/dataTemplate/templateHref.vue'\r\nimport deepmerge from \"deepmerge\";\r\nexport default {\r\n name: 'menuContent',\r\n components: {templateHref},\r\n computed: mapState({\r\n menuAll: state => state.menu.all,\r\n menus: function(state) {\r\n let alias = ''\r\n if (state.menu.currentMenu.alias) {\r\n alias = state.menu.currentMenu.alias\r\n } else if (sessionStorage.menu_alias) {\r\n alias = sessionStorage.menu_alias\r\n }\r\n return state.menu.menuMaps[alias]\r\n },\r\n currentMenu: state => state.menu.currentMenu\r\n }),\r\n data() {\r\n return {\r\n asideShow:true,\r\n activeMenuIndex: '',\r\n href: '' //url菜单地址\r\n }\r\n },\r\n methods: {\r\n findCurrentMenuName(){\r\n let obj=this.menus.find(it=>it.alias === this.activeMenuIndex);\r\n let name=\"\";\r\n if (obj){\r\n name= obj.name\r\n }else{\r\n let _menus = deepmerge({}, this.menus, {clone: true})\r\n let item=this.getChidlren(this.activeMenuIndex,_menus);\r\n if (item){\r\n name=item.name;\r\n }\r\n }\r\n return name;\r\n\r\n },\r\n getChidlren(alias,_menus){\r\n var hasFound = false, // 表示是否有找到id值\r\n result = null;\r\n var fn = function (data) {\r\n if (Array.isArray(data) && !hasFound) { // 判断是否是数组并且没有的情况下,\r\n data.forEach(item => {\r\n if (item.alias === alias) { // 数据循环每个子项,并且判断子项下边是否有id值\r\n result = item; // 返回的结果等于每一项\r\n hasFound = true; // 并且找到id值\r\n } else if (item.children && item.children.length>0) {\r\n fn(item.children); // 递归调用下边的子项\r\n }\r\n })\r\n }\r\n }\r\n fn(_menus); // 调用一下\r\n return result;\r\n },\r\n\r\n handleSelect(key) {\r\n //当前点击菜单的父级菜单路由\r\n let path = this.currentMenu.alias || sessionStorage.menu_alias\r\n if (path.indexOf('/') < 0) {\r\n path = '/' + path\r\n }\r\n sessionStorage.menu_path = path + '/' + key\r\n this.href = ''\r\n //判断4级URL菜单\r\n let item=this.getChidlren(key,this.menus);\r\n if (item.href){\r\n this.href = item.href\r\n }\r\n this.activeMenuIndex=key;\r\n this.$router.push({path: sessionStorage.menu_path})\r\n },\r\n selectCurentMenu(newVal) {\r\n //当前点击菜单的父级菜单路由\r\n let path = ''\r\n this.currentMenu.alias ? (path = this.currentMenu.alias) : (path = sessionStorage.menu_alias)\r\n // if(this.currentMenu.alias){\r\n // path = this.currentMenu.alias;\r\n // }else{\r\n // path = sessionStorage.menu_alias;\r\n // }\r\n if (path.indexOf('/') < 0) {\r\n path = '/' + path\r\n }\r\n let paths = []\r\n if (this.$router.history.pending) {\r\n paths = this.$router.history.pending.fullPath.split(path + '/')\r\n } else {\r\n paths = this.$router.history.current.fullPath.split(path + '/')\r\n }\r\n if (paths.length > 0) {\r\n this.activeMenuIndex = paths[1]\r\n } else {\r\n this.activeMenuIndex = paths[0]\r\n }\r\n\r\n let isFlag = true //是否需要默认加载一级菜单的第一个二级菜单\r\n this.href = ''\r\n for (let i = 0; i < this.menus.length; i++) {\r\n //判断是否是URL菜单\r\n if (this.menus[i].href) {\r\n if (this.activeMenuIndex == this.menus[i].alias) {\r\n this.href = this.menus[i].href\r\n isFlag = false\r\n break\r\n }\r\n let falg = false\r\n //判断菜单是否有下一级,且只能有一个下一级\r\n if (this.menus[i].children.length > 0) {\r\n for (let o = 0; o < this.menus[i].children.length; o++) {\r\n //判断是否是URL菜单\r\n if (this.activeMenuIndex == this.menus[i].children[o].alias) {\r\n this.href = this.menus[i].children[o].href\r\n falg = true\r\n break\r\n }\r\n }\r\n if (falg) {\r\n break\r\n }\r\n }\r\n }\r\n }\r\n //默认加载一级菜单的第一个二级菜单\r\n if (isFlag && (!this.activeMenuIndex || (this.activeMenuIndex && this.activeMenuIndex.indexOf('href/template') != -1))) {\r\n this.activeMenuIndex = this.getLastChildren();\r\n\r\n //判断是否是URL地址菜单\r\n if (this.menus[0].href) {\r\n this.href = this.menus[0].href\r\n }\r\n //判断菜单是否有下一级,且只能有一个下一级\r\n if (this.menus[0].children.length > 0) {\r\n for (let k = 0; k < this.menus[0].children.length; k++) {\r\n //判断是否是URL菜单\r\n if (this.menus[0].children[k].href) {\r\n this.href = this.menus[0].children[k].href\r\n this.activeMenuIndex = this.menus[0].children[k].alias\r\n break\r\n }\r\n }\r\n }\r\n sessionStorage.menu_path = path + '/' + this.activeMenuIndex\r\n this.$router.push({path: sessionStorage.menu_path})\r\n }\r\n },\r\n getLastChildren(){\r\n // 获取最后个children的第一个菜单\r\n let _alias = this.menus[0].alias;\r\n let _menus = this.menus[0];\r\n while(_menus.children && _menus.children.length>0){\r\n _alias = _menus.children[0].alias;\r\n _menus = _menus.children[0];\r\n }\r\n return _alias;\r\n },\r\n\r\n setCurrentMenu(path) {\r\n let that = this\r\n for (let i = 0; i < that.menuAll.length; i++) {\r\n if (that.menuAll[i].alias === path) {\r\n if (path.indexOf('/') > -1) {\r\n path = path.replace('/', '')\r\n }\r\n this.$store.dispatch('menu/getCurrentMenu', {\r\n alias: that.menuAll[i].code,\r\n name: that.menuAll[i].name\r\n })\r\n break\r\n }\r\n }\r\n },\r\n inCurrentMenu(newVal){\r\n if(newVal && newVal.length > 0){\r\n for(let i = 0 ; i < newVal.length ; i++){\r\n if(newVal[i].alias == this.activeMenuIndex){\r\n return true;\r\n }\r\n if(newVal[i].children && newVal[i].children.length > 0){\r\n let inCur = this.inCurrentMenu(newVal[i].children)\r\n if(inCur){\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n watch: {\r\n menus: {\r\n handler(newVal) {\r\n //判断当前菜单是否还在新菜单列表里\r\n let menuChange = !this.inCurrentMenu(newVal);\r\n //window.self === window.top 判断页面是否被嵌入iframe里面\r\n if (newVal && newVal.length > 0 && window.self === window.top && menuChange) {\r\n this.selectCurentMenu(newVal)\r\n }\r\n //切换一级菜单时情况URL地址\r\n if (!newVal || newVal.length == 0) {\r\n if (this.href != '') {\r\n this.href = ''\r\n }\r\n }\r\n },\r\n deep: true,\r\n immediate: true\r\n }\r\n },\r\n beforeRouteEnter(to, from, next) {\r\n next(vm => {\r\n vm.$root.$emit('updateTopMenuActive', from.name)\r\n })\r\n },\r\n beforeRouteUpdate(to, from, next) {\r\n next()\r\n }\r\n}\r\n",null]}