{"version":3,"file":"LayoutIndex.mjs","sources":["../../../../src/components/layout/LayoutIndex.vue"],"sourcesContent":["<template>\r\n  <a-layout>\r\n    <a-layout-sider width=\"80\" :theme=\"sideTheme\" :trigger=\"null\" collapsible>\r\n      <header id=\"snowyHeaderLogo\" class=\"snowy-header-logo\">\r\n        <div class=\"snowy-header-left\">\r\n          <div class=\"logo-bar\">\r\n            <router-link to=\"/\">\r\n              <img class=\"logo\" :src=\"logourl\"/>\r\n            </router-link>\r\n            <div class=\"title\">\r\n              <img :src=\"texturl\" alt=\"\"/>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </header>\r\n      <a-menu v-model:selectedKeys=\"doublerowSelectedKey\" :theme=\"sideTheme\" class=\"snowy-doublerow-layout-menu\">\r\n        <a-menu-item v-for=\"item in menu\" :key=\"item.path\"\r\n                     style=\"text-align: center; border-radius: 6px; height: auto; line-height: 20px; flex: none; display: block; padding: 6px 0 !important\"\r\n                     @click=\"showMenu(item)\">\r\n          <a v-if=\"item.meta && item.meta.type === 'link'\" :href=\"item.path\" target=\"_blank\" @click.stop=\"() => {}\"></a>\r\n          <template #icon>\r\n            <component :is=\"item.meta.icon\" style=\"padding-left: 10px\"/>\r\n          </template>\r\n          <div class=\"snowy-doublerow-layout-menu-item-fort-div\">\r\n            <span class=\"snowy-doublerow-layout-menu-item-fort-div-span\"> {{ item.meta.title }} </span>\r\n          </div>\r\n        </a-menu-item>\r\n      </a-menu>\r\n    </a-layout-sider>\r\n    <a-layout-sider style=\"background: #f5f8fb\" v-show=\"layoutSiderDowbleMenu\"\r\n                    v-model:collapsed=\"$store.state.global.menuIsCollapse\" :trigger=\"null\" width=\"170\" collapsible\r\n                    :theme=\"secondMenuSideTheme\">\r\n      <div v-if=\"!menuIsCollapse\" id=\"snowyDoublerowSideTop\" class=\"snowy-doublerow-side-top\">\r\n        <h2 class=\"snowy-title\" v-if=\"pmenu.meta\">{{ pmenu.meta.title }}</h2>\r\n      </div>\r\n      <a-menu\r\n          style=\"background: #f5f8fb\"\r\n          v-model:collapsed=\"$store.state.global.menuIsCollapse\"\r\n          v-model:openKeys=\"openKeys\"\r\n          v-model:selectedKeys=\"selectedKeys\"\r\n          mode=\"inline\"\r\n          :theme=\"secondMenuSideTheme\"\r\n          @select=\"onSelect\"\r\n      >\r\n        <nav-menu :nav-menus=\"nextMenu\"></nav-menu>\r\n      </a-menu>\r\n    </a-layout-sider>\r\n    <a-layout style=\"margin-left: 2px\">\r\n      <div id=\"snowyHeader\" class=\"snowy-header\">\r\n        <div class=\"snowy-header-left\" style=\"padding-left: 0px\">\r\n          <module-menu @switchModule=\"switchModule\"/>\r\n          <top-bar/>\r\n        </div>\r\n        <div class=\"snowy-header-right\">\r\n          <user-bar>\r\n            <template #avaOtherContent>\r\n              <slot name=\"avaOtherContent\"></slot>\r\n            </template>\r\n            <template #barOtherContent>\r\n              <slot name=\"barOtherContent\"></slot>\r\n            </template>\r\n          </user-bar>\r\n        </div>\r\n      </div>\r\n      <!-- 多标签 -->\r\n      <Tags/>\r\n      <a-layout-content class=\"main-content-wrapper\">\r\n        <div id=\"adminui-main\" class=\"adminui-main\">\r\n          <router-view v-slot=\"{ Component }\">\r\n            <keep-alive>\r\n              <component :is=\"Component\"/>\r\n            </keep-alive>\r\n          </router-view>\r\n          <iframe-view></iframe-view>\r\n        </div>\r\n      </a-layout-content>\r\n    </a-layout>\r\n  </a-layout>\r\n  <!-- 退出最大化 -->\r\n  <div class=\"main-maximize-exit\" @click=\"exitMaximize\">\r\n    <fullscreen-exit-outlined style=\"color: #fff\"/>\r\n  </div>\r\n</template>\r\n<script>\r\nimport {tool} from 'elead-ui-tool-v3'\r\nimport IframeView from \"@/components/layout/IframeView\";\r\nimport ModuleMenu from \"@/components/layout/ModuleMenu\";\r\nexport default defineComponent({\r\n  name: 'LayoutIndex',\r\n  components: {\r\n    ModuleMenu,\r\n    IframeView\r\n  },\r\n  props: ['texturl',\r\n    'logourl'],\r\n  data() {\r\n    return {\r\n      menu: [],\r\n      moduleMenu: [],\r\n      nextMenu: [],\r\n      pmenu: {},\r\n      doublerowSelectedKey: [],\r\n      layoutSiderDowbleMenu: true,\r\n      onSelectTag: false,\r\n      selectedKeys: [],\r\n      openKeys: [],\r\n      openKeysOther: [],\r\n      sysBaseConfig: tool.data.get('SNOWY_SYS_BASE_CONFIG') || this.$store.state.global.sysBaseConfig\r\n    }\r\n  },\r\n  computed: {\r\n    sideTheme() {\r\n      return 'dark'\r\n    },\r\n    secondMenuSideTheme() {\r\n      return 'light'\r\n    },\r\n    layout() {\r\n      return this.$store.state.global.layout\r\n    },\r\n    menuIsCollapse() {\r\n      return this.$store.state.global.menuIsCollapse\r\n    },\r\n    topHanderThemeColorOpen() {\r\n      return this.$store.state.global.topHanderThemeColorOpen\r\n    },\r\n    topHanderThemeColorSpread() {\r\n      return this.$store.state.global.topHanderThemeColorSpread\r\n    }\r\n  },\r\n  watch: {\r\n    $route() {\r\n      this.showThis()\r\n    },\r\n    layout: {\r\n      handler(val) {\r\n        document.body.setAttribute('data-layout',\r\n            val)\r\n        if (val && val.includes('doublerow')) {\r\n          this.setDoublerowSelectedKey()\r\n        }\r\n        this.$nextTick(() => {\r\n          // 顶栏主题色\r\n          this.switchoverTopHanderThemeColor()\r\n        })\r\n      },\r\n      immediate: true\r\n    },\r\n    topHanderThemeColorOpen() {\r\n      this.switchoverTopHanderThemeColor()\r\n    },\r\n    topHanderThemeColorSpread() {\r\n      this.switchoverTopHanderThemeColor()\r\n    }\r\n  },\r\n  created() {\r\n    // 判断浏览器宽度，顺手加入缓存\r\n    this.onLayoutResize()\r\n    window.addEventListener('resize',\r\n        this.onLayoutResize)\r\n    this.moduleMenu = this.$router.getMenu()\r\n    // 获取缓存中的菜单模块是哪个\r\n    const menuModuleId = this.$TOOL.data.get('SNOWY_MENU_MODULE_ID')\r\n    let menu = []\r\n    if (menuModuleId) {\r\n      // 防止切换一个无此应用的人\r\n      const module = this.$router.getMenu()\r\n          .filter((item) => item.id === menuModuleId)\r\n      if (module.length > 0) {\r\n        menu = module[0].children\r\n      } else {\r\n        menu = this.$router.getMenu()[0].children\r\n      }\r\n    } else {\r\n      menu = this.$router.getMenu()[0].children\r\n    }\r\n    // 此菜单为正常模块下的菜单\r\n    this.menu = this.filterUrl(menu)\r\n    this.showThis()\r\n  },\r\n  mounted() {\r\n    this.switchoverTopHanderThemeColor()\r\n  },\r\n  methods: {\r\n    // 切换应用\r\n    switchModule(id) {\r\n      const menu = this.moduleMenu\r\n      if (menu.length > 0) {\r\n        const menus = menu.filter((item) => item.id === id)[0].children\r\n        if (menus.length > 0) {\r\n          // 将此模块的唯一值加入缓存\r\n          this.$TOOL.data.set('SNOWY_MENU_MODULE_ID',\r\n              id)\r\n          // 正儿八百的菜单\r\n          this.menu = this.filterUrl(menus)\r\n          // 然后将其跳转至指定界面，默认始终取排序第一的\r\n          const path = this.traverseChild(this.menu)\r\n          this.$router.push({path})\r\n        } else {\r\n          this.$message.warning('该模块下无任何菜单')\r\n        }\r\n      }\r\n    },\r\n    // 遍历子集获取一个path\r\n    traverseChild(menu) {\r\n      if (menu[0].children !== undefined) {\r\n        if (menu[0].children.length > 0) {\r\n          return this.traverseChild(menu[0].children)\r\n        } else {\r\n          return menu[0].path\r\n        }\r\n      } else {\r\n        return menu[0].path\r\n      }\r\n    },\r\n    // 当菜单被选中时\r\n    onSelect(obj) {\r\n      this.onSelectTag = true\r\n      const pathLength = obj.keyPath.length\r\n      const path = obj.keyPath[pathLength - 1]\r\n      this.$router.push({path})\r\n      // 设置选中\r\n      this.selectedKeys = obj.selectedKeys\r\n    },\r\n    onLayoutResize() {\r\n      const clientWidth = document.body.clientWidth\r\n      if (clientWidth < 992) {\r\n        this.$store.commit('SET_ismobile',\r\n            true)\r\n      } else {\r\n        this.$store.commit('SET_ismobile',\r\n            false)\r\n      }\r\n    },\r\n    // 路由监听高亮\r\n    showThis() {\r\n      this.pmenu = this.$route.meta.breadcrumb ? this.$route.meta.breadcrumb[0] : {}\r\n      if (!this.pmenu || !this.pmenu.children) {\r\n        tool.getIndexPage({\r\n          menu: this.moduleMenu,\r\n          success: (defaultIndex) => {\r\n            this.$router.replace({\r\n              path: defaultIndex.cur.path\r\n            })\r\n          }\r\n        })\r\n        return\r\n      }\r\n      const nextTickMenu = this.filterUrl(this.pmenu.children)\r\n      this.$nextTick(() => {\r\n        let routeMenu = this.filterUrl(this.pmenu.children)\r\n        const active = this.$route.meta.active || this.$route.fullPath\r\n        const parentPathArray = this.getParentKeys(routeMenu,\r\n            active)\r\n        if (parentPathArray) {\r\n          const parentPath = parentPathArray[parentPathArray.length - 1]\r\n          // 这一串操作下来只为取到最上面的路由的孩子们，最后成为双排菜单的第二排\r\n          const nextMenuTemp = nextTickMenu.filter((item) => item.path === parentPath)[0].children\r\n          if (nextMenuTemp) {\r\n            this.nextMenu = nextTickMenu.filter((item) => item.path === parentPath)[0].children\r\n          }\r\n        }\r\n        this.selectedKeys = new Array(active)\r\n        if (!this.onSelectTag) {\r\n          const pidKey = this.getParentKeys(this.menu,\r\n              active)\r\n          this.openKeys = pidKey\r\n        } else if (this.$store.state.global.sideUniqueOpen) {\r\n          const pidKey = this.getParentKeys(this.menu,\r\n              active)\r\n          this.openKeys = pidKey\r\n        }\r\n        // 双排菜单下\r\n        if (this.layout === 'doublerow') {\r\n          this.setDoublerowSelectedKey()\r\n        }\r\n      })\r\n    },\r\n    // 双排菜单下点击显示右侧分栏\r\n    showMenu(route) {\r\n      this.pmenu = route\r\n      if (this.pmenu.children) {\r\n        this.nextMenu = this.filterUrl(this.pmenu.children)\r\n      }\r\n      if (!route.children || route.children.length === 0) {\r\n        this.layoutSiderDowbleMenu = false\r\n        this.$router.push({path: route.path})\r\n      } else {\r\n        this.layoutSiderDowbleMenu = true\r\n      }\r\n      if (this.layout === 'doublerow') {\r\n        this.doublerowSelectedKey = [route.path]\r\n        if (route && route['children'] && route['children'].length > 0) {\r\n          this.$router.push({path: route['children'][0].path})\r\n        }\r\n      }\r\n    },\r\n    // 设置双排菜单下的首列默认选中\r\n    setDoublerowSelectedKey() {\r\n      const pidKey = this.getParentKeys(this.menu,\r\n          this.selectedKeys.toString())\r\n      this.$nextTick(() => {\r\n        const pidKeyArray = []\r\n        for (const key in pidKey) {\r\n          pidKeyArray.push(key)\r\n        }\r\n        if (pidKeyArray.length > 1) {\r\n          this.layoutSiderDowbleMenu = true\r\n        } else {\r\n          this.layoutSiderDowbleMenu = false\r\n        }\r\n      })\r\n      // 设置第一排选中的\r\n      this.menu.forEach((item) => {\r\n        if (pidKey !== undefined) {\r\n          if (pidKey[pidKey.length - 1].toString() === item.path) {\r\n            this.doublerowSelectedKey = [item.path]\r\n          }\r\n        }\r\n      })\r\n    },\r\n    // 菜单展开/关闭的回调\r\n    onOpenChange(keys) {\r\n      if (this.$store.state.global.sideUniqueOpen) {\r\n        // 获取最新的\r\n        const openKey = keys[keys.length - 1]\r\n        if (keys.length > 1) {\r\n          // 获取上级\r\n          const pidKey = this.getParentKeys(this.menu,\r\n              openKey)\r\n          this.openKeys = pidKey\r\n        } else {\r\n          this.openKeys = Array.of(openKey) // new Array(openKey);\r\n        }\r\n      } else {\r\n        this.openKeys = keys\r\n      }\r\n    },\r\n    // 获取上级keys\r\n    getParentKeys(data,\r\n                  val) {\r\n      // 递归父级key\r\n      for (const element of data) {\r\n        if (element.path === val) {\r\n          return [element.path]\r\n        }\r\n        if (element.children) {\r\n          const far = this.getParentKeys(element.children,\r\n              val)\r\n          if (far) {\r\n            return far.concat(element.path)\r\n          }\r\n        }\r\n      }\r\n    },\r\n    // 转换外部链接的路由\r\n    filterUrl(map) {\r\n      const newMap = []\r\n      // eslint-disable-next-line no-unused-expressions\r\n      map &&\r\n      map.forEach((item) => {\r\n        item.meta = item.meta ? item.meta : {}\r\n        // 处理隐藏\r\n        if (item.meta.hidden) {\r\n          return false\r\n        }\r\n        // 处理http\r\n        if (item.meta.type === 'iframe') {\r\n          item.path = `/i/${item.name}`\r\n        }\r\n        // 递归循环\r\n        if (item.children && item.children.length > 0) {\r\n          item.children = this.filterUrl(item.children)\r\n        }\r\n        newMap.push(item)\r\n      })\r\n      return newMap\r\n    },\r\n    // 退出最大化\r\n    exitMaximize() {\r\n      document.getElementById('app')\r\n          .classList\r\n          .remove('main-maximize')\r\n    },\r\n    // 切换顶栏颜色\r\n    switchoverTopHanderThemeColor() {\r\n      // 界面顶栏设置颜色\r\n      const header = document.getElementById('snowyHeader')\r\n      this.topHanderThemeColorOpen ? header.classList.add('snowy-header-primary-color') : header.classList.remove('snowy-header-primary-color')\r\n      // 判断是否开启了通栏\r\n      const headerLogin = document.getElementById('snowyHeaderLogo')\r\n      try {\r\n        this.topHanderThemeColorSpread ? headerLogin.classList.add('snowy-header-logo-primary-color') : headerLogin.classList.remove('snowy-header-logo-primary-color')\r\n      } catch (e) {\r\n      }\r\n      // 如果是双排菜单，吧第二排的也给渲染了\r\n      if (this.layout === 'doublerow') {\r\n        const snowyDoublerowSideTop = document.getElementById('snowyDoublerowSideTop')\r\n        try {\r\n          this.topHanderThemeColorSpread ? snowyDoublerowSideTop.classList.add('snowy-doublerow-side-top-primary-color') : snowyDoublerowSideTop.classList.remove('snowy-doublerow-side-top-primary-color')\r\n        } catch (e) {\r\n        }\r\n      }\r\n    }\r\n  }\r\n})\r\n</script>\r\n"],"names":["_createVNode","_createElementVNode","_createElementBlock","_Fragment","_renderList","_createBlock","_resolveDynamicComponent","_toDisplayString","_openBlock","_renderSlot","_createCommentVNode","_withCtx","_KeepAlive"],"mappings":"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"}