{"version":3,"sources":["webpack:///./src/layout/navBars/tagsView/tagsView.vue?7f90","webpack:///./src/layout/navBars/breadcrumb/index.vue?3835","webpack:///./src/layout/navBars/breadcrumb/user.vue?d593","webpack:///./src/layout/navBars/breadcrumb/breadcrumb.vue?c8a6","webpack:///./src/layout/navBars/tagsView/contextmenu.vue?68d2","webpack:///./src/layout/navBars/index.vue?feb3","webpack:///./src/layout/footer/index.vue?3c66","webpack:///./src/layout/navBars/breadcrumb/search.vue?e11e","webpack:///./src/layout/index.vue?b544","webpack:///./src/layout/main/defaults.vue?43b3","webpack:///./src/layout/component/aside.vue?e1c4","webpack:///./src/layout/logo/index.vue?11f3","webpack:///./src/layout/logo/index.vue","webpack:///./src/layout/logo/index.vue?2088","webpack:///./src/layout/navMenu/vertical.vue?5b52","webpack:///./src/layout/navMenu/subItem.vue?fd7c","webpack:///./src/layout/navMenu/subItem.vue","webpack:///./src/layout/navMenu/subItem.vue?5925","webpack:///./src/layout/navMenu/vertical.vue","webpack:///./src/layout/navMenu/vertical.vue?2355","webpack:///./src/layout/component/aside.vue","webpack:///./src/layout/component/aside.vue?8e13","webpack:///./src/layout/component/header.vue?141a","webpack:///./src/layout/navBars/index.vue?a173","webpack:///./src/layout/navBars/breadcrumb/index.vue?a9d3","webpack:///./src/layout/navBars/breadcrumb/breadcrumb.vue?4820","webpack:///./src/layout/navBars/breadcrumb/breadcrumb.vue","webpack:///./src/layout/navBars/breadcrumb/breadcrumb.vue?115e","webpack:///./src/layout/navBars/breadcrumb/user.vue?5951","webpack:///./src/utils/setWebTitle.ts","webpack:///./src/layout/navBars/breadcrumb/search.vue?64aa","webpack:///./src/layout/navBars/breadcrumb/search.vue","webpack:///./src/layout/navBars/breadcrumb/search.vue?9129","webpack:///./src/layout/navBars/breadcrumb/user.vue","webpack:///./src/layout/navBars/breadcrumb/user.vue?de5d","webpack:///./src/layout/navMenu/horizontal.vue?fd13","webpack:///./src/layout/navMenu/horizontal.vue","webpack:///./src/layout/navMenu/horizontal.vue?d6ee","webpack:///./src/layout/navBars/breadcrumb/index.vue","webpack:///./src/layout/navBars/breadcrumb/index.vue?d690","webpack:///./src/layout/navBars/tagsView/tagsView.vue?258f","webpack:///./src/utils/arrayOperation.ts","webpack:///./src/layout/navBars/tagsView/contextmenu.vue?51bd","webpack:///./src/layout/navBars/tagsView/contextmenu.vue","webpack:///./src/layout/navBars/tagsView/contextmenu.vue?e64a","webpack:///./src/layout/navBars/tagsView/tagsView.vue","webpack:///./src/layout/navBars/tagsView/tagsView.vue?90d3","webpack:///./src/layout/navBars/index.vue","webpack:///./src/layout/navBars/index.vue?09e2","webpack:///./src/layout/component/header.vue","webpack:///./src/layout/component/header.vue?bf96","webpack:///./src/layout/component/main.vue?c375","webpack:///./src/layout/routerView/parent.vue?f75f","webpack:///./src/layout/routerView/parent.vue","webpack:///./src/layout/routerView/parent.vue?b18d","webpack:///./src/layout/footer/index.vue?9335","webpack:///./src/layout/footer/index.vue","webpack:///./src/layout/footer/index.vue?abc0","webpack:///./src/layout/component/main.vue","webpack:///./src/layout/component/main.vue?6262","webpack:///./src/layout/main/defaults.vue","webpack:///./src/layout/main/defaults.vue?7789","webpack:///./src/layout/index.vue","webpack:///./src/layout/index.vue?a6b2","webpack:///./src/layout/logo/index.vue?df61","webpack:///./src/layout/navMenu/horizontal.vue?ab0d"],"names":["render","_ctx","_cache","$props","$setup","$data","$options","_component_Defaults","getThemeConfig","layout","key","_component_Aside","_component_Header","_component_Main","_component_el_scrollbar","_component_el_container","_component_el_backtop","class","default","isFixedHeader","ref","_","target","_hoisted_1","_component_Logo","_component_Vertical","_component_el_aside","setCollapseStyle","setShowLogo","menuList","isTagsViewCurrenFull","n","src","_hoisted_2","_hoisted_3","onClick","onThemeConfigChange","globalTitle","name","setup","proxy","store","state","themeConfig","isCollapse","document","body","clientWidth","mittBus","emit","__exports__","_component_SubItem","_component_el_sub_menu","_component_el_menu_item","_component_el_menu","router","defaultActive","collapse","isUniqueOpened","menuLists","val","children","length","index","path","title","meta","icon","$t","chil","isLink","isIframe","fn","href","rel","_component_sub_item","chils","props","type","Array","components","SubItem","route","isDynamic","isDynamicPath","setParentHighlight","currentRoute","pathSplit","split","isHide","splice","join","value","immediate","to","Logo","Vertical","tagsViewRoutes","menuBar","asideBrColor","setAttribute","asideEle","querySelector","modeDivs","createElement","appendChild","addEventListener","closeLayoutAsideMobileMode","el","parentNode","removeChild","isShowLogo","setFilterRoutes","filterRoutesFun","routesList","arr","filter","item","map","Object","assign","initMenuFixed","isShowLogoChange","$refs","layoutAsideScrollbarRef","update","isClassicSplitMenu","_component_NavBarsIndex","_component_el_header","height","setHeaderHeight","_component_BreadcrumbIndex","_component_TagsView","setShowTagsView","_component_Breadcrumb","_component_Horizontal","_component_User","setIsShowLogo","isLayoutTransverse","_component_i_expand","_component_el_icon","_component_i_fold","_component_el_breadcrumb_item","_component_el_breadcrumb","style","display","isShowBreadcrumb","mode","breadcrumbList","v","k","isBreadcrumbIcon","$event","onBreadcrumbClick","routeSplit","routeSplitFirst","routeSplitIndex","initRouteSplit","isBreadcrumb","redirect","push","getBreadcrumbList","arrs","shift","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_Search","flex","layoutUserFlexNum","onCommand","onHandleCommandClick","dropdown","command","getUserInfos","userName","useTitle","webTitle","_component_el_autocomplete","_component_el_dialog","modelValue","isShowSearch","width","modal","fullscreen","menuQuery","menuSearch","placeholder","onSelect","onHandleSelect","onBlur","onSearchBlur","layoutMenuAutocompleteRef","tagsViewList","openSearch","initTageView","focus","closeSearch","queryString","cb","results","createFilter","restaurant","toLowerCase","indexOf","window","open","Search","t","searchRef","isScreenfull","isShowUserNewsPopover","disabledI18n","disabledSize","userInfos","num","onScreenfullClick","onLayoutSetingClick","closeOnClickModal","closeOnPressEscape","message","showCancelButton","confirmButtonText","cancelButtonText","beforeClose","action","instance","done","confirmButtonLoading","setTimeout","then","clear","success","catch","onSearchClick","onComponentSizeChange","size","remove","globalComponentSize","set","$ELEMENT","initComponentSize","location","reload","onLanguageChange","lang","globalI18n","$i18n","locale","initI18n","setI18nConfig","messages","get","onWheel","onElMenuHorizontalScroll","e","eventDelta","wheelDelta","deltaY","elMenuHorizontalScrollRef","wrap","scrollLeft","initElMenuOffsetLeft","els","offsetLeft","setSendClassicChildren","currentPathSplit","currentData","setCurrentRouterHighlight","Breadcrumb","User","Horizontal","delClassicChildren","resData","_hoisted_4","_component_Contextmenu","onHandleScroll","setTagsStyle","isActive","onContextmenu","onTagsClick","tagsRefs","isTagsviewIcon","refreshCurrentTagsView","$route","fullPath","isAffix","closeCurrentTagsView","isShareTagsView","url","onCurrentContextmenuClick","isObjectValueEqual","a","b","aProps","getOwnPropertyNames","bProps","i","propName","propA","propB","hasOwnProperty","role","dropdowns","y","x","Math","random","dropdownList","affix","tabindex","contextMenuClickId","txt","isShow","openContextmenu","closeContextmenu","removeEventListener","Contextmenu","scrollbarRef","contextmenuRef","tagsUlRef","routeActive","routePath","tagsRefsIndex","sortable","tagsViewRoutesList","tagsStyle","addBrowserSetSession","getTagsViewRoutes","setTagsViewHighlight","initTagsView","isCacheTagsView","addTagsView","getTagsRefsIndex","solveAddTagsView","current","params","query","findItem","find","singleAddTagsView","forEach","some","closeOtherTagsView","closeAllTagsView","openCurrenFullscreen","dispatch","getCurrentRouteItem","cParams","itemRoute","keys","clientX","clientY","updateScrollbar","tagsViewmoveToCurrentTag","liDom","liIndex","liLength","liFirst","liLast","scrollRefs","scrollS","scrollWidth","offsetW","offsetWidth","scrollL","liPrevTag","liNextTag","beforePrevL","afterNextL","findIndex","initSortable","onSortableResize","isSortableTagsView","BreadcrumbIndex","TagsView","isTagsview","NavBarsIndex","_component_LayoutParentView","_component_Footer","_component_el_main","minHeight","headerHeight","padding","currentRouteMeta","transition","isFooter","_component_router_view","Component","setTransitionName","include","keepAliveNameList","refreshRouterViewKey","keepAliveNameNewList","animation","getKeepAliveNames","keepAliveNames","isDelayFooter","LayoutParentView","Footer","initHeaderHeight","initGetMeta","isFixedHeaderChange","layoutScrollbarRef","Aside","Header","Main","layoutDefaultsScrollbarRef","scrollTop","Defaults","onLayoutResize"],"mappings":"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","file":"js/chunk-58ef68b4.d7dffe7e.js","sourcesContent":["export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./tagsView.vue?vue&type=style&index=0&id=22d4d008&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=509cf392&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./user.vue?vue&type=style&index=0&id=38eab106&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./breadcrumb.vue?vue&type=style&index=0&id=aebf6a80&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./contextmenu.vue?vue&type=style&index=0&id=4b170e60&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=3a54a0ce&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=0c2b3f71&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./search.vue?vue&type=style&index=0&id=652c0395&scoped=true&lang=scss\"","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Defaults = _resolveComponent(\"Defaults\")!\n\n return ($setup.getThemeConfig.layout === 'defaults')\n ? (_openBlock(), _createBlock(_component_Defaults, { key: 0 }))\n : _createCommentVNode(\"\", true)\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, withCtx as _withCtx } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Aside = _resolveComponent(\"Aside\")!\n const _component_Header = _resolveComponent(\"Header\")!\n const _component_Main = _resolveComponent(\"Main\")!\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\")!\n const _component_el_container = _resolveComponent(\"el-container\")!\n const _component_el_backtop = _resolveComponent(\"el-backtop\")!\n\n return (_openBlock(), _createBlock(_component_el_container, { class: \"layout-container\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Aside),\n _createVNode(_component_el_container, {\n class: _normalizeClass([\"flex-center\", { 'layout-backtop': !$setup.isFixedHeader }])\n }, {\n default: _withCtx(() => [\n ($setup.isFixedHeader)\n ? (_openBlock(), _createBlock(_component_Header, { key: 0 }))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_el_scrollbar, {\n ref: \"layoutDefaultsScrollbarRef\",\n class: _normalizeClass({ 'layout-backtop': $setup.isFixedHeader })\n }, {\n default: _withCtx(() => [\n (!$setup.isFixedHeader)\n ? (_openBlock(), _createBlock(_component_Header, { key: 0 }))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Main)\n ]),\n _: 1\n }, 8, [\"class\"])\n ]),\n _: 1\n }, 8, [\"class\"]),\n _createVNode(_component_el_backtop, { target: \".layout-backtop .el-scrollbar__wrap\" })\n ]),\n _: 1\n }))\n}","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, withCtx as _withCtx, normalizeClass as _normalizeClass, vShow as _vShow, withDirectives as _withDirectives, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"h100\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Logo = _resolveComponent(\"Logo\")!\n const _component_Vertical = _resolveComponent(\"Vertical\")!\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\")!\n const _component_el_aside = _resolveComponent(\"el-aside\")!\n\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_el_aside, {\n class: _normalizeClass([\"layout-aside\", $setup.setCollapseStyle])\n }, {\n default: _withCtx(() => [\n ($setup.setShowLogo)\n ? (_openBlock(), _createBlock(_component_Logo, { key: 0 }))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_el_scrollbar, {\n class: \"flex-auto\",\n ref: \"layoutAsideScrollbarRef\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Vertical, { menuList: _ctx.menuList }, null, 8, [\"menuList\"])\n ]),\n _: 1\n }, 512)\n ]),\n _: 1\n }, 8, [\"class\"])\n ], 512)), [\n [_vShow, !$setup.isTagsViewCurrenFull]\n ])\n}","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5ebc5214\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"img\", {\n src: \"https://gitee.com/lyt-top/vue-next-admin-images/raw/master/logo/logo-mini.svg\",\n class: \"layout-logo-medium-img\"\n}, null, -1))\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"img\", {\n src: \"https://gitee.com/lyt-top/vue-next-admin-images/raw/master/logo/logo-mini.svg\",\n class: \"layout-logo-size-img\"\n}, null, -1))\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return ($setup.setShowLogo)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"layout-logo\",\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => ($setup.onThemeConfigChange && $setup.onThemeConfigChange(...args)))\n }, [\n _hoisted_1,\n _createElementVNode(\"span\", null, _toDisplayString($setup.getThemeConfig.globalTitle), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"layout-logo-size\",\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => ($setup.onThemeConfigChange && $setup.onThemeConfigChange(...args)))\n }, _hoisted_3))\n}","\nimport { computed, getCurrentInstance } from 'vue'\nimport { useStore } from '@/store/index.ts'\nexport default {\n name: 'layoutLogo',\n setup () {\n const { proxy } = getCurrentInstance() as any\n const store = useStore()\n // 获取布局配置信息\n const getThemeConfig = computed(() => {\n return store.state.themeConfig.themeConfig\n })\n // 设置 logo 的显示。classic 经典布局默认显示 logo\n const setShowLogo = computed(() => {\n const { isCollapse, layout } = store.state.themeConfig.themeConfig\n return !isCollapse || layout === 'classic' || document.body.clientWidth < 1000\n })\n // logo 点击实现菜单展开/收起\n const onThemeConfigChange = () => {\n if (store.state.themeConfig.themeConfig.layout === 'transverse') return false\n proxy.mittBus.emit('onMenuClick')\n store.state.themeConfig.themeConfig.isCollapse = !store.state.themeConfig.themeConfig.isCollapse\n }\n return {\n setShowLogo,\n getThemeConfig,\n onThemeConfigChange\n }\n }\n}\n","import { render } from \"./index.vue?vue&type=template&id=5ebc5214&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5ebc5214&scoped=true&lang=scss\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5ebc5214\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createSlots as _createSlots } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_SubItem = _resolveComponent(\"SubItem\")!\n const _component_el_sub_menu = _resolveComponent(\"el-sub-menu\")!\n const _component_el_menu_item = _resolveComponent(\"el-menu-item\")!\n const _component_el_menu = _resolveComponent(\"el-menu\")!\n\n return (_openBlock(), _createBlock(_component_el_menu, {\n router: \"\",\n \"default-active\": _ctx.defaultActive,\n \"background-color\": \"transparent\",\n collapse: _ctx.isCollapse,\n \"unique-opened\": _ctx.getThemeConfig.isUniqueOpened,\n \"collapse-transition\": false\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.menuLists, (val) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (val.children && val.children.length > 0)\n ? (_openBlock(), _createBlock(_component_el_sub_menu, {\n index: val.path,\n key: val.path\n }, {\n title: _withCtx(() => [\n _createElementVNode(\"i\", {\n class: _normalizeClass(val.meta.icon ? val.meta.icon : '')\n }, null, 2),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(val.meta.title)), 1)\n ]),\n default: _withCtx(() => [\n _createVNode(_component_SubItem, {\n chil: val.children\n }, null, 8, [\"chil\"])\n ]),\n _: 2\n }, 1032, [\"index\"]))\n : (_openBlock(), _createBlock(_component_el_menu_item, {\n index: val.path,\n key: val.path\n }, _createSlots({\n default: _withCtx(() => [\n _createElementVNode(\"i\", {\n class: _normalizeClass(val.meta.icon ? val.meta.icon : '')\n }, null, 2)\n ]),\n _: 2\n }, [\n (!val.meta.isLink || (val.meta.isLink && val.meta.isIframe))\n ? {\n name: \"title\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(val.meta.title)), 1)\n ])\n }\n : {\n name: \"title\",\n fn: _withCtx(() => [\n _createElementVNode(\"a\", {\n href: val.meta.isLink,\n target: \"_blank\",\n rel: \"opener\"\n }, _toDisplayString(_ctx.$t(val.meta.title)), 9, [\"href\"])\n ])\n }\n ]), 1032, [\"index\"]))\n ], 64))\n }), 256))\n ]),\n _: 1\n }, 8, [\"default-active\", \"collapse\", \"unique-opened\"]))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode } from \"vue\"\n\nconst _hoisted_1 = [\"href\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_sub_item = _resolveComponent(\"sub-item\", true)!\n const _component_el_sub_menu = _resolveComponent(\"el-sub-menu\")!\n const _component_el_menu_item = _resolveComponent(\"el-menu-item\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.chils, (val) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (val.children && val.children.length > 0)\n ? (_openBlock(), _createBlock(_component_el_sub_menu, {\n index: val.path,\n key: val.path\n }, {\n title: _withCtx(() => [\n _createElementVNode(\"i\", {\n class: _normalizeClass(val.meta.icon)\n }, null, 2),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(val.meta.title)), 1)\n ]),\n default: _withCtx(() => [\n _createVNode(_component_sub_item, {\n chil: val.children\n }, null, 8, [\"chil\"])\n ]),\n _: 2\n }, 1032, [\"index\"]))\n : (_openBlock(), _createBlock(_component_el_menu_item, {\n index: val.path,\n key: val.path\n }, {\n default: _withCtx(() => [\n (!val.meta.isLink || (val.meta.isLink && val.meta.isIframe))\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"i\", {\n class: _normalizeClass(val.meta.icon ? val.meta.icon : '')\n }, null, 2),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(val.meta.title)), 1)\n ], 64))\n : (_openBlock(), _createElementBlock(\"a\", {\n key: 1,\n href: val.meta.isLink,\n target: \"_blank\",\n rel: \"opener\"\n }, [\n _createElementVNode(\"i\", {\n class: _normalizeClass(val.meta.icon ? val.meta.icon : '')\n }, null, 2),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t(val.meta.title)), 1)\n ], 8, _hoisted_1))\n ]),\n _: 2\n }, 1032, [\"index\"]))\n ], 64))\n }), 256))\n ]))\n}","\nimport { computed, defineComponent } from 'vue'\nexport default defineComponent({\n name: 'navMenuSubItem',\n props: {\n chil: {\n type: Array,\n default: () => []\n }\n },\n setup (props) {\n // 获取父级菜单数据\n const chils = computed(() => {\n return props.chil\n })\n return {\n chils\n }\n }\n})\n","import { render } from \"./subItem.vue?vue&type=template&id=63d615ea&ts=true\"\nimport script from \"./subItem.vue?vue&type=script&lang=ts\"\nexport * from \"./subItem.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { toRefs, reactive, computed, defineComponent, getCurrentInstance, onMounted, watch } from 'vue'\nimport { useRoute, onBeforeRouteUpdate } from 'vue-router'\nimport { useStore } from '@/store/index.ts'\nimport SubItem from '@/layout/navMenu/subItem.vue'\nexport default defineComponent({\n name: 'navMenuVertical',\n components: { SubItem },\n props: {\n menuList: {\n type: Array,\n default: () => []\n }\n },\n setup (props) {\n const { proxy } = getCurrentInstance() as any\n const store = useStore()\n const route = useRoute()\n const state = reactive({\n // 修复:https://gitee.com/lyt-top/vue-next-admin/issues/I3YX6G\n defaultActive: route.meta.isDynamic ? route.meta.isDynamicPath : route.path,\n isCollapse: false\n })\n // 获取父级菜单数据\n const menuLists = computed(() => {\n return props.menuList\n })\n // 获取布局配置信息\n const getThemeConfig = computed(() => {\n return store.state.themeConfig.themeConfig\n })\n // 菜单高亮(详情时,父级高亮)\n const setParentHighlight = (currentRoute:any) => {\n const { path, meta } = currentRoute\n const pathSplit = meta.isDynamic ? meta.isDynamicPath.split('/') : path.split('/')\n if (pathSplit.length >= 4 && meta.isHide) return pathSplit.splice(0, 3).join('/')\n else return path\n }\n // 设置菜单的收起/展开\n watch(\n store.state.themeConfig.themeConfig,\n () => {\n document.body.clientWidth <= 1000 ? (state.isCollapse = false) : (state.isCollapse = getThemeConfig.value.isCollapse)\n },\n {\n immediate: true\n }\n )\n // 页面加载时\n onMounted(() => {\n state.defaultActive = setParentHighlight(route)\n })\n // 路由更新时\n onBeforeRouteUpdate((to) => {\n // 修复:https://gitee.com/lyt-top/vue-next-admin/issues/I3YX6G\n state.defaultActive = setParentHighlight(to)\n // proxy.mittBus.emit('onMenuClick')\n const clientWidth = document.body.clientWidth\n if (clientWidth < 1000) getThemeConfig.value.isCollapse = false\n })\n return {\n menuLists,\n getThemeConfig,\n ...toRefs(state)\n }\n }\n})\n","import { render } from \"./vertical.vue?vue&type=template&id=664d4ddf&ts=true\"\nimport script from \"./vertical.vue?vue&type=script&lang=ts\"\nexport * from \"./vertical.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { toRefs, reactive, computed, watch, getCurrentInstance, onBeforeMount } from 'vue'\nimport { useStore } from '@/store/index.ts'\nimport Logo from '@/layout/logo/index.vue'\nimport Vertical from '@/layout/navMenu/vertical.vue'\nexport default {\n name: 'layoutAside',\n components: { Logo, Vertical },\n setup () {\n const { proxy } = getCurrentInstance() as any\n const store = useStore()\n const state: any = reactive({\n menuList: [],\n clientWidth: ''\n })\n // 获取布局配置信息\n const getThemeConfig = computed(() => {\n return store.state.themeConfig.themeConfig\n })\n // 获取卡片全屏信息\n const isTagsViewCurrenFull = computed(() => {\n return store.state.tagsViewRoutes.isTagsViewCurrenFull\n })\n // 设置菜单展开/收起时的宽度\n const setCollapseStyle = computed(() => {\n const { layout, isCollapse, menuBar } = store.state.themeConfig.themeConfig\n const asideBrColor =\n\t\t\t\tmenuBar === '#FFFFFF' || menuBar === '#FFF' || menuBar === '#fff' || menuBar === '#ffffff' ? 'layout-el-aside-br-color' : ''\n // 判断是否是手机端\n if (state.clientWidth <= 1000) {\n if (isCollapse) {\n document.body.setAttribute('class', 'el-popup-parent--hidden')\n const asideEle = document.querySelector('.layout-container') as HTMLElement\n const modeDivs = document.createElement('div')\n modeDivs.setAttribute('class', 'layout-aside-mobile-mode')\n asideEle.appendChild(modeDivs)\n modeDivs.addEventListener('click', closeLayoutAsideMobileMode)\n return [asideBrColor, 'layout-aside-mobile', 'layout-aside-mobile-open']\n } else {\n // 关闭弹窗\n closeLayoutAsideMobileMode()\n return [asideBrColor, 'layout-aside-mobile', 'layout-aside-mobile-close']\n }\n } else {\n if (layout === 'columns') {\n // 分栏布局,菜单收起时宽度给 1px\n if (isCollapse) {\n return [asideBrColor, 'layout-aside-pc-1']\n } else {\n return [asideBrColor, 'layout-aside-pc-220']\n }\n } else {\n // 其它布局给 64px\n if (isCollapse) {\n return [asideBrColor, 'layout-aside-pc-64']\n } else {\n return [asideBrColor, 'layout-aside-pc-220']\n }\n }\n }\n })\n // 关闭移动端蒙版\n const closeLayoutAsideMobileMode = () => {\n const el = document.querySelector('.layout-aside-mobile-mode')\n // eslint-disable-next-line no-unused-expressions\n el && el.parentNode?.removeChild(el)\n store.state.themeConfig.themeConfig.isCollapse = false\n document.body.setAttribute('class', '')\n }\n // 设置显示/隐藏 logo\n const setShowLogo = computed(() => {\n const { layout, isShowLogo } = store.state.themeConfig.themeConfig\n return (isShowLogo && layout === 'defaults') || (isShowLogo && layout === 'columns')\n })\n // 设置/过滤路由(非静态路由/是否显示在菜单中)\n const setFilterRoutes = () => {\n if (store.state.themeConfig.themeConfig.layout === 'columns') return false\n state.menuList = filterRoutesFun(store.state.routesList.routesList)\n }\n // 路由过滤递归函数\n const filterRoutesFun = (arr: Array) => {\n return arr\n .filter((item: any) => !item.meta.isHide)\n .map((item: any) => {\n item = Object.assign({}, item)\n if (item.children) item.children = filterRoutesFun(item.children)\n return item\n })\n }\n // 设置菜单导航是否固定(移动端)\n const initMenuFixed = (clientWidth: number) => {\n state.clientWidth = clientWidth\n }\n // 监听 themeConfig 配置文件的变化,更新菜单 el-scrollbar 的高度\n watch(store.state.themeConfig.themeConfig, (val) => {\n if (val.isShowLogoChange !== val.isShowLogo) {\n if (!proxy.$refs.layoutAsideScrollbarRef) return false\n proxy.$refs.layoutAsideScrollbarRef.update()\n }\n })\n // 监听vuex值的变化,动态赋值给菜单中\n watch(store.state, (val) => {\n const { layout, isClassicSplitMenu } = val.themeConfig.themeConfig\n if (layout === 'classic' && isClassicSplitMenu) return false\n setFilterRoutes()\n })\n // 页面加载前\n onBeforeMount(() => {\n initMenuFixed(document.body.clientWidth)\n setFilterRoutes()\n // 此界面不需要取消监听(proxy.mittBus.off('setSendColumnsChildren))\n // 因为切换布局时有的监听需要使用,取消了监听,某些操作将不生效\n // proxy.mittBus.on('setSendColumnsChildren', (res: any) => {\n // state.menuList = res.children\n // })\n // proxy.mittBus.on('setSendClassicChildren', (res: any) => {\n // const { layout, isClassicSplitMenu } = store.state.themeConfig.themeConfig\n // if (layout === 'classic' && isClassicSplitMenu) {\n // state.menuList = []\n // state.menuList = res.children\n // }\n // })\n // proxy.mittBus.on('getBreadcrumbIndexSetFilterRoutes', () => {\n // setFilterRoutes()\n // })\n // proxy.mittBus.on('layoutMobileResize', (res: any) => {\n // initMenuFixed(res.clientWidth)\n // closeLayoutAsideMobileMode()\n // })\n })\n return {\n setCollapseStyle,\n setShowLogo,\n getThemeConfig,\n isTagsViewCurrenFull,\n ...toRefs(state)\n }\n }\n}\n","import { render } from \"./aside.vue?vue&type=template&id=1eed8ef2&ts=true\"\nimport script from \"./aside.vue?vue&type=script&lang=ts\"\nexport * from \"./aside.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, vShow as _vShow, withCtx as _withCtx, withDirectives as _withDirectives, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NavBarsIndex = _resolveComponent(\"NavBarsIndex\")!\n const _component_el_header = _resolveComponent(\"el-header\")!\n\n return _withDirectives((_openBlock(), _createBlock(_component_el_header, {\n class: \"layout-header\",\n height: $setup.setHeaderHeight\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NavBarsIndex)\n ]),\n _: 1\n }, 8, [\"height\"])), [\n [_vShow, !$setup.isTagsViewCurrenFull]\n ])\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3a54a0ce\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"layout-navbars-container\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BreadcrumbIndex = _resolveComponent(\"BreadcrumbIndex\")!\n const _component_TagsView = _resolveComponent(\"TagsView\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_BreadcrumbIndex),\n ($setup.setShowTagsView)\n ? (_openBlock(), _createBlock(_component_TagsView, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-509cf392\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"layout-navbars-breadcrumb-index\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Logo = _resolveComponent(\"Logo\")!\n const _component_Breadcrumb = _resolveComponent(\"Breadcrumb\")!\n const _component_Horizontal = _resolveComponent(\"Horizontal\")!\n const _component_User = _resolveComponent(\"User\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n ($setup.setIsShowLogo)\n ? (_openBlock(), _createBlock(_component_Logo, { key: 0 }))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Breadcrumb),\n ($setup.isLayoutTransverse)\n ? (_openBlock(), _createBlock(_component_Horizontal, {\n key: 1,\n menuList: _ctx.menuList\n }, null, 8, [\"menuList\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_User)\n ]))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, TransitionGroup as _TransitionGroup, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-aebf6a80\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"layout-navbars-breadcrumb-span\"\n}\nconst _hoisted_2 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_i_expand = _resolveComponent(\"i-expand\")!\n const _component_el_icon = _resolveComponent(\"el-icon\")!\n const _component_i_fold = _resolveComponent(\"i-fold\")!\n const _component_el_breadcrumb_item = _resolveComponent(\"el-breadcrumb-item\")!\n const _component_el_breadcrumb = _resolveComponent(\"el-breadcrumb\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"layout-navbars-breadcrumb\",\n style: _normalizeStyle({ display: $setup.isShowBreadcrumb })\n }, [\n ($setup.getThemeConfig.isCollapse)\n ? (_openBlock(), _createBlock(_component_el_icon, {\n key: 0,\n class: \"layout-navbars-breadcrumb-icon\",\n onClick: $setup.onThemeConfigChange\n }, {\n default: _withCtx(() => [\n _createVNode(_component_i_expand)\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n : _createCommentVNode(\"\", true),\n (!$setup.getThemeConfig.isCollapse)\n ? (_openBlock(), _createBlock(_component_el_icon, {\n key: 1,\n class: \"layout-navbars-breadcrumb-icon\",\n onClick: $setup.onThemeConfigChange\n }, {\n default: _withCtx(() => [\n _createVNode(_component_i_fold)\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_el_breadcrumb, { class: \"layout-navbars-breadcrumb-hide\" }, {\n default: _withCtx(() => [\n _createVNode(_TransitionGroup, {\n name: \"breadcrumb\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.breadcrumbList, (v, k) => {\n return (_openBlock(), _createBlock(_component_el_breadcrumb_item, {\n key: v.meta.title\n }, {\n default: _withCtx(() => [\n (k === _ctx.breadcrumbList.length - 1)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_1, [\n ($setup.getThemeConfig.isBreadcrumbIcon)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass([v.meta.icon, \"layout-navbars-breadcrumb-iconfont\"])\n }, null, 2))\n : _createCommentVNode(\"\", true),\n _createTextVNode(_toDisplayString(_ctx.$t(v.meta.title)), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"a\", {\n key: 1,\n onClick: _withModifiers(($event: any) => ($setup.onBreadcrumbClick(v)), [\"prevent\"])\n }, [\n ($setup.getThemeConfig.isBreadcrumbIcon)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass([v.meta.icon, \"layout-navbars-breadcrumb-iconfont\"])\n }, null, 2))\n : _createCommentVNode(\"\", true),\n _createTextVNode(_toDisplayString(_ctx.$t(v.meta.title)), 1)\n ], 8, _hoisted_2))\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ], 4))\n}","\nimport { toRefs, reactive, computed, getCurrentInstance, onMounted } from 'vue'\nimport { onBeforeRouteUpdate, useRoute, useRouter } from 'vue-router'\nimport { useStore } from '@/store/index.ts'\n// import { Expand, Fold } from '@element-plus/icons'\nexport default {\n name: 'layoutBreadcrumb',\n // components: { Expand, Fold },\n setup () {\n const { proxy } = getCurrentInstance() as any\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n const state: any = reactive({\n breadcrumbList: [],\n routeSplit: [],\n routeSplitFirst: '',\n routeSplitIndex: 1\n })\n // 获取布局配置信息\n const getThemeConfig = computed(() => {\n return store.state.themeConfig.themeConfig\n })\n // 动态设置经典、横向布局不显示\n const isShowBreadcrumb = computed(() => {\n initRouteSplit(route.path)\n const { layout, isBreadcrumb } = store.state.themeConfig.themeConfig\n if (layout === 'classic' || layout === 'transverse') {\n return 'none'\n } else {\n return isBreadcrumb ? '' : 'none'\n }\n })\n // 面包屑点击时\n const onBreadcrumbClick = (v: any) => {\n const { redirect, path } = v\n if (redirect) router.push(redirect)\n else router.push(path)\n }\n // 展开/收起左侧菜单点击\n const onThemeConfigChange = () => {\n // proxy.mittBus.emit('onMenuClick')\n store.state.themeConfig.themeConfig.isCollapse = !store.state.themeConfig.themeConfig.isCollapse\n }\n // 处理面包屑数据\n const getBreadcrumbList = (arr: Array) => {\n arr.map((item: any) => {\n state.routeSplit.map((v: any, k: number, arrs: any) => {\n if (state.routeSplitFirst === item.path) {\n state.routeSplitFirst += `/${arrs[state.routeSplitIndex]}`\n state.breadcrumbList.push(item)\n state.routeSplitIndex++\n if (item.children) getBreadcrumbList(item.children)\n }\n })\n })\n }\n // 当前路由字符串切割成数组,并删除第一项空内容\n const initRouteSplit = (path: string) => {\n if (!store.state.themeConfig.themeConfig.isBreadcrumb) return false\n state.breadcrumbList = [store.state.routesList.routesList[0]]\n state.routeSplit = path.split('/')\n state.routeSplit.shift()\n state.routeSplitFirst = `/${state.routeSplit[0]}`\n state.routeSplitIndex = 1\n getBreadcrumbList(store.state.routesList.routesList)\n }\n // 页面加载时\n onMounted(() => {\n initRouteSplit(route.path)\n })\n // 路由更新时\n onBeforeRouteUpdate((to) => {\n initRouteSplit(to.path)\n })\n return {\n onThemeConfigChange,\n isShowBreadcrumb,\n getThemeConfig,\n onBreadcrumbClick,\n ...toRefs(state)\n }\n }\n}\n","import { render } from \"./breadcrumb.vue?vue&type=template&id=aebf6a80&scoped=true&ts=true\"\nimport script from \"./breadcrumb.vue?vue&type=script&lang=ts\"\nexport * from \"./breadcrumb.vue?vue&type=script&lang=ts\"\n\nimport \"./breadcrumb.vue?vue&type=style&index=0&id=aebf6a80&scoped=true&lang=scss\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-aebf6a80\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-38eab106\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"layout-navbars-breadcrumb-user-link\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"el-icon-arrow-down el-icon--right\" }, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\")!\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\")!\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\")!\n const _component_Search = _resolveComponent(\"Search\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"layout-navbars-breadcrumb-user\",\n style: _normalizeStyle({ flex: $setup.layoutUserFlexNum })\n }, [\n _createVNode(_component_el_dropdown, {\n \"show-timeout\": 70,\n \"hide-timeout\": 50,\n onCommand: $setup.onHandleCommandClick\n }, {\n dropdown: _withCtx(() => [\n _createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [\n _createVNode(_component_el_dropdown_item, { command: \"logOut\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('message.user.dropdown5')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_1, [\n _createTextVNode(_toDisplayString($setup.getUserInfos.userName === '' ? 'test' : $setup.getUserInfos.userName) + \" \", 1),\n _hoisted_2\n ])\n ]),\n _: 1\n }, 8, [\"onCommand\"]),\n _createVNode(_component_Search, { ref: \"searchRef\" }, null, 512)\n ], 4))\n}","import { nextTick } from 'vue'\nimport router from '@/router/index'\nimport { store } from '@/store/index.ts'\n// import { i18n } from '/@/i18n/index'\n\n/**\n * 设置浏览器标题国际化\n */\nexport function useTitle () {\n return () => {\n nextTick(() => {\n let webTitle = ''\n const globalTitle: string = store.state.themeConfig.themeConfig.globalTitle\n router.currentRoute.value.path === '/login'\n ? (webTitle = router.currentRoute.value.meta.title as any)\n : (webTitle = 'aaa')\n // : (webTitle = i18n.global.t(router.currentRoute.value.meta.title as any))\n document.title = `${webTitle} - ${globalTitle}` || globalTitle\n })\n }\n}\n","import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-652c0395\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"layout-search-dialog\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_el_autocomplete = _resolveComponent(\"el-autocomplete\")!\n const _component_el_dialog = _resolveComponent(\"el-dialog\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_el_dialog, {\n modelValue: _ctx.isShowSearch,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.isShowSearch) = $event)),\n width: \"300px\",\n \"destroy-on-close\": \"\",\n modal: false,\n fullscreen: \"\",\n \"show-close\": false\n }, {\n default: _withCtx(() => [\n _createVNode(_component_el_autocomplete, {\n modelValue: _ctx.menuQuery,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.menuQuery) = $event)),\n \"fetch-suggestions\": _ctx.menuSearch,\n placeholder: _ctx.$t('message.user.searchPlaceholder'),\n \"prefix-icon\": \"el-icon-search\",\n ref: \"layoutMenuAutocompleteRef\",\n onSelect: _ctx.onHandleSelect,\n onBlur: _ctx.onSearchBlur\n }, {\n default: _withCtx(({ item }) => [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"i\", {\n class: _normalizeClass([item.meta.icon, \"mr10\"])\n }, null, 2),\n _createTextVNode(_toDisplayString(_ctx.$t(item.meta.title)), 1)\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"fetch-suggestions\", \"placeholder\", \"onSelect\", \"onBlur\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]))\n}","\nimport { reactive, toRefs, defineComponent, ref, nextTick } from 'vue'\nimport { useRouter } from 'vue-router'\n// import { useI18n } from 'vue-i18n'\nimport { useStore } from '@/store/index.ts'\nexport default defineComponent({\n name: 'layoutBreadcrumbSearch',\n setup () {\n const layoutMenuAutocompleteRef = ref()\n // const { t } = useI18n()\n const store = useStore()\n const router = useRouter()\n const state: any = reactive({\n isShowSearch: false,\n menuQuery: '',\n tagsViewList: []\n })\n // 搜索弹窗打开\n const openSearch = () => {\n state.menuQuery = ''\n state.isShowSearch = true\n initTageView()\n nextTick(() => {\n layoutMenuAutocompleteRef.value.focus()\n })\n }\n // 搜索弹窗关闭\n const closeSearch = () => {\n state.isShowSearch = false\n }\n // 菜单搜索数据过滤\n const menuSearch = (queryString: any, cb: any) => {\n const results = queryString ? state.tagsViewList.filter(createFilter(queryString)) : state.tagsViewList\n cb(results)\n }\n // 菜单搜索过滤\n const createFilter = (queryString: any) => {\n return (restaurant: any) => {\n return (\n restaurant.path.toLowerCase().indexOf(queryString.toLowerCase()) > -1 ||\n\t\t\t\t\trestaurant.meta.title.toLowerCase().indexOf(queryString.toLowerCase()) > -1 // ||\n\t\t\t\t\t// t(restaurant.meta.title).indexOf(queryString.toLowerCase()) > -1\n )\n }\n }\n // 初始化菜单数据\n const initTageView = () => {\n if (state.tagsViewList.length > 0) return false\n store.state.tagsViewRoutes.tagsViewRoutes.map((v: any) => {\n if (!v.meta.isHide) state.tagsViewList.push({ ...v })\n })\n }\n // 当前菜单选中时\n const onHandleSelect = (item: any) => {\n const { path, redirect } = item\n if (item.meta.isLink && !item.meta.isIframe) window.open(item.meta.isLink)\n else if (redirect) router.push(redirect)\n else router.push(path)\n closeSearch()\n }\n // input 失去焦点时\n const onSearchBlur = () => {\n closeSearch()\n }\n return {\n layoutMenuAutocompleteRef,\n openSearch,\n closeSearch,\n menuSearch,\n onHandleSelect,\n onSearchBlur,\n ...toRefs(state)\n }\n }\n})\n","import { render } from \"./search.vue?vue&type=template&id=652c0395&scoped=true&ts=true\"\nimport script from \"./search.vue?vue&type=script&lang=ts\"\nexport * from \"./search.vue?vue&type=script&lang=ts\"\n\nimport \"./search.vue?vue&type=style&index=0&id=652c0395&scoped=true&lang=scss\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-652c0395\"]])\n\nexport default __exports__","\nimport { ref, getCurrentInstance, computed, reactive, toRefs, onMounted } from 'vue'\nimport { useRouter } from 'vue-router'\nimport { ElMessageBox, ElMessage } from 'element-plus'\n// import screenfull from 'screenfull'\nimport { useI18n } from 'vue-i18n'\nimport { resetRoute } from '@/router/index'\nimport { useStore } from '@/store/index.ts'\nimport { useTitle } from '@/utils/setWebTitle'\nimport { Session, Local } from '@/utils/storage'\nimport UserNews from '@/layout/navBars/breadcrumb/userNews.vue'\nimport Search from '@/layout/navBars/breadcrumb/search.vue'\nexport default {\n name: 'layoutBreadcrumbUser',\n components: { Search },\n setup () {\n const { t } = useI18n()\n const { proxy } = getCurrentInstance() as any\n const router = useRouter()\n const store = useStore()\n const title = useTitle()\n const searchRef = ref()\n const state = reactive({\n isScreenfull: false,\n isShowUserNewsPopover: false,\n disabledI18n: 'zh-cn',\n disabledSize: ''\n })\n // 获取用户信息 vuex\n const getUserInfos = computed(() => {\n return store.state.userInfos.userInfos\n })\n // 获取布局配置信息\n const getThemeConfig = computed(() => {\n return store.state.themeConfig.themeConfig\n })\n // 设置分割样式\n const layoutUserFlexNum = computed(() => {\n const { layout, isClassicSplitMenu } = getThemeConfig.value\n let num\n if (layout === 'defaults' || (layout === 'classic' && !isClassicSplitMenu) || layout === 'columns') num = 1\n else num = null\n return num\n })\n // 全屏点击时\n const onScreenfullClick = () => {\n // if (!screenfull.isEnabled) {\n // ElMessage.warning('暂不不支持全屏')\n // return false\n // }\n // screenfull.toggle()\n // screenfull.on('change', () => {\n // if (screenfull.isFullscreen) state.isScreenfull = true\n // else state.isScreenfull = false\n // })\n }\n // 布局配置 icon 点击时\n const onLayoutSetingClick = () => {\n proxy.mittBus.emit('openSetingsDrawer')\n }\n // 下拉菜单点击时\n const onHandleCommandClick = (path: string) => {\n if (path === 'logOut') {\n ElMessageBox({\n closeOnClickModal: false,\n closeOnPressEscape: false,\n title: t('message.user.logOutTitle'),\n message: t('message.user.logOutMessage'),\n showCancelButton: true,\n confirmButtonText: t('message.user.logOutConfirm'),\n cancelButtonText: t('message.user.logOutCancel'),\n beforeClose: (action, instance, done) => {\n if (action === 'confirm') {\n instance.confirmButtonLoading = true\n instance.confirmButtonText = t('message.user.logOutExit')\n setTimeout(() => {\n done()\n setTimeout(() => {\n instance.confirmButtonLoading = false\n }, 300)\n }, 700)\n } else {\n done()\n }\n }\n })\n .then(() => {\n Session.clear() // 清除缓存/token等\n resetRoute() // 删除/重置路由\n router.push('/login')\n setTimeout(() => {\n ElMessage.success(t('message.user.logOutSuccess'))\n }, 300)\n })\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n .catch(() => {})\n } else if (path === 'wareHouse') {\n window.open('https://gitee.com/lyt-top/vue-next-admin')\n } else {\n router.push(path)\n }\n }\n // 菜单搜索点击\n const onSearchClick = () => {\n searchRef.value.openSearch()\n }\n // 组件大小改变\n const onComponentSizeChange = (size: string) => {\n Local.remove('themeConfig')\n getThemeConfig.value.globalComponentSize = size\n Local.set('themeConfig', getThemeConfig.value)\n proxy.$ELEMENT.size = size\n initComponentSize()\n window.location.reload()\n }\n // 语言切换\n const onLanguageChange = (lang: string) => {\n Local.remove('themeConfig')\n getThemeConfig.value.globalI18n = lang\n Local.set('themeConfig', getThemeConfig.value)\n proxy.$i18n.locale = lang\n initI18n()\n title()\n }\n // 设置 element plus 组件的国际化\n const setI18nConfig = (locale: string) => {\n proxy.mittBus.emit('getI18nConfig', proxy.$i18n.messages[locale])\n }\n // 初始化言语国际化\n const initI18n = () => {\n switch (Local.get('themeConfig').globalI18n) {\n case 'zh-cn':\n state.disabledI18n = 'zh-cn'\n setI18nConfig('zh-cn')\n break\n case 'en':\n state.disabledI18n = 'en'\n setI18nConfig('en')\n break\n case 'zh-tw':\n state.disabledI18n = 'zh-tw'\n setI18nConfig('zh-tw')\n break\n }\n }\n // 初始化全局组件大小\n const initComponentSize = () => {\n switch (Local.get('themeConfig').globalComponentSize) {\n case '':\n state.disabledSize = ''\n break\n case 'medium':\n state.disabledSize = 'medium'\n break\n case 'small':\n state.disabledSize = 'small'\n break\n case 'mini':\n state.disabledSize = 'mini'\n break\n }\n }\n // 页面加载时\n onMounted(() => {\n if (Local.get('themeConfig')) {\n initI18n()\n initComponentSize()\n }\n })\n return {\n getUserInfos,\n onLayoutSetingClick,\n onHandleCommandClick,\n onScreenfullClick,\n onSearchClick,\n onComponentSizeChange,\n onLanguageChange,\n searchRef,\n layoutUserFlexNum,\n ...toRefs(state)\n }\n }\n}\n","import { render } from \"./user.vue?vue&type=template&id=38eab106&scoped=true&ts=true\"\nimport script from \"./user.vue?vue&type=script&lang=ts\"\nexport * from \"./user.vue?vue&type=script&lang=ts\"\n\nimport \"./user.vue?vue&type=style&index=0&id=38eab106&scoped=true&lang=scss\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-38eab106\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createSlots as _createSlots, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-04c940ce\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"el-menu-horizontal-warp\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_SubItem = _resolveComponent(\"SubItem\")!\n const _component_el_sub_menu = _resolveComponent(\"el-sub-menu\")!\n const _component_el_menu_item = _resolveComponent(\"el-menu-item\")!\n const _component_el_menu = _resolveComponent(\"el-menu\")!\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_el_scrollbar, {\n onWheel: _withModifiers(_ctx.onElMenuHorizontalScroll, [\"prevent\"]),\n ref: \"elMenuHorizontalScrollRef\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_el_menu, {\n router: \"\",\n \"default-active\": _ctx.defaultActive,\n \"background-color\": \"transparent\",\n mode: \"horizontal\"\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.menuLists, (val) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (val.children && val.children.length > 0)\n ? (_openBlock(), _createBlock(_component_el_sub_menu, {\n index: val.path,\n key: val.path\n }, {\n title: _withCtx(() => [\n _createElementVNode(\"i\", {\n class: _normalizeClass(val.meta.icon ? val.meta.icon : '')\n }, null, 2),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(val.meta.title)), 1)\n ]),\n default: _withCtx(() => [\n _createVNode(_component_SubItem, {\n chil: val.children\n }, null, 8, [\"chil\"])\n ]),\n _: 2\n }, 1032, [\"index\"]))\n : (_openBlock(), _createBlock(_component_el_menu_item, {\n index: val.path,\n key: val.path\n }, _createSlots({ _: 2 }, [\n (!val.meta.isLink || (val.meta.isLink && val.meta.isIframe))\n ? {\n name: \"title\",\n fn: _withCtx(() => [\n _createElementVNode(\"i\", {\n class: _normalizeClass(val.meta.icon ? val.meta.icon : '')\n }, null, 2),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t(val.meta.title)), 1)\n ])\n }\n : {\n name: \"title\",\n fn: _withCtx(() => [\n _createElementVNode(\"a\", {\n href: val.meta.isLink,\n target: \"_blank\",\n rel: \"opener\"\n }, [\n _createElementVNode(\"i\", {\n class: _normalizeClass(val.meta.icon ? val.meta.icon : '')\n }, null, 2),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t(val.meta.title)), 1)\n ], 8, [\"href\"])\n ])\n }\n ]), 1032, [\"index\"]))\n ], 64))\n }), 256))\n ]),\n _: 1\n }, 8, [\"default-active\"])\n ]),\n _: 1\n }, 8, [\"onWheel\"])\n ]))\n}","\nimport { toRefs, reactive, computed, defineComponent, getCurrentInstance, onMounted, nextTick } from 'vue'\nimport { useRoute, onBeforeRouteUpdate, RouteLocationNormalized } from 'vue-router'\nimport { useStore } from '@/store/index.ts'\nimport SubItem from '@/layout/navMenu/subItem.vue'\nexport default defineComponent({\n name: 'navMenuHorizontal',\n components: { SubItem },\n props: {\n menuList: {\n type: Array,\n default: () => []\n }\n },\n setup (props) {\n const { proxy } = getCurrentInstance() as any\n const route = useRoute()\n const store = useStore()\n const state: any = reactive({\n defaultActive: null\n })\n // 获取父级菜单数据\n const menuLists = computed(() => {\n return props.menuList\n })\n // 设置横向滚动条可以鼠标滚轮滚动\n const onElMenuHorizontalScroll = (e: any) => {\n const eventDelta = e.wheelDelta || -e.deltaY * 40\n proxy.$refs.elMenuHorizontalScrollRef.$refs.wrap.scrollLeft = proxy.$refs.elMenuHorizontalScrollRef.$refs.wrap.scrollLeft + eventDelta / 4\n }\n // 初始化数据,页面刷新时,滚动条滚动到对应位置\n const initElMenuOffsetLeft = () => {\n nextTick(() => {\n const els: any = document.querySelector('.el-menu.el-menu--horizontal li.is-active')\n if (!els) return false\n proxy.$refs.elMenuHorizontalScrollRef.$refs.wrap.scrollLeft = els.offsetLeft\n })\n }\n // 路由过滤递归函数\n const filterRoutesFun = (arr: Array) => {\n return arr\n .filter((item: any) => !item.meta.isHide)\n .map((item: any) => {\n item = Object.assign({}, item)\n if (item.children) item.children = filterRoutesFun(item.children)\n return item\n })\n }\n // 传送当前子级数据到菜单中\n const setSendClassicChildren = (path: string) => {\n const currentPathSplit = path.split('/')\n const currentData: any = {}\n filterRoutesFun(store.state.routesList.routesList).map((v, k) => {\n if (v.path === `/${currentPathSplit[1]}`) {\n v.k = k\n currentData.item = [{ ...v }]\n currentData.children = [{ ...v }]\n if (v.children) currentData.children = v.children\n }\n })\n return currentData\n }\n // 设置页面当前路由高亮\n const setCurrentRouterHighlight = (currentRoute: any) => {\n const { path, meta } = currentRoute\n if (store.state.themeConfig.themeConfig.layout === 'classic') {\n state.defaultActive = `/${path.split('/')[1]}`\n } else {\n const pathSplit = meta.isDynamic ? meta.isDynamicPath.split('/') : path.split('/')\n if (pathSplit.length >= 4 && meta.isHide) state.defaultActive = pathSplit.splice(0, 3).join('/')\n else state.defaultActive = path\n }\n }\n // 页面加载时\n onMounted(() => {\n initElMenuOffsetLeft()\n setCurrentRouterHighlight(route)\n })\n // 路由更新时\n onBeforeRouteUpdate((to) => {\n // 修复:https://gitee.com/lyt-top/vue-next-admin/issues/I3YX6G\n setCurrentRouterHighlight(to)\n proxy.mittBus.emit('onMenuClick')\n // 修复经典布局开启切割菜单时,点击tagsView后左侧导航菜单数据不变的问题\n const { layout, isClassicSplitMenu } = store.state.themeConfig.themeConfig\n if (layout === 'classic' && isClassicSplitMenu) {\n proxy.mittBus.emit('setSendClassicChildren', setSendClassicChildren(to.path))\n }\n })\n return {\n menuLists,\n onElMenuHorizontalScroll,\n ...toRefs(state)\n }\n }\n})\n","import { render } from \"./horizontal.vue?vue&type=template&id=04c940ce&scoped=true&ts=true\"\nimport script from \"./horizontal.vue?vue&type=script&lang=ts\"\nexport * from \"./horizontal.vue?vue&type=script&lang=ts\"\n\nimport \"./horizontal.vue?vue&type=style&index=0&id=04c940ce&scoped=true&lang=scss\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-04c940ce\"]])\n\nexport default __exports__","\nimport { computed, reactive, toRefs, onMounted, onUnmounted, getCurrentInstance } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useStore } from '@/store/index.ts'\nimport Breadcrumb from '@/layout/navBars/breadcrumb/breadcrumb.vue'\nimport User from '@/layout/navBars/breadcrumb/user.vue'\nimport Logo from '@/layout/logo/index.vue'\nimport Horizontal from '@/layout/navMenu/horizontal.vue'\nexport default {\n name: 'layoutBreadcrumbIndex',\n components: { Breadcrumb, User, Logo, Horizontal },\n setup () {\n const { proxy } = getCurrentInstance() as any\n const store = useStore()\n const route = useRoute()\n const state: any = reactive({\n menuList: []\n })\n // 获取布局配置信息\n const getThemeConfig = computed(() => {\n return store.state.themeConfig.themeConfig\n })\n // 设置 logo 显示/隐藏\n const setIsShowLogo = computed(() => {\n const { isShowLogo, layout } = store.state.themeConfig.themeConfig\n return (isShowLogo && layout === 'classic') || (isShowLogo && layout === 'transverse')\n })\n // 设置是否显示横向导航菜单\n const isLayoutTransverse = computed(() => {\n const { layout, isClassicSplitMenu } = store.state.themeConfig.themeConfig\n return layout === 'transverse' || (isClassicSplitMenu && layout === 'classic')\n })\n // 设置/过滤路由(非静态路由/是否显示在菜单中)\n const setFilterRoutes = () => {\n const { layout, isClassicSplitMenu } = store.state.themeConfig.themeConfig\n if (layout === 'classic' && isClassicSplitMenu) {\n state.menuList = delClassicChildren(filterRoutesFun(store.state.routesList.routesList))\n const resData = setSendClassicChildren(route.path)\n proxy.mittBus.emit('setSendClassicChildren', resData)\n } else {\n state.menuList = filterRoutesFun(store.state.routesList.routesList)\n }\n }\n // 设置了分割菜单时,删除底下 children\n const delClassicChildren = (arr: Array) => {\n arr.map((v: any) => {\n if (v.children) delete v.children\n })\n return arr\n }\n // 路由过滤递归函数\n const filterRoutesFun = (arr: Array) => {\n return arr\n .filter((item: any) => !item.meta.isHide)\n .map((item: any) => {\n item = Object.assign({}, item)\n if (item.children) item.children = filterRoutesFun(item.children)\n return item\n })\n }\n // 传送当前子级数据到菜单中\n const setSendClassicChildren = (path: string) => {\n const currentPathSplit = path.split('/')\n const currentData: any = {}\n filterRoutesFun(store.state.routesList.routesList).map((v, k) => {\n if (v.path === `/${currentPathSplit[1]}`) {\n v.k = k\n currentData.item = [{ ...v }]\n currentData.children = [{ ...v }]\n if (v.children) currentData.children = v.children\n }\n })\n return currentData\n }\n // 页面加载时\n onMounted(() => {\n setFilterRoutes()\n // proxy.mittBus.on('getBreadcrumbIndexSetFilterRoutes', () => {\n // setFilterRoutes()\n // })\n })\n // 页面卸载时\n onUnmounted(() => {\n // proxy.mittBus.off('getBreadcrumbIndexSetFilterRoutes')\n })\n return {\n getThemeConfig,\n setIsShowLogo,\n isLayoutTransverse,\n ...toRefs(state)\n }\n }\n}\n","import { render } from \"./index.vue?vue&type=template&id=509cf392&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=509cf392&scoped=true&lang=scss\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-509cf392\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, withModifiers as _withModifiers, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-22d4d008\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"data-name\", \"onContextmenu\", \"onClick\"]\nconst _hoisted_2 = {\n key: 0,\n class: \"iconfont icon-webicon318 layout-navbars-tagsview-ul-li-iconfont font14\"\n}\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\")!\n const _component_Contextmenu = _resolveComponent(\"Contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"layout-navbars-tagsview\", { 'layout-navbars-tagsview-shadow': $setup.getThemeConfig.layout === 'classic' }])\n }, [\n _createVNode(_component_el_scrollbar, {\n ref: \"scrollbarRef\",\n onWheel: _withModifiers($setup.onHandleScroll, [\"prevent\"])\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"ul\", {\n class: _normalizeClass([\"layout-navbars-tagsview-ul\", $setup.setTagsStyle]),\n ref: \"tagsUlRef\"\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tagsViewList, (v, k) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: k,\n class: _normalizeClass([\"layout-navbars-tagsview-ul-li\", { 'is-active': $setup.isActive(v) }]),\n \"data-name\": v.name,\n onContextmenu: _withModifiers(($event: any) => ($setup.onContextmenu(v, $event)), [\"prevent\"]),\n onClick: ($event: any) => ($setup.onTagsClick(v, k)),\n ref: \n\t\t\t\t\t\t(el) => {\n\t\t\t\t\t\t\tif (el) $setup.tagsRefs[k] = el;\n\t\t\t\t\t\t}\n\t\t\t\t\t\n }, [\n ($setup.isActive(v))\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_2))\n : _createCommentVNode(\"\", true),\n (!$setup.isActive(v) && $setup.getThemeConfig.isTagsviewIcon)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 1,\n class: _normalizeClass([\"layout-navbars-tagsview-ul-li-iconfont\", v.meta.icon])\n }, null, 2))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(v.meta.title)), 1),\n ($setup.isActive(v))\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 2 }, [\n _createElementVNode(\"i\", {\n class: \"el-icon-refresh-right ml5\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => ($setup.refreshCurrentTagsView(_ctx.$route.fullPath)), [\"stop\"]))\n }),\n (!v.meta.isAffix)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"el-icon-close layout-navbars-tagsview-ul-li-icon layout-icon-active\",\n onClick: _withModifiers(($event: any) => ($setup.closeCurrentTagsView($setup.getThemeConfig.isShareTagsView ? v.path : v.url)), [\"stop\"])\n }, null, 8, _hoisted_3))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true),\n (!v.meta.isAffix)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 3,\n class: \"el-icon-close layout-navbars-tagsview-ul-li-icon layout-icon-three\",\n onClick: _withModifiers(($event: any) => ($setup.closeCurrentTagsView($setup.getThemeConfig.isShareTagsView ? v.path : v.url)), [\"stop\"])\n }, null, 8, _hoisted_4))\n : _createCommentVNode(\"\", true)\n ], 42, _hoisted_1))\n }), 128))\n ], 2)\n ]),\n _: 1\n }, 8, [\"onWheel\"]),\n _createVNode(_component_Contextmenu, {\n dropdown: _ctx.dropdown,\n ref: \"contextmenuRef\",\n onCurrentContextmenuClick: $setup.onCurrentContextmenuClick\n }, null, 8, [\"dropdown\", \"onCurrentContextmenuClick\"])\n ], 2))\n}","/**\n * 判断两数组是否相同\n * @param news 新数据\n * @param old 源数据\n * @returns 两数组相同返回 `true`,反之则反\n */\nexport function judementSameArr (news: Array, old: Array): boolean {\n let count = 0\n const leng = old.length\n for (const i in old) {\n for (const j in news) {\n if (old[i] === news[j]) count++\n }\n }\n return count === leng\n}\n\n/**\n * 判断两个对象是否相同\n * @param a 要比较的对象一\n * @param b 要比较的对象二\n * @returns 相同返回 true,反之则反\n */\nexport function isObjectValueEqual (a: { [key: string]: any }, b: { [key: string]: any }) {\n if (!a || !b) return false\n const aProps = Object.getOwnPropertyNames(a)\n const bProps = Object.getOwnPropertyNames(b)\n if (aProps.length !== bProps.length) return false\n for (let i = 0; i < aProps.length; i++) {\n const propName = aProps[i]\n const propA = a[propName]\n const propB = b[propName]\n if (!b.hasOwnProperty(propName)) return false\n if (propA instanceof Object) {\n if (!isObjectValueEqual(propA, propB)) return false\n } else if (propA !== propB) {\n return false\n }\n }\n return true\n}\n","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, vShow as _vShow, normalizeStyle as _normalizeStyle, withDirectives as _withDirectives, Transition as _Transition, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4b170e60\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"el-dropdown-menu\" }\nconst _hoisted_2 = [\"onClick\"]\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n class: \"el-popper__arrow\",\n style: {\"left\":\"10px\"}\n}, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createBlock(_Transition, { name: \"el-zoom-in-center\" }, {\n default: _withCtx(() => [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n \"aria-hidden\": \"true\",\n class: \"el-dropdown__popper el-popper is-light is-pure custom-contextmenu\",\n role: \"tooltip\",\n \"data-popper-placement\": \"bottom\",\n style: _normalizeStyle(`top: ${_ctx.dropdowns.y + 5}px;left: ${_ctx.dropdowns.x}px;`),\n key: Math.random()\n }, [\n _createElementVNode(\"ul\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.dropdownList, (v, k) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (!v.affix)\n ? (_openBlock(), _createElementBlock(\"li\", {\n class: \"el-dropdown-menu__item\",\n \"aria-disabled\": \"false\",\n tabindex: \"-1\",\n key: k,\n onClick: ($event: any) => (_ctx.onCurrentContextmenuClick(v.contextMenuClickId))\n }, [\n _createElementVNode(\"i\", {\n class: _normalizeClass(v.icon)\n }, null, 2),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(v.txt)), 1)\n ], 8, _hoisted_2))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 256))\n ]),\n _hoisted_3\n ], 4)), [\n [_vShow, _ctx.isShow]\n ])\n ]),\n _: 1\n }))\n}","\nimport { computed, defineComponent, reactive, toRefs, onMounted, onUnmounted } from 'vue'\nexport default defineComponent({\n name: 'layoutTagsViewContextmenu',\n props: {\n dropdown: {\n type: Object\n }\n },\n setup (props, { emit }) {\n const state = reactive({\n isShow: false,\n dropdownList: [\n { contextMenuClickId: 0, txt: 'message.tagsView.refresh', affix: false, icon: 'el-icon-refresh-right' },\n { contextMenuClickId: 1, txt: 'message.tagsView.close', affix: false, icon: 'el-icon-close' },\n { contextMenuClickId: 2, txt: 'message.tagsView.closeOther', affix: false, icon: 'el-icon-circle-close' },\n { contextMenuClickId: 3, txt: 'message.tagsView.closeAll', affix: false, icon: 'el-icon-folder-delete' },\n {\n contextMenuClickId: 4,\n txt: 'message.tagsView.fullscreen',\n affix: false,\n icon: 'iconfont icon-fullscreen'\n }\n ],\n item: {}\n })\n // 父级传过来的坐标 x,y 值\n const dropdowns = computed(() => {\n return props.dropdown\n })\n // 当前项菜单点击\n const onCurrentContextmenuClick = (contextMenuClickId: number) => {\n emit('currentContextmenuClick', Object.assign({}, { contextMenuClickId }, state.item))\n }\n // 打开右键菜单:判断是否固定,固定则不显示关闭按钮\n const openContextmenu = (item: any) => {\n state.item = item\n item.meta.isAffix ? (state.dropdownList[1].affix = true) : (state.dropdownList[1].affix = false)\n closeContextmenu()\n setTimeout(() => {\n state.isShow = true\n }, 10)\n }\n // 关闭右键菜单\n const closeContextmenu = () => {\n state.isShow = false\n }\n // 监听页面监听进行右键菜单的关闭\n onMounted(() => {\n document.body.addEventListener('click', closeContextmenu)\n })\n // 页面卸载时,移除右键菜单监听事件\n onUnmounted(() => {\n document.body.removeEventListener('click', closeContextmenu)\n })\n return {\n dropdowns,\n openContextmenu,\n closeContextmenu,\n onCurrentContextmenuClick,\n ...toRefs(state)\n }\n }\n})\n","import { render } from \"./contextmenu.vue?vue&type=template&id=4b170e60&scoped=true&ts=true\"\nimport script from \"./contextmenu.vue?vue&type=script&lang=ts\"\nexport * from \"./contextmenu.vue?vue&type=script&lang=ts\"\n\nimport \"./contextmenu.vue?vue&type=style&index=0&id=4b170e60&scoped=true&lang=scss\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4b170e60\"]])\n\nexport default __exports__","\nimport { toRefs, reactive, onMounted, computed, ref, nextTick, onBeforeUpdate, onBeforeMount, onUnmounted, getCurrentInstance, watch } from 'vue'\nimport { useRoute, useRouter, onBeforeRouteUpdate } from 'vue-router'\n// import Sortable from 'sortablejs'\nimport { ElMessage } from 'element-plus'\nimport { useStore } from '@/store/index.ts'\nimport { Session } from '@/utils/storage'\nimport { isObjectValueEqual } from '@/utils/arrayOperation'\nimport Contextmenu from '@/layout/navBars/tagsView/contextmenu.vue'\nexport default {\n name: 'layoutTagsView',\n components: { Contextmenu },\n setup () {\n const { proxy } = getCurrentInstance() as any\n const tagsRefs = ref([])\n const scrollbarRef = ref()\n const contextmenuRef = ref()\n const tagsUlRef = ref()\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n const state: any = reactive({\n routeActive: '',\n routePath: route.path,\n dropdown: { x: '', y: '' },\n tagsRefsIndex: 0,\n tagsViewList: [],\n sortable: '',\n tagsViewRoutesList: []\n })\n // 动态设置 tagsView 风格样式\n const setTagsStyle = computed(() => {\n return store.state.themeConfig.themeConfig.tagsStyle\n })\n // 获取布局配置信息\n const getThemeConfig = computed(() => {\n return store.state.themeConfig.themeConfig\n })\n // 设置 tagsView 高亮\n const isActive = (v: { path: any; url: any }) => {\n if (getThemeConfig.value.isShareTagsView) {\n return v.path === state.routePath\n } else {\n return v.url === state.routeActive\n }\n }\n // 存储 tagsViewList 到浏览器临时缓存中,页面刷新时,保留记录\n const addBrowserSetSession = (tagsViewList: Array) => {\n Session.set('tagsViewList', tagsViewList)\n }\n // 获取 vuex 中的 tagsViewRoutes 列表\n const getTagsViewRoutes = async () => {\n state.routeActive = await setTagsViewHighlight(route)\n state.routePath = (await route.meta.isDynamic) ? route.meta.isDynamicPath : route.path\n state.tagsViewList = []\n state.tagsViewRoutesList = store.state.tagsViewRoutes.tagsViewRoutes\n initTagsView()\n }\n // vuex 中获取路由信息:如果是设置了固定的(isAffix),进行初始化显示\n const initTagsView = async () => {\n if (Session.get('tagsViewList') && getThemeConfig.value.isCacheTagsView) {\n state.tagsViewList = await Session.get('tagsViewList')\n } else {\n await state.tagsViewRoutesList.map((v: any) => {\n if (v.meta.isAffix && !v.meta.isHide) {\n v.url = setTagsViewHighlight(v)\n state.tagsViewList.push({ ...v })\n }\n })\n await addTagsView(route.path, route)\n }\n // 初始化当前元素(li)的下标\n getTagsRefsIndex(getThemeConfig.value.isShareTagsView ? state.routePath : state.routeActive)\n }\n // 处理可开启多标签详情,单标签详情(动态路由(xxx/:id/:name\"),普通路由处理)\n const solveAddTagsView = async (path: string, to?: any) => {\n const isDynamicPath = to.meta.isDynamic ? to.meta.isDynamicPath : path\n const current = state.tagsViewList.filter(\n (v: any) =>\n v.path === isDynamicPath &&\n\t\t\t\t\tisObjectValueEqual(to.meta.isDynamic ? (v.params ? v.params : null) : v.query ? v.query : null, to.meta.isDynamic ? (to?.params ? to?.params : null) : to?.query ? to?.query : null)\n )\n if (current.length <= 0) {\n // 防止:Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.\n const findItem = state.tagsViewRoutesList.find((v: any) => v.path === isDynamicPath)\n if (findItem.meta.isAffix) return false\n if (findItem.meta.isLink && !findItem.meta.isIframe) return false\n to.meta.isDynamic ? (findItem.params = to.params) : (findItem.query = to.query)\n findItem.url = setTagsViewHighlight(findItem)\n state.tagsViewList.push({ ...findItem })\n addBrowserSetSession(state.tagsViewList)\n }\n }\n // 处理单标签时,第二次的值未覆盖第一次的 tagsViewList 值(Session Storage)\n const singleAddTagsView = (path: string, to?: any) => {\n const isDynamicPath = to.meta.isDynamic ? to.meta.isDynamicPath : path\n state.tagsViewList.forEach((v: { path: any; params: any; query: any; url: any }) => {\n if (\n v.path === isDynamicPath &&\n\t\t\t\t\t!isObjectValueEqual(to.meta.isDynamic ? (v.params ? v.params : null) : v.query ? v.query : null, to.meta.isDynamic ? (to?.params ? to?.params : null) : to?.query ? to?.query : null)\n ) {\n to.meta.isDynamic ? (v.params = to.params) : (v.query = to.query)\n v.url = setTagsViewHighlight(v)\n addBrowserSetSession(state.tagsViewList)\n }\n })\n }\n // 1、添加 tagsView:未设置隐藏(isHide)也添加到在 tagsView 中(可开启多标签详情,单标签详情)\n const addTagsView = (path: string, to?: any) => {\n // 防止拿取不到路由信息\n nextTick(async () => {\n // 修复:https://gitee.com/lyt-top/vue-next-admin/issues/I3YX6G\n let item = ''\n if (to && to.meta.isDynamic) {\n // 动态路由(xxx/:id/:name\"):参数不同,开启多个 tagsview\n if (!getThemeConfig.value.isShareTagsView) await solveAddTagsView(path, to)\n else await singleAddTagsView(path, to)\n if (state.tagsViewList.some((v: any) => v.path === to.meta.isDynamicPath)) return false\n item = state.tagsViewRoutesList.find((v: any) => v.path === to.meta.isDynamicPath)\n } else {\n // 普通路由:参数不同,开启多个 tagsview\n if (!getThemeConfig.value.isShareTagsView) await solveAddTagsView(path, to)\n else await singleAddTagsView(path, to)\n if (state.tagsViewList.some((v: any) => v.path === path)) return false\n item = state.tagsViewRoutesList.find((v: any) => v.path === path)\n }\n // if (item.meta.isLink && !item.meta.isIframe) return false\n // if (to && to.meta.isDynamic) item.params = to?.params ? to?.params : route.params\n // else item.query = to?.query ? to?.query : route.query\n // item.url = setTagsViewHighlight(item)\n // await state.tagsViewList.push({ ...item })\n await addBrowserSetSession(state.tagsViewList)\n })\n }\n // 2、刷新当前 tagsView:\n const refreshCurrentTagsView = (fullPath: string) => {\n // proxy.mittBus.emit('onTagsViewRefreshRouterView', fullPath)\n }\n // 3、关闭当前 tagsView:如果是设置了固定的(isAffix),不可以关闭\n const closeCurrentTagsView = (path: string) => {\n state.tagsViewList.map((v: any, k: number, arr: any) => {\n if (!v.meta.isAffix) {\n if (getThemeConfig.value.isShareTagsView ? v.path === path : v.url === path) {\n state.tagsViewList.splice(k, 1)\n setTimeout(() => {\n if (state.tagsViewList.length === k && getThemeConfig.value.isShareTagsView ? state.routePath === path : state.routeActive === path) {\n // 最后一个且高亮时\n if (arr[arr.length - 1].meta.isDynamic) {\n // 动态路由(xxx/:id/:name\")\n router.push({ name: arr[arr.length - 1].name, params: arr[arr.length - 1].params })\n } else {\n // 普通路由\n router.push({ path: arr[arr.length - 1].path, query: arr[arr.length - 1].query })\n }\n } else {\n // 非最后一个且高亮时,跳转到下一个\n if (state.tagsViewList.length !== k && getThemeConfig.value.isShareTagsView ? state.routePath === path : state.routeActive === path) {\n if (arr[k].meta.isDynamic) {\n // 动态路由(xxx/:id/:name\")\n router.push({ name: arr[k].name, params: arr[k].params })\n } else {\n // 普通路由\n router.push({ path: arr[k].path, query: arr[k].query })\n }\n }\n }\n }, 0)\n }\n }\n })\n addBrowserSetSession(state.tagsViewList)\n }\n // 4、关闭其它 tagsView:如果是设置了固定的(isAffix),不进行关闭\n const closeOtherTagsView = (path: string) => {\n state.tagsViewList = []\n state.tagsViewRoutesList.map((v: any) => {\n if (v.meta.isAffix && !v.meta.isHide) state.tagsViewList.push({ ...v })\n })\n addTagsView(path, route)\n }\n // 5、关闭全部 tagsView:如果是设置了固定的(isAffix),不进行关闭\n const closeAllTagsView = () => {\n state.tagsViewList = []\n state.tagsViewRoutesList.map((v: any) => {\n if (v.meta.isAffix && !v.meta.isHide) {\n state.tagsViewList.push({ ...v })\n router.push({ path: state.tagsViewList[state.tagsViewList.length - 1].path })\n }\n })\n addBrowserSetSession(state.tagsViewList)\n }\n // 6、开启当前页面全屏\n const openCurrenFullscreen = async (path: string) => {\n const item = state.tagsViewList.find((v: any) => (getThemeConfig.value.isShareTagsView ? v.path === path : v.url === path))\n if (item.meta.isDynamic) await router.push({ name: item.name, params: item.params })\n else await router.push({ name: item.name, query: item.query })\n store.dispatch('tagsViewRoutes/setCurrenFullscreen', true)\n }\n // 当前项右键菜单点击,拿当前点击的路由路径对比 浏览器缓存中的 tagsView 路由数组,取当前点击项的详细路由信息\n // 防止 tagsView 非当前页演示时,操作异常\n const getCurrentRouteItem = (path: string, cParams: { [key: string]: any }) => {\n const itemRoute = Session.get('tagsViewList') ? Session.get('tagsViewList') : state.tagsViewList\n return itemRoute.find((v: any) => {\n if (\n v.path === path // && isObjectValueEqual(v.meta.isDynamic ? (v.params ? v.params : null) : v.query ? v.query : null, cParams && Object.keys(cParams || {}).length > 0 ? cParams : null)\n ) {\n return v\n } else if (v.path === path && Object.keys(cParams || {}).length <= 0) {\n return v\n }\n })\n }\n // 当前项右键菜单点击\n const onCurrentContextmenuClick = async (item: any) => {\n const cParams = item.meta.isDynamic ? item.params : item.query\n if (!getCurrentRouteItem(item.path, cParams)) return ElMessage({ type: 'warning', message: '请正确输入路径及完整参数(query、params)' })\n const { path, name, params, query, meta, url } = getCurrentRouteItem(item.path, cParams)\n switch (item.contextMenuClickId) {\n case 0:\n // 刷新当前\n if (meta.isDynamic) await router.push({ name, params })\n else await router.push({ path, query })\n refreshCurrentTagsView(route.fullPath)\n break\n case 1:\n // 关闭当前\n closeCurrentTagsView(getThemeConfig.value.isShareTagsView ? path : url)\n break\n case 2:\n // 关闭其它\n if (meta.isDynamic) await router.push({ name, params })\n else await router.push({ path, query })\n closeOtherTagsView(path)\n break\n case 3:\n // 关闭全部\n closeAllTagsView()\n break\n case 4:\n // 开启当前页面全屏\n openCurrenFullscreen(getThemeConfig.value.isShareTagsView ? path : url)\n break\n }\n }\n // 右键点击时:传 x,y 坐标值到子组件中(props)\n const onContextmenu = (v: any, e: any) => {\n const { clientX, clientY } = e\n state.dropdown.x = clientX\n state.dropdown.y = clientY\n contextmenuRef.value.openContextmenu(v)\n }\n // 当前的 tagsView 项点击时\n const onTagsClick = (v: any, k: number) => {\n state.tagsRefsIndex = k\n router.push(v)\n }\n // 处理 tagsView 高亮(多标签详情时使用,单标签详情未使用)\n const setTagsViewHighlight = (v: any) => {\n const params = v.query && Object.keys(v.query).length > 0 ? v.query : v.params\n if (!params || Object.keys(params).length <= 0) return v.path\n let path = ''\n for (const i in params) {\n path += params[i]\n }\n // 判断是否是动态路由(xxx/:id/:name\")\n return `${v.meta.isDynamic ? v.meta.isDynamicPath : v.path}-${path}`\n }\n // 更新滚动条显示\n const updateScrollbar = () => {\n proxy.$refs.scrollbarRef.update()\n }\n // 鼠标滚轮滚动\n const onHandleScroll = (e: any) => {\n proxy.$refs.scrollbarRef.$refs.wrap.scrollLeft += e.wheelDelta / 4\n }\n // tagsView 横向滚动\n const tagsViewmoveToCurrentTag = () => {\n nextTick(() => {\n if (tagsRefs.value.length <= 0) return false\n // 当前 li 元素\n const liDom = tagsRefs.value[state.tagsRefsIndex]\n // 当前 li 元素下标\n const liIndex = state.tagsRefsIndex\n // 当前 ul 下 li 元素总长度\n const liLength = tagsRefs.value.length\n // 最前 li\n const liFirst: any = tagsRefs.value[0]\n // 最后 li\n const liLast: any = tagsRefs.value[tagsRefs.value.length - 1]\n // 当前滚动条的值\n const scrollRefs = proxy.$refs.scrollbarRef.$refs.wrap\n // 当前滚动条滚动宽度\n const scrollS = scrollRefs.scrollWidth\n // 当前滚动条偏移宽度\n const offsetW = scrollRefs.offsetWidth\n // 当前滚动条偏移距离\n const scrollL = scrollRefs.scrollLeft\n // 上一个 tags li dom\n const liPrevTag: any = tagsRefs.value[state.tagsRefsIndex - 1]\n // 下一个 tags li dom\n const liNextTag: any = tagsRefs.value[state.tagsRefsIndex + 1]\n // 上一个 tags li dom 的偏移距离\n let beforePrevL: any = ''\n // 下一个 tags li dom 的偏移距离\n let afterNextL: any = ''\n if (liDom === liFirst) {\n // 头部\n scrollRefs.scrollLeft = 0\n } else if (liDom === liLast) {\n // 尾部\n scrollRefs.scrollLeft = scrollS - offsetW\n } else {\n // 非头/尾部\n if (liIndex === 0) beforePrevL = liFirst.offsetLeft - 5\n else beforePrevL = liPrevTag?.offsetLeft - 5\n if (liIndex === liLength) afterNextL = liLast.offsetLeft + liLast.offsetWidth + 5\n else afterNextL = liNextTag.offsetLeft + liNextTag.offsetWidth + 5\n if (afterNextL > scrollL + offsetW) {\n scrollRefs.scrollLeft = afterNextL - offsetW\n } else if (beforePrevL < scrollL) {\n scrollRefs.scrollLeft = beforePrevL\n }\n }\n // 更新滚动条,防止不出现\n updateScrollbar()\n })\n }\n // 获取 tagsView 的下标:用于处理 tagsView 点击时的横向滚动\n const getTagsRefsIndex = (path: string) => {\n nextTick(async () => {\n // await 使用该写法,防止拿取不到 tagsViewList 列表数据不完整\n const tagsViewList = await state.tagsViewList\n state.tagsRefsIndex = tagsViewList.findIndex((v: any) => {\n if (getThemeConfig.value.isShareTagsView) {\n return v.path === path\n } else {\n return v.url === path\n }\n })\n // 添加初始化横向滚动条移动到对应位置\n tagsViewmoveToCurrentTag()\n })\n }\n // 设置 tagsView 可以进行拖拽\n const initSortable = () => {\n // const el = document.querySelector('.layout-navbars-tagsview-ul') as HTMLElement\n // if (!el) return false\n // state.sortable && state.sortable.destroy()\n // state.sortable = Sortable.create(el, {\n // animation: 300,\n // dataIdAttr: 'data-name',\n // disabled: !getThemeConfig.value.isSortableTagsView,\n // onEnd: () => {\n // const sortEndList: any = []\n // state.sortable.toArray().map((val: any) => {\n // state.tagsViewList.map((v: any) => {\n // if (v.name === val) sortEndList.push({ ...v })\n // })\n // })\n // addBrowserSetSession(sortEndList)\n // }\n // })\n }\n // 拖动问题,https://gitee.com/lyt-top/vue-next-admin/issues/I3ZRRI\n const onSortableResize = () => {\n const clientWidth = document.body.clientWidth\n if (clientWidth < 1000) getThemeConfig.value.isSortableTagsView = false\n else getThemeConfig.value.isSortableTagsView = true\n initSortable()\n }\n // 页面加载前\n onBeforeMount(() => {\n // 初始化,防止手机端直接访问时还可以拖拽\n onSortableResize()\n // 拖动问题,https://gitee.com/lyt-top/vue-next-admin/issues/I3ZRRI\n window.addEventListener('resize', onSortableResize)\n // 监听非本页面调用 0 刷新当前,1 关闭当前,2 关闭其它,3 关闭全部 4 当前页全屏\n // proxy.mittBus.on('onCurrentContextmenuClick', (data: object) => {\n // onCurrentContextmenuClick(data)\n // })\n // 监听布局配置界面开启/关闭拖拽\n // proxy.mittBus.on('openOrCloseSortable', () => {\n // initSortable()\n // })\n // 监听布局配置开启 TagsView 共用,为了演示还原默认值\n // proxy.mittBus.on('openShareTagsView', () => {\n // if (getThemeConfig.value.isShareTagsView) {\n // router.push('/home')\n // state.tagsViewList = []\n // state.tagsViewRoutesList.map((v: any) => {\n // if (v.meta.isAffix && !v.meta.isHide) {\n // v.url = setTagsViewHighlight(v)\n // state.tagsViewList.push({ ...v })\n // }\n // })\n // }\n // })\n })\n // 页面卸载时\n onUnmounted(() => {\n // 取消非本页面调用监听\n // proxy.mittBus.off('onCurrentContextmenuClick')\n // 取消监听布局配置界面开启/关闭拖拽\n // proxy.mittBus.off('openOrCloseSortable')\n // 取消监听布局配置开启 TagsView 共用\n // proxy.mittBus.off('openShareTagsView')\n // 取消窗口 resize 监听\n window.removeEventListener('resize', onSortableResize)\n })\n // 页面更新时\n onBeforeUpdate(() => {\n tagsRefs.value = []\n })\n // 页面加载时\n onMounted(() => {\n // 初始化 vuex 中的 tagsViewRoutes 列表\n getTagsViewRoutes()\n initSortable()\n })\n // 路由更新时\n onBeforeRouteUpdate(async (to) => {\n state.routeActive = setTagsViewHighlight(to)\n state.routePath = to.meta.isDynamic ? to.meta.isDynamicPath : to.path\n await addTagsView(to.path, to)\n getTagsRefsIndex(getThemeConfig.value.isShareTagsView ? state.routePath : state.routeActive)\n })\n // 监听路由的变化,动态赋值给 tagsView\n watch(store.state, (val) => {\n if (val.tagsViewRoutes.tagsViewRoutes.length === state.tagsViewRoutesList.length) return false\n getTagsViewRoutes()\n })\n return {\n isActive,\n onContextmenu,\n getTagsViewRoutes,\n onTagsClick,\n tagsRefs,\n contextmenuRef,\n scrollbarRef,\n tagsUlRef,\n onHandleScroll,\n getThemeConfig,\n setTagsStyle,\n refreshCurrentTagsView,\n closeCurrentTagsView,\n onCurrentContextmenuClick,\n ...toRefs(state)\n }\n }\n}\n","import { render } from \"./tagsView.vue?vue&type=template&id=22d4d008&scoped=true&ts=true\"\nimport script from \"./tagsView.vue?vue&type=script&lang=ts\"\nexport * from \"./tagsView.vue?vue&type=script&lang=ts\"\n\nimport \"./tagsView.vue?vue&type=style&index=0&id=22d4d008&scoped=true&lang=scss\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-22d4d008\"]])\n\nexport default __exports__","\nimport { computed } from 'vue'\nimport { useStore } from '@/store/index.ts'\nimport BreadcrumbIndex from '@/layout/navBars/breadcrumb/index.vue'\nimport TagsView from '@/layout/navBars/tagsView/tagsView.vue'\nexport default {\n name: 'layoutNavBars',\n components: { BreadcrumbIndex, TagsView },\n setup () {\n const store = useStore()\n // 是否显示 tagsView\n const setShowTagsView = computed(() => {\n const { layout, isTagsview } = store.state.themeConfig.themeConfig\n return layout !== 'classic' && isTagsview\n })\n return {\n setShowTagsView\n }\n }\n}\n","import { render } from \"./index.vue?vue&type=template&id=3a54a0ce&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=3a54a0ce&scoped=true&lang=scss\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3a54a0ce\"]])\n\nexport default __exports__","\nimport { computed } from 'vue'\nimport { useStore } from '@/store/index.ts'\nimport NavBarsIndex from '@/layout/navBars/index.vue'\nexport default {\n name: 'layoutHeader',\n components: { NavBarsIndex },\n setup () {\n const store = useStore()\n // 设置 header 的高度\n const setHeaderHeight = computed(() => {\n const { isTagsview, layout } = store.state.themeConfig.themeConfig\n if (isTagsview && layout !== 'classic') return '84px'\n else return '50px'\n })\n // 获取卡片全屏信息\n const isTagsViewCurrenFull = computed(() => {\n return store.state.tagsViewRoutes.isTagsViewCurrenFull\n })\n return {\n setHeaderHeight,\n isTagsViewCurrenFull\n }\n }\n}\n","import { render } from \"./header.vue?vue&type=template&id=e0b908fc&ts=true\"\nimport script from \"./header.vue?vue&type=script&lang=ts\"\nexport * from \"./header.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, withCtx as _withCtx } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_LayoutParentView = _resolveComponent(\"LayoutParentView\")!\n const _component_Footer = _resolveComponent(\"Footer\")!\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\")!\n const _component_el_main = _resolveComponent(\"el-main\")!\n\n return (_openBlock(), _createBlock(_component_el_main, { class: \"layout-main\" }, {\n default: _withCtx(() => [\n _createVNode(_component_el_scrollbar, {\n class: \"layout-scrollbar\",\n ref: \"layoutScrollbarRef\",\n style: _normalizeStyle({\n\t\t\t\tminHeight: `calc(100vh - ${_ctx.headerHeight}`,\n\t\t\t\tpadding: _ctx.currentRouteMeta.isLink && _ctx.currentRouteMeta.isIframe ? 0 : '',\n\t\t\t\ttransition: 'padding 0.3s ease-in-out',\n\t\t\t})\n }, {\n default: _withCtx(() => [\n _createVNode(_component_LayoutParentView),\n (_ctx.getThemeConfig.isFooter)\n ? (_openBlock(), _createBlock(_component_Footer, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"style\"])\n ]),\n _: 1\n }))\n}","import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, KeepAlive as _KeepAlive, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode, resolveComponent as _resolveComponent, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"h100\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_router_view, null, {\n default: _withCtx(({ Component }) => [\n _createVNode(_Transition, {\n name: _ctx.setTransitionName,\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [\n (_openBlock(), _createBlock(_KeepAlive, { include: _ctx.keepAliveNameList }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(Component), {\n key: _ctx.refreshRouterViewKey,\n class: \"w100\"\n }))\n ], 1032, [\"include\"]))\n ]),\n _: 2\n }, 1032, [\"name\"])\n ]),\n _: 1\n })\n ]))\n}","\nimport { computed, defineComponent, toRefs, reactive, getCurrentInstance, onBeforeMount, onUnmounted, nextTick, watch } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useStore } from '@/store/index.ts'\nexport default defineComponent({\n name: 'layoutParentView',\n setup () {\n const { proxy } = getCurrentInstance() as any\n const route = useRoute()\n const store = useStore()\n const state: any = reactive({\n refreshRouterViewKey: null,\n keepAliveNameList: [],\n keepAliveNameNewList: []\n })\n // 设置主界面切换动画\n const setTransitionName = computed(() => {\n return store.state.themeConfig.themeConfig.animation\n })\n // 获取布局配置信息\n const getThemeConfig = computed(() => {\n return store.state.themeConfig.themeConfig\n })\n // 获取组件缓存列表(name值)\n const getKeepAliveNames = computed(() => {\n return store.state.keepAliveNames.keepAliveNames\n })\n // 页面加载前,处理缓存,页面刷新时路由缓存处理\n onBeforeMount(() => {\n state.keepAliveNameList = getKeepAliveNames.value\n // proxy.mittBus.on('onTagsViewRefreshRouterView', (fullPath: string) => {\n // state.keepAliveNameList = getKeepAliveNames.value.filter((name: string) => route.name !== name)\n // state.refreshRouterViewKey = null\n // nextTick(() => {\n // state.refreshRouterViewKey = fullPath\n // state.keepAliveNameList = getKeepAliveNames.value\n // })\n // })\n })\n // 页面卸载时\n onUnmounted(() => {\n // proxy.mittBus.off('onTagsViewRefreshRouterView')\n })\n // 监听路由变化,防止 tagsView 多标签时,切换动画消失\n watch(\n () => route.fullPath,\n () => {\n state.refreshRouterViewKey = route.fullPath\n }\n )\n return {\n getThemeConfig,\n getKeepAliveNames,\n setTransitionName,\n ...toRefs(state)\n }\n }\n})\n","import { render } from \"./parent.vue?vue&type=template&id=4dfaed1e&ts=true\"\nimport script from \"./parent.vue?vue&type=script&lang=ts\"\nexport * from \"./parent.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0c2b3f71\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"layout-footer mt15\" }\nconst _hoisted_2 = { class: \"layout-footer-warp\" }\nconst _hoisted_3 = { class: \"mt5\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('message.copyright.one5')), 1)\n ])\n ], 512)), [\n [_vShow, _ctx.isDelayFooter]\n ])\n}","\nimport { toRefs, reactive } from 'vue'\nimport { onBeforeRouteUpdate } from 'vue-router'\nexport default {\n name: 'layoutFooter',\n setup () {\n const state = reactive({\n isDelayFooter: true\n })\n // 路由改变时,等主界面动画加载完毕再显示 footer\n onBeforeRouteUpdate(() => {\n state.isDelayFooter = false\n setTimeout(() => {\n state.isDelayFooter = true\n }, 800)\n })\n return {\n ...toRefs(state)\n }\n }\n}\n","import { render } from \"./index.vue?vue&type=template&id=0c2b3f71&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=0c2b3f71&scoped=true&lang=scss\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0c2b3f71\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, toRefs, reactive, getCurrentInstance, watch, onBeforeMount } from 'vue'\nimport { useStore } from '@/store/index.ts'\nimport { useRoute } from 'vue-router'\nimport LayoutParentView from '@/layout/routerView/parent.vue'\nimport Footer from '@/layout/footer/index.vue'\nexport default defineComponent({\n name: 'layoutMain',\n components: { LayoutParentView, Footer },\n setup () {\n const { proxy } = getCurrentInstance() as any\n const route = useRoute()\n const store = useStore()\n const state = reactive({\n headerHeight: '',\n currentRouteMeta: {}\n })\n // 获取布局配置信息\n const getThemeConfig = computed(() => {\n return store.state.themeConfig.themeConfig\n })\n // 设置 main 的高度\n const initHeaderHeight = () => {\n const { isTagsview } = store.state.themeConfig.themeConfig\n if (isTagsview) return (state.headerHeight = '84px')\n else return (state.headerHeight = '50px')\n }\n // 初始化获取当前路由 meta,用于设置 iframes padding\n const initGetMeta = () => {\n state.currentRouteMeta = route.meta\n }\n // 页面加载前\n onBeforeMount(() => {\n initHeaderHeight()\n initGetMeta()\n })\n // 监听 themeConfig 配置文件的变化,更新菜单 el-scrollbar 的高度\n watch(store.state.themeConfig.themeConfig, (val) => {\n state.headerHeight = val.isTagsview ? '84px' : '50px'\n if (val.isFixedHeaderChange !== val.isFixedHeader) {\n if (!proxy.$refs.layoutScrollbarRef) return false\n proxy.$refs.layoutScrollbarRef.update()\n }\n })\n // 监听路由变化\n watch(\n () => route.path,\n () => {\n state.currentRouteMeta = route.meta\n }\n )\n return {\n getThemeConfig,\n ...toRefs(state)\n }\n }\n})\n","import { render } from \"./main.vue?vue&type=template&id=ba30355c&ts=true\"\nimport script from \"./main.vue?vue&type=script&lang=ts\"\nexport * from \"./main.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { computed, getCurrentInstance, watch } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useStore } from '@/store/index.ts'\nimport Aside from '@/layout/component/aside.vue'\nimport Header from '@/layout/component/header.vue'\nimport Main from '@/layout/component/main.vue'\nexport default {\n name: 'layoutDefaults',\n components: { Aside, Header, Main },\n setup () {\n const { proxy } = getCurrentInstance() as any\n const store = useStore()\n const route = useRoute()\n const isFixedHeader = computed(() => {\n return store.state.themeConfig.themeConfig.isFixedHeader\n })\n // 监听路由的变化\n watch(\n () => route.path,\n () => {\n proxy.$refs.layoutDefaultsScrollbarRef.wrap.scrollTop = 0\n }\n )\n return {\n isFixedHeader\n }\n }\n}\n","import { render } from \"./defaults.vue?vue&type=template&id=db638ab8&ts=true\"\nimport script from \"./defaults.vue?vue&type=script&lang=ts\"\nexport * from \"./defaults.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { computed, onBeforeMount, onUnmounted, getCurrentInstance } from 'vue'\nimport { useStore } from '@/store/index.ts'\nimport { Local } from '@/utils/storage'\nimport Defaults from '@/layout/main/defaults.vue'\nexport default {\n name: 'layout',\n components: { Defaults },\n setup () {\n const { proxy } = getCurrentInstance() as any\n const store = useStore()\n // 获取布局配置信息\n const getThemeConfig = computed(() => {\n return store.state.themeConfig.themeConfig\n })\n // 窗口大小改变时(适配移动端)\n const onLayoutResize = () => {\n if (!Local.get('oldLayout')) Local.set('oldLayout', getThemeConfig.value.layout)\n const clientWidth = document.body.clientWidth\n if (clientWidth < 1000) {\n getThemeConfig.value.isCollapse = false\n // proxy.mittBus.emit('layoutMobileResize', {\n // layout: 'defaults',\n // clientWidth\n // })\n } else {\n // proxy.mittBus.emit('layoutMobileResize', {\n // layout: Local.get('oldLayout') ? Local.get('oldLayout') : getThemeConfig.value.layout,\n // clientWidth\n // })\n }\n }\n // 页面加载前\n onBeforeMount(() => {\n onLayoutResize()\n window.addEventListener('resize', onLayoutResize)\n })\n // 页面卸载时\n onUnmounted(() => {\n window.removeEventListener('resize', onLayoutResize)\n })\n return {\n getThemeConfig\n }\n }\n}\n","import { render } from \"./index.vue?vue&type=template&id=0d4ffbf4&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=5ebc5214&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./horizontal.vue?vue&type=style&index=0&id=04c940ce&scoped=true&lang=scss\""],"sourceRoot":""}