bmp-layout 0.0.21 → 0.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bmp-layout.es.js CHANGED
@@ -1,12 +1,12 @@
1
- import { openBlock, createBlock, unref, normalizeClass, nextTick, ref, computed, watch, withCtx, createElementBlock, createElementVNode, normalizeStyle, createVNode, Fragment, defineComponent, isVNode, Teleport, Transition, withModifiers, toDisplayString, renderList, createCommentVNode, resolveComponent, provide, resolveDynamicComponent, onMounted, TransitionGroup, createTextVNode, mergeProps, isRef, onUnmounted, withDirectives, resolveDirective, renderSlot, watchEffect, vShow, useSlots, useAttrs, createSlots, inject, onBeforeUnmount, reactive, onUpdated, render, useCssVars } from "vue";
1
+ import { openBlock, createBlock, unref, normalizeClass, nextTick, ref, computed, watch, withCtx, createElementBlock, createElementVNode, normalizeStyle, createVNode, Fragment, resolveComponent, defineComponent, isVNode, renderList, createCommentVNode, createTextVNode, toDisplayString, renderSlot, onBeforeMount, withModifiers, Teleport, Transition, provide, KeepAlive, resolveDynamicComponent, onMounted, TransitionGroup, mergeProps, isRef, onUnmounted, withDirectives, resolveDirective, watchEffect, vShow, useSlots, useAttrs, createSlots, inject, onBeforeUnmount, reactive, onUpdated, render, useCssVars } from "vue";
2
2
  import { createPinia, setActivePinia, defineStore } from "pinia";
3
3
  import piniaPluginPersistedstate from "pinia-plugin-persistedstate";
4
4
  import { cloneDeep, omit } from "lodash-es";
5
- import { ElBacktop, ElIcon, ElMenuItem, ElSubMenu, ElScrollbar, ElMenu, ElInput, ElBadge, ElDropdown, ElDropdownMenu, ElDropdownItem, ElAvatar, ElBreadcrumb, ElBreadcrumbItem, ElDrawer, ElButton, ElMessage, ElConfigProvider, ElCard, ElPagination, ElDialog, ElAlert, ElAffix, ElImageViewer, ElMessageBox, ElNotification, ElUpload, ElLink, ElAutocomplete, ElButtonGroup, ElCarousel, ElCarouselItem, ElCollapse, ElCollapseItem, ElCollapseTransition, ElDivider, ElEmpty, ElOverlay, ElPageHeader, ElProgress, ElResult, ElSkeleton, ElSkeletonItem, ElSpace, ElTag, ElText, ElCascader, ElCascaderPanel, ElCheckbox, ElCheckboxButton, ElCheckboxGroup, ElColorPicker, ElDatePicker, ElForm, ElFormItem, ElInputNumber, ElInputTag, ElRadio, ElRadioButton, ElRadioGroup, ElRate, ElSelect, ElOption, ElOptionGroup, ElSelectV2, ElSlider, ElSwitch, ElTimePicker, ElTimeSelect, ElTransfer, ElTreeSelect, ElMention, ElCalendar, ElCheckTag, ElCountdown, ElDescriptions, ElDescriptionsItem, ElImage, ElStatistic, ElTable, ElTableColumn, ElTimeline, ElTimelineItem, ElTree, ElTreeV2, ElMenuItemGroup, ElTabs, ElTabPane, ElPopover, ElPopconfirm, ElTooltip, ElContainer, ElAside, ElFooter, ElHeader, ElMain, ElRow, ElCol, ElSplitter, ElSplitterPanel, ElSegmented, ElTour, ElTourStep, ElWatermark, ElPopper, ElAnchor, ElSteps } from "element-plus";
5
+ import { ElBacktop, ElIcon, ElMenuItem, ElSubMenu, ElScrollbar, ElMenu, ElDropdown, ElDropdownMenu, ElDropdownItem, ElInput, ElBadge, ElAvatar, ElBreadcrumb, ElBreadcrumbItem, ElDrawer, ElButton, ElMessage, ElConfigProvider, ElCard, ElPagination, ElDialog, ElAlert, ElAffix, ElImageViewer, ElMessageBox, ElNotification, ElUpload, ElLink, ElAutocomplete, ElButtonGroup, ElCarousel, ElCarouselItem, ElCollapse, ElCollapseItem, ElCollapseTransition, ElDivider, ElEmpty, ElOverlay, ElPageHeader, ElProgress, ElResult, ElSkeleton, ElSkeletonItem, ElSpace, ElTag, ElText, ElCascader, ElCascaderPanel, ElCheckbox, ElCheckboxButton, ElCheckboxGroup, ElColorPicker, ElDatePicker, ElForm, ElFormItem, ElInputNumber, ElInputTag, ElRadio, ElRadioButton, ElRadioGroup, ElRate, ElSelect, ElOption, ElOptionGroup, ElSelectV2, ElSlider, ElSwitch, ElTimePicker, ElTimeSelect, ElTransfer, ElTreeSelect, ElMention, ElCalendar, ElCheckTag, ElCountdown, ElDescriptions, ElDescriptionsItem, ElImage, ElStatistic, ElTable, ElTableColumn, ElTimeline, ElTimelineItem, ElTree, ElTreeV2, ElMenuItemGroup, ElTabs, ElTabPane, ElPopover, ElPopconfirm, ElTooltip, ElContainer, ElAside, ElFooter, ElHeader, ElMain, ElRow, ElCol, ElSplitter, ElSplitterPanel, ElSegmented, ElTour, ElTourStep, ElWatermark, ElPopper, ElAnchor, ElSteps } from "element-plus";
6
6
  import { ElAffix as ElAffix2, ElAlert as ElAlert2, ElAnchor as ElAnchor2, ElAside as ElAside2, ElAutocomplete as ElAutocomplete2, ElAvatar as ElAvatar2, ElBacktop as ElBacktop2, ElBadge as ElBadge2, ElBreadcrumb as ElBreadcrumb2, ElBreadcrumbItem as ElBreadcrumbItem2, ElButton as ElButton2, ElButtonGroup as ElButtonGroup2, ElCalendar as ElCalendar2, ElCard as ElCard2, ElCarousel as ElCarousel2, ElCarouselItem as ElCarouselItem2, ElCascader as ElCascader2, ElCascaderPanel as ElCascaderPanel2, ElCheckTag as ElCheckTag2, ElCheckbox as ElCheckbox2, ElCheckboxButton as ElCheckboxButton2, ElCheckboxGroup as ElCheckboxGroup2, ElCol as ElCol2, ElCollapse as ElCollapse2, ElCollapseItem as ElCollapseItem2, ElCollapseTransition as ElCollapseTransition2, ElColorPicker as ElColorPicker2, ElConfigProvider as ElConfigProvider2, ElContainer as ElContainer2, ElCountdown as ElCountdown2, ElDatePicker as ElDatePicker2, ElDescriptions as ElDescriptions2, ElDescriptionsItem as ElDescriptionsItem2, ElDialog as ElDialog2, ElDivider as ElDivider2, ElDrawer as ElDrawer2, ElDropdown as ElDropdown2, ElDropdownItem as ElDropdownItem2, ElDropdownMenu as ElDropdownMenu2, ElEmpty as ElEmpty2, ElFooter as ElFooter2, ElForm as ElForm2, ElFormItem as ElFormItem2, ElHeader as ElHeader2, ElIcon as ElIcon2, ElImage as ElImage2, ElImageViewer as ElImageViewer2, ElInfiniteScroll, ElInput as ElInput2, ElInputNumber as ElInputNumber2, ElInputTag as ElInputTag2, ElLink as ElLink2, ElLoading, ElMain as ElMain2, ElMention as ElMention2, ElMenu as ElMenu2, ElMenuItem as ElMenuItem2, ElMenuItemGroup as ElMenuItemGroup2, ElMessage as ElMessage2, ElMessageBox as ElMessageBox2, ElNotification as ElNotification2, ElOption as ElOption2, ElOptionGroup as ElOptionGroup2, ElOverlay as ElOverlay2, ElPageHeader as ElPageHeader2, ElPagination as ElPagination2, ElPopconfirm as ElPopconfirm2, ElPopover as ElPopover2, ElPopper as ElPopper2, ElProgress as ElProgress2, ElRadio as ElRadio2, ElRadioButton as ElRadioButton2, ElRadioGroup as ElRadioGroup2, ElRate as ElRate2, ElResult as ElResult2, ElRow as ElRow2, ElScrollbar as ElScrollbar2, ElSegmented as ElSegmented2, ElSelect as ElSelect2, ElSelectV2 as ElSelectV22, ElSkeleton as ElSkeleton2, ElSkeletonItem as ElSkeletonItem2, ElSlider as ElSlider2, ElSpace as ElSpace2, ElSplitter as ElSplitter2, ElSplitterPanel as ElSplitterPanel2, ElStatistic as ElStatistic2, ElSteps as ElSteps2, ElSubMenu as ElSubMenu2, ElSwitch as ElSwitch2, ElTabPane as ElTabPane2, ElTable as ElTable2, ElTableColumn as ElTableColumn2, ElTabs as ElTabs2, ElTag as ElTag2, ElText as ElText2, ElTimePicker as ElTimePicker2, ElTimeSelect as ElTimeSelect2, ElTimeline as ElTimeline2, ElTimelineItem as ElTimelineItem2, ElTooltip as ElTooltip2, ElTour as ElTour2, ElTourStep as ElTourStep2, ElTransfer as ElTransfer2, ElTree as ElTree2, ElTreeSelect as ElTreeSelect2, ElTreeV2 as ElTreeV22, ElUpload as ElUpload2, ElWatermark as ElWatermark2 } from "element-plus";
7
7
  import { createRouter, createWebHashHistory, useRoute, useRouter } from "vue-router";
8
+ import { useTemplateRefsList, useClipboard, useWindowSize } from "@vueuse/core";
8
9
  import "vue-i18n";
9
- import { useClipboard, useWindowSize } from "@vueuse/core";
10
10
  let store = createPinia();
11
11
  store.use(piniaPluginPersistedstate);
12
12
  setActivePinia(store);
@@ -246,7 +246,6 @@ var webStorageCache_minExports = webStorageCache_min.exports;
246
246
  const WebStorageCache = /* @__PURE__ */ getDefaultExportFromCjs(webStorageCache_minExports);
247
247
  const CACHE_KEY = {
248
248
  // 用户相关
249
- ROLE_ROUTERS: "roleRouters",
250
249
  USER: "user",
251
250
  VisitTenantId: "visitTenantId",
252
251
  // 系统设置
@@ -269,7 +268,6 @@ const useCache = (type = "localStorage") => {
269
268
  const deleteUserCache = () => {
270
269
  const { wsCache: wsCache2 } = useCache();
271
270
  wsCache2.delete(CACHE_KEY.USER);
272
- wsCache2.delete(CACHE_KEY.ROLE_ROUTERS);
273
271
  wsCache2.delete(CACHE_KEY.VisitTenantId);
274
272
  };
275
273
  const baseLight = {
@@ -768,7 +766,7 @@ const systemTheme = {
768
766
  midAutumnFestival,
769
767
  newYearsDay
770
768
  };
771
- const { wsCache: wsCache$4 } = useCache();
769
+ const { wsCache: wsCache$3 } = useCache();
772
770
  const useAppStore = defineStore("layout-app", {
773
771
  state: () => {
774
772
  return {
@@ -797,17 +795,19 @@ const useAppStore = defineStore("layout-app", {
797
795
  // 偏好设置
798
796
  message: true,
799
797
  // 消息图标
798
+ tagsView: true,
799
+ // 标签页
800
800
  logo: true,
801
801
  // logo
802
802
  footer: false,
803
803
  // 显示页脚
804
804
  greyMode: false,
805
805
  // 是否开始灰色模式,用于特殊悼念日
806
- layout: wsCache$4.get(CACHE_KEY.LAYOUT) || "left",
806
+ layout: wsCache$3.get(CACHE_KEY.LAYOUT) || "left",
807
807
  // layout布局
808
- currentSize: wsCache$4.get("default") || "default",
808
+ currentSize: wsCache$3.get("default") || "default",
809
809
  // 组件尺寸
810
- theme: wsCache$4.get(CACHE_KEY.THEME) || "whiteLight",
810
+ theme: wsCache$3.get(CACHE_KEY.THEME) || "whiteLight",
811
811
  isSetTheme: false
812
812
  //初始化主题色
813
813
  };
@@ -837,6 +837,9 @@ const useAppStore = defineStore("layout-app", {
837
837
  getMessage() {
838
838
  return this.message;
839
839
  },
840
+ getTagsView() {
841
+ return this.tagsView;
842
+ },
840
843
  getLogo() {
841
844
  return this.logo;
842
845
  },
@@ -896,6 +899,9 @@ const useAppStore = defineStore("layout-app", {
896
899
  setMessage(message) {
897
900
  this.message = message;
898
901
  },
902
+ setTagsView(tagsView) {
903
+ this.tagsView = tagsView;
904
+ },
899
905
  setLogo(logo) {
900
906
  this.logo = logo;
901
907
  },
@@ -907,18 +913,18 @@ const useAppStore = defineStore("layout-app", {
907
913
  },
908
914
  setLayout(layout) {
909
915
  this.layout = layout;
910
- wsCache$4.set(CACHE_KEY.LAYOUT, this.layout);
916
+ wsCache$3.set(CACHE_KEY.LAYOUT, this.layout);
911
917
  },
912
918
  setTitle(title) {
913
919
  this.title = title;
914
920
  },
915
921
  setCurrentSize(currentSize) {
916
922
  this.currentSize = currentSize;
917
- wsCache$4.set("currentSize", this.currentSize);
923
+ wsCache$3.set("currentSize", this.currentSize);
918
924
  },
919
925
  setTheme(theme) {
920
926
  this.theme = theme;
921
- wsCache$4.set(CACHE_KEY.THEME, theme);
927
+ wsCache$3.set(CACHE_KEY.THEME, theme);
922
928
  },
923
929
  setCssVarTheme() {
924
930
  this.isSetTheme = true;
@@ -954,7 +960,7 @@ const useDesign = () => {
954
960
  getPrefixCls: getPrefixCls2
955
961
  };
956
962
  };
957
- const _sfc_main$w = /* @__PURE__ */ Object.assign({ name: "BackTop" }, {
963
+ const _sfc_main$y = /* @__PURE__ */ Object.assign({ name: "BackTop" }, {
958
964
  __name: "Backtop",
959
965
  setup(__props) {
960
966
  const { getPrefixCls: getPrefixCls2, variables: variables2 } = useDesign();
@@ -983,12 +989,6 @@ const isUrl = (path) => {
983
989
  const reg = /(((^https?:(?:\/\/)?)(?:[-:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%#\/.\w-_]*)?\??(?:[-\+=&%@.\w_]*)#?(?:[\w]*))?)$/;
984
990
  return reg.test(path);
985
991
  };
986
- const pathResolve = (parentPath, path) => {
987
- if (isUrl(path))
988
- return path;
989
- const childPath = path.startsWith("/") || !path ? path : `/${path}`;
990
- return `${parentPath}${childPath}`.replace(/\/\//g, "/");
991
- };
992
992
  const flatMultiLevelRoutes = (routes) => {
993
993
  const modules = cloneDeep(routes);
994
994
  for (let index = 0; index < modules.length; index++) {
@@ -1044,7 +1044,6 @@ const addToChildren = (routes, children, routeModule) => {
1044
1044
  }
1045
1045
  }
1046
1046
  };
1047
- const { wsCache: wsCache$3 } = useCache();
1048
1047
  const usePermissionStore = defineStore("layout-permission", {
1049
1048
  state: () => ({
1050
1049
  routers: [],
@@ -1052,7 +1051,9 @@ const usePermissionStore = defineStore("layout-permission", {
1052
1051
  menuTabRouters: [],
1053
1052
  leftMenuRouters: [],
1054
1053
  moduleRouters: [],
1055
- moduleId: void 0
1054
+ moduleId: void 0,
1055
+ roleRouters: []
1056
+ // 菜单数据存储到 state,确保响应式
1056
1057
  }),
1057
1058
  getters: {
1058
1059
  getRouters() {
@@ -1071,8 +1072,7 @@ const usePermissionStore = defineStore("layout-permission", {
1071
1072
  return this.leftMenuRouters;
1072
1073
  },
1073
1074
  getRoleRouters() {
1074
- const roleRouters = wsCache$3.get(CACHE_KEY.ROLE_ROUTERS);
1075
- return roleRouters || [];
1075
+ return this.roleRouters;
1076
1076
  },
1077
1077
  getModuleRouters() {
1078
1078
  return this.moduleRouters;
@@ -1092,6 +1092,9 @@ const usePermissionStore = defineStore("layout-permission", {
1092
1092
  setMenuTabRouters(routers) {
1093
1093
  this.menuTabRouters = routers;
1094
1094
  },
1095
+ setRoleRouters(roleRouters) {
1096
+ this.roleRouters = roleRouters || [];
1097
+ },
1095
1098
  setLeftMenuRouters(path = "", children = []) {
1096
1099
  const basePath = path ? path.startsWith("/") ? path : `/${path}` : "";
1097
1100
  const routers = children.map((child) => {
@@ -1115,6 +1118,28 @@ const usePermissionStore = defineStore("layout-permission", {
1115
1118
  return { ...child, path: `${parentPath}${childPath}` };
1116
1119
  });
1117
1120
  }
1121
+ },
1122
+ resetState() {
1123
+ this.routers = [];
1124
+ this.addRouters = [];
1125
+ this.menuTabRouters = [];
1126
+ this.leftMenuRouters = [];
1127
+ this.moduleRouters = [];
1128
+ this.moduleId = void 0;
1129
+ this.roleRouters = [];
1130
+ },
1131
+ // 处理模块对应菜单(通过模块code)
1132
+ setModuleRoutersByCode(moduleCode) {
1133
+ const findRouter = this.getRoleRouters.find((router) => router.moduleCode === moduleCode);
1134
+ if (findRouter) {
1135
+ this.moduleId = findRouter.id;
1136
+ const children = findRouter.children || [];
1137
+ const parentPath = findRouter.path ? findRouter.path.startsWith("/") ? findRouter.path : `/${findRouter.path}` : "";
1138
+ this.moduleRouters = children.map((child) => {
1139
+ const childPath = child.path ? parentPath.endsWith("/") ? child.path.startsWith("/") ? child.path.substring(1) : child.path : child.path.startsWith("/") ? child.path : `/${child.path}` : "";
1140
+ return { ...child, path: `${parentPath}${childPath}` };
1141
+ });
1142
+ }
1118
1143
  }
1119
1144
  },
1120
1145
  persist: false
@@ -3464,9 +3489,9 @@ try {
3464
3489
  }
3465
3490
  } catch (err) {
3466
3491
  }
3467
- const _hoisted_1$d = ["xlink:href"];
3468
- const _hoisted_2$b = ["data-icon"];
3469
- const _sfc_main$v = /* @__PURE__ */ Object.assign({ name: "Icon" }, {
3492
+ const _hoisted_1$e = ["xlink:href"];
3493
+ const _hoisted_2$c = ["data-icon"];
3494
+ const _sfc_main$x = /* @__PURE__ */ Object.assign({ name: "Icon" }, {
3470
3495
  __name: "Icon",
3471
3496
  props: {
3472
3497
  // icon name
@@ -3546,7 +3571,7 @@ const _sfc_main$v = /* @__PURE__ */ Object.assign({ name: "Icon" }, {
3546
3571
  key: 0,
3547
3572
  class: normalizeClass(unref(getSvgClass))
3548
3573
  }, [
3549
- createElementVNode("use", { "xlink:href": unref(symbolId) }, null, 8, _hoisted_1$d)
3574
+ createElementVNode("use", { "xlink:href": unref(symbolId) }, null, 8, _hoisted_1$e)
3550
3575
  ], 2)) : (openBlock(), createElementBlock("span", {
3551
3576
  key: 1,
3552
3577
  ref_key: "elRef",
@@ -3557,7 +3582,7 @@ const _sfc_main$v = /* @__PURE__ */ Object.assign({ name: "Icon" }, {
3557
3582
  createElementVNode("span", {
3558
3583
  class: normalizeClass(unref(getSvgClass)),
3559
3584
  "data-icon": unref(symbolId)
3560
- }, null, 10, _hoisted_2$b)
3585
+ }, null, 10, _hoisted_2$c)
3561
3586
  ], 6))
3562
3587
  ]),
3563
3588
  _: 1
@@ -3577,13 +3602,9 @@ const setI18n = (i18nInstance) => {
3577
3602
  i18n$1 = i18nInstance;
3578
3603
  };
3579
3604
  const getKey = (namespace2, key) => {
3580
- if (!namespace2) {
3581
- return key;
3582
- }
3583
- if (key.startsWith(namespace2)) {
3605
+ {
3584
3606
  return key;
3585
3607
  }
3586
- return `${namespace2}.${key}`;
3587
3608
  };
3588
3609
  const useI18n = (namespace2) => {
3589
3610
  const normalFn = {
@@ -3632,7 +3653,7 @@ const useRenderMenuTitle = () => {
3632
3653
  return mode == "vertical" && level == 0;
3633
3654
  }
3634
3655
  });
3635
- return createVNode(Fragment, null, [isIcon.value && icon ? createVNode(_sfc_main$v, {
3656
+ return createVNode(Fragment, null, [isIcon.value && icon ? createVNode(_sfc_main$x, {
3636
3657
  "icon": meta.icon
3637
3658
  }, null) : void 0, createVNode("span", {
3638
3659
  "class": [`${prefixCls$5}__title`, "overflow-hidden overflow-ellipsis whitespace-nowrap text-ellipsis"]
@@ -3642,6 +3663,25 @@ const useRenderMenuTitle = () => {
3642
3663
  renderMenuTitle: renderMenuTitle2
3643
3664
  };
3644
3665
  };
3666
+ const getRawRoute = (route) => {
3667
+ if (!route)
3668
+ return route;
3669
+ const { matched, ...opt } = route;
3670
+ return {
3671
+ ...opt,
3672
+ matched: matched ? matched.map((item) => ({
3673
+ meta: item.meta,
3674
+ name: item.name,
3675
+ path: item.path
3676
+ })) : void 0
3677
+ };
3678
+ };
3679
+ const pathResolve = (parentPath, path) => {
3680
+ if (isUrl(path))
3681
+ return path;
3682
+ const childPath = path.startsWith("/") || !path ? path : `/${path}`;
3683
+ return `${parentPath}${childPath}`.replace(/\/\//g, "/");
3684
+ };
3645
3685
  const {
3646
3686
  renderMenuTitle
3647
3687
  } = useRenderMenuTitle();
@@ -3691,6 +3731,39 @@ const useRenderMenuItem = () => {
3691
3731
  renderMenuItem
3692
3732
  };
3693
3733
  };
3734
+ const _sfc_main$w = /* @__PURE__ */ Object.assign({ name: "Collapse" }, {
3735
+ __name: "Collapse",
3736
+ props: {
3737
+ color: {
3738
+ type: String,
3739
+ default: ""
3740
+ }
3741
+ },
3742
+ setup(__props) {
3743
+ const { getPrefixCls: getPrefixCls2 } = useDesign();
3744
+ const prefixCls2 = getPrefixCls2("collapse");
3745
+ const appStore = useAppStore();
3746
+ const collapse = computed(() => appStore.getCollapse);
3747
+ const toggleCollapse = () => {
3748
+ const collapsed = unref(collapse);
3749
+ appStore.setCollapse(!collapsed);
3750
+ };
3751
+ return (_ctx, _cache) => {
3752
+ const _component_Icon = resolveComponent("Icon");
3753
+ return openBlock(), createElementBlock("div", {
3754
+ class: normalizeClass(`${unref(prefixCls2)} ${unref(collapse) ? "!px-16px" : "!px-20px"}`),
3755
+ onClick: toggleCollapse
3756
+ }, [
3757
+ createVNode(_component_Icon, {
3758
+ color: __props.color,
3759
+ icon: unref(collapse) ? "svg-icon:menu-fold" : "svg-icon:menu-unfold",
3760
+ class: "cursor-pointer"
3761
+ }, null, 8, ["color", "icon"])
3762
+ ], 2);
3763
+ };
3764
+ }
3765
+ });
3766
+ const Collapse = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["__scopeId", "data-v-6fa09378"]]);
3694
3767
  function _isSlot$2(s) {
3695
3768
  return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
3696
3769
  }
@@ -3698,7 +3771,7 @@ const {
3698
3771
  getPrefixCls: getPrefixCls$4
3699
3772
  } = useDesign();
3700
3773
  const prefixCls$4 = getPrefixCls$4("menu");
3701
- const _sfc_main$u = /* @__PURE__ */ defineComponent({
3774
+ const _sfc_main$v = /* @__PURE__ */ defineComponent({
3702
3775
  // eslint-disable-next-line vue/no-reserved-component-names
3703
3776
  name: "Menu",
3704
3777
  props: {
@@ -3794,1018 +3867,596 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
3794
3867
  };
3795
3868
  return () => createVNode("div", {
3796
3869
  "id": prefixCls$4,
3797
- "class": [`${prefixCls$4} ${prefixCls$4}__${unref(menuMode)}`, "h-[100%] overflow-hidden flex-col", {
3870
+ "class": [`${prefixCls$4} ${prefixCls$4}__${unref(menuMode)}`, "h-[100%] flex flex-col", {
3798
3871
  "w-[var(--left-menu-min-width)]": unref(collapse),
3799
3872
  "w-[var(--left-menu-max-width)]": !unref(collapse),
3800
3873
  "bg-[linear-gradient(var(--left-menu-bg-color))]": unref(layout) == "left" || unref(layout) == "topLeft" && props.mode == "vertical"
3801
3874
  }]
3802
- }, [renderMenuWrap()]);
3875
+ }, [createVNode("div", {
3876
+ "class": "flex-1 overflow-hidden"
3877
+ }, [renderMenuWrap()]), layout.value !== "top" ? createVNode(Collapse, {
3878
+ "color": "var(--top-header-text-color)"
3879
+ }, null) : void 0]);
3803
3880
  }
3804
3881
  });
3805
- const Menu = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["__scopeId", "data-v-f85f5936"]]);
3806
- const _sfc_main$t = /* @__PURE__ */ Object.assign({ name: "MenuTrigger" }, {
3807
- __name: "MenuTrigger",
3808
- props: {
3809
- active: {
3810
- type: Boolean,
3811
- default: false
3812
- }
3813
- },
3814
- emits: ["click", "toggle"],
3815
- setup(__props, { emit: __emit }) {
3816
- const { getPrefixCls: getPrefixCls2 } = useDesign();
3817
- const prefixCls2 = getPrefixCls2("menu-trigger");
3818
- const props = __props;
3819
- const emit = __emit;
3820
- const handleClick = () => {
3821
- emit("click");
3822
- emit("toggle", !props.active);
3823
- };
3824
- return (_ctx, _cache) => {
3825
- return openBlock(), createElementBlock("div", {
3826
- class: normalizeClass([unref(prefixCls2), "flex items-center justify-center cursor-pointer", { "is-active": props.active }]),
3827
- onClick: handleClick
3828
- }, [
3829
- createElementVNode("div", {
3830
- class: normalizeClass(`${unref(prefixCls2)}__hamburger-icon`)
3831
- }, _cache[0] || (_cache[0] = [
3832
- createElementVNode("span", { class: "line" }, null, -1),
3833
- createElementVNode("span", { class: "line" }, null, -1),
3834
- createElementVNode("span", { class: "line" }, null, -1)
3835
- ]), 2)
3836
- ], 2);
3837
- };
3882
+ const Menu = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["__scopeId", "data-v-474ce778"]]);
3883
+ var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
3884
+ function int2char(n2) {
3885
+ return BI_RM.charAt(n2);
3886
+ }
3887
+ function op_and(x, y) {
3888
+ return x & y;
3889
+ }
3890
+ function op_or(x, y) {
3891
+ return x | y;
3892
+ }
3893
+ function op_xor(x, y) {
3894
+ return x ^ y;
3895
+ }
3896
+ function op_andnot(x, y) {
3897
+ return x & ~y;
3898
+ }
3899
+ function lbit(x) {
3900
+ if (x == 0) {
3901
+ return -1;
3838
3902
  }
3839
- });
3840
- const MenuTrigger = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__scopeId", "data-v-08d82a5c"]]);
3841
- const _hoisted_1$c = { class: "sidebar-inner" };
3842
- const _hoisted_2$a = ["onClick"];
3843
- const _hoisted_3$9 = ["onClick"];
3844
- const _hoisted_4$7 = ["onClick"];
3845
- const _sfc_main$s = /* @__PURE__ */ Object.assign({ name: "ProductServicePanel" }, {
3846
- __name: "ProductServicePanel",
3847
- props: {
3848
- visible: {
3849
- type: Boolean,
3850
- default: false
3903
+ var r2 = 0;
3904
+ if ((x & 65535) == 0) {
3905
+ x >>= 16;
3906
+ r2 += 16;
3907
+ }
3908
+ if ((x & 255) == 0) {
3909
+ x >>= 8;
3910
+ r2 += 8;
3911
+ }
3912
+ if ((x & 15) == 0) {
3913
+ x >>= 4;
3914
+ r2 += 4;
3915
+ }
3916
+ if ((x & 3) == 0) {
3917
+ x >>= 2;
3918
+ r2 += 2;
3919
+ }
3920
+ if ((x & 1) == 0) {
3921
+ ++r2;
3922
+ }
3923
+ return r2;
3924
+ }
3925
+ function cbit(x) {
3926
+ var r2 = 0;
3927
+ while (x != 0) {
3928
+ x &= x - 1;
3929
+ ++r2;
3930
+ }
3931
+ return r2;
3932
+ }
3933
+ var b64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
3934
+ var b64pad = "=";
3935
+ function hex2b64(h) {
3936
+ var i;
3937
+ var c;
3938
+ var ret = "";
3939
+ for (i = 0; i + 3 <= h.length; i += 3) {
3940
+ c = parseInt(h.substring(i, i + 3), 16);
3941
+ ret += b64map.charAt(c >> 6) + b64map.charAt(c & 63);
3942
+ }
3943
+ if (i + 1 == h.length) {
3944
+ c = parseInt(h.substring(i, i + 1), 16);
3945
+ ret += b64map.charAt(c << 2);
3946
+ } else if (i + 2 == h.length) {
3947
+ c = parseInt(h.substring(i, i + 2), 16);
3948
+ ret += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4);
3949
+ }
3950
+ while ((ret.length & 3) > 0) {
3951
+ ret += b64pad;
3952
+ }
3953
+ return ret;
3954
+ }
3955
+ var decoder$1;
3956
+ var Hex = {
3957
+ decode: function(a) {
3958
+ var i;
3959
+ if (decoder$1 === void 0) {
3960
+ var hex = "0123456789ABCDEF";
3961
+ var ignore = " \f\n\r  \u2028\u2029";
3962
+ decoder$1 = {};
3963
+ for (i = 0; i < 16; ++i) {
3964
+ decoder$1[hex.charAt(i)] = i;
3965
+ }
3966
+ hex = hex.toLowerCase();
3967
+ for (i = 10; i < 16; ++i) {
3968
+ decoder$1[hex.charAt(i)] = i;
3969
+ }
3970
+ for (i = 0; i < ignore.length; ++i) {
3971
+ decoder$1[ignore.charAt(i)] = -1;
3972
+ }
3851
3973
  }
3852
- },
3853
- emits: ["update:visible", "select"],
3854
- setup(__props, { emit: __emit }) {
3855
- const { getPrefixCls: getPrefixCls2 } = useDesign();
3856
- const prefixCls2 = getPrefixCls2("product-service-panel");
3857
- const { t: t2 } = useI18n("layout");
3858
- const props = __props;
3859
- const emit = __emit;
3860
- const router = useRouter();
3861
- const permissionStore = usePermissionStore();
3862
- const searchKeyword = ref("");
3863
- const activeCategory = ref(0);
3864
- const routers = computed(() => permissionStore.getRoleRouters);
3865
- const filteredMenus = computed(() => {
3866
- const keyword = searchKeyword.value.toLowerCase().trim();
3867
- const filterHiddenMenus = (items) => {
3868
- if (!items || !Array.isArray(items))
3869
- return [];
3870
- return items.filter((item) => !!item.visible).map((item) => ({
3871
- ...item,
3872
- children: item.children ? filterHiddenMenus(item.children) : []
3873
- }));
3874
- };
3875
- const baseMenus = filterHiddenMenus(routers.value);
3876
- if (!keyword) {
3877
- return baseMenus;
3974
+ var out = [];
3975
+ var bits = 0;
3976
+ var char_count = 0;
3977
+ for (i = 0; i < a.length; ++i) {
3978
+ var c = a.charAt(i);
3979
+ if (c == "=") {
3980
+ break;
3878
3981
  }
3879
- const filterFn = (items) => {
3880
- return items.reduce((result, item) => {
3881
- var _a2;
3882
- const title = ((_a2 = item.meta) == null ? void 0 : _a2.title) || "";
3883
- const isMatch = title.toLowerCase().includes(keyword);
3884
- const children = item.children ? filterFn(item.children) : [];
3885
- if (isMatch || children.length > 0) {
3886
- result.push({
3887
- ...item,
3888
- children: children.length > 0 ? children : item.children
3889
- });
3890
- }
3891
- return result;
3892
- }, []);
3893
- };
3894
- return filterFn(baseMenus);
3895
- });
3896
- const groupedMenus = computed(() => {
3897
- return filteredMenus.value.map((menu) => {
3898
- var _a2, _b;
3899
- return {
3900
- id: menu.id,
3901
- title: ((_a2 = menu.meta) == null ? void 0 : _a2.title) || menu.name,
3902
- icon: (_b = menu.meta) == null ? void 0 : _b.icon,
3903
- path: menu.path,
3904
- modulePath: menu.modulePath,
3905
- children: (menu.children || []).filter((item) => {
3906
- var _a3;
3907
- return !((_a3 = item.meta) == null ? void 0 : _a3.hidden);
3908
- })
3909
- };
3910
- });
3911
- });
3912
- const currentCategoryMenus = computed(() => {
3913
- if (groupedMenus.value.length === 0)
3914
- return [];
3915
- const group = groupedMenus.value[activeCategory.value];
3916
- return (group == null ? void 0 : group.children) || [];
3917
- });
3918
- const joinPath = (...paths) => {
3919
- return paths.filter(Boolean).reduce((result, path) => {
3920
- if (!result)
3921
- return path;
3922
- const normalizedBase = result.endsWith("/") ? result.slice(0, -1) : result;
3923
- const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
3924
- return `${normalizedBase}/${normalizedPath}`;
3925
- }, "");
3926
- };
3927
- const getAccessiblePath = (item, parentPath = "") => {
3928
- const fullPath = joinPath(parentPath, item.path);
3929
- if (item.children && item.children.length > 0) {
3930
- const visibleChildren = item.children.filter((child) => {
3931
- var _a2;
3932
- return !((_a2 = child.meta) == null ? void 0 : _a2.hidden);
3933
- });
3934
- if (visibleChildren.length > 0) {
3935
- return getAccessiblePath(visibleChildren[0], fullPath);
3982
+ c = decoder$1[c];
3983
+ if (c == -1) {
3984
+ continue;
3985
+ }
3986
+ if (c === void 0) {
3987
+ throw new Error("Illegal character at offset " + i);
3988
+ }
3989
+ bits |= c;
3990
+ if (++char_count >= 2) {
3991
+ out[out.length] = bits;
3992
+ bits = 0;
3993
+ char_count = 0;
3994
+ } else {
3995
+ bits <<= 4;
3996
+ }
3997
+ }
3998
+ if (char_count) {
3999
+ throw new Error("Hex encoding incomplete: 4 bits missing");
4000
+ }
4001
+ return out;
4002
+ }
4003
+ };
4004
+ var decoder;
4005
+ var Base64 = {
4006
+ decode: function(a) {
4007
+ var i;
4008
+ if (decoder === void 0) {
4009
+ var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
4010
+ var ignore = "= \f\n\r  \u2028\u2029";
4011
+ decoder = /* @__PURE__ */ Object.create(null);
4012
+ for (i = 0; i < 64; ++i) {
4013
+ decoder[b64.charAt(i)] = i;
4014
+ }
4015
+ decoder["-"] = 62;
4016
+ decoder["_"] = 63;
4017
+ for (i = 0; i < ignore.length; ++i) {
4018
+ decoder[ignore.charAt(i)] = -1;
4019
+ }
4020
+ }
4021
+ var out = [];
4022
+ var bits = 0;
4023
+ var char_count = 0;
4024
+ for (i = 0; i < a.length; ++i) {
4025
+ var c = a.charAt(i);
4026
+ if (c == "=") {
4027
+ break;
4028
+ }
4029
+ c = decoder[c];
4030
+ if (c == -1) {
4031
+ continue;
4032
+ }
4033
+ if (c === void 0) {
4034
+ throw new Error("Illegal character at offset " + i);
4035
+ }
4036
+ bits |= c;
4037
+ if (++char_count >= 4) {
4038
+ out[out.length] = bits >> 16;
4039
+ out[out.length] = bits >> 8 & 255;
4040
+ out[out.length] = bits & 255;
4041
+ bits = 0;
4042
+ char_count = 0;
4043
+ } else {
4044
+ bits <<= 6;
4045
+ }
4046
+ }
4047
+ switch (char_count) {
4048
+ case 1:
4049
+ throw new Error("Base64 encoding incomplete: at least 2 bits missing");
4050
+ case 2:
4051
+ out[out.length] = bits >> 10;
4052
+ break;
4053
+ case 3:
4054
+ out[out.length] = bits >> 16;
4055
+ out[out.length] = bits >> 8 & 255;
4056
+ break;
4057
+ }
4058
+ return out;
4059
+ },
4060
+ re: /-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+\/=\s]+)====/,
4061
+ unarmor: function(a) {
4062
+ var m = Base64.re.exec(a);
4063
+ if (m) {
4064
+ if (m[1]) {
4065
+ a = m[1];
4066
+ } else if (m[2]) {
4067
+ a = m[2];
4068
+ } else {
4069
+ throw new Error("RegExp out of sync");
4070
+ }
4071
+ }
4072
+ return Base64.decode(a);
4073
+ }
4074
+ };
4075
+ var max = 1e13;
4076
+ var Int10 = (
4077
+ /** @class */
4078
+ function() {
4079
+ function Int102(value) {
4080
+ this.buf = [+value || 0];
4081
+ }
4082
+ Int102.prototype.mulAdd = function(m, c) {
4083
+ var b = this.buf;
4084
+ var l2 = b.length;
4085
+ var i;
4086
+ var t2;
4087
+ for (i = 0; i < l2; ++i) {
4088
+ t2 = b[i] * m + c;
4089
+ if (t2 < max) {
4090
+ c = 0;
4091
+ } else {
4092
+ c = 0 | t2 / max;
4093
+ t2 -= c * max;
3936
4094
  }
4095
+ b[i] = t2;
4096
+ }
4097
+ if (c > 0) {
4098
+ b[i] = c;
3937
4099
  }
3938
- return fullPath;
3939
- };
3940
- const closePanel = () => {
3941
- emit("update:visible", false);
3942
- searchKeyword.value = "";
3943
- activeCategory.value = 0;
3944
4100
  };
3945
- const handleSelect = (item, parentPath = "") => {
3946
- var _a2, _b;
3947
- const fullPath = getAccessiblePath(item, parentPath);
3948
- if (fullPath) {
3949
- const currentModuleId = permissionStore.getModuleId;
3950
- const selectedModuleId = (_a2 = groupedMenus.value[activeCategory.value]) == null ? void 0 : _a2.id;
3951
- if (selectedModuleId === currentModuleId) {
3952
- router.push(fullPath.startsWith("/") ? fullPath : `/${fullPath}`);
4101
+ Int102.prototype.sub = function(c) {
4102
+ var b = this.buf;
4103
+ var l2 = b.length;
4104
+ var i;
4105
+ var t2;
4106
+ for (i = 0; i < l2; ++i) {
4107
+ t2 = b[i] - c;
4108
+ if (t2 < 0) {
4109
+ t2 += max;
4110
+ c = 1;
3953
4111
  } else {
3954
- const currentOrigin = window.location.origin;
3955
- const modulePath = ((_b = groupedMenus.value[activeCategory.value]) == null ? void 0 : _b.modulePath) || "";
3956
- const moduleFullPath = joinPath(modulePath, fullPath);
3957
- const targetUrl = `${currentOrigin}${moduleFullPath.startsWith("/") ? moduleFullPath : `/${moduleFullPath}`}`;
3958
- window.location.href = targetUrl;
4112
+ c = 0;
3959
4113
  }
3960
- closePanel();
4114
+ b[i] = t2;
4115
+ }
4116
+ while (b[b.length - 1] === 0) {
4117
+ b.pop();
3961
4118
  }
3962
4119
  };
3963
- const handleCategorySelect = (index) => {
3964
- activeCategory.value = index;
4120
+ Int102.prototype.toString = function(base) {
4121
+ if ((base || 10) != 10) {
4122
+ throw new Error("only base 10 is supported");
4123
+ }
4124
+ var b = this.buf;
4125
+ var s = b[b.length - 1].toString();
4126
+ for (var i = b.length - 2; i >= 0; --i) {
4127
+ s += (max + b[i]).toString().substring(1);
4128
+ }
4129
+ return s;
3965
4130
  };
3966
- watch(() => props.visible, (val) => {
3967
- if (val) {
3968
- searchKeyword.value = "";
3969
- activeCategory.value = 0;
4131
+ Int102.prototype.valueOf = function() {
4132
+ var b = this.buf;
4133
+ var v = 0;
4134
+ for (var i = b.length - 1; i >= 0; --i) {
4135
+ v = v * max + b[i];
3970
4136
  }
3971
- });
3972
- return (_ctx, _cache) => {
3973
- return openBlock(), createBlock(Teleport, { to: "body" }, [
3974
- createVNode(Transition, { name: "fade" }, {
3975
- default: withCtx(() => [
3976
- __props.visible ? (openBlock(), createElementBlock("div", {
3977
- key: 0,
3978
- class: normalizeClass([unref(prefixCls2) + "__overlay"]),
3979
- onClick: closePanel
3980
- }, [
3981
- createVNode(Transition, { name: "slide-down" }, {
3982
- default: withCtx(() => [
3983
- __props.visible ? (openBlock(), createElementBlock("div", {
3984
- key: 0,
3985
- class: normalizeClass([unref(prefixCls2)]),
3986
- onClick: _cache[1] || (_cache[1] = withModifiers(() => {
3987
- }, ["stop"]))
3988
- }, [
3989
- createElementVNode("div", {
3990
- class: normalizeClass([unref(prefixCls2) + "__body"])
3991
- }, [
3992
- createElementVNode("div", {
3993
- class: normalizeClass([unref(prefixCls2) + "__sidebar"])
3994
- }, [
3995
- createElementVNode("div", {
3996
- class: normalizeClass([unref(prefixCls2) + "__sidebar-title"])
3997
- }, [
3998
- createElementVNode("span", null, toDisplayString(unref(t2)("common.allProducts")), 1)
3999
- ], 2),
4000
- createVNode(unref(ElScrollbar), null, {
4001
- default: withCtx(() => [
4002
- createElementVNode("div", _hoisted_1$c, [
4003
- (openBlock(true), createElementBlock(Fragment, null, renderList(groupedMenus.value, (group, index) => {
4004
- return openBlock(), createElementBlock("div", {
4005
- key: index,
4006
- class: normalizeClass([
4007
- unref(prefixCls2) + "__category",
4008
- { "is-active": activeCategory.value === index }
4009
- ]),
4010
- onClick: ($event) => handleCategorySelect(index)
4011
- }, [
4012
- createElementVNode("span", null, toDisplayString(group.title), 1)
4013
- ], 10, _hoisted_2$a);
4014
- }), 128))
4015
- ])
4016
- ]),
4017
- _: 1
4018
- })
4019
- ], 2),
4020
- createElementVNode("div", {
4021
- class: normalizeClass([unref(prefixCls2) + "__content"])
4022
- }, [
4023
- createElementVNode("div", {
4024
- class: normalizeClass([unref(prefixCls2) + "__header"])
4025
- }, [
4026
- createVNode(unref(ElInput), {
4027
- modelValue: searchKeyword.value,
4028
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchKeyword.value = $event),
4029
- placeholder: unref(t2)("common.searchMenu"),
4030
- clearable: "",
4031
- size: "default"
4032
- }, {
4033
- prefix: withCtx(() => [
4034
- createVNode(unref(_sfc_main$v), {
4035
- icon: "ep:search",
4036
- size: 16
4037
- })
4038
- ]),
4039
- _: 1
4040
- }, 8, ["modelValue", "placeholder"]),
4041
- createElementVNode("div", {
4042
- class: normalizeClass([unref(prefixCls2) + "__close"]),
4043
- onClick: closePanel
4044
- }, [
4045
- createVNode(unref(_sfc_main$v), {
4046
- icon: "ep:close",
4047
- size: 18
4048
- })
4049
- ], 2)
4050
- ], 2),
4051
- createVNode(unref(ElScrollbar), null, {
4052
- default: withCtx(() => [
4053
- createElementVNode("div", {
4054
- class: normalizeClass([unref(prefixCls2) + "__grid-container"])
4055
- }, [
4056
- currentCategoryMenus.value.length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(currentCategoryMenus.value, (secondMenu, index) => {
4057
- var _a2, _b;
4058
- return openBlock(), createElementBlock("div", {
4059
- key: index,
4060
- class: normalizeClass([unref(prefixCls2) + "__column"])
4061
- }, [
4062
- createElementVNode("div", {
4063
- class: normalizeClass([unref(prefixCls2) + "__column-title"])
4064
- }, [
4065
- createElementVNode("span", null, toDisplayString(((_a2 = secondMenu.meta) == null ? void 0 : _a2.title) || secondMenu.name), 1)
4066
- ], 2),
4067
- createElementVNode("div", {
4068
- class: normalizeClass([unref(prefixCls2) + "__column-list"])
4069
- }, [
4070
- secondMenu.children && secondMenu.children.length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(secondMenu.children.filter((c) => {
4071
- var _a3;
4072
- return !((_a3 = c.meta) == null ? void 0 : _a3.hidden);
4073
- }), (thirdMenu) => {
4074
- var _a3;
4075
- return openBlock(), createElementBlock("div", {
4076
- key: thirdMenu.path,
4077
- class: normalizeClass([unref(prefixCls2) + "__column-item"]),
4078
- onClick: ($event) => {
4079
- var _a4;
4080
- return handleSelect(thirdMenu, joinPath((_a4 = groupedMenus.value[activeCategory.value]) == null ? void 0 : _a4.path, secondMenu.path));
4081
- }
4082
- }, [
4083
- createElementVNode("span", null, toDisplayString(((_a3 = thirdMenu.meta) == null ? void 0 : _a3.title) || thirdMenu.name), 1)
4084
- ], 10, _hoisted_3$9);
4085
- }), 128)) : (openBlock(), createElementBlock("div", {
4086
- key: 1,
4087
- class: normalizeClass([
4088
- unref(prefixCls2) + "__column-item",
4089
- { [unref(prefixCls2) + "__column-item--disabled"]: secondMenu.type === 1 }
4090
- ]),
4091
- onClick: ($event) => {
4092
- var _a3;
4093
- return secondMenu.type === 2 && handleSelect(secondMenu, (_a3 = groupedMenus.value[activeCategory.value]) == null ? void 0 : _a3.path);
4094
- }
4095
- }, [
4096
- createElementVNode("span", null, toDisplayString(secondMenu.type === 1 ? unref(t2)("common.noData") || "暂无" : ((_b = secondMenu.meta) == null ? void 0 : _b.title) || secondMenu.name), 1)
4097
- ], 10, _hoisted_4$7))
4098
- ], 2)
4099
- ], 2);
4100
- }), 128)) : groupedMenus.value[activeCategory.value] ? (openBlock(), createElementBlock("div", {
4101
- key: 1,
4102
- class: normalizeClass([unref(prefixCls2) + "__column"])
4103
- }, [
4104
- createElementVNode("div", {
4105
- class: normalizeClass([unref(prefixCls2) + "__column-list"])
4106
- }, [
4107
- createElementVNode("div", {
4108
- class: normalizeClass([unref(prefixCls2) + "__column-item", unref(prefixCls2) + "__column-item--disabled"])
4109
- }, [
4110
- createElementVNode("span", null, toDisplayString(unref(t2)("common.noData") || "暂无"), 1)
4111
- ], 2)
4112
- ], 2)
4113
- ], 2)) : (openBlock(), createElementBlock("div", {
4114
- key: 2,
4115
- class: normalizeClass([unref(prefixCls2) + "__empty"])
4116
- }, [
4117
- createVNode(unref(_sfc_main$v), {
4118
- icon: "ant-design:inbox-outlined",
4119
- size: 48
4120
- }),
4121
- createElementVNode("span", null, toDisplayString(unref(t2)("common.noDataTitle")), 1)
4122
- ], 2))
4123
- ], 2)
4124
- ]),
4125
- _: 1
4126
- })
4127
- ], 2)
4128
- ], 2)
4129
- ], 2)) : createCommentVNode("", true)
4130
- ]),
4131
- _: 1
4132
- })
4133
- ], 2)) : createCommentVNode("", true)
4134
- ]),
4135
- _: 1
4136
- })
4137
- ]);
4137
+ return v;
4138
+ };
4139
+ Int102.prototype.simplify = function() {
4140
+ var b = this.buf;
4141
+ return b.length == 1 ? b[0] : this;
4138
4142
  };
4143
+ return Int102;
4144
+ }()
4145
+ );
4146
+ var ellipsis = "…";
4147
+ var reTimeS = /^(\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/;
4148
+ var reTimeL = /^(\d\d\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/;
4149
+ function stringCut(str, len) {
4150
+ if (str.length > len) {
4151
+ str = str.substring(0, len) + ellipsis;
4139
4152
  }
4140
- });
4141
- const ProductServicePanel = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-e90309ba"]]);
4142
- const _sfc_main$r = /* @__PURE__ */ Object.assign({ name: "Logo" }, {
4143
- __name: "Logo",
4144
- emits: ["logo-click"],
4145
- setup(__props, { emit: __emit }) {
4146
- const emit = __emit;
4147
- const { getPrefixCls: getPrefixCls2 } = useDesign();
4148
- const prefixCls2 = getPrefixCls2("logo");
4149
- const appStore = useAppStore();
4150
- const title = computed(() => appStore.getTitle);
4151
- const layout = computed(() => appStore.getLayout);
4152
- const theme = computed(() => appStore.getTheme);
4153
- const panelVisible = ref(false);
4154
- const togglePanel = (isActive) => {
4155
- panelVisible.value = isActive;
4153
+ return str;
4154
+ }
4155
+ var Stream = (
4156
+ /** @class */
4157
+ function() {
4158
+ function Stream2(enc, pos) {
4159
+ this.hexDigits = "0123456789ABCDEF";
4160
+ if (enc instanceof Stream2) {
4161
+ this.enc = enc.enc;
4162
+ this.pos = enc.pos;
4163
+ } else {
4164
+ this.enc = enc;
4165
+ this.pos = pos;
4166
+ }
4167
+ }
4168
+ Stream2.prototype.get = function(pos) {
4169
+ if (pos === void 0) {
4170
+ pos = this.pos++;
4171
+ }
4172
+ if (pos >= this.enc.length) {
4173
+ throw new Error("Requesting byte offset ".concat(pos, " on a stream of length ").concat(this.enc.length));
4174
+ }
4175
+ return "string" === typeof this.enc ? this.enc.charCodeAt(pos) : this.enc[pos];
4156
4176
  };
4157
- const fontColor = computed(() => {
4158
- return theme.value === "whiteLight" ? "var(--el-color-primary)" : "#fff";
4159
- });
4160
- const handleClickLogo = () => {
4161
- emit("logo-click");
4177
+ Stream2.prototype.hexByte = function(b) {
4178
+ return this.hexDigits.charAt(b >> 4 & 15) + this.hexDigits.charAt(b & 15);
4162
4179
  };
4163
- return (_ctx, _cache) => {
4164
- const _component_Icon = resolveComponent("Icon");
4165
- return openBlock(), createElementBlock("div", null, [
4166
- createElementVNode("div", {
4167
- class: normalizeClass([
4168
- unref(prefixCls2),
4169
- `${unref(prefixCls2)}__Top`,
4170
- "flex !h-[var(--top-tool-height)] items-center cursor-default relative decoration-none overflow-hidden"
4171
- ])
4172
- }, [
4173
- createVNode(unref(MenuTrigger), {
4174
- class: "mr-12px",
4175
- active: panelVisible.value,
4176
- onToggle: togglePanel
4177
- }, null, 8, ["active"]),
4178
- createElementVNode("div", {
4179
- class: "flex cursor-pointer",
4180
- onClick: handleClickLogo
4181
- }, [
4182
- createVNode(_component_Icon, {
4183
- icon: "svg-icon:logo",
4184
- color: fontColor.value,
4185
- svgClass: "!w-full !h-full",
4186
- class: normalizeClass(["!w-[var(--logo-height)]", "!h-[var(--logo-height)]"])
4187
- }, null, 8, ["color"]),
4188
- createElementVNode("div", {
4189
- class: normalizeClass([
4190
- "ml-10px text-16px font-700",
4191
- {
4192
- "text-[var(--top-header-text-color)]": ["left", "top", "topLeft"].includes(layout.value)
4193
- }
4194
- ]),
4195
- style: normalizeStyle({ color: fontColor.value })
4196
- }, toDisplayString(title.value), 7)
4197
- ])
4198
- ], 2),
4199
- createVNode(unref(ProductServicePanel), {
4200
- visible: panelVisible.value,
4201
- "onUpdate:visible": _cache[0] || (_cache[0] = ($event) => panelVisible.value = $event)
4202
- }, null, 8, ["visible"])
4203
- ]);
4180
+ Stream2.prototype.hexDump = function(start, end, raw) {
4181
+ var s = "";
4182
+ for (var i = start; i < end; ++i) {
4183
+ s += this.hexByte(this.get(i));
4184
+ if (raw !== true) {
4185
+ switch (i & 15) {
4186
+ case 7:
4187
+ s += " ";
4188
+ break;
4189
+ case 15:
4190
+ s += "\n";
4191
+ break;
4192
+ default:
4193
+ s += " ";
4194
+ }
4195
+ }
4196
+ }
4197
+ return s;
4204
4198
  };
4205
- }
4206
- });
4207
- const _hoisted_1$b = { class: "w-full min-w-1000px" };
4208
- const _sfc_main$q = /* @__PURE__ */ Object.assign({ name: "AppView" }, {
4209
- __name: "AppView",
4210
- setup(__props) {
4211
- const routerAlive = ref(true);
4212
- const reload = () => {
4213
- routerAlive.value = false;
4214
- nextTick(() => routerAlive.value = true);
4199
+ Stream2.prototype.isASCII = function(start, end) {
4200
+ for (var i = start; i < end; ++i) {
4201
+ var c = this.get(i);
4202
+ if (c < 32 || c > 176) {
4203
+ return false;
4204
+ }
4205
+ }
4206
+ return true;
4215
4207
  };
4216
- provide("reload", reload);
4217
- return (_ctx, _cache) => {
4218
- const _component_router_view = resolveComponent("router-view");
4219
- return openBlock(), createElementBlock("section", _hoisted_1$b, [
4220
- unref(routerAlive) ? (openBlock(), createBlock(_component_router_view, { key: 0 }, {
4221
- default: withCtx(({ Component, route }) => [
4222
- (openBlock(), createBlock(resolveDynamicComponent(Component), {
4223
- key: route.fullPath
4224
- }))
4225
- ]),
4226
- _: 1
4227
- })) : createCommentVNode("", true)
4228
- ]);
4208
+ Stream2.prototype.parseStringISO = function(start, end) {
4209
+ var s = "";
4210
+ for (var i = start; i < end; ++i) {
4211
+ s += String.fromCharCode(this.get(i));
4212
+ }
4213
+ return s;
4229
4214
  };
4230
- }
4231
- });
4232
- var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
4233
- function int2char(n2) {
4234
- return BI_RM.charAt(n2);
4235
- }
4236
- function op_and(x, y) {
4237
- return x & y;
4238
- }
4239
- function op_or(x, y) {
4240
- return x | y;
4241
- }
4242
- function op_xor(x, y) {
4243
- return x ^ y;
4244
- }
4245
- function op_andnot(x, y) {
4246
- return x & ~y;
4247
- }
4248
- function lbit(x) {
4249
- if (x == 0) {
4250
- return -1;
4251
- }
4252
- var r2 = 0;
4253
- if ((x & 65535) == 0) {
4254
- x >>= 16;
4255
- r2 += 16;
4256
- }
4257
- if ((x & 255) == 0) {
4258
- x >>= 8;
4259
- r2 += 8;
4260
- }
4261
- if ((x & 15) == 0) {
4262
- x >>= 4;
4263
- r2 += 4;
4264
- }
4265
- if ((x & 3) == 0) {
4266
- x >>= 2;
4267
- r2 += 2;
4268
- }
4269
- if ((x & 1) == 0) {
4270
- ++r2;
4271
- }
4272
- return r2;
4273
- }
4274
- function cbit(x) {
4275
- var r2 = 0;
4276
- while (x != 0) {
4277
- x &= x - 1;
4278
- ++r2;
4279
- }
4280
- return r2;
4281
- }
4282
- var b64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
4283
- var b64pad = "=";
4284
- function hex2b64(h) {
4285
- var i;
4286
- var c;
4287
- var ret = "";
4288
- for (i = 0; i + 3 <= h.length; i += 3) {
4289
- c = parseInt(h.substring(i, i + 3), 16);
4290
- ret += b64map.charAt(c >> 6) + b64map.charAt(c & 63);
4291
- }
4292
- if (i + 1 == h.length) {
4293
- c = parseInt(h.substring(i, i + 1), 16);
4294
- ret += b64map.charAt(c << 2);
4295
- } else if (i + 2 == h.length) {
4296
- c = parseInt(h.substring(i, i + 2), 16);
4297
- ret += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4);
4298
- }
4299
- while ((ret.length & 3) > 0) {
4300
- ret += b64pad;
4301
- }
4302
- return ret;
4303
- }
4304
- var decoder$1;
4305
- var Hex = {
4306
- decode: function(a) {
4307
- var i;
4308
- if (decoder$1 === void 0) {
4309
- var hex = "0123456789ABCDEF";
4310
- var ignore = " \f\n\r  \u2028\u2029";
4311
- decoder$1 = {};
4312
- for (i = 0; i < 16; ++i) {
4313
- decoder$1[hex.charAt(i)] = i;
4215
+ Stream2.prototype.parseStringUTF = function(start, end) {
4216
+ var s = "";
4217
+ for (var i = start; i < end; ) {
4218
+ var c = this.get(i++);
4219
+ if (c < 128) {
4220
+ s += String.fromCharCode(c);
4221
+ } else if (c > 191 && c < 224) {
4222
+ s += String.fromCharCode((c & 31) << 6 | this.get(i++) & 63);
4223
+ } else {
4224
+ s += String.fromCharCode((c & 15) << 12 | (this.get(i++) & 63) << 6 | this.get(i++) & 63);
4225
+ }
4314
4226
  }
4315
- hex = hex.toLowerCase();
4316
- for (i = 10; i < 16; ++i) {
4317
- decoder$1[hex.charAt(i)] = i;
4227
+ return s;
4228
+ };
4229
+ Stream2.prototype.parseStringBMP = function(start, end) {
4230
+ var str = "";
4231
+ var hi;
4232
+ var lo;
4233
+ for (var i = start; i < end; ) {
4234
+ hi = this.get(i++);
4235
+ lo = this.get(i++);
4236
+ str += String.fromCharCode(hi << 8 | lo);
4318
4237
  }
4319
- for (i = 0; i < ignore.length; ++i) {
4320
- decoder$1[ignore.charAt(i)] = -1;
4238
+ return str;
4239
+ };
4240
+ Stream2.prototype.parseTime = function(start, end, shortYear) {
4241
+ var s = this.parseStringISO(start, end);
4242
+ var m = (shortYear ? reTimeS : reTimeL).exec(s);
4243
+ if (!m) {
4244
+ return "Unrecognized time: " + s;
4321
4245
  }
4322
- }
4323
- var out = [];
4324
- var bits = 0;
4325
- var char_count = 0;
4326
- for (i = 0; i < a.length; ++i) {
4327
- var c = a.charAt(i);
4328
- if (c == "=") {
4329
- break;
4246
+ if (shortYear) {
4247
+ m[1] = +m[1];
4248
+ m[1] += +m[1] < 70 ? 2e3 : 1900;
4330
4249
  }
4331
- c = decoder$1[c];
4332
- if (c == -1) {
4333
- continue;
4250
+ s = m[1] + "-" + m[2] + "-" + m[3] + " " + m[4];
4251
+ if (m[5]) {
4252
+ s += ":" + m[5];
4253
+ if (m[6]) {
4254
+ s += ":" + m[6];
4255
+ if (m[7]) {
4256
+ s += "." + m[7];
4257
+ }
4258
+ }
4334
4259
  }
4335
- if (c === void 0) {
4336
- throw new Error("Illegal character at offset " + i);
4260
+ if (m[8]) {
4261
+ s += " UTC";
4262
+ if (m[8] != "Z") {
4263
+ s += m[8];
4264
+ if (m[9]) {
4265
+ s += ":" + m[9];
4266
+ }
4267
+ }
4337
4268
  }
4338
- bits |= c;
4339
- if (++char_count >= 2) {
4340
- out[out.length] = bits;
4341
- bits = 0;
4342
- char_count = 0;
4343
- } else {
4344
- bits <<= 4;
4269
+ return s;
4270
+ };
4271
+ Stream2.prototype.parseInteger = function(start, end) {
4272
+ var v = this.get(start);
4273
+ var neg = v > 127;
4274
+ var pad = neg ? 255 : 0;
4275
+ var len;
4276
+ var s = "";
4277
+ while (v == pad && ++start < end) {
4278
+ v = this.get(start);
4345
4279
  }
4346
- }
4347
- if (char_count) {
4348
- throw new Error("Hex encoding incomplete: 4 bits missing");
4349
- }
4350
- return out;
4351
- }
4352
- };
4353
- var decoder;
4354
- var Base64 = {
4355
- decode: function(a) {
4356
- var i;
4357
- if (decoder === void 0) {
4358
- var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
4359
- var ignore = "= \f\n\r  \u2028\u2029";
4360
- decoder = /* @__PURE__ */ Object.create(null);
4361
- for (i = 0; i < 64; ++i) {
4362
- decoder[b64.charAt(i)] = i;
4280
+ len = end - start;
4281
+ if (len === 0) {
4282
+ return neg ? -1 : 0;
4363
4283
  }
4364
- decoder["-"] = 62;
4365
- decoder["_"] = 63;
4366
- for (i = 0; i < ignore.length; ++i) {
4367
- decoder[ignore.charAt(i)] = -1;
4284
+ if (len > 4) {
4285
+ s = v;
4286
+ len <<= 3;
4287
+ while (((+s ^ pad) & 128) == 0) {
4288
+ s = +s << 1;
4289
+ --len;
4290
+ }
4291
+ s = "(" + len + " bit)\n";
4368
4292
  }
4369
- }
4370
- var out = [];
4371
- var bits = 0;
4372
- var char_count = 0;
4373
- for (i = 0; i < a.length; ++i) {
4374
- var c = a.charAt(i);
4375
- if (c == "=") {
4376
- break;
4293
+ if (neg) {
4294
+ v = v - 256;
4377
4295
  }
4378
- c = decoder[c];
4379
- if (c == -1) {
4380
- continue;
4296
+ var n2 = new Int10(v);
4297
+ for (var i = start + 1; i < end; ++i) {
4298
+ n2.mulAdd(256, this.get(i));
4381
4299
  }
4382
- if (c === void 0) {
4383
- throw new Error("Illegal character at offset " + i);
4300
+ return s + n2.toString();
4301
+ };
4302
+ Stream2.prototype.parseBitString = function(start, end, maxLength) {
4303
+ var unusedBit = this.get(start);
4304
+ var lenBit = (end - start - 1 << 3) - unusedBit;
4305
+ var intro = "(" + lenBit + " bit)\n";
4306
+ var s = "";
4307
+ for (var i = start + 1; i < end; ++i) {
4308
+ var b = this.get(i);
4309
+ var skip = i == end - 1 ? unusedBit : 0;
4310
+ for (var j = 7; j >= skip; --j) {
4311
+ s += b >> j & 1 ? "1" : "0";
4312
+ }
4313
+ if (s.length > maxLength) {
4314
+ return intro + stringCut(s, maxLength);
4315
+ }
4384
4316
  }
4385
- bits |= c;
4386
- if (++char_count >= 4) {
4387
- out[out.length] = bits >> 16;
4388
- out[out.length] = bits >> 8 & 255;
4389
- out[out.length] = bits & 255;
4390
- bits = 0;
4391
- char_count = 0;
4392
- } else {
4393
- bits <<= 6;
4317
+ return intro + s;
4318
+ };
4319
+ Stream2.prototype.parseOctetString = function(start, end, maxLength) {
4320
+ if (this.isASCII(start, end)) {
4321
+ return stringCut(this.parseStringISO(start, end), maxLength);
4394
4322
  }
4395
- }
4396
- switch (char_count) {
4397
- case 1:
4398
- throw new Error("Base64 encoding incomplete: at least 2 bits missing");
4399
- case 2:
4400
- out[out.length] = bits >> 10;
4401
- break;
4402
- case 3:
4403
- out[out.length] = bits >> 16;
4404
- out[out.length] = bits >> 8 & 255;
4405
- break;
4406
- }
4407
- return out;
4408
- },
4409
- re: /-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+\/=\s]+)====/,
4410
- unarmor: function(a) {
4411
- var m = Base64.re.exec(a);
4412
- if (m) {
4413
- if (m[1]) {
4414
- a = m[1];
4415
- } else if (m[2]) {
4416
- a = m[2];
4417
- } else {
4418
- throw new Error("RegExp out of sync");
4323
+ var len = end - start;
4324
+ var s = "(" + len + " byte)\n";
4325
+ maxLength /= 2;
4326
+ if (len > maxLength) {
4327
+ end = start + maxLength;
4419
4328
  }
4420
- }
4421
- return Base64.decode(a);
4422
- }
4423
- };
4424
- var max = 1e13;
4425
- var Int10 = (
4426
- /** @class */
4427
- function() {
4428
- function Int102(value) {
4429
- this.buf = [+value || 0];
4430
- }
4431
- Int102.prototype.mulAdd = function(m, c) {
4432
- var b = this.buf;
4433
- var l2 = b.length;
4434
- var i;
4435
- var t2;
4436
- for (i = 0; i < l2; ++i) {
4437
- t2 = b[i] * m + c;
4438
- if (t2 < max) {
4439
- c = 0;
4440
- } else {
4441
- c = 0 | t2 / max;
4442
- t2 -= c * max;
4443
- }
4444
- b[i] = t2;
4329
+ for (var i = start; i < end; ++i) {
4330
+ s += this.hexByte(this.get(i));
4445
4331
  }
4446
- if (c > 0) {
4447
- b[i] = c;
4332
+ if (len > maxLength) {
4333
+ s += ellipsis;
4448
4334
  }
4335
+ return s;
4449
4336
  };
4450
- Int102.prototype.sub = function(c) {
4451
- var b = this.buf;
4452
- var l2 = b.length;
4453
- var i;
4454
- var t2;
4455
- for (i = 0; i < l2; ++i) {
4456
- t2 = b[i] - c;
4457
- if (t2 < 0) {
4458
- t2 += max;
4459
- c = 1;
4460
- } else {
4461
- c = 0;
4337
+ Stream2.prototype.parseOID = function(start, end, maxLength) {
4338
+ var s = "";
4339
+ var n2 = new Int10();
4340
+ var bits = 0;
4341
+ for (var i = start; i < end; ++i) {
4342
+ var v = this.get(i);
4343
+ n2.mulAdd(128, v & 127);
4344
+ bits += 7;
4345
+ if (!(v & 128)) {
4346
+ if (s === "") {
4347
+ n2 = n2.simplify();
4348
+ if (n2 instanceof Int10) {
4349
+ n2.sub(80);
4350
+ s = "2." + n2.toString();
4351
+ } else {
4352
+ var m = n2 < 80 ? n2 < 40 ? 0 : 1 : 2;
4353
+ s = m + "." + (n2 - m * 40);
4354
+ }
4355
+ } else {
4356
+ s += "." + n2.toString();
4357
+ }
4358
+ if (s.length > maxLength) {
4359
+ return stringCut(s, maxLength);
4360
+ }
4361
+ n2 = new Int10();
4362
+ bits = 0;
4462
4363
  }
4463
- b[i] = t2;
4464
- }
4465
- while (b[b.length - 1] === 0) {
4466
- b.pop();
4467
- }
4468
- };
4469
- Int102.prototype.toString = function(base) {
4470
- if ((base || 10) != 10) {
4471
- throw new Error("only base 10 is supported");
4472
4364
  }
4473
- var b = this.buf;
4474
- var s = b[b.length - 1].toString();
4475
- for (var i = b.length - 2; i >= 0; --i) {
4476
- s += (max + b[i]).toString().substring(1);
4365
+ if (bits > 0) {
4366
+ s += ".incomplete";
4477
4367
  }
4478
4368
  return s;
4479
4369
  };
4480
- Int102.prototype.valueOf = function() {
4481
- var b = this.buf;
4482
- var v = 0;
4483
- for (var i = b.length - 1; i >= 0; --i) {
4484
- v = v * max + b[i];
4485
- }
4486
- return v;
4487
- };
4488
- Int102.prototype.simplify = function() {
4489
- var b = this.buf;
4490
- return b.length == 1 ? b[0] : this;
4491
- };
4492
- return Int102;
4370
+ return Stream2;
4493
4371
  }()
4494
4372
  );
4495
- var ellipsis = "…";
4496
- var reTimeS = /^(\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/;
4497
- var reTimeL = /^(\d\d\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/;
4498
- function stringCut(str, len) {
4499
- if (str.length > len) {
4500
- str = str.substring(0, len) + ellipsis;
4501
- }
4502
- return str;
4503
- }
4504
- var Stream = (
4373
+ var ASN1 = (
4505
4374
  /** @class */
4506
4375
  function() {
4507
- function Stream2(enc, pos) {
4508
- this.hexDigits = "0123456789ABCDEF";
4509
- if (enc instanceof Stream2) {
4510
- this.enc = enc.enc;
4511
- this.pos = enc.pos;
4512
- } else {
4513
- this.enc = enc;
4514
- this.pos = pos;
4376
+ function ASN12(stream, header, length, tag, sub) {
4377
+ if (!(tag instanceof ASN1Tag)) {
4378
+ throw new Error("Invalid tag value.");
4515
4379
  }
4380
+ this.stream = stream;
4381
+ this.header = header;
4382
+ this.length = length;
4383
+ this.tag = tag;
4384
+ this.sub = sub;
4516
4385
  }
4517
- Stream2.prototype.get = function(pos) {
4518
- if (pos === void 0) {
4519
- pos = this.pos++;
4520
- }
4521
- if (pos >= this.enc.length) {
4522
- throw new Error("Requesting byte offset ".concat(pos, " on a stream of length ").concat(this.enc.length));
4523
- }
4524
- return "string" === typeof this.enc ? this.enc.charCodeAt(pos) : this.enc[pos];
4525
- };
4526
- Stream2.prototype.hexByte = function(b) {
4527
- return this.hexDigits.charAt(b >> 4 & 15) + this.hexDigits.charAt(b & 15);
4528
- };
4529
- Stream2.prototype.hexDump = function(start, end, raw) {
4530
- var s = "";
4531
- for (var i = start; i < end; ++i) {
4532
- s += this.hexByte(this.get(i));
4533
- if (raw !== true) {
4534
- switch (i & 15) {
4386
+ ASN12.prototype.typeName = function() {
4387
+ switch (this.tag.tagClass) {
4388
+ case 0:
4389
+ switch (this.tag.tagNumber) {
4390
+ case 0:
4391
+ return "EOC";
4392
+ case 1:
4393
+ return "BOOLEAN";
4394
+ case 2:
4395
+ return "INTEGER";
4396
+ case 3:
4397
+ return "BIT_STRING";
4398
+ case 4:
4399
+ return "OCTET_STRING";
4400
+ case 5:
4401
+ return "NULL";
4402
+ case 6:
4403
+ return "OBJECT_IDENTIFIER";
4535
4404
  case 7:
4536
- s += " ";
4537
- break;
4538
- case 15:
4539
- s += "\n";
4540
- break;
4541
- default:
4542
- s += " ";
4405
+ return "ObjectDescriptor";
4406
+ case 8:
4407
+ return "EXTERNAL";
4408
+ case 9:
4409
+ return "REAL";
4410
+ case 10:
4411
+ return "ENUMERATED";
4412
+ case 11:
4413
+ return "EMBEDDED_PDV";
4414
+ case 12:
4415
+ return "UTF8String";
4416
+ case 16:
4417
+ return "SEQUENCE";
4418
+ case 17:
4419
+ return "SET";
4420
+ case 18:
4421
+ return "NumericString";
4422
+ case 19:
4423
+ return "PrintableString";
4424
+ case 20:
4425
+ return "TeletexString";
4426
+ case 21:
4427
+ return "VideotexString";
4428
+ case 22:
4429
+ return "IA5String";
4430
+ case 23:
4431
+ return "UTCTime";
4432
+ case 24:
4433
+ return "GeneralizedTime";
4434
+ case 25:
4435
+ return "GraphicString";
4436
+ case 26:
4437
+ return "VisibleString";
4438
+ case 27:
4439
+ return "GeneralString";
4440
+ case 28:
4441
+ return "UniversalString";
4442
+ case 30:
4443
+ return "BMPString";
4543
4444
  }
4544
- }
4445
+ return "Universal_" + this.tag.tagNumber.toString();
4446
+ case 1:
4447
+ return "Application_" + this.tag.tagNumber.toString();
4448
+ case 2:
4449
+ return "[" + this.tag.tagNumber.toString() + "]";
4450
+ case 3:
4451
+ return "Private_" + this.tag.tagNumber.toString();
4545
4452
  }
4546
- return s;
4547
4453
  };
4548
- Stream2.prototype.isASCII = function(start, end) {
4549
- for (var i = start; i < end; ++i) {
4550
- var c = this.get(i);
4551
- if (c < 32 || c > 176) {
4552
- return false;
4553
- }
4454
+ ASN12.prototype.content = function(maxLength) {
4455
+ if (this.tag === void 0) {
4456
+ return null;
4554
4457
  }
4555
- return true;
4556
- };
4557
- Stream2.prototype.parseStringISO = function(start, end) {
4558
- var s = "";
4559
- for (var i = start; i < end; ++i) {
4560
- s += String.fromCharCode(this.get(i));
4561
- }
4562
- return s;
4563
- };
4564
- Stream2.prototype.parseStringUTF = function(start, end) {
4565
- var s = "";
4566
- for (var i = start; i < end; ) {
4567
- var c = this.get(i++);
4568
- if (c < 128) {
4569
- s += String.fromCharCode(c);
4570
- } else if (c > 191 && c < 224) {
4571
- s += String.fromCharCode((c & 31) << 6 | this.get(i++) & 63);
4572
- } else {
4573
- s += String.fromCharCode((c & 15) << 12 | (this.get(i++) & 63) << 6 | this.get(i++) & 63);
4574
- }
4575
- }
4576
- return s;
4577
- };
4578
- Stream2.prototype.parseStringBMP = function(start, end) {
4579
- var str = "";
4580
- var hi;
4581
- var lo;
4582
- for (var i = start; i < end; ) {
4583
- hi = this.get(i++);
4584
- lo = this.get(i++);
4585
- str += String.fromCharCode(hi << 8 | lo);
4586
- }
4587
- return str;
4588
- };
4589
- Stream2.prototype.parseTime = function(start, end, shortYear) {
4590
- var s = this.parseStringISO(start, end);
4591
- var m = (shortYear ? reTimeS : reTimeL).exec(s);
4592
- if (!m) {
4593
- return "Unrecognized time: " + s;
4594
- }
4595
- if (shortYear) {
4596
- m[1] = +m[1];
4597
- m[1] += +m[1] < 70 ? 2e3 : 1900;
4598
- }
4599
- s = m[1] + "-" + m[2] + "-" + m[3] + " " + m[4];
4600
- if (m[5]) {
4601
- s += ":" + m[5];
4602
- if (m[6]) {
4603
- s += ":" + m[6];
4604
- if (m[7]) {
4605
- s += "." + m[7];
4606
- }
4607
- }
4608
- }
4609
- if (m[8]) {
4610
- s += " UTC";
4611
- if (m[8] != "Z") {
4612
- s += m[8];
4613
- if (m[9]) {
4614
- s += ":" + m[9];
4615
- }
4616
- }
4617
- }
4618
- return s;
4619
- };
4620
- Stream2.prototype.parseInteger = function(start, end) {
4621
- var v = this.get(start);
4622
- var neg = v > 127;
4623
- var pad = neg ? 255 : 0;
4624
- var len;
4625
- var s = "";
4626
- while (v == pad && ++start < end) {
4627
- v = this.get(start);
4628
- }
4629
- len = end - start;
4630
- if (len === 0) {
4631
- return neg ? -1 : 0;
4632
- }
4633
- if (len > 4) {
4634
- s = v;
4635
- len <<= 3;
4636
- while (((+s ^ pad) & 128) == 0) {
4637
- s = +s << 1;
4638
- --len;
4639
- }
4640
- s = "(" + len + " bit)\n";
4641
- }
4642
- if (neg) {
4643
- v = v - 256;
4644
- }
4645
- var n2 = new Int10(v);
4646
- for (var i = start + 1; i < end; ++i) {
4647
- n2.mulAdd(256, this.get(i));
4648
- }
4649
- return s + n2.toString();
4650
- };
4651
- Stream2.prototype.parseBitString = function(start, end, maxLength) {
4652
- var unusedBit = this.get(start);
4653
- var lenBit = (end - start - 1 << 3) - unusedBit;
4654
- var intro = "(" + lenBit + " bit)\n";
4655
- var s = "";
4656
- for (var i = start + 1; i < end; ++i) {
4657
- var b = this.get(i);
4658
- var skip = i == end - 1 ? unusedBit : 0;
4659
- for (var j = 7; j >= skip; --j) {
4660
- s += b >> j & 1 ? "1" : "0";
4661
- }
4662
- if (s.length > maxLength) {
4663
- return intro + stringCut(s, maxLength);
4664
- }
4665
- }
4666
- return intro + s;
4667
- };
4668
- Stream2.prototype.parseOctetString = function(start, end, maxLength) {
4669
- if (this.isASCII(start, end)) {
4670
- return stringCut(this.parseStringISO(start, end), maxLength);
4671
- }
4672
- var len = end - start;
4673
- var s = "(" + len + " byte)\n";
4674
- maxLength /= 2;
4675
- if (len > maxLength) {
4676
- end = start + maxLength;
4677
- }
4678
- for (var i = start; i < end; ++i) {
4679
- s += this.hexByte(this.get(i));
4680
- }
4681
- if (len > maxLength) {
4682
- s += ellipsis;
4683
- }
4684
- return s;
4685
- };
4686
- Stream2.prototype.parseOID = function(start, end, maxLength) {
4687
- var s = "";
4688
- var n2 = new Int10();
4689
- var bits = 0;
4690
- for (var i = start; i < end; ++i) {
4691
- var v = this.get(i);
4692
- n2.mulAdd(128, v & 127);
4693
- bits += 7;
4694
- if (!(v & 128)) {
4695
- if (s === "") {
4696
- n2 = n2.simplify();
4697
- if (n2 instanceof Int10) {
4698
- n2.sub(80);
4699
- s = "2." + n2.toString();
4700
- } else {
4701
- var m = n2 < 80 ? n2 < 40 ? 0 : 1 : 2;
4702
- s = m + "." + (n2 - m * 40);
4703
- }
4704
- } else {
4705
- s += "." + n2.toString();
4706
- }
4707
- if (s.length > maxLength) {
4708
- return stringCut(s, maxLength);
4709
- }
4710
- n2 = new Int10();
4711
- bits = 0;
4712
- }
4713
- }
4714
- if (bits > 0) {
4715
- s += ".incomplete";
4716
- }
4717
- return s;
4718
- };
4719
- return Stream2;
4720
- }()
4721
- );
4722
- var ASN1 = (
4723
- /** @class */
4724
- function() {
4725
- function ASN12(stream, header, length, tag, sub) {
4726
- if (!(tag instanceof ASN1Tag)) {
4727
- throw new Error("Invalid tag value.");
4728
- }
4729
- this.stream = stream;
4730
- this.header = header;
4731
- this.length = length;
4732
- this.tag = tag;
4733
- this.sub = sub;
4734
- }
4735
- ASN12.prototype.typeName = function() {
4736
- switch (this.tag.tagClass) {
4737
- case 0:
4738
- switch (this.tag.tagNumber) {
4739
- case 0:
4740
- return "EOC";
4741
- case 1:
4742
- return "BOOLEAN";
4743
- case 2:
4744
- return "INTEGER";
4745
- case 3:
4746
- return "BIT_STRING";
4747
- case 4:
4748
- return "OCTET_STRING";
4749
- case 5:
4750
- return "NULL";
4751
- case 6:
4752
- return "OBJECT_IDENTIFIER";
4753
- case 7:
4754
- return "ObjectDescriptor";
4755
- case 8:
4756
- return "EXTERNAL";
4757
- case 9:
4758
- return "REAL";
4759
- case 10:
4760
- return "ENUMERATED";
4761
- case 11:
4762
- return "EMBEDDED_PDV";
4763
- case 12:
4764
- return "UTF8String";
4765
- case 16:
4766
- return "SEQUENCE";
4767
- case 17:
4768
- return "SET";
4769
- case 18:
4770
- return "NumericString";
4771
- case 19:
4772
- return "PrintableString";
4773
- case 20:
4774
- return "TeletexString";
4775
- case 21:
4776
- return "VideotexString";
4777
- case 22:
4778
- return "IA5String";
4779
- case 23:
4780
- return "UTCTime";
4781
- case 24:
4782
- return "GeneralizedTime";
4783
- case 25:
4784
- return "GraphicString";
4785
- case 26:
4786
- return "VisibleString";
4787
- case 27:
4788
- return "GeneralString";
4789
- case 28:
4790
- return "UniversalString";
4791
- case 30:
4792
- return "BMPString";
4793
- }
4794
- return "Universal_" + this.tag.tagNumber.toString();
4795
- case 1:
4796
- return "Application_" + this.tag.tagNumber.toString();
4797
- case 2:
4798
- return "[" + this.tag.tagNumber.toString() + "]";
4799
- case 3:
4800
- return "Private_" + this.tag.tagNumber.toString();
4801
- }
4802
- };
4803
- ASN12.prototype.content = function(maxLength) {
4804
- if (this.tag === void 0) {
4805
- return null;
4806
- }
4807
- if (maxLength === void 0) {
4808
- maxLength = Infinity;
4458
+ if (maxLength === void 0) {
4459
+ maxLength = Infinity;
4809
4460
  }
4810
4461
  var content = this.posContent();
4811
4462
  var len = Math.abs(this.length);
@@ -7792,176 +7443,1231 @@ var __extends = /* @__PURE__ */ function() {
7792
7443
  new KJUR.asn1.DERInteger({ bigint: this.coeff })
7793
7444
  ]
7794
7445
  };
7795
- var seq = new KJUR.asn1.DERSequence(options);
7796
- return seq.getEncodedHex();
7797
- };
7798
- JSEncryptRSAKey.prototype.getPrivateBaseKeyB64 = function() {
7799
- return hex2b64(this.getPrivateBaseKey());
7800
- };
7801
- JSEncryptRSAKey.prototype.getPublicBaseKey = function() {
7802
- var first_sequence = new KJUR.asn1.DERSequence({
7803
- array: [
7804
- new KJUR.asn1.DERObjectIdentifier({ oid: "1.2.840.113549.1.1.1" }),
7805
- new KJUR.asn1.DERNull()
7806
- ]
7807
- });
7808
- var second_sequence = new KJUR.asn1.DERSequence({
7809
- array: [
7810
- new KJUR.asn1.DERInteger({ bigint: this.n }),
7811
- new KJUR.asn1.DERInteger({ int: this.e })
7812
- ]
7813
- });
7814
- var bit_string = new KJUR.asn1.DERBitString({
7815
- hex: "00" + second_sequence.getEncodedHex()
7816
- });
7817
- var seq = new KJUR.asn1.DERSequence({
7818
- array: [first_sequence, bit_string]
7446
+ var seq = new KJUR.asn1.DERSequence(options);
7447
+ return seq.getEncodedHex();
7448
+ };
7449
+ JSEncryptRSAKey.prototype.getPrivateBaseKeyB64 = function() {
7450
+ return hex2b64(this.getPrivateBaseKey());
7451
+ };
7452
+ JSEncryptRSAKey.prototype.getPublicBaseKey = function() {
7453
+ var first_sequence = new KJUR.asn1.DERSequence({
7454
+ array: [
7455
+ new KJUR.asn1.DERObjectIdentifier({ oid: "1.2.840.113549.1.1.1" }),
7456
+ new KJUR.asn1.DERNull()
7457
+ ]
7458
+ });
7459
+ var second_sequence = new KJUR.asn1.DERSequence({
7460
+ array: [
7461
+ new KJUR.asn1.DERInteger({ bigint: this.n }),
7462
+ new KJUR.asn1.DERInteger({ int: this.e })
7463
+ ]
7464
+ });
7465
+ var bit_string = new KJUR.asn1.DERBitString({
7466
+ hex: "00" + second_sequence.getEncodedHex()
7467
+ });
7468
+ var seq = new KJUR.asn1.DERSequence({
7469
+ array: [first_sequence, bit_string]
7470
+ });
7471
+ return seq.getEncodedHex();
7472
+ };
7473
+ JSEncryptRSAKey.prototype.getPublicBaseKeyB64 = function() {
7474
+ return hex2b64(this.getPublicBaseKey());
7475
+ };
7476
+ JSEncryptRSAKey.wordwrap = function(str, width) {
7477
+ width = width || 64;
7478
+ if (!str) {
7479
+ return str;
7480
+ }
7481
+ var regex2 = "(.{1," + width + "})( +|$\n?)|(.{1," + width + "})";
7482
+ return str.match(RegExp(regex2, "g")).join("\n");
7483
+ };
7484
+ JSEncryptRSAKey.prototype.getPrivateKey = function() {
7485
+ var key = "-----BEGIN RSA PRIVATE KEY-----\n";
7486
+ key += JSEncryptRSAKey.wordwrap(this.getPrivateBaseKeyB64()) + "\n";
7487
+ key += "-----END RSA PRIVATE KEY-----";
7488
+ return key;
7489
+ };
7490
+ JSEncryptRSAKey.prototype.getPublicKey = function() {
7491
+ var key = "-----BEGIN PUBLIC KEY-----\n";
7492
+ key += JSEncryptRSAKey.wordwrap(this.getPublicBaseKeyB64()) + "\n";
7493
+ key += "-----END PUBLIC KEY-----";
7494
+ return key;
7495
+ };
7496
+ JSEncryptRSAKey.hasPublicKeyProperty = function(obj) {
7497
+ obj = obj || {};
7498
+ return obj.hasOwnProperty("n") && obj.hasOwnProperty("e");
7499
+ };
7500
+ JSEncryptRSAKey.hasPrivateKeyProperty = function(obj) {
7501
+ obj = obj || {};
7502
+ return obj.hasOwnProperty("n") && obj.hasOwnProperty("e") && obj.hasOwnProperty("d") && obj.hasOwnProperty("p") && obj.hasOwnProperty("q") && obj.hasOwnProperty("dmp1") && obj.hasOwnProperty("dmq1") && obj.hasOwnProperty("coeff");
7503
+ };
7504
+ JSEncryptRSAKey.prototype.parsePropertiesFrom = function(obj) {
7505
+ this.n = obj.n;
7506
+ this.e = obj.e;
7507
+ if (obj.hasOwnProperty("d")) {
7508
+ this.d = obj.d;
7509
+ this.p = obj.p;
7510
+ this.q = obj.q;
7511
+ this.dmp1 = obj.dmp1;
7512
+ this.dmq1 = obj.dmq1;
7513
+ this.coeff = obj.coeff;
7514
+ }
7515
+ };
7516
+ return JSEncryptRSAKey;
7517
+ })(RSAKey);
7518
+ var _a;
7519
+ typeof process !== "undefined" ? (_a = process.env) === null || _a === void 0 ? void 0 : _a.npm_package_version : void 0;
7520
+ const { wsCache: wsCache$2 } = useCache();
7521
+ const AccessTokenKey = "ACCESS_TOKEN";
7522
+ const RefreshTokenKey = "REFRESH_TOKEN";
7523
+ const removeToken = () => {
7524
+ wsCache$2.delete(AccessTokenKey);
7525
+ wsCache$2.delete(RefreshTokenKey);
7526
+ };
7527
+ const { wsCache: wsCache$1 } = useCache();
7528
+ const useUserStore = defineStore("layout-user", {
7529
+ state: () => ({
7530
+ permissions: /* @__PURE__ */ new Set(),
7531
+ roles: [],
7532
+ isSetUser: false,
7533
+ user: {
7534
+ id: 0,
7535
+ avatar: "",
7536
+ nickname: "",
7537
+ deptId: 0,
7538
+ mobile: "",
7539
+ email: "",
7540
+ username: ""
7541
+ }
7542
+ }),
7543
+ getters: {
7544
+ getPermissions() {
7545
+ return this.permissions;
7546
+ },
7547
+ getRoles() {
7548
+ return this.roles;
7549
+ },
7550
+ getIsSetUser() {
7551
+ return this.isSetUser;
7552
+ },
7553
+ getUser() {
7554
+ return this.user;
7555
+ },
7556
+ getUserInfo() {
7557
+ const userInfo = wsCache$1.get(CACHE_KEY.USER);
7558
+ return userInfo;
7559
+ }
7560
+ },
7561
+ actions: {
7562
+ // 加载用户信息到 state 和缓存
7563
+ loadUserFromCacheAction(userInfo) {
7564
+ this.permissions = new Set(userInfo.permissions);
7565
+ this.roles = userInfo.roles;
7566
+ this.user = userInfo.user;
7567
+ this.isSetUser = true;
7568
+ wsCache$1.set(CACHE_KEY.USER, userInfo);
7569
+ const permissionStore = usePermissionStoreWithOut();
7570
+ permissionStore.setRoleRouters(userInfo.menus);
7571
+ },
7572
+ async setUserAvatarAction(avatar) {
7573
+ const userInfo = wsCache$1.get(CACHE_KEY.USER);
7574
+ this.user.avatar = avatar;
7575
+ userInfo.user.avatar = avatar;
7576
+ wsCache$1.set(CACHE_KEY.USER, userInfo);
7577
+ },
7578
+ async setUserNicknameAction(nickname) {
7579
+ const userInfo = wsCache$1.get(CACHE_KEY.USER);
7580
+ this.user.nickname = nickname;
7581
+ userInfo.user.nickname = nickname;
7582
+ wsCache$1.set(CACHE_KEY.USER, userInfo);
7583
+ },
7584
+ // 更新用户资料(昵称、手机号、邮箱)
7585
+ async updateUserProfileAction(user) {
7586
+ const userInfo = wsCache$1.get(CACHE_KEY.USER);
7587
+ this.user.nickname = user.nickname;
7588
+ this.user.mobile = user.mobile;
7589
+ this.user.email = user.email;
7590
+ userInfo.user.nickname = user.nickname;
7591
+ userInfo.user.mobile = user.mobile;
7592
+ userInfo.user.email = user.email;
7593
+ wsCache$1.set(CACHE_KEY.USER, userInfo);
7594
+ },
7595
+ async loginOut() {
7596
+ removeToken();
7597
+ deleteUserCache();
7598
+ const permissionStore = usePermissionStoreWithOut();
7599
+ permissionStore.resetState();
7600
+ this.resetState();
7601
+ },
7602
+ resetState() {
7603
+ this.permissions = /* @__PURE__ */ new Set();
7604
+ this.roles = [];
7605
+ this.isSetUser = false;
7606
+ this.user = {
7607
+ id: 0,
7608
+ avatar: "",
7609
+ nickname: "",
7610
+ deptId: 0
7611
+ };
7612
+ }
7613
+ }
7614
+ });
7615
+ const useUserStoreWithOut = () => {
7616
+ return useUserStore(store);
7617
+ };
7618
+ const useTagsViewStore = defineStore("layout-tagsView", {
7619
+ state: () => ({
7620
+ visitedViews: [],
7621
+ cachedViews: /* @__PURE__ */ new Set(),
7622
+ selectedTag: void 0
7623
+ }),
7624
+ getters: {
7625
+ getVisitedViews() {
7626
+ return this.visitedViews;
7627
+ },
7628
+ getCachedViews() {
7629
+ return Array.from(this.cachedViews);
7630
+ },
7631
+ getSelectedTag() {
7632
+ return this.selectedTag;
7633
+ }
7634
+ },
7635
+ actions: {
7636
+ // 新增缓存和tag
7637
+ addView(view) {
7638
+ this.addVisitedView(view);
7639
+ this.addCachedView();
7640
+ },
7641
+ // 新增tag
7642
+ addVisitedView(view) {
7643
+ var _a2, _b;
7644
+ if (this.visitedViews.some((v) => v.fullPath === view.fullPath))
7645
+ return;
7646
+ if ((_a2 = view.meta) == null ? void 0 : _a2.noTagsView)
7647
+ return;
7648
+ const visitedView = Object.assign({}, view, { title: ((_b = view.meta) == null ? void 0 : _b.title) || "no-name" });
7649
+ if (visitedView.meta) {
7650
+ const titleSuffixList = [];
7651
+ this.visitedViews.forEach((v) => {
7652
+ var _a3, _b2, _c;
7653
+ if (v.path === visitedView.path && ((_a3 = v.meta) == null ? void 0 : _a3.title) === ((_b2 = visitedView.meta) == null ? void 0 : _b2.title)) {
7654
+ titleSuffixList.push(((_c = v.meta) == null ? void 0 : _c.titleSuffix) || "1");
7655
+ }
7656
+ });
7657
+ if (titleSuffixList.length) {
7658
+ let titleSuffix = 1;
7659
+ while (titleSuffixList.includes(`${titleSuffix}`)) {
7660
+ titleSuffix += 1;
7661
+ }
7662
+ visitedView.meta.titleSuffix = titleSuffix === 1 ? void 0 : `${titleSuffix}`;
7663
+ }
7664
+ }
7665
+ this.visitedViews.push(visitedView);
7666
+ },
7667
+ // 新增缓存
7668
+ addCachedView() {
7669
+ var _a2;
7670
+ const cacheMap = /* @__PURE__ */ new Set();
7671
+ for (const v of this.visitedViews) {
7672
+ const item = getRawRoute(v);
7673
+ const needCache = !((_a2 = item.meta) == null ? void 0 : _a2.noCache);
7674
+ if (!needCache) {
7675
+ continue;
7676
+ }
7677
+ const name = item.name;
7678
+ cacheMap.add(name);
7679
+ }
7680
+ if (Array.from(this.cachedViews).sort().toString() === Array.from(cacheMap).sort().toString())
7681
+ return;
7682
+ this.cachedViews = cacheMap;
7683
+ },
7684
+ // 删除某个
7685
+ delView(view) {
7686
+ this.delVisitedView(view);
7687
+ this.delCachedView();
7688
+ },
7689
+ // 删除tag
7690
+ delVisitedView(view) {
7691
+ for (const [i, v] of this.visitedViews.entries()) {
7692
+ if (v.fullPath === view.fullPath) {
7693
+ this.visitedViews.splice(i, 1);
7694
+ break;
7695
+ }
7696
+ }
7697
+ },
7698
+ // 删除缓存
7699
+ delCachedView() {
7700
+ var _a2;
7701
+ if (((_a2 = this.selectedTag) == null ? void 0 : _a2.name) && this.cachedViews.has(this.selectedTag.name)) {
7702
+ this.cachedViews.delete(this.selectedTag.name);
7703
+ }
7704
+ },
7705
+ // 删除所有缓存和tag
7706
+ delAllViews() {
7707
+ this.delAllVisitedViews();
7708
+ this.delCachedView();
7709
+ },
7710
+ // 删除所有tag
7711
+ delAllVisitedViews() {
7712
+ const userStore = useUserStoreWithOut();
7713
+ this.visitedViews = userStore.getUser ? this.visitedViews.filter((tag) => {
7714
+ var _a2;
7715
+ return (_a2 = tag == null ? void 0 : tag.meta) == null ? void 0 : _a2.affix;
7716
+ }) : [];
7717
+ },
7718
+ // 删除其他
7719
+ delOthersViews(view) {
7720
+ this.delOthersVisitedViews(view);
7721
+ this.addCachedView();
7722
+ },
7723
+ // 删除其他tag
7724
+ delOthersVisitedViews(view) {
7725
+ this.visitedViews = this.visitedViews.filter((v) => {
7726
+ var _a2;
7727
+ return ((_a2 = v == null ? void 0 : v.meta) == null ? void 0 : _a2.affix) || v.fullPath === view.fullPath;
7728
+ });
7729
+ },
7730
+ // 删除左侧
7731
+ delLeftViews(view) {
7732
+ const index = findIndex(
7733
+ this.visitedViews,
7734
+ (v) => v.fullPath === view.fullPath
7735
+ );
7736
+ if (index > -1) {
7737
+ this.visitedViews = this.visitedViews.filter((v, i) => {
7738
+ var _a2;
7739
+ return ((_a2 = v == null ? void 0 : v.meta) == null ? void 0 : _a2.affix) || v.fullPath === view.fullPath || i > index;
7740
+ });
7741
+ this.addCachedView();
7742
+ }
7743
+ },
7744
+ // 删除右侧
7745
+ delRightViews(view) {
7746
+ const index = findIndex(
7747
+ this.visitedViews,
7748
+ (v) => v.fullPath === view.fullPath
7749
+ );
7750
+ if (index > -1) {
7751
+ this.visitedViews = this.visitedViews.filter((v, i) => {
7752
+ var _a2;
7753
+ return ((_a2 = v == null ? void 0 : v.meta) == null ? void 0 : _a2.affix) || v.fullPath === view.fullPath || i < index;
7754
+ });
7755
+ this.addCachedView();
7756
+ }
7757
+ },
7758
+ updateVisitedView(view) {
7759
+ for (let v of this.visitedViews) {
7760
+ if (v.fullPath === view.fullPath) {
7761
+ v = Object.assign(v, view);
7762
+ break;
7763
+ }
7764
+ }
7765
+ },
7766
+ // 设置当前选中的 tag
7767
+ setSelectedTag(tag) {
7768
+ this.selectedTag = tag;
7769
+ },
7770
+ setTitle(title, path) {
7771
+ var _a2;
7772
+ for (const v of this.visitedViews) {
7773
+ if (v.path === (path ?? ((_a2 = this.selectedTag) == null ? void 0 : _a2.path))) {
7774
+ v.meta.title = title;
7775
+ break;
7776
+ }
7777
+ }
7778
+ }
7779
+ },
7780
+ persist: false
7781
+ });
7782
+ const useTagsViewStoreWithOut = () => {
7783
+ return useTagsViewStore(store);
7784
+ };
7785
+ const filterAffixTags = (routes, parentPath = "") => {
7786
+ let tags = [];
7787
+ routes.forEach((route) => {
7788
+ const meta = route.meta;
7789
+ const tagPath = pathResolve(parentPath, route.path);
7790
+ if (meta == null ? void 0 : meta.affix) {
7791
+ tags.push({ ...route, path: tagPath, fullPath: tagPath });
7792
+ }
7793
+ if (route.children) {
7794
+ const tempTags = filterAffixTags(route.children, tagPath);
7795
+ if (tempTags.length >= 1) {
7796
+ tags = [...tags, ...tempTags];
7797
+ }
7798
+ }
7799
+ });
7800
+ return tags;
7801
+ };
7802
+ const _sfc_main$u = /* @__PURE__ */ Object.assign({ name: "ContextMenu" }, {
7803
+ __name: "ContextMenu",
7804
+ props: {
7805
+ schema: {
7806
+ type: Array,
7807
+ default: () => []
7808
+ },
7809
+ trigger: {
7810
+ type: String,
7811
+ default: "contextmenu"
7812
+ },
7813
+ tagItem: {
7814
+ type: Object,
7815
+ default: () => ({})
7816
+ }
7817
+ },
7818
+ emits: ["visibleChange"],
7819
+ setup(__props, { expose: __expose, emit: __emit }) {
7820
+ const { getPrefixCls: getPrefixCls2 } = useDesign();
7821
+ const prefixCls2 = getPrefixCls2("context-menu");
7822
+ const { t: t2 } = useI18n();
7823
+ const emit = __emit;
7824
+ const props = __props;
7825
+ const command = (item) => {
7826
+ item.command && item.command(item);
7827
+ };
7828
+ const visibleChange = (visible) => {
7829
+ emit("visibleChange", visible, props.tagItem);
7830
+ };
7831
+ const elDropdownMenuRef = ref();
7832
+ __expose({
7833
+ elDropdownMenuRef,
7834
+ tagItem: props.tagItem
7835
+ });
7836
+ return (_ctx, _cache) => {
7837
+ const _component_Icon = resolveComponent("Icon");
7838
+ return openBlock(), createBlock(unref(ElDropdown), {
7839
+ ref_key: "elDropdownMenuRef",
7840
+ ref: elDropdownMenuRef,
7841
+ class: normalizeClass(unref(prefixCls2)),
7842
+ trigger: __props.trigger,
7843
+ placement: "bottom-start",
7844
+ "popper-class": "v-context-menu-popper",
7845
+ onCommand: command,
7846
+ onVisibleChange: visibleChange
7847
+ }, {
7848
+ dropdown: withCtx(() => [
7849
+ createVNode(unref(ElDropdownMenu), null, {
7850
+ default: withCtx(() => [
7851
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.schema, (item, index) => {
7852
+ return openBlock(), createBlock(unref(ElDropdownItem), {
7853
+ key: `dropdown${index}`,
7854
+ command: item,
7855
+ disabled: item.disabled,
7856
+ divided: item.divided
7857
+ }, {
7858
+ default: withCtx(() => [
7859
+ item.icon ? (openBlock(), createBlock(_component_Icon, {
7860
+ key: 0,
7861
+ icon: item.icon
7862
+ }, null, 8, ["icon"])) : createCommentVNode("", true),
7863
+ createTextVNode(" " + toDisplayString(unref(t2)(item.label)), 1)
7864
+ ]),
7865
+ _: 2
7866
+ }, 1032, ["command", "disabled", "divided"]);
7867
+ }), 128))
7868
+ ]),
7869
+ _: 1
7870
+ })
7871
+ ]),
7872
+ default: withCtx(() => [
7873
+ renderSlot(_ctx.$slots, "default")
7874
+ ]),
7875
+ _: 3
7876
+ }, 8, ["class", "trigger"]);
7877
+ };
7878
+ }
7879
+ });
7880
+ const useTagsView = () => {
7881
+ const tagsViewStore = useTagsViewStoreWithOut();
7882
+ const { replace, currentRoute } = useRouter();
7883
+ const selectedTag = computed(() => tagsViewStore.getSelectedTag);
7884
+ const closeAll = (callback2) => {
7885
+ tagsViewStore.delAllViews();
7886
+ callback2 == null ? void 0 : callback2();
7887
+ };
7888
+ const closeLeft = (callback2) => {
7889
+ tagsViewStore.delLeftViews(unref(selectedTag));
7890
+ callback2 == null ? void 0 : callback2();
7891
+ };
7892
+ const closeRight = (callback2) => {
7893
+ tagsViewStore.delRightViews(unref(selectedTag));
7894
+ callback2 == null ? void 0 : callback2();
7895
+ };
7896
+ const closeOther = (callback2) => {
7897
+ tagsViewStore.delOthersViews(unref(selectedTag));
7898
+ callback2 == null ? void 0 : callback2();
7899
+ };
7900
+ const closeCurrent = (view, callback2) => {
7901
+ var _a2;
7902
+ if ((_a2 = view == null ? void 0 : view.meta) == null ? void 0 : _a2.affix)
7903
+ return;
7904
+ tagsViewStore.delView(view || unref(currentRoute));
7905
+ callback2 == null ? void 0 : callback2();
7906
+ };
7907
+ const refreshPage = async (view, callback2) => {
7908
+ tagsViewStore.delCachedView();
7909
+ const { path, query } = view || unref(currentRoute);
7910
+ await nextTick();
7911
+ replace({
7912
+ path: "/redirect" + path,
7913
+ query
7914
+ });
7915
+ callback2 == null ? void 0 : callback2();
7916
+ };
7917
+ const setTitle = (title, path) => {
7918
+ tagsViewStore.setTitle(title, path);
7919
+ };
7920
+ return {
7921
+ closeAll,
7922
+ closeLeft,
7923
+ closeRight,
7924
+ closeOther,
7925
+ closeCurrent,
7926
+ refreshPage,
7927
+ setTitle
7928
+ };
7929
+ };
7930
+ const easeInOutQuad = (t2, b, c, d) => {
7931
+ t2 /= d / 2;
7932
+ if (t2 < 1) {
7933
+ return c / 2 * t2 * t2 + b;
7934
+ }
7935
+ t2--;
7936
+ return -c / 2 * (t2 * (t2 - 2) - 1) + b;
7937
+ };
7938
+ const move = (el, position, amount) => {
7939
+ el[position] = amount;
7940
+ };
7941
+ function useScrollTo({
7942
+ el,
7943
+ position = "scrollLeft",
7944
+ to,
7945
+ duration = 500,
7946
+ callback: callback2
7947
+ }) {
7948
+ const isActiveRef = ref(false);
7949
+ const start = el[position];
7950
+ const change = to - start;
7951
+ const increment = 20;
7952
+ let currentTime = 0;
7953
+ function animateScroll() {
7954
+ if (!unref(isActiveRef)) {
7955
+ return;
7956
+ }
7957
+ currentTime += increment;
7958
+ const val = easeInOutQuad(currentTime, start, change, duration);
7959
+ move(el, position, val);
7960
+ if (currentTime < duration && unref(isActiveRef)) {
7961
+ requestAnimationFrame(animateScroll);
7962
+ } else {
7963
+ if (callback2) {
7964
+ callback2();
7965
+ }
7966
+ }
7967
+ }
7968
+ function run() {
7969
+ isActiveRef.value = true;
7970
+ animateScroll();
7971
+ }
7972
+ function stop() {
7973
+ isActiveRef.value = false;
7974
+ }
7975
+ return { start: run, stop };
7976
+ }
7977
+ const _hoisted_1$d = ["id"];
7978
+ const _hoisted_2$b = { class: "flex-1 overflow-hidden px-20px" };
7979
+ const _hoisted_3$a = { class: "h-[var(--tags-view-height)] flex" };
7980
+ const _hoisted_4$8 = ["onClick"];
7981
+ const _sfc_main$t = /* @__PURE__ */ Object.assign({ name: "TagsView" }, {
7982
+ __name: "TagsView",
7983
+ setup(__props) {
7984
+ const { getPrefixCls: getPrefixCls2 } = useDesign();
7985
+ const prefixCls2 = getPrefixCls2("tags-view");
7986
+ const { t: t2 } = useI18n();
7987
+ const { currentRoute, push } = useRouter();
7988
+ const { closeAll, closeOther, closeCurrent, refreshPage } = useTagsView();
7989
+ const permissionStore = usePermissionStore();
7990
+ const routers = computed(() => permissionStore.getRouters);
7991
+ const tagsViewStore = useTagsViewStore();
7992
+ const visitedViews = computed(() => tagsViewStore.getVisitedViews);
7993
+ const affixTagArr = ref([]);
7994
+ const selectedTag = computed(() => tagsViewStore.getSelectedTag);
7995
+ const setSelectTag = tagsViewStore.setSelectedTag;
7996
+ const initTags = () => {
7997
+ affixTagArr.value = filterAffixTags(unref(routers));
7998
+ for (const tag of unref(affixTagArr)) {
7999
+ if (tag.name) {
8000
+ tagsViewStore.addVisitedView(cloneDeep(tag));
8001
+ }
8002
+ }
8003
+ };
8004
+ const addTags = () => {
8005
+ const { name } = unref(currentRoute);
8006
+ if (name) {
8007
+ setSelectTag(unref(currentRoute));
8008
+ tagsViewStore.addView(unref(currentRoute));
8009
+ }
8010
+ };
8011
+ const refreshSelectedTag = async (view) => {
8012
+ refreshPage(view);
8013
+ };
8014
+ const closeSelectedTag = (view) => {
8015
+ closeCurrent(view, () => {
8016
+ if (isActive(view)) {
8017
+ toLastView();
8018
+ }
8019
+ });
8020
+ };
8021
+ const closeOthersTags = () => {
8022
+ closeOther();
8023
+ };
8024
+ const closeAllTags = () => {
8025
+ closeAll(() => {
8026
+ toLastView();
8027
+ });
8028
+ };
8029
+ const toLastView = () => {
8030
+ const visitedViews2 = tagsViewStore.getVisitedViews;
8031
+ const latestView = visitedViews2.slice(-1)[0];
8032
+ if (latestView) {
8033
+ push(latestView);
8034
+ } else {
8035
+ push({
8036
+ path: "/"
8037
+ });
8038
+ }
8039
+ };
8040
+ const moveToCurrentTag = async () => {
8041
+ await nextTick();
8042
+ setTimeout(() => {
8043
+ for (const v of unref(visitedViews)) {
8044
+ if (v.fullPath === unref(currentRoute).fullPath) {
8045
+ moveToTarget(v);
8046
+ break;
8047
+ }
8048
+ }
8049
+ }, 0);
8050
+ };
8051
+ const tagLinksRefs = useTemplateRefsList();
8052
+ const moveToTarget = (currentTag) => {
8053
+ var _a2;
8054
+ const wrap$ = (_a2 = unref(scrollbarRef)) == null ? void 0 : _a2.wrapRef;
8055
+ if (!wrap$)
8056
+ return;
8057
+ let firstTag = null;
8058
+ let lastTag = null;
8059
+ const tagList = unref(tagLinksRefs);
8060
+ if (tagList.length > 0) {
8061
+ firstTag = tagList[0];
8062
+ lastTag = tagList[tagList.length - 1];
8063
+ }
8064
+ if ((firstTag == null ? void 0 : firstTag.to).fullPath === currentTag.fullPath) {
8065
+ const { start } = useScrollTo({
8066
+ el: wrap$,
8067
+ position: "scrollLeft",
8068
+ to: 0,
8069
+ duration: 500
8070
+ });
8071
+ start();
8072
+ } else if ((lastTag == null ? void 0 : lastTag.to).fullPath === currentTag.fullPath) {
8073
+ const { start } = useScrollTo({
8074
+ el: wrap$,
8075
+ position: "scrollLeft",
8076
+ to: wrap$.scrollWidth - wrap$.offsetWidth,
8077
+ duration: 500
8078
+ });
8079
+ start();
8080
+ } else {
8081
+ const currentIndex = tagList.findIndex(
8082
+ (item) => (item == null ? void 0 : item.to).fullPath === currentTag.fullPath
8083
+ );
8084
+ const tgsRefs = document.getElementsByClassName(`${prefixCls2}__item`);
8085
+ const prevTag = tgsRefs[currentIndex - 1];
8086
+ const nextTag = tgsRefs[currentIndex + 1];
8087
+ if (!prevTag || !nextTag)
8088
+ return;
8089
+ const afterNextTagOffsetLeft = nextTag.offsetLeft + nextTag.offsetWidth;
8090
+ const beforePrevTagOffsetLeft = prevTag.offsetLeft;
8091
+ if (afterNextTagOffsetLeft > unref(scrollLeftNumber) + wrap$.offsetWidth) {
8092
+ const { start } = useScrollTo({
8093
+ el: wrap$,
8094
+ position: "scrollLeft",
8095
+ to: afterNextTagOffsetLeft - wrap$.offsetWidth,
8096
+ duration: 500
8097
+ });
8098
+ start();
8099
+ } else if (beforePrevTagOffsetLeft < unref(scrollLeftNumber)) {
8100
+ const { start } = useScrollTo({
8101
+ el: wrap$,
8102
+ position: "scrollLeft",
8103
+ to: beforePrevTagOffsetLeft,
8104
+ duration: 500
8105
+ });
8106
+ start();
8107
+ }
8108
+ }
8109
+ };
8110
+ const isActive = (route) => {
8111
+ return route.fullPath === unref(currentRoute).fullPath;
8112
+ };
8113
+ const itemRefs = useTemplateRefsList();
8114
+ const visibleChange = (visible, tagItem) => {
8115
+ };
8116
+ const scrollbarRef = ref();
8117
+ const scrollLeftNumber = ref(0);
8118
+ const scroll = ({ scrollLeft }) => {
8119
+ scrollLeftNumber.value = scrollLeft;
8120
+ };
8121
+ onBeforeMount(() => {
8122
+ initTags();
8123
+ addTags();
8124
+ });
8125
+ watch(
8126
+ () => currentRoute.value,
8127
+ () => {
8128
+ addTags();
8129
+ moveToCurrentTag();
8130
+ }
8131
+ );
8132
+ return (_ctx, _cache) => {
8133
+ const _component_Icon = resolveComponent("Icon");
8134
+ const _component_router_link = resolveComponent("router-link");
8135
+ return openBlock(), createElementBlock("div", {
8136
+ id: unref(prefixCls2),
8137
+ class: normalizeClass([unref(prefixCls2), "relative w-full flex bg-[#dbe4f880]"])
8138
+ }, [
8139
+ createElementVNode("div", _hoisted_2$b, [
8140
+ createVNode(unref(ElScrollbar), {
8141
+ ref_key: "scrollbarRef",
8142
+ ref: scrollbarRef,
8143
+ class: "h-full",
8144
+ onScroll: scroll
8145
+ }, {
8146
+ default: withCtx(() => [
8147
+ createElementVNode("div", _hoisted_3$a, [
8148
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(visitedViews), (item) => {
8149
+ var _a2, _b, _c, _d, _e, _f;
8150
+ return openBlock(), createBlock(unref(_sfc_main$u), {
8151
+ key: item.fullPath,
8152
+ ref_for: true,
8153
+ ref: unref(itemRefs).set,
8154
+ class: normalizeClass([
8155
+ `${unref(prefixCls2)}__item`,
8156
+ {
8157
+ "is-active": isActive(item)
8158
+ }
8159
+ ]),
8160
+ schema: [
8161
+ {
8162
+ label: unref(t2)("layout.common.reload"),
8163
+ disabled: ((_a2 = unref(selectedTag)) == null ? void 0 : _a2.fullPath) !== item.fullPath,
8164
+ command: () => {
8165
+ refreshSelectedTag(item);
8166
+ }
8167
+ },
8168
+ {
8169
+ label: unref(t2)("layout.common.closeTab"),
8170
+ disabled: !!((_b = unref(visitedViews)) == null ? void 0 : _b.length) && ((_c = unref(selectedTag)) == null ? void 0 : _c.meta.affix) || ((_d = unref(visitedViews)) == null ? void 0 : _d.length) === 1,
8171
+ command: () => {
8172
+ closeSelectedTag(item);
8173
+ }
8174
+ },
8175
+ {
8176
+ label: unref(t2)("layout.common.closeOther"),
8177
+ disabled: ((_e = unref(selectedTag)) == null ? void 0 : _e.fullPath) !== item.fullPath,
8178
+ command: () => {
8179
+ closeOthersTags();
8180
+ }
8181
+ },
8182
+ {
8183
+ label: unref(t2)("layout.common.closeAll"),
8184
+ disabled: ((_f = unref(visitedViews)) == null ? void 0 : _f.length) === 1,
8185
+ command: () => {
8186
+ closeAllTags();
8187
+ }
8188
+ }
8189
+ ],
8190
+ "tag-item": item,
8191
+ onVisibleChange: visibleChange
8192
+ }, {
8193
+ default: withCtx(() => [
8194
+ createElementVNode("div", {
8195
+ class: normalizeClass(`${unref(prefixCls2)}__item--wrap`)
8196
+ }, [
8197
+ createVNode(_component_router_link, {
8198
+ ref_for: true,
8199
+ ref: unref(tagLinksRefs).set,
8200
+ to: { ...item },
8201
+ custom: ""
8202
+ }, {
8203
+ default: withCtx(({ navigate }) => {
8204
+ var _a3, _b2;
8205
+ return [
8206
+ createElementVNode("div", {
8207
+ class: normalizeClass(`h-full flex items-center justify-center gap-8px whitespace-nowrap ${unref(prefixCls2)}__item--label`),
8208
+ onClick: navigate
8209
+ }, [
8210
+ createElementVNode("span", null, toDisplayString(unref(t2)((_a3 = item == null ? void 0 : item.meta) == null ? void 0 : _a3.title)), 1),
8211
+ ((_b2 = unref(visitedViews)) == null ? void 0 : _b2.length) > 1 ? (openBlock(), createBlock(_component_Icon, {
8212
+ key: 0,
8213
+ class: normalizeClass(`${unref(prefixCls2)}__item--close`),
8214
+ size: 8,
8215
+ color: isActive(item) ? "#444444ff" : "#7b7e904ff",
8216
+ icon: "svg-icon:tag-close",
8217
+ onClick: withModifiers(($event) => closeSelectedTag(item), ["prevent", "stop"])
8218
+ }, null, 8, ["class", "color", "onClick"])) : createCommentVNode("", true)
8219
+ ], 10, _hoisted_4$8)
8220
+ ];
8221
+ }),
8222
+ _: 2
8223
+ }, 1032, ["to"])
8224
+ ], 2)
8225
+ ]),
8226
+ _: 2
8227
+ }, 1032, ["class", "schema", "tag-item"]);
8228
+ }), 128))
8229
+ ])
8230
+ ]),
8231
+ _: 1
8232
+ }, 512)
8233
+ ])
8234
+ ], 10, _hoisted_1$d);
8235
+ };
8236
+ }
8237
+ });
8238
+ const TagsView = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__scopeId", "data-v-dadb909c"]]);
8239
+ const _sfc_main$s = /* @__PURE__ */ Object.assign({ name: "MenuTrigger" }, {
8240
+ __name: "MenuTrigger",
8241
+ props: {
8242
+ active: {
8243
+ type: Boolean,
8244
+ default: false
8245
+ }
8246
+ },
8247
+ emits: ["click", "toggle"],
8248
+ setup(__props, { emit: __emit }) {
8249
+ const { getPrefixCls: getPrefixCls2 } = useDesign();
8250
+ const prefixCls2 = getPrefixCls2("menu-trigger");
8251
+ const props = __props;
8252
+ const emit = __emit;
8253
+ const handleClick = () => {
8254
+ emit("click");
8255
+ emit("toggle", !props.active);
8256
+ };
8257
+ return (_ctx, _cache) => {
8258
+ const _component_Icon = resolveComponent("Icon");
8259
+ return openBlock(), createElementBlock("div", {
8260
+ class: normalizeClass([unref(prefixCls2), "flex items-center justify-center cursor-pointer", { "is-active": props.active }]),
8261
+ onClick: handleClick
8262
+ }, [
8263
+ createVNode(_component_Icon, {
8264
+ icon: props.active ? "ant-design:close-outlined" : "svg-icon:menu-trigger",
8265
+ svgClass: "!w-full !h-full",
8266
+ class: normalizeClass(["!w-18px", "!h-18px", "icon-color"])
8267
+ }, null, 8, ["icon"])
8268
+ ], 2);
8269
+ };
8270
+ }
8271
+ });
8272
+ const MenuTrigger = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-f7f5d176"]]);
8273
+ const _hoisted_1$c = { class: "sidebar-inner" };
8274
+ const _hoisted_2$a = ["onClick"];
8275
+ const _hoisted_3$9 = ["onClick"];
8276
+ const _hoisted_4$7 = ["onClick"];
8277
+ const _sfc_main$r = /* @__PURE__ */ Object.assign({ name: "ProductServicePanel" }, {
8278
+ __name: "ProductServicePanel",
8279
+ props: {
8280
+ visible: {
8281
+ type: Boolean,
8282
+ default: false
8283
+ }
8284
+ },
8285
+ emits: ["update:visible", "select"],
8286
+ setup(__props, { emit: __emit }) {
8287
+ const { getPrefixCls: getPrefixCls2 } = useDesign();
8288
+ const prefixCls2 = getPrefixCls2("product-service-panel");
8289
+ const { t: t2 } = useI18n();
8290
+ const props = __props;
8291
+ const emit = __emit;
8292
+ const router = useRouter();
8293
+ const permissionStore = usePermissionStore();
8294
+ const searchKeyword = ref("");
8295
+ const activeCategory = ref(0);
8296
+ const routers = computed(() => permissionStore.getRoleRouters);
8297
+ const filteredMenus = computed(() => {
8298
+ const keyword = searchKeyword.value.toLowerCase().trim();
8299
+ const filterHiddenMenus = (items) => {
8300
+ if (!items || !Array.isArray(items))
8301
+ return [];
8302
+ return items.filter((item) => !!item.visible).map((item) => ({
8303
+ ...item,
8304
+ children: item.children ? filterHiddenMenus(item.children) : []
8305
+ }));
8306
+ };
8307
+ const baseMenus = filterHiddenMenus(routers.value);
8308
+ if (!keyword) {
8309
+ return baseMenus;
8310
+ }
8311
+ const filterFn = (items) => {
8312
+ return items.reduce((result, item) => {
8313
+ var _a2;
8314
+ const title = ((_a2 = item.meta) == null ? void 0 : _a2.title) || "";
8315
+ const isMatch = title.toLowerCase().includes(keyword);
8316
+ const children = item.children ? filterFn(item.children) : [];
8317
+ if (isMatch || children.length > 0) {
8318
+ result.push({
8319
+ ...item,
8320
+ children: children.length > 0 ? children : item.children
8321
+ });
8322
+ }
8323
+ return result;
8324
+ }, []);
8325
+ };
8326
+ return filterFn(baseMenus);
8327
+ });
8328
+ const groupedMenus = computed(() => {
8329
+ return filteredMenus.value.map((menu) => {
8330
+ var _a2, _b;
8331
+ return {
8332
+ id: menu.id,
8333
+ title: ((_a2 = menu.meta) == null ? void 0 : _a2.title) || menu.name,
8334
+ icon: (_b = menu.meta) == null ? void 0 : _b.icon,
8335
+ path: menu.path,
8336
+ modulePath: menu.modulePath,
8337
+ children: (menu.children || []).filter((item) => {
8338
+ var _a3;
8339
+ return !((_a3 = item.meta) == null ? void 0 : _a3.hidden);
8340
+ })
8341
+ };
8342
+ });
8343
+ });
8344
+ const currentCategoryMenus = computed(() => {
8345
+ if (groupedMenus.value.length === 0)
8346
+ return [];
8347
+ const group = groupedMenus.value[activeCategory.value];
8348
+ return (group == null ? void 0 : group.children) || [];
8349
+ });
8350
+ const joinPath = (...paths) => {
8351
+ return paths.filter(Boolean).reduce((result, path) => {
8352
+ if (!result)
8353
+ return path;
8354
+ const normalizedBase = result.endsWith("/") ? result.slice(0, -1) : result;
8355
+ const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
8356
+ return `${normalizedBase}/${normalizedPath}`;
8357
+ }, "");
8358
+ };
8359
+ const getAccessiblePath = (item, parentPath = "") => {
8360
+ const fullPath = joinPath(parentPath, item.path);
8361
+ if (item.children && item.children.length > 0) {
8362
+ const visibleChildren = item.children.filter((child) => {
8363
+ var _a2;
8364
+ return !((_a2 = child.meta) == null ? void 0 : _a2.hidden);
8365
+ });
8366
+ if (visibleChildren.length > 0) {
8367
+ return getAccessiblePath(visibleChildren[0], fullPath);
8368
+ }
8369
+ }
8370
+ return fullPath;
8371
+ };
8372
+ const closePanel = () => {
8373
+ emit("update:visible", false);
8374
+ searchKeyword.value = "";
8375
+ activeCategory.value = 0;
8376
+ };
8377
+ const handleSelect = (item, parentPath = "") => {
8378
+ var _a2, _b;
8379
+ const fullPath = getAccessiblePath(item, parentPath);
8380
+ if (fullPath) {
8381
+ const currentModuleId = permissionStore.getModuleId;
8382
+ const selectedModuleId = (_a2 = groupedMenus.value[activeCategory.value]) == null ? void 0 : _a2.id;
8383
+ if (selectedModuleId === currentModuleId) {
8384
+ router.push(fullPath.startsWith("/") ? fullPath : `/${fullPath}`);
8385
+ } else {
8386
+ const currentOrigin = window.location.origin;
8387
+ const modulePath = ((_b = groupedMenus.value[activeCategory.value]) == null ? void 0 : _b.modulePath) || "";
8388
+ const moduleFullPath = joinPath(modulePath, fullPath);
8389
+ const targetUrl = `${currentOrigin}${moduleFullPath.startsWith("/") ? moduleFullPath : `/${moduleFullPath}`}`;
8390
+ window.location.href = targetUrl;
8391
+ }
8392
+ closePanel();
8393
+ }
8394
+ };
8395
+ const handleCategorySelect = (index) => {
8396
+ activeCategory.value = index;
8397
+ };
8398
+ watch(() => props.visible, (val) => {
8399
+ if (val) {
8400
+ searchKeyword.value = "";
8401
+ activeCategory.value = 0;
8402
+ }
8403
+ });
8404
+ return (_ctx, _cache) => {
8405
+ return openBlock(), createBlock(Teleport, { to: "body" }, [
8406
+ createVNode(Transition, { name: "fade" }, {
8407
+ default: withCtx(() => [
8408
+ __props.visible ? (openBlock(), createElementBlock("div", {
8409
+ key: 0,
8410
+ class: normalizeClass([unref(prefixCls2) + "__overlay"]),
8411
+ onClick: closePanel
8412
+ }, [
8413
+ createVNode(Transition, { name: "slide-down" }, {
8414
+ default: withCtx(() => [
8415
+ __props.visible ? (openBlock(), createElementBlock("div", {
8416
+ key: 0,
8417
+ class: normalizeClass([unref(prefixCls2)]),
8418
+ onClick: _cache[1] || (_cache[1] = withModifiers(() => {
8419
+ }, ["stop"]))
8420
+ }, [
8421
+ createElementVNode("div", {
8422
+ class: normalizeClass([unref(prefixCls2) + "__body"])
8423
+ }, [
8424
+ createElementVNode("div", {
8425
+ class: normalizeClass([unref(prefixCls2) + "__sidebar"])
8426
+ }, [
8427
+ createElementVNode("div", {
8428
+ class: normalizeClass([unref(prefixCls2) + "__sidebar-title"])
8429
+ }, [
8430
+ createElementVNode("span", null, toDisplayString(unref(t2)("layout.common.allProducts")), 1)
8431
+ ], 2),
8432
+ createVNode(unref(ElScrollbar), null, {
8433
+ default: withCtx(() => [
8434
+ createElementVNode("div", _hoisted_1$c, [
8435
+ (openBlock(true), createElementBlock(Fragment, null, renderList(groupedMenus.value, (group, index) => {
8436
+ return openBlock(), createElementBlock("div", {
8437
+ key: index,
8438
+ class: normalizeClass([
8439
+ unref(prefixCls2) + "__category",
8440
+ { "is-active": activeCategory.value === index }
8441
+ ]),
8442
+ onClick: ($event) => handleCategorySelect(index)
8443
+ }, [
8444
+ createElementVNode("span", null, toDisplayString(group.title), 1)
8445
+ ], 10, _hoisted_2$a);
8446
+ }), 128))
8447
+ ])
8448
+ ]),
8449
+ _: 1
8450
+ })
8451
+ ], 2),
8452
+ createElementVNode("div", {
8453
+ class: normalizeClass([unref(prefixCls2) + "__content"])
8454
+ }, [
8455
+ createElementVNode("div", {
8456
+ class: normalizeClass([unref(prefixCls2) + "__header"])
8457
+ }, [
8458
+ createVNode(unref(ElInput), {
8459
+ modelValue: searchKeyword.value,
8460
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchKeyword.value = $event),
8461
+ placeholder: unref(t2)("layout.common.searchMenu"),
8462
+ clearable: "",
8463
+ size: "default"
8464
+ }, {
8465
+ prefix: withCtx(() => [
8466
+ createVNode(unref(_sfc_main$x), {
8467
+ icon: "ep:search",
8468
+ size: 16
8469
+ })
8470
+ ]),
8471
+ _: 1
8472
+ }, 8, ["modelValue", "placeholder"]),
8473
+ createElementVNode("div", {
8474
+ class: normalizeClass([unref(prefixCls2) + "__close"]),
8475
+ onClick: closePanel
8476
+ }, [
8477
+ createVNode(unref(_sfc_main$x), {
8478
+ icon: "ep:close",
8479
+ size: 18
8480
+ })
8481
+ ], 2)
8482
+ ], 2),
8483
+ createVNode(unref(ElScrollbar), null, {
8484
+ default: withCtx(() => [
8485
+ createElementVNode("div", {
8486
+ class: normalizeClass([unref(prefixCls2) + "__grid-container"])
8487
+ }, [
8488
+ currentCategoryMenus.value.length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(currentCategoryMenus.value, (secondMenu, index) => {
8489
+ var _a2, _b;
8490
+ return openBlock(), createElementBlock("div", {
8491
+ key: index,
8492
+ class: normalizeClass([unref(prefixCls2) + "__column"])
8493
+ }, [
8494
+ createElementVNode("div", {
8495
+ class: normalizeClass([unref(prefixCls2) + "__column-title"])
8496
+ }, [
8497
+ createElementVNode("span", null, toDisplayString(((_a2 = secondMenu.meta) == null ? void 0 : _a2.title) || secondMenu.name), 1)
8498
+ ], 2),
8499
+ createElementVNode("div", {
8500
+ class: normalizeClass([unref(prefixCls2) + "__column-list"])
8501
+ }, [
8502
+ secondMenu.children && secondMenu.children.length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(secondMenu.children.filter((c) => {
8503
+ var _a3;
8504
+ return !((_a3 = c.meta) == null ? void 0 : _a3.hidden);
8505
+ }), (thirdMenu) => {
8506
+ var _a3;
8507
+ return openBlock(), createElementBlock("div", {
8508
+ key: thirdMenu.path,
8509
+ class: normalizeClass([unref(prefixCls2) + "__column-item"]),
8510
+ onClick: ($event) => {
8511
+ var _a4;
8512
+ return handleSelect(thirdMenu, joinPath((_a4 = groupedMenus.value[activeCategory.value]) == null ? void 0 : _a4.path, secondMenu.path));
8513
+ }
8514
+ }, [
8515
+ createElementVNode("span", null, toDisplayString(((_a3 = thirdMenu.meta) == null ? void 0 : _a3.title) || thirdMenu.name), 1)
8516
+ ], 10, _hoisted_3$9);
8517
+ }), 128)) : (openBlock(), createElementBlock("div", {
8518
+ key: 1,
8519
+ class: normalizeClass([
8520
+ unref(prefixCls2) + "__column-item",
8521
+ { [unref(prefixCls2) + "__column-item--disabled"]: secondMenu.type === 1 }
8522
+ ]),
8523
+ onClick: ($event) => {
8524
+ var _a3;
8525
+ return secondMenu.type === 2 && handleSelect(secondMenu, (_a3 = groupedMenus.value[activeCategory.value]) == null ? void 0 : _a3.path);
8526
+ }
8527
+ }, [
8528
+ createElementVNode("span", null, toDisplayString(secondMenu.type === 1 ? unref(t2)("layout.common.noData") || "暂无" : ((_b = secondMenu.meta) == null ? void 0 : _b.title) || secondMenu.name), 1)
8529
+ ], 10, _hoisted_4$7))
8530
+ ], 2)
8531
+ ], 2);
8532
+ }), 128)) : groupedMenus.value[activeCategory.value] ? (openBlock(), createElementBlock("div", {
8533
+ key: 1,
8534
+ class: normalizeClass([unref(prefixCls2) + "__column"])
8535
+ }, [
8536
+ createElementVNode("div", {
8537
+ class: normalizeClass([unref(prefixCls2) + "__column-list"])
8538
+ }, [
8539
+ createElementVNode("div", {
8540
+ class: normalizeClass([unref(prefixCls2) + "__column-item", unref(prefixCls2) + "__column-item--disabled"])
8541
+ }, [
8542
+ createElementVNode("span", null, toDisplayString(unref(t2)("layout.common.noData") || "暂无"), 1)
8543
+ ], 2)
8544
+ ], 2)
8545
+ ], 2)) : (openBlock(), createElementBlock("div", {
8546
+ key: 2,
8547
+ class: normalizeClass([unref(prefixCls2) + "__empty"])
8548
+ }, [
8549
+ createVNode(unref(_sfc_main$x), {
8550
+ icon: "ant-design:inbox-outlined",
8551
+ size: 48
8552
+ }),
8553
+ createElementVNode("span", null, toDisplayString(unref(t2)("layout.common.noDataTitle")), 1)
8554
+ ], 2))
8555
+ ], 2)
8556
+ ]),
8557
+ _: 1
8558
+ })
8559
+ ], 2)
8560
+ ], 2)
8561
+ ], 2)) : createCommentVNode("", true)
8562
+ ]),
8563
+ _: 1
8564
+ })
8565
+ ], 2)) : createCommentVNode("", true)
8566
+ ]),
8567
+ _: 1
8568
+ })
8569
+ ]);
8570
+ };
8571
+ }
8572
+ });
8573
+ const ProductServicePanel = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-ab102b18"]]);
8574
+ const _sfc_main$q = /* @__PURE__ */ Object.assign({ name: "Logo" }, {
8575
+ __name: "Logo",
8576
+ emits: ["logo-click"],
8577
+ setup(__props, { emit: __emit }) {
8578
+ const emit = __emit;
8579
+ const { getPrefixCls: getPrefixCls2 } = useDesign();
8580
+ const prefixCls2 = getPrefixCls2("logo");
8581
+ const appStore = useAppStore();
8582
+ const title = computed(() => appStore.getTitle);
8583
+ const layout = computed(() => appStore.getLayout);
8584
+ const theme = computed(() => appStore.getTheme);
8585
+ const panelVisible = ref(false);
8586
+ const togglePanel = (isActive) => {
8587
+ panelVisible.value = isActive;
8588
+ };
8589
+ const fontColor = computed(() => {
8590
+ return theme.value === "whiteLight" ? "var(--el-color-primary)" : "#fff";
8591
+ });
8592
+ const handleClickLogo = () => {
8593
+ emit("logo-click");
8594
+ };
8595
+ return (_ctx, _cache) => {
8596
+ const _component_Icon = resolveComponent("Icon");
8597
+ return openBlock(), createElementBlock("div", null, [
8598
+ createElementVNode("div", {
8599
+ class: normalizeClass([
8600
+ unref(prefixCls2),
8601
+ `${unref(prefixCls2)}__Top`,
8602
+ "flex !h-[var(--top-tool-height)] items-center cursor-default relative decoration-none overflow-hidden"
8603
+ ])
8604
+ }, [
8605
+ createVNode(unref(MenuTrigger), {
8606
+ class: "mr-12px",
8607
+ active: panelVisible.value,
8608
+ onToggle: togglePanel
8609
+ }, null, 8, ["active"]),
8610
+ createElementVNode("div", {
8611
+ class: "flex cursor-pointer",
8612
+ onClick: handleClickLogo
8613
+ }, [
8614
+ createVNode(_component_Icon, {
8615
+ icon: "svg-icon:logo",
8616
+ color: fontColor.value,
8617
+ svgClass: "!w-full !h-full",
8618
+ class: normalizeClass(["!w-[var(--logo-height)]", "!h-[var(--logo-height)]"])
8619
+ }, null, 8, ["color"]),
8620
+ createElementVNode("div", {
8621
+ class: normalizeClass([
8622
+ "ml-10px text-16px font-700",
8623
+ {
8624
+ "text-[var(--top-header-text-color)]": ["left", "top", "topLeft"].includes(layout.value)
8625
+ }
8626
+ ]),
8627
+ style: normalizeStyle({ color: fontColor.value })
8628
+ }, toDisplayString(title.value), 7)
8629
+ ])
8630
+ ], 2),
8631
+ createVNode(unref(ProductServicePanel), {
8632
+ visible: panelVisible.value,
8633
+ "onUpdate:visible": _cache[0] || (_cache[0] = ($event) => panelVisible.value = $event)
8634
+ }, null, 8, ["visible"])
8635
+ ]);
8636
+ };
8637
+ }
8638
+ });
8639
+ const _hoisted_1$b = { class: "w-full min-w-1000px" };
8640
+ const _sfc_main$p = /* @__PURE__ */ Object.assign({ name: "AppView" }, {
8641
+ __name: "AppView",
8642
+ setup(__props) {
8643
+ const tagsViewStore = useTagsViewStore();
8644
+ const getCaches = computed(() => {
8645
+ return tagsViewStore.getCachedViews;
7819
8646
  });
7820
- return seq.getEncodedHex();
7821
- };
7822
- JSEncryptRSAKey.prototype.getPublicBaseKeyB64 = function() {
7823
- return hex2b64(this.getPublicBaseKey());
7824
- };
7825
- JSEncryptRSAKey.wordwrap = function(str, width) {
7826
- width = width || 64;
7827
- if (!str) {
7828
- return str;
7829
- }
7830
- var regex2 = "(.{1," + width + "})( +|$\n?)|(.{1," + width + "})";
7831
- return str.match(RegExp(regex2, "g")).join("\n");
7832
- };
7833
- JSEncryptRSAKey.prototype.getPrivateKey = function() {
7834
- var key = "-----BEGIN RSA PRIVATE KEY-----\n";
7835
- key += JSEncryptRSAKey.wordwrap(this.getPrivateBaseKeyB64()) + "\n";
7836
- key += "-----END RSA PRIVATE KEY-----";
7837
- return key;
7838
- };
7839
- JSEncryptRSAKey.prototype.getPublicKey = function() {
7840
- var key = "-----BEGIN PUBLIC KEY-----\n";
7841
- key += JSEncryptRSAKey.wordwrap(this.getPublicBaseKeyB64()) + "\n";
7842
- key += "-----END PUBLIC KEY-----";
7843
- return key;
7844
- };
7845
- JSEncryptRSAKey.hasPublicKeyProperty = function(obj) {
7846
- obj = obj || {};
7847
- return obj.hasOwnProperty("n") && obj.hasOwnProperty("e");
7848
- };
7849
- JSEncryptRSAKey.hasPrivateKeyProperty = function(obj) {
7850
- obj = obj || {};
7851
- return obj.hasOwnProperty("n") && obj.hasOwnProperty("e") && obj.hasOwnProperty("d") && obj.hasOwnProperty("p") && obj.hasOwnProperty("q") && obj.hasOwnProperty("dmp1") && obj.hasOwnProperty("dmq1") && obj.hasOwnProperty("coeff");
7852
- };
7853
- JSEncryptRSAKey.prototype.parsePropertiesFrom = function(obj) {
7854
- this.n = obj.n;
7855
- this.e = obj.e;
7856
- if (obj.hasOwnProperty("d")) {
7857
- this.d = obj.d;
7858
- this.p = obj.p;
7859
- this.q = obj.q;
7860
- this.dmp1 = obj.dmp1;
7861
- this.dmq1 = obj.dmq1;
7862
- this.coeff = obj.coeff;
7863
- }
7864
- };
7865
- return JSEncryptRSAKey;
7866
- })(RSAKey);
7867
- var _a;
7868
- typeof process !== "undefined" ? (_a = process.env) === null || _a === void 0 ? void 0 : _a.npm_package_version : void 0;
7869
- const { wsCache: wsCache$2 } = useCache();
7870
- const AccessTokenKey = "ACCESS_TOKEN";
7871
- const RefreshTokenKey = "REFRESH_TOKEN";
7872
- const removeToken = () => {
7873
- wsCache$2.delete(AccessTokenKey);
7874
- wsCache$2.delete(RefreshTokenKey);
7875
- };
7876
- const { wsCache: wsCache$1 } = useCache();
7877
- const useUserStore = defineStore("layout-user", {
7878
- state: () => ({
7879
- permissions: /* @__PURE__ */ new Set(),
7880
- roles: [],
7881
- isSetUser: false,
7882
- user: {
7883
- id: 0,
7884
- avatar: "",
7885
- nickname: "",
7886
- deptId: 0,
7887
- mobile: "",
7888
- email: "",
7889
- username: ""
7890
- }
7891
- }),
7892
- getters: {
7893
- getPermissions() {
7894
- return this.permissions;
7895
- },
7896
- getRoles() {
7897
- return this.roles;
7898
- },
7899
- getIsSetUser() {
7900
- return this.isSetUser;
7901
- },
7902
- getUser() {
7903
- return this.user;
7904
- },
7905
- getUserInfo() {
7906
- const userInfo = wsCache$1.get(CACHE_KEY.USER);
7907
- return userInfo;
7908
- }
7909
- },
7910
- actions: {
7911
- // 从缓存加载用户信息到state
7912
- loadUserFromCacheAction(userInfo) {
7913
- this.permissions = new Set(userInfo.permissions);
7914
- this.roles = userInfo.roles;
7915
- this.user = userInfo.user;
7916
- this.isSetUser = true;
7917
- wsCache$1.set(CACHE_KEY.USER, userInfo);
7918
- wsCache$1.set(CACHE_KEY.ROLE_ROUTERS, userInfo.menus);
7919
- },
7920
- async setUserAvatarAction(avatar) {
7921
- const userInfo = wsCache$1.get(CACHE_KEY.USER);
7922
- this.user.avatar = avatar;
7923
- userInfo.user.avatar = avatar;
7924
- wsCache$1.set(CACHE_KEY.USER, userInfo);
7925
- },
7926
- async setUserNicknameAction(nickname) {
7927
- const userInfo = wsCache$1.get(CACHE_KEY.USER);
7928
- this.user.nickname = nickname;
7929
- userInfo.user.nickname = nickname;
7930
- wsCache$1.set(CACHE_KEY.USER, userInfo);
7931
- },
7932
- // 更新用户资料(昵称、手机号、邮箱)
7933
- async updateUserProfileAction(user) {
7934
- const userInfo = wsCache$1.get(CACHE_KEY.USER);
7935
- this.user.nickname = user.nickname;
7936
- this.user.mobile = user.mobile;
7937
- this.user.email = user.email;
7938
- userInfo.user.nickname = user.nickname;
7939
- userInfo.user.mobile = user.mobile;
7940
- userInfo.user.email = user.email;
7941
- wsCache$1.set(CACHE_KEY.USER, userInfo);
7942
- },
7943
- async loginOut() {
7944
- removeToken();
7945
- deleteUserCache();
7946
- this.resetState();
7947
- },
7948
- resetState() {
7949
- this.permissions = /* @__PURE__ */ new Set();
7950
- this.roles = [];
7951
- this.isSetUser = false;
7952
- this.user = {
7953
- id: 0,
7954
- avatar: "",
7955
- nickname: "",
7956
- deptId: 0
7957
- };
7958
- }
8647
+ const routerAlive = ref(true);
8648
+ const reload = () => {
8649
+ routerAlive.value = false;
8650
+ nextTick(() => routerAlive.value = true);
8651
+ };
8652
+ provide("reload", reload);
8653
+ return (_ctx, _cache) => {
8654
+ const _component_router_view = resolveComponent("router-view");
8655
+ return openBlock(), createElementBlock("section", _hoisted_1$b, [
8656
+ unref(routerAlive) ? (openBlock(), createBlock(_component_router_view, { key: 0 }, {
8657
+ default: withCtx(({ Component, route }) => [
8658
+ (openBlock(), createBlock(KeepAlive, { include: unref(getCaches) }, [
8659
+ (openBlock(), createBlock(resolveDynamicComponent(Component), {
8660
+ key: route.fullPath
8661
+ }))
8662
+ ], 1032, ["include"]))
8663
+ ]),
8664
+ _: 1
8665
+ })) : createCommentVNode("", true)
8666
+ ]);
8667
+ };
7959
8668
  }
7960
8669
  });
7961
- const useUserStoreWithOut = () => {
7962
- return useUserStore(store);
7963
- };
7964
- const _sfc_main$p = /* @__PURE__ */ Object.assign({ name: "Message" }, {
8670
+ const _sfc_main$o = /* @__PURE__ */ Object.assign({ name: "Message" }, {
7965
8671
  __name: "Message",
7966
8672
  props: {
7967
8673
  color: {
@@ -8015,39 +8721,7 @@ const _sfc_main$p = /* @__PURE__ */ Object.assign({ name: "Message" }, {
8015
8721
  };
8016
8722
  }
8017
8723
  });
8018
- const Message = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["__scopeId", "data-v-5a726c1e"]]);
8019
- const _sfc_main$o = /* @__PURE__ */ Object.assign({ name: "Collapse" }, {
8020
- __name: "Collapse",
8021
- props: {
8022
- color: {
8023
- type: String,
8024
- default: ""
8025
- }
8026
- },
8027
- setup(__props) {
8028
- const { getPrefixCls: getPrefixCls2 } = useDesign();
8029
- const prefixCls2 = getPrefixCls2("collapse");
8030
- const appStore = useAppStore();
8031
- const collapse = computed(() => appStore.getCollapse);
8032
- const toggleCollapse = () => {
8033
- const collapsed = unref(collapse);
8034
- appStore.setCollapse(!collapsed);
8035
- };
8036
- return (_ctx, _cache) => {
8037
- const _component_Icon = resolveComponent("Icon");
8038
- return openBlock(), createElementBlock("div", {
8039
- class: normalizeClass(unref(prefixCls2)),
8040
- onClick: toggleCollapse
8041
- }, [
8042
- createVNode(_component_Icon, {
8043
- color: __props.color,
8044
- icon: unref(collapse) ? "ant-design:menu-unfold-outlined" : "ant-design:menu-fold-outlined",
8045
- class: "cursor-pointer"
8046
- }, null, 8, ["color", "icon"])
8047
- ], 2);
8048
- };
8049
- }
8050
- });
8724
+ const Message = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["__scopeId", "data-v-5a726c1e"]]);
8051
8725
  const avatarImg = "data:image/gif;base64,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";
8052
8726
  const _hoisted_1$a = { class: "flex items-center text-[var(--top-header-text-color)] mr-18px" };
8053
8727
  const _hoisted_2$9 = { class: "pl-5px text-14px <lg:hidden" };
@@ -8057,7 +8731,7 @@ const _sfc_main$n = /* @__PURE__ */ Object.assign({ name: "UserInfo" }, {
8057
8731
  emits: ["logout-click"],
8058
8732
  setup(__props, { emit: __emit }) {
8059
8733
  const emit = __emit;
8060
- const { t: t2 } = useI18n("layout");
8734
+ const { t: t2 } = useI18n();
8061
8735
  const userStore = useUserStore();
8062
8736
  const { getPrefixCls: getPrefixCls2 } = useDesign();
8063
8737
  const prefixCls2 = getPrefixCls2("user-info");
@@ -8078,7 +8752,7 @@ const _sfc_main$n = /* @__PURE__ */ Object.assign({ name: "UserInfo" }, {
8078
8752
  createVNode(unref(ElDropdownItem), { onClick: handleLogoutClick }, {
8079
8753
  default: withCtx(() => [
8080
8754
  createVNode(_component_Icon, { icon: "ep:switch-button" }),
8081
- createElementVNode("div", null, toDisplayString(unref(t2)("common.loginOut")), 1)
8755
+ createElementVNode("div", null, toDisplayString(unref(t2)("layout.common.loginOut")), 1)
8082
8756
  ]),
8083
8757
  _: 1
8084
8758
  })
@@ -8112,7 +8786,7 @@ const _sfc_main$n = /* @__PURE__ */ Object.assign({ name: "UserInfo" }, {
8112
8786
  };
8113
8787
  }
8114
8788
  });
8115
- const UserInfo = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-8d3c6bbf"]]);
8789
+ const UserInfo = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-058b21ff"]]);
8116
8790
  const filterBreadcrumb = (routes, parentPath = "") => {
8117
8791
  var _a2;
8118
8792
  const res = [];
@@ -8149,7 +8823,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
8149
8823
  } = useRouter();
8150
8824
  const {
8151
8825
  t: t2
8152
- } = useI18n("layout");
8826
+ } = useI18n();
8153
8827
  const levelList = ref([]);
8154
8828
  const permissionStore = usePermissionStore();
8155
8829
  const menuRouters = computed(() => {
@@ -8177,7 +8851,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
8177
8851
  var _a2, _b;
8178
8852
  return [(meta == null ? void 0 : meta.icon) && breadcrumbIcon.value ? createVNode("div", {
8179
8853
  "class": "flex items-center"
8180
- }, [createVNode(_sfc_main$v, {
8854
+ }, [createVNode(_sfc_main$x, {
8181
8855
  "icon": meta.icon,
8182
8856
  "class": "mr-[2px]",
8183
8857
  "svgClass": "inline-block"
@@ -8210,7 +8884,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
8210
8884
  };
8211
8885
  }
8212
8886
  });
8213
- const Breadcrumb = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["__scopeId", "data-v-ff7aeb5b"]]);
8887
+ const Breadcrumb = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["__scopeId", "data-v-ae72fbd3"]]);
8214
8888
  var zhCn = {
8215
8889
  name: "zh-cn",
8216
8890
  el: {
@@ -8641,7 +9315,7 @@ const setI18nLanguage = (locale) => {
8641
9315
  const useLocale = () => {
8642
9316
  const changeLocale = async (locale) => {
8643
9317
  const globalI18n = i18n.global;
8644
- const langModule = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "../../locales/en.js": () => import("./en-DJIGbjmW.mjs"), "../../locales/zh-CN.js": () => import("./zh-CN-85_i0WWX.mjs") }), `../../locales/${locale}.js`);
9318
+ const langModule = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "../../locales/en.js": () => import("./en-BXmz6NO1.mjs"), "../../locales/zh-CN.js": () => import("./zh-CN-CY7gEVUl.mjs") }), `../../locales/${locale}.js`);
8645
9319
  globalI18n.setLocaleMessage(locale, langModule.default);
8646
9320
  setI18nLanguage(locale);
8647
9321
  };
@@ -8741,7 +9415,7 @@ const _sfc_main$k = {
8741
9415
  }
8742
9416
  ]);
8743
9417
  const emits = __emit;
8744
- const { t: t2 } = useI18n("layout");
9418
+ const { t: t2 } = useI18n();
8745
9419
  const appStore = useAppStore();
8746
9420
  const theme = computed(() => appStore.getTheme);
8747
9421
  const handleClick = (item) => {
@@ -8751,7 +9425,7 @@ const _sfc_main$k = {
8751
9425
  };
8752
9426
  return (_ctx, _cache) => {
8753
9427
  return openBlock(), createElementBlock(Fragment, null, [
8754
- createElementVNode("div", null, toDisplayString(unref(t2)("setting.theme")), 1),
9428
+ createElementVNode("div", null, toDisplayString(unref(t2)("layout.setting.theme")), 1),
8755
9429
  createElementVNode("div", _hoisted_1$9, [
8756
9430
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(themeList), (item) => {
8757
9431
  return openBlock(), createElementBlock("div", {
@@ -8776,7 +9450,7 @@ const _sfc_main$k = {
8776
9450
  };
8777
9451
  }
8778
9452
  };
8779
- const ThemeSwitch = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__scopeId", "data-v-49906bf4"]]);
9453
+ const ThemeSwitch = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__scopeId", "data-v-e1d7d761"]]);
8780
9454
  const Chunjie = "data:image/png;base64,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";
8781
9455
  const Duanwu = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIUAAABGCAYAAADiplcmAAAAAXNSR0IArs4c6QAAIABJREFUeF7NvQmMZdl5Hvadu9/71tqrt+nu2ckZkZRJcZEhy4sERRHt0IKHEizGommJtAMriR3DAbLACRIYSQwESRwDCQHDiS1ZEimZFElRSixKdGxxSJOSRhqRHPZsPdPd1d21vnrb3e+Jvv/c+5bqqunmSELyemqq6tW72zn/+f/v//7lKDSvTzzjnYf7UYXqxwD1FIAOdPNHjXwSIz4YQCkLusxQphN0/FXYlodpnkBVgGc50ArQVYISMaLgHLbCFexlh4h7BdygD2VZs0vOf5hdyLyllPm+cP1TDnoTb9XnvefIP57rl1mOajiFp1xMqxRerw3bc/mAJ+7gj+b6uqrAL84RLGs2jPOLnbiuwghaf10r62d2kH8cH/xkJsPP/138xDMXymnxORV471DNhCzcdlVViPcHQAXoIoadV+j7a6igMErHKHUFR9mwoOBZLhTfL26jE11AYPuI8xSj4jWsdB5B1nOh7BOCMROCE4Mzu4f7DOKbEI+lQ/4Yrl+mObL9Y7mMb3nwHRdZlUO5DnIfcKIQs7H+I7h+Gadwck4QMC0zmVi/3zljEZ4YMHP95xSK99/84CdvKXziGe9CZX1Fa7yjyjLYgX/PEGfDCaq8kIew0xQdq49RPkFWFrAtC1prWLBhKwXfcqE1EBdjVH6BtrOKqtLIiwlCt0La6kG1gvoaZwnBA87ymYPZCNH9hOyP5/pcrfneEFahMS0TWSSe7cqi8W0fRVWg7LlwW9EDPugZH6ufvypyhCMN/psUMbIyh640/E4Lbvu0a5w1Pvq5W6p6jzr/cz/yNwHrH8plqxK6LGGJijNqvExSVFkpOkWXOcpJDl1qKGVDQcNSFrjuFcVCWXAsBw5slFWJgX0Xfe+c/LXSGuP4JjbalzBq2ye0xRk3eY8ZaQbn25zMB16J91PjD3b9bDBGkFgYZmOZKD6dppqleCiFjWAVR8UQ3uYKLNGaf7jnz4/HaBUODtNjuZrSWhYmLXW4uQbLcYxJ5punvubX18r6KXXhEz/6rALeS7XDQ6gReI+W66IqSlRZblSQ1iizKaqJhm1RIJRoCMey5Tie1lEOPEWNYcswHFT7CP0ubEXtUSHJhtgM+9hDDrsd3mMcHniqH3TuHnAd3k+vPDAE0ZBF5A5yZDpHXpUodYEqG8qCqThuThuB7SGyQ4ydFN5Ke2ZG3szzU0t4hylG2QRZVcpC5X9cpLoq4CCD192Es9YCiDVOeS0/v/6yuvjJvzyE1p3Fz5Z5bn6tNJTFCaZMlChGUyhtGzNC/dBIn4aoRwoKhYeCQlU5KodQgQ1XRaigUZYFPJ3BsTuYhtWD2bsHnNj/P3xMFtEgRqB8DPMxlK5QZMcI/T5aXhfj5BAcWWV5CG1PFlLRtmGH95rsB3keLsr07iG8wmilRuNQACkYlrJRxHdwrv9WjPsaVuTd/7RKjSgUuioKlEkmJ3JCXzSArkpROzLRnNAsQxUXsDjhtcTxb5ZoEd6AEQjRICKnENuZWDF8rw0aGZ4pz2O4josU+k0PxswrOcuZuP+jn/mJ2SkXtO09mqRZ0ovXJ444nqKjQoyLGKUuUZUTeMpHGPSQVhlC5eJgcge2jIctiyfXJbx+BEUV/6Cv+vrp8QgYxIjzWLw+M+oaSjSGgm0HKNNDrLcvIfMUsEVtcf9BU5sf/wvaTkqEdoAMBTzPRQGN1CrgUsWL1FUopyls5ch8UADMFIuVrC9U258aZ9AjySdTjAYDOJ0Q3dUV485CodS5mCYr8KGs+9/kg47V6bqRd2hsuYxHPShLXpaRe7H/czeYMj5X6GIiuVhEbc7+V5tpjXwcIygdlEojp8moMjhaoxusYVhM5bqrbhtJOsEgO4brtWRxEYSXOhVvhCYblrnf+72qssTx67ehSo1KV6LJKQxWVcGxfaT5EO3WNpTmXFlYCXoYrGnYfo0X3+AC6ol/9IwurAqpqrASdFAojcj1cVxMMUEqmoPmxK4sEQaOh4An1YgFxJTQPMjYmtFDMhpjtLsnKNjpRAj7XQSt1gzrEIhS2CzfWwBA9WDcb0xOM77EQZY1+6KwEQvV822GYHEyjU2cvb084Y1s1EIiWmP+fCIssxNrFHEK5BVsy0GFUkA1ygw9fwWjMjbCJcKoseZ2sR8folIlLMsXASiKFFWRwqGg2DaUbxuUeNZLa+GMkgEtv3gA0OkI/Wgbrh0gKVIk2QCWVcJz+7CVh3PROm6qAbzNzr3aYib89UI/94/+ghZc6DgyoMoxA9vyQhxnE8DiAwI2TUmjemZzd2L2CiJsnstGMhljdHtPAGZ3dQ1O14fth/J7HieIhyOEvS5s36sR+HwETs756TJC9WjBdh1Yjm3AL8dnvohPrHwzwXM+bC4QM4mZK7tGddSfnwvHokbh4iiSFHap5PpZRZBO7JTDsTwZfBGQWkHxR4fagWOQJsY8E7MpoODvNk2zgxIlbN+fOSUnn79Ic4zv7IkWqKocOh2j462iVDbyghyFgqMVtCpQlAOE4QVshms4zoZI1hScoPWGGlqd//hf1I7jQNtcasq4ivzOAebNZjkcrwaRIuxivGSRKVUPsQaiocYm2hgUU4y8HHkADG7eFonvb2zADzwkZQHl2JjsH0ErjfbaqmAVDsAyaXa2WDiuA9f34PKeas1l0LZR7WYOFtT+spTMJ7n+2JJZkOOJp/hVyeQRbHNi5X05Of9mDqZnRtUcOgFiTZRU34CYKuOxzW1446OZY+VfUcp4oGrsV0njLMdxmC23wRkLYqG1jB+9RF0ksPISHZdMsSNEouC7mh4gkZiVE1Ruga63SXnFQXYD7dYmqn4HlmuciJMvdfn/+BEyTyIUYt/5RYkgR5HntTSbIV+0dTPtyY9OClwu+hjnU/i2B185eFUdIvc0smkspiRot+QhaY74UBbJHM8WDeRwpRNfnAGC+L4fBfCDAIrqlXfTzHtj55sna7DBEji4V1jKskJVFqjkewWytvw625df0GSarntegzniLDOJyyu6EdNFbW0+YcS35hOW7JsRKo6zjL3r3MP+5uMp8jiVa1lZho7qYlIkyKghLGKUSlhlnie0fWRFganaQzs4ZzSlaLNj2J0t6G5DIi6Lhbry0z9K4mEmDPJwVHti8zWUTeKjnoETD86J0XmJ9TiQmxymEyQZ3VaFaZUgyVNEfoC19jp2jm/DaxP9Aukkmdlk23fQWVsx7ukJP5r3EbYjhK0a8DYTvSgIC0plbuvndqJZvXleyEAXeY6yIDA7DZicXDNnaCwCu8pogUaQZSplnE7O8sI5OX7LWHb5jwv2jYJTphkcYq4Zc1mgmGZzInGcoRIi0eAPYY+0giPsqRbeSKgBHMH1QngqkuceJ3ew2tpA3OMiu9frUVd+7sc0NQSFwWgIasxKVJsJ3jRPcc9SABFwNhqC8lZlFg4Hh4bytmz4rg/btaCCBBeCK3j97i3EaYwgClE6NTXuu/CiCH4rvAdv+2GATq+7tFKWAd4c1Nbod9k0ACiLAskkRpaktfo/sSLuB2jPRHoLQHQxvCUydAIsLwrtifPJJ5t7aMxc/bsYKnoWRQ7b80QIKSQihJpmfYKSRKIAfuMAEK8Ik6msmkSkIbGQVCkyb4rIWTUUe5miY1sY2w6s7pxEbG5PXf3kv69FfBv7LJxEYQTijEGjvXVLCy3tIGAEsEixO72D6VGMwA/QanVA9czX8fgIrb6Pvr8h9rJt+Xjx9svwui1Ea/177ZlS6PX7RjtQHmvUPgN4zaDNEeOioZhhislwjHgyfSBzcIpVrd96EG3yBpLzpv801zZi2opCNEATSNS6QD6cQlUEqQouWeUG0BJkkkvi55UCdUVeFph4QxEKA3w1inyEnr+OkV/cY6LU1V+kUNS2jtKY57XKOuWJxNPK4CsXXTfCpEwlQkq1VRBRFyk820MynqBSCulkgng8hhP4iLotTEcTFOPYBNdcGysPPwQ3Cma40LIU1tbX4XtUmXNPQrSYkZCZRV6w8AsehTlmdDxEPJmcOSX3TPWJNx6A33nT010/yfLxi9qEJFicoEpzwV/0rJp4VEMkFlkGHTNASZrAhBQWWWYzXDUGrDXLNB/CjUJJdSC1oEq60ArasuHxfTkX41cK6uqn/oqgJDKYJJSMhjipIgzyrtIMNlWO2KG5i0eL5lkWHu4EuDFKcP3V18VD4DHJcAw78LB6fhuT4QhZksCnt+E6Yn54Q7xZPtTm+gaCIKiB2OK0N6jevDdzKNQimWRUMTXU3dt3ljyQ+ZnOshdnezsLV/xDCYI5+Ozr0zzkwyHUVMNXHhyOsaPgui4GxRhWKzDeyBKRWPNF9A/k3I0rQHNiNDU1jAhNqfFQbxP9qIuW1zKpDkpLWgM5KpJuXOBkYtXDn/px3dDaRPan3TgllWh75jpSCsUtNcTq29cifOCxVewdVvjFl+/i91+9ju76OsZ7B+J9tDfXEfS74oU4vo8sTVGUdKlKOU93Yw1r/VX0ur17Aoai7JSxcPXz1S7xgts5FxWURYk7dykU977Owpb3C6KepTlOnu9+GuaNrp8eHyA4LgG3hUyV4nK7juFwWm6A3ewYVugarKfruJMkNNUhhlreDMFYj00jEMrC21cfxkPRBuIiBhy688AgHeF3Dl9GkiVCIjaMrnr40xSK0ylxvs8cC1FNpGAbd3phvOnBXmp58GxgZ1xgUlZigvga7uwinUzh9zqiOQjYS0uJNiADShWXTmK0u2088dgTpy6kk2t49sCN1V/AFg1bcXf3LjK5h/8vMcGphuJ0YS1LxLdfRdvdRsoF4JjUAhKJ/O7aJLQ08pK8iKpjUrL+Z55hwzYLZ5NVcNIKaahEqDh/f2LtMWwFfTgaYF6ccDz0RIoEMV3aqhA2m9pCPfzpDxssN2d95WeakiYoJkGvhdfiUItE0Q4Si3guyrxAMpwgn07hBj4c1xP+YzoeC1lF8Bd128KaTidTkJ1bWe3jkSsPz1D0XGUvYIgZ9ppnKDS3dHLqsyzDnf27EldYVNpnich9NcWJqTzL2Jx5/kaATxcJJIM9eNMUVriOkqaAhBaVAakCTqqJOcrYksGd8TmNB7x43rjA+WkLkXIx0FPsuwnQ9eFZNjbDFWx5PcGAHuel9loaIo0my3M8qEd+6cOnPotw/Sf14YlPMn4xPhqgzJiYQ8rWgBUSTQ3j2Ajb+HCAFk3INAHdTZqQhNSusvDI5avo03QszLI87wxszmMNwqMseMmL2Gbu3mmkeYa7B3soS7KEf3QvrtSAs6SAmElJf8hTF/EU6eFtbLQuYjzTEhLIMcJwCpHYCPqiB2wWcoXVoQ1bAympduWg5fi47uwLVnTho/KUmCAhxprUB9EaJhfED0MKxV99089F/390cChUMB+ivdITgZjP5in6pTFBvImylHS+Vhjhwvr2khAuIobFBbF0s/UfFgNOi1csqwqHx0cYTcf30N/mc98eUeEpCz+8toU/s7aBTreFT7/+Kj61exf5AxFhsjyWRIhAOz68gxWvC+1EyC2zEDXNBr/Xt0ciUWKnjhHG0yRRcOEwxrrVQlxwIZCoNmkMk+wYqTXAlegxHOkUmUszYaLUyybALD716GfevFDwRqbHIyQ0FWEoZBMIVoM68llnbMlTUCpLZhovEGV0TZnpBSDyQ5xb3ZTA0qLKmIHLU1T48vg0onMSdQBZnmEwHmIcTx6Qybx3+VPl/nv9TfyZyMfayjq6oSck0Kfu7OCf3t41GOnbeNHbSIcHoB/XCzYwRp3hJqGG+kQkEsn3MJrcpNSdvIbYlQqK3FJRIS6n8GwfvtUSwSBGoHBM8iFKleJS8BACJ0DL9XFgxUI/0B1tXFKhwh79zEdOIV4ffAVRMOg3E0jew+ZREBhQoqRLck6DjJvpJC07H07md27219AJ+UAnlkRN/xnHy9gWeYCaap7fce3NLxGwdS5FpTFNY/mKs9QEvBaQzNzVXR55ztHTdoAPtDtQmGJzZRuh46CsMlQqwc/ux/jC0YFgGJJDXIVlE1g7RVg4ZvlkhKrMEHgdggjxsCRcXud9mIg46XSq+iZntr6vxrmoKkkOXrXaIpT8Ihg9zgbwnBCuJFHX4FG4pBywCrxv4x3YYOJPmYH8F5OeXp3cxU58iKTMoR777EfuXVoPLhPmLs9AXnQPx8dD8ZjbnTYc17hCzevyoMB7DhQ++bDJ82xeoR9go7uK0FsO2Eh2F3nROk+iTp+Rc5LFE8qXnhIlX+oezCcats/EJs39cgCpQRifmWaxYBD50yzHwnzWrjSeilNcKR1cXInQ77SwEkZwbQXHtZDnY7S6m/ivv/kSriUjE1Fd4HBErS8MkiyiJIaucjgO+RnGlkyQTJiFmqijaSFms5xFZnk+eGQ5kZcSTuCrlPoLQ3GT4RTeQit5vxIh5XeT68JxXPE6eLx7ES2SWbaFnWyA65O7GOVxLRTLBPwpSvDbJ334UIPbu+JK9TbW4DE/4IT0fN/LU/ytay4+8AMucsnAMiaguVorCLHa7iPyOHhvpJtrTbDwkVqx1JZrgdgRDWI0jLh3taaR2pYskS8jIFoo4ivHCbaGY6AAnry8he31HjqM6ygN37MkvrK2so3rw2P8jzs3cczIK4k+mQSSQTXxVwfRspRJN8xPpTAwbLUc8qeGoMloPD8jMA3iNhItLr/WsCkwtRwxGfjxzgWs+l2JgUiWWy2gjaBKTIsUtyQUk9G0jXbJUsmB2c9GeG1yF+rxz/61+SJtBv5Bfa4zPs+bGe4dCN3tdtto93szv5g35dhmVa+OM3zvS2P80ttXhBaf475GMIyQBK6PlXYXXSaH1Blfc7NhJtYkCxsNIfZR0toWRcyYnGXZWlCSC+RYhQrTNMHg2st4Ok5RMeI7yvHOt1zB9toq2r4P17YQuiZVsddZRxyP8TvTGP/7nVtI6fMzZsHspNrVZ7yIZtZEnu06pjNXtMaTqHM2GtdrtojMXdOclEUujDITcuZhOY2rrW0RirNIJ2oQPv1eMsDXj19DqjMyCTUJafJHJLeDt/H45ygUy7PLfJvypL+ztFDPkhrzoSLNcHSXPAFgh6FJuZMEHnMd33EQkep+APRvjpibjW7YRj/qwBc/u3nVAlAL1uz9OsmhwR4UFFGsDR6RZCKjZo2pMc/F4xkU/OY/+QVs9wNsbGzARYYnHtrCxY3z6IQBPNdCi9lqqkCvu4HB8Aiuq/DZ4xF+9ehQGFujMczKpuY0g95oBwPlGkQlGmMhPXBxuCXEQI+iwRdNkHA2NFwYFrb9FVxubaDntuqxmc+ryQsy3g21RMHE4qrCS+PbuDU9ME9ep0ioJz73Eyb50GgmkZzv7tn46rBEVmfXLcnDaRDihMbgBSaDY8ETThTBjgI4tsnx5L/AM0GZZgYWJ54r3bWYGmgSTsXWSn1krfI5oYqr1Ecv7Ij2IFBqAKhJJG5OPTdJ5vEahFar7PpZGjVrYm41Arh+G89/8jOoVIWnn34Lej0PYenhbU9cQeg5aIU+IsdGy3MQRB2MxmO4TBbyQvwPr72EazHdYJoQTnZd39nczsJ156t9PgdzDFI/CGtE6zyXem7r6Vp03M2kU0t23GiGK2T8ajNGAVxx23i0c05iH3fjAb4+fF3KGRdxvXril39iSVNsuBY+vBng/9xLscvKsDf5ol2cHB8DroswDAVEMQJ3ruUhLjXG+SLxc5bdOv3is3zn2hzQvHSCNjoBAaABbs1r2UOpxa/BFc16Es1hkovki8GpL30Nt158Ba+9dgtPvPUxbKy2YWcK73z6EbiM5q6twK8KbPbX5XrTJEG73UZoO/jmwS7+8fAQ0xr81etNJk20R60VjHaohbX+zmkWjbHw+/xpmowz870JgzfnmV3nDPeYBeBv611Fyw1rQakwLVNM8kQy0EUjEcE8+cs/uWQL3tN18My6h39wK8Hd9HRV0RzwhtivfhLe+DTLkOsKHc/HW/o+3rvaweduDbGfZaLKXJYgLiFJAxxl9UtI16BqapGm5qTRbItqlweEboBu2EInMCn0BlTW4LIGlkZDGZPT+OizgVdAdvcAB7/xBThuhN///W+h02tj6/JlPLISYLXdQ78dilAEKCWQl6YZgsAXDejYCuPpIZ5PgZ8d7NUCMIfYc8+k1geL3klNDsyEpfFkltbGCWfxAeiRNzb2ywtPFsWTn//J2VV6jsLf2HKx5Vn4b2+lOMgf4IpnaBIJBTNTyLUxSXOR6pBECYEg2UxdIWYREipElougqV+VCTt50gYzmD/yn9Se1KBSTE4NXhs3lO/RvPSC9n10XZOIrEEGlKr+1uf/NbbsHEeDEcbDHHt7+7j4+KM4txUC4wxvffQy+u0WQtdGOwxxNBrj6rkLsNiPgaA0jbHZXcE/29/Hbwz3Z+v2DVMAZ7ml3zbR+iZ1+cJhC9Ms4/eWz39U4I2jgB/qh/jBroLt5Pjvd0q8HL+xpjjrbhhqPz48krC54weoXBvKMxNPN8is+DnMNFpgTkQ1Kp/nb7BH40YKSJx9LYPGGaAU7WLO1/VbWI3mcZUGczRyZxTU7DdkOwd45dOfhdNyEQQuktTGzRs7CFe62L6wgS1fodNaxfmNFcETDgocTad465VHoXSB8XiXtW+4srGGYQX8850dXKtyTKgzZoO/uNrn3MmDauD7LdX7OZEn523xfKKdKRQck0cDDx9aaWHdztD3Evz8QONzh/WDnGUnztBL1BLTycRkOzs2BocDSapZW2OTk1OKXGr13tzskspvJq1OJKHrabDkKTc1x66z5255AdbbazNSSI6sXb4ZOG0yz8oKO5/4NTjlCEle4eKFc9jbHyIrSxwcHuLilQu4sN6BW7ro9dtYjQLsH+5ha2sb51dWpUzw+HgHjtfDk9vn0EnGSH7rWdxaewi/unker7mVpMaRJ2jqQRqQO8MSSwRa8xhGcGaTvTDukoX+ABS7HLJU9LOoHurr1G+pt/zKx7RnKfz5Th9vDy10nAw9O8bzSYX/+S4veNJhncvZg0gkXbG9O3viQWye3zIVUKeomJkH0kxsHSI1uKLBAEbVGweBGmMuRuakc7eS2oe4ohe2TY3lAg0yO2ddeykaiVnP33oNL/3CL2PjwjYKBQR+CJ/aIq8wHY7hBT7Wt1aw3fKhlSX8ye7hLr7rqe+Aa1WYjPeRTo/gttbxPStd7Lz6ApQTYTBOkG09hC+cX8W09gYE1NWYoQGbZs4M8yjCIhS18V6ExiaNLhpnwXWe1aPMccvJ8T0LU5z1vnrrr3xMU0t8f7SGdS9F1ynQtVIMdIL/ZsfCmITFiavMVpg8wilBuxNXO9jdF799Y3tzGSjO5vTEupeHPjGLC4LUVBzMwaG5QTJ5pH0jz0fgBjX3MA+jLJqKOYhldZcFpwCu/7PPY3DrJtxWgLYkFSv4oYdCawkiDY9HWFlfw+WtCFmcY+9wiN5KF09fvgIgxa2bLyF0FJ7o9bFmFRivPoRguIuv39iB5/bwlScuY88xtPvsX91LYpGCPy0MugQvF8bXuJwNK7o88DMMc8rqJVyoQ1M1xTafSPW2X/3r+gejPi46EbouTUeGdTtG+gd1iH//ToWdzATtNlwbW7ZGaDlgbxRmCxNpk5/PbGC3tHA9zpAKlTpb9zJZh/sHIvFr66uzGgUyaBJd9VjttVwib9Z7ozDnlnZRMRhw6YoLyjYInuNILad51bkgwrvMytnkL0ah8P/z4iZ579Yu7nz+SxgcDYTYWdlcR9hqoWATF5YmkkFkGyfLwUqvDy8bY3+S4+rlC1jrtpFOD7G7cx1/anMNg/EIj7/ze5C7CtODu3j51i6uPnYR/8JyMawr+U0wtMZENUaa4yWDiczL3KuYl5qzKapK+owlRW5MEQHygtkxI7Cs4Vl0fslzccF14FklnMpCwXQbXSJVFqZ5gbgscESW88/92k/pP+320XUcdP0KLSvDeX8K2yrw9+9WuJFqfGfg4krmoQQngmHxQrK2XUfDZfmfr9GxCiR2gd/LMnxlWGJSamTiZQBHoxEcy0KnVUc/5Tk1RkcDJNMYfuCjt766qAtmP9NldB0z8ZwQCgG/7kkAmiuEJczRQJLFxNYGhDbYpVUUuPL8NXzlW6/ipVduyj0HrQjtlb45Fz0bx5aE4ySJ0e51seq5yGKNra11eKrEcP91vDso8Vt3DuE/8Xa8/6nHsTse4ZW7e7D3buNtqz5e2L6EzzrufAJrRrNxU2f8xULMQkThfsjyFHNM8rhtK4QW8Fio8N6Oi17F0k0Ho9xCVinkhY1ECqNyqUNlkM62K6iP/j9/W1+qIikobjsVIjvGtpug9wda43/aq9CtgPOVJ3bCc1z4zChWgQhNZDMLqYLjVHCrCi27QttL4bklfj9W+KcHFQ4zhYPxUIRivdOtI5xKKrXiaQzbtiULi3mbcRxL4u3VSw+hFbRM5HMxv8Ismhn7trga7hmXGow2n5mtu4YZFaRhPJSdZ38P3d/8V/i+dz+Kr702wFdfP8BIA931Fbk/UwhMM+OYjDKU6HVaaNkKvaCPhwIN+7WX8enXb6Fz6TK+44kn8F2XNlGOc+i9V3B99wDl1at4zyPn8PPTHN9ihHMxZ31h0iWjmhldM5LLfHKZAj8LDcxHgULxQysO/t1OBc+2ME18TEsbU4bQK5sBVsSVjZhJwKTgrRTTqZaMLfVffvHvak8zFhEisDXaToEte4KOl+HXjnNkQwYIA7QcDy0peC0RekpcWM9W6His+9CIFGsXeQMlBsjwv9wFXovNlBxNRlI11otCCbzQ9Pi+Sclj2n8Sx0tzSv7h8ceeMALEuESdcLQIbmas5gKmibSFt1ou8mKKjOnrqJBZNlKlMK40CqkCVwY81yqENSjXPv45JHt3sba9iqciH+9cc3CnzPDcoMIRAmFkGWZnXgOFhMEw5o883K3wnZaNr7zyGr5yZwqnHWB+CJuyAAAfiklEQVT13BZ+4Kmn8I4gw53br+NXru+je/4Crpw/h3ddWsXLgxz/ZqWFAaOdVSn1MhImryOr5EqaCGtDkZu8j/lrJhL30SBctB9ar/DdbQdp7iAtbEwrG4XDvBwbR7GB5tOiQJEr0Rbj7A8Kj/7er/8d7WgPvhfAtTQ6FAp/gq6b4ku3U9wZQ4gadnXbDGx03QQ3qxJfTSoMKmDNs/COQOGSq+DaFe5WBT5zqHErMS0NqCFuD45E/V9aW5dJ3rmzI8JBJrDTbsMPQiTxFGEYicZg3IPI//R4mQGlRtyMKzKnvYELcYGrg10MDg5hhy7On99CNwol9yGxgHEOHFcOBpaLw6rC3vU9fO3j/wKWU2KDn+12Mbi5j46e4N3nV7C55mOigZemGjtFiJwsph/g7a0SXjLAc3kXL9/chbI0Lvbb+HOPbKOrXLyaKeRba7j2rWu4cvkc3tLr4ek28Ht3j/HN849gcG5NvIoGA4nWKln/WTGTEkw08C0FVyrA+Iw09vRA2AqjkhVN80zSmRn046oCmxBQBzVUOr0Y3wLe0y3xzoAZWD7issTzqcL1RInpeMhXeIdTop1r7OU+Dkg4/hf/13+k2UvBYaWyKtF1NDaiBF27xL+9PUWsjS1lMkavpfCbeYZvJBV7dBgYVCe1tF1btEGuSUQZgoovPsQr+zuidh/qrSPLUuzv7eHCxUsymeyDxTgJ8y2Woue1RDRJKssOUANk63LHEw7S2jTB26ZTtMM2xtOBeD7tTgu+x/5brH2iipb0aDx/bQ9f+tpruPHKy/CiAI8/+RjyNMX+zl0xMM5KG1uexvvWPLylZ1bcSpDj+aGNl7WPZJqhB4V3b3nYHUzwYm5hZeMcLm700LeB48EeOi5tt4sbloMDK8Rmq4tHHn87hqOb2Ll7F+fSKa7EOfqZwqjnYnc7ROHZ8Nh2wbUE0HuWFreX8SNXuhA2xB0ngVnfDkrNJq7AMXFcVeFY29ivgINSIyewtthySoFEtfHqTeV7y9J4q0pxIU+xM8yh/tZn/wMdUB40S8oK+LrARtuFY1d49XiELLPQ9kNkjoVv2hZer7N75swkI5knFnWD7mqQdDgZyQfWog6ODg9RFIUQPtQWN2/eQBiEOH/uvIlV1PkkQsrU6XKN4py7bYuZ5g03sVwAHU5zPHl0gFVXIQjbEh7PqxQFi3PZXokjNB6h8+pN6Vj31ddfw7XrI7hbfQSRj+PBECpJcXW7i7f4LfSCDDcPJnhp4qLnlviTF0JspIe4VXXx6v4B6BG4fhvtbguJAiZuH2GwjoMsQ3djFetdhZtHQzyy8RA+9J3fj06wgTTbly42wW8/h/LOLuxvvYTCsvDsBvB/P8ogP4XCEYAeuAqhy36czPI2PcnIHDM3hVFi33WlA1FTjkFvTKkKaVbgIGnjt90Qr1omu2zm7i+YHwKDx6sELVap/Yef+oj2XRuFdqRPZqBK9FsBWn4LpR1BOzmYiPS7VYob1CaLcfZFLoF/aRJVTriki/Zwb29PzANrRvfu7mJwPMDGxibCMECapsjSDEWRC+ikluivrGJ1ZXWWgjd30+pnm5FWdVSkVilCnScZ1l+5gY1KIwgsMQ2FZWOSJHKdbpHh8NqLWGsFOK9KbAbsB5EJ+LqeOGhnE7R1jMPCxQisxQgwSErs3B1g6Lfwvnd9LzKV4Df/9fO4dOEi3vWud+CFmzdwdfs8Xrz9Kv7jH/jLOB4fI/AqfPGXfxHv3Z9gk4XZbBjS9VGutmCvbqK69DB0+zyKGzdRHRzg+Pd+F5/6DheDagJPMIyJ/LJzj+WYDj6ecmDLzxp2vXjoqVEYSDxkSY7jJMN1K8ROv4uUCUEnfdUT6JydNq4mY6iPfeJD2vNd8cfpmkRslFWFuLK5Ds8KpZZjT5f49WyykMp+wg1YiHCepuYX70awRJaK97G7uyvagvWSrOjisQSgBHaSKT6dSJHR6toa1ohHZha4EY2F+1jQTjOWhMqj0HCu7aC7dxM910e/35GmbJ7rwysS3Lz+Cq5fu47t9XW4nR5eujnA16+/is7WOUmK7R2niLohsrUWqrRAnCj82Pe8H9/1xFN4+PwFqDKRlkLHwwRrq+uoqgNkqo3BCy/Af/4G1LuewEuDF/Hop7+IddsHikIAa9kJUFoF8l6J3CoR/Ds/iSJsQ1sedHyILLBxu0jx5etfQwJWcGXC4BpBAALLFO6wMo9CQTMdE7inMVJtYdBewa1OG9M6m2o+/wscUk0NzBa6AlrM/fiJT35QLDKTPWnbaXc95eHyxXNwqgiZ1ni2inFTmq7Op3xRLJZVUmPgTYyBGoo4gjUecTzFaMge4Ub904ycO3dekP3B/j62trfR7XRnLidXO9PPpGrJmveParDMot1qSCnDVJo6V/m5JsLK/QHK576B1aJEr9tGK3LRaps0vySpcHx0jO//E9+H9WgNX/rm78DTobjS7/nCNaxHPjb/9gfx2rDA8zdfwfu/60/Co1tX1L0yX7wD1bLhXrksbRjiOMX0hWvY/eefRfg970Whh2j/9C/BiQJpK0CBrLoh8mmMo4Nj7A6HePrv/V3oCxtA4gI9C1TKGRur2cALR9dwffAKQib2uC646FmoPUlTHE8THExiTJIcmaMw6fZwvL6BfFbT0ZB3tdmYG5AFpV+b3rpllfrIz/6ItLsqVQWrsuD7LtpehIubF0RLPFcmeCHLZzmFBCYG/t/bxKQRlOXLAzdefw0s5QuCECurq4iiFm7eeE1WPz2O69dfFVfvstDFc9aRgmOqo00KWcP9N1K/yHzOeb9lndhERSXTuyiRfOMV6G++hJUowvb2Ghxbo9MKJazvua5UZHfDAKvdS+i019EpNC50LsNvh3BUgmQyhQMftt1CGDgYvvIyXvqv/le0z2/ikf/uPzVZ5EWJyYsvAs469EYbd77+PIoXX0D1L78E3DlC8KfeDftdTyCdjjH47Wvw3/4INt73NI5/62so0hj5ux5D1baR5xOkVSIN2OMixSRLkeQWhtMM4zjGZDpFnKQYOz6mK+vI1ldRsRjrjFeTxWem7mydrv7qz/2w5kT3uxEGQ9pxGw+fu4DNlVVcS3N8NWcPikVjtBiXmCv0mVJarFauP8qM5zRJEEaRYAO+fWdnB3mewfN8TCZjrK6tY3V1daGYfi5aBJgLSs8oiOVnumcYFh9asrZtk5/JSWMv68HXnkf+yqvohQG2tzaxutKFQ+/EceCzQ6BLC0vt5ICLptUKEXlt9IMI/ZAhAR9+1EagS2R3D+GHPURrK5imEzhJgv0vPgcvasF59xMoXAU1HGF6/TqyLIF9YRNYayMpE5STISqfvcz5VLYszrIqQMVMD2+aFsjLSkoskzxDnMUYjlm3UmJsR0i3V6G31oG6p8d8wZxcmjWqbJD8wgeXwwqA+tDPfEBf2loVMPTynUN0nQ08deUhvJxX+Foei/lo9LmJI8zHv4lPnDZBXNV3bt1Ef2UFkRTR3Pva272L0XAof+h0ulhZW4Xr1nGQpZhYffS8yPo0d2emZWYspoQf6xtmnmd9CyZBx4Y+PEb8jRcxvb6DwFY4t7GGzdU1tFqeCEXBZFm61iTl2LCNcRbfF5c7z1MolcN3KHAuLMVKK7KepikaLybudMXyPeM3Nel+0PQMLFRS5c02TEy718bMMpaUUxCMqx6nOfJSYzKZCr6qIgfVyjawsY6kG6GcEXuNXajnaFGRn0L9zhbNDFcYIZJb/+gv/CV98ZHzKEcTvHZziMcuXsUwCvBsHIs/a+z3mRppZqFmH6l/yLMck/FYSKkgiuRi3f7KLNBDPHH71i0ZPOINsnrslLe1fU4IrAY3GIxQ12c0NFUNKhtsaeo3TFq/aSWv5HzsBEcbrkkrk8ptwswSPWJthZGtcjhGcfM2qt0DOGWBKAjQbbewstJDGPkI6JUAcIUbsKRkn8C4ZLMXQn0SaIzHWIBL2liaLNcDJ33MTU2nBOwkIdk8Myc+ZetDMA6RI2Wra8aM8kKSaYskQQFeT6Fqt1Gtr6FYXUE5az3FEkx+mf4dM1dTrPtcVxqz0eSqzx3Ik9PaaGP1N77wEX1+M0R1lGF/X2Pj0jZ+PU2R1jH9BsCdFIs3lJO63eLxYIDxeGSyjG0HrU5HMAXNxt2dOwijUMwGV9Te7q6YEa7iyw8/IhNcMyx1F8f6IWfApXnIuepqhF7Yv7KCxVpV9tcgRc3dCKiPRQDZR8qk3bOWQloW8E987sMjFKMJnEIjIHnkuWi1Iqx1IvQ6LEqi1rDELWQXOrZ7JPYyfURMk1XiH11RP1izBnMk6QqSSOzQV7IqvhQvrCxNzgQ9SYvdiW23Zi0LSVdMWcrQ78PpdaT4hwDQCAJpaSUCSrGSVpwUPgoD60roorCVgUlGOZ0crhnheunPPqM+/MWP6atrDrzMRkuv47kyxjdT8l+naYlaFN4AbBI/DI8HGNPLkMIf0wtyfWNTwCQHczwaI2q15PfF14ApfHmGjc1NU/SzgFwbrbBsN2qVvIQ4mI1dQTHknaZwuWMOy/TiFDpJwS2c2OeBVVHcvYeaRLrvc3IKxiDYtYed6EoUiUkslt6dji2uMzWH55BtNFtYzNo9ixBz1EwSDDtO5jy3qCNbJltqLli7wU410ltdGUHhpOYVdFYgTxLkeYWitKS3aNALEXY9eOx/xbTGWUMTx0w6q8QcW4qpNE0dG+V6LipW5NEUM151ovjIDOtCX9RmcJvknb/z7Ec0J4gt9OK0hV+fZohN0eEZ0rXcaWCuMZTgg8HhgXE5a/XZ7nTkfc/zZJUQY3T7JoHFDOKiO9QIoqkHlcxtaeGz2At7HvOQn+bSUhe7MLJvhAJxDDUcQh+PoCdjaHpRaYYyz2QSWPAjAsGfKRBMJCaTWmhoCkZeCn8jt9h0InZJIFGD2GLmRGBoEpo0w4UBbvZJoVykcSLeAs1GkeQidDyxrVgTQi1hOt2Zhu2cb1salASRi6Dtww8dEQppaCJKwDUtCyhsji31oGxqptgnJAqgWm2iY6gwgvY8uc8mg93M/UJuaK1ijSLQUP/5lz+sddRB5Ck8P3JwPW6WZzPdjaU5BWCcEqUbj0ZCzQ6Ojkzvx8pQsRtbW7h144ZcdmNzSxJYjDwsGqL6hGe4uzMCY1G9CH8/F6baskKxvC5OYY3HUKMxMIpRJfxKUGQxqqySLn0SA+H31JT6lbkpPtIUDLZjriukjHwudiQ2dZmmHpTyaGrwbM0YkBGSWVP7hfvjOaTIqeZRhNpvWlgJAJ63RpS+V64tHYJsj5gJqGwm5NHkUTPU2oETXh8nkVwWYHU6sLtd2O0uLAqvpDzUDffrTC0TjV1oM11ncan/5N98VNsdF+1A4XePHdxITs+hXMYURnDuwRv1wydJIgAzarXl+/CIgeJF26+wurmBVpsxifmZZ+ZihmzvJyQLd1WDqdkJGaLPC1hsqD6dwkoSIMmg2YIg5s+pdPujOWH/cRGQTBvNUBqBYER37v4aT6apv2RnOeIfrmjH9rC5uiXFQOwNQdaRTczYScbhaq5Ni3QxZk2p9MBnjkSTNSU5VeCWjXxPhIzmxa6gJUJKbMItI0yIPZdQu+kfVtk2KpuejBEQTdzB/iBcdExV8AMxJzQh9yYmneKWUH99+Isf0SvdFtoBcG3q4NZUoe+U2C+4TcG9onD6O3MtQnV8sLcrapLqlZ7H0f6BYAkSWGubm7V3Qbq2KZKdm5BlJdBgmJMRN6MPFqFmo89mwspFzNVLr4PtfAg6qT1YmcbvWQGkCfQ0Rsm+n3GCIm3wBb0VjnolWkiSXqq6ib302mAuqCstpllCuNFbw3c+/j6hu7lNFDvrE0Sylyd7fBXcFGaaybV0nsJyCFLN6hYTwB7loSNlEOxWQ76EJqFi/TK1Qw0gpYc6m+ib3dtEEErLkiBawWQljrHjIHVclJ6PivhCmvEv7FN20hDM/Md5/pL6S7/643q730UrUrhV2Lg+BP5sMMEtK8S11BYvZPZq1PoJATNpbQqT0QiH+3vCUq5vma7xg8EAo+NjUadUy+xRce7CBZNR1ZiPeu4FJ9f1pnOXdLlaTNSvHGcCPI1SaZhLebcuu5MEncZ6EjDKrjmmcZvFCef9cOlTMEZjcBtHgtEqTeHQK8m4kskX8DiW7nMrCQOWA8dGaHmIPA+BsrHW3RLuo1SlNJnd37ttclPzkhkJcCYZ/GEKryilDtYLA0nx074Dt9eC1wsFWJaejSJQyG0g1hVSS6GgtqCJEdBoiYYwHii9DWoRagwKh43UtpAoF6ntyM957ak0HsbSomt+OSEo6gc//eN6rd9BJ9LI4ODFWOFSNcbDPReJG+DrYwv7zOZYIitmvsnsGk2i6eHuHqJ2S7yLnRs3JPDVIAfyEFSxm5vb9XGzYLh5yMZa1IphqRCoKf+rC4yl/QApcHIT3Myurijnd+EsFjndmsTixBq34A8SSYoMfqkQwkJAgomBqjQHshQqS8GW59QWpru/2RWIk2jTDbWZ+8F9PWhmMmTJVPp/G+7CxIjYd/Rgbx+u8rC9fg4bQRuryidBjsjxEDmuZG+xrYDteqI1OVIju8TILTB2ckztAqnF7DEtghFrbgFcIJW0AkhPD+FK6ui0CAdJMSbbcP8Rdj1WlpxXygZO1ocskpEL0E792V/4sA5DGz0GdIIQe0mJLnI8GgJ+y5Gqrq8MbLyezMnmJhN6hlZrsEiv4/aNGzh36aKseGqIglnCkwn6a2vSee3ujZto9Tror67Vq3gBU5zIQp4By1ogZzxErWE8JvFyy0uu4LqEkC6wXyf2mqpvYYqgygIOg1FZBi/P4HMvz6qCz41ZpDyApoZ7nBUyucwKS5NMQKEMaN213/S9MBwlzYvOczEJ0u2P/SdYHyb34ML3HPQ7K7hy/hHBF1VBD2Qo7SMZLfW0gpexolyjcDQSz0LcclCEtmARh96GrVA5FnLbRkzTYNsoGCjUkJTDHBQmCkGdamgoF2P9iD9q4owCw8zvGUF9j0VupEJDfffP/Kj2/BDtto8o8oRqJWnzcLsUm7YZeUgsC/9q38Fhk241s0OLekdLIu5kPMLK2jqGR0diMjq9Hu7cuoX1rS1MxyMhYKSLbKczq9RqPIZ7YE+Tnt+ITw0mJUNLKQRM8beY2r+YKm/MitDENBmcdK3hFyWCqkRYFQiLAiG0pLwJS8kJZm9xEkoklsgdsBCH3kfNglI4mNsQuGY3Yt4Da2LZyM2mdpGm6rJ1iphI3wvBokICUgGXRS7hb+4IdOP2HXERiUla7Q40k5QlS91C5SgULlBYQM4aEdvQ5vw9o2aotUDKxrSSQqxEE5D1pCAQxFIoxErWDVTFzEhu6glV3Gjn2o3mOEg9yLv/yV/UoFCwqXrbQ1KUWLFdXFml+swQhg5sz8Egc/FvR0Au6mrZF21Q7dHevsQGok5belPQdDAQRhVMT0NIHdpxz625ikYchIubxVhmUdhTgO4iqdZgmWZ7A7PtRePk1v4+N5CBBW6C2akqhKxyB1PbzIiwI76phmH8wQwq1ztVMHMhs5xzyl0LCrDNCjPaWXQkdRsUijKDXZbwiwIBdznSpuUCTaV4Ayy0znNjWmi66ixyyRL3bTjdLvaiCLHw/XPamrmg7JethV4goDDCIfcluZhkMmtMIZqBusuqe1yZz8lT1T0yxaNpXKdaOBbJAHNfGk+2NdR7/vEP6ZEdIvB8nFvpY5hP0CqBSxsROmWCYakRhC6sCrhZ+bgF9nA+5VWbjs3z52UV337dcBJCAVeVaAq6qswDoKpl7URv1dR6nBrGncd1FkiuxhU2uME0ODGtkgRD1CtjXo5n7tRihZd8sZiHsQizou26xzgPFZXbDHZlVG2hLRMQpFAUJdpFgaiqEFUaLeaVUjM02oifqYNuHNyKe5qzgx7tvAifCcIJhyG2X2OsFBLbQsoJsx0kvofjMJSuu9xcx3SLMFBLJlRyXpuGZmbiDSyYPzvH3gTfTK5so1XZyJ7e3+y1LBHy9oZV4UlvAvW9P/0BvZuYoMvDF7YxiaeCxlvtAJcjH/vJsQRlqGSnJAlXt5CdshMu7fedm7dw7tIlucBoeGxUfBQJjtg4d65uhgbBGAyI0bQ0r6V7POWGzedO/8NJiZ99slGLsqGbBqukKAi2TBBdd8PyMe2fA2/aDi6UQtabqkhBEgEpNY5WWCtKrOcp2kUJT/gMli0Ybcc+V1IDSpxAT4FjJTEyduepPaOKZqrEnuth4FiYsnuvVkgtG7FFvNAsu+XCYrP058PQJCs175ueowsfWIiU3ltQtExzU3tuTHbRolL6gZ//Yf2tsULX9bB+fh0ZY/X7AyhPoe8TRRc4THLJ5h7pCivnt5B22qdri9M0iGyhbnz7uWLng5mbqhn15Tq3M87z7b09zxJodJHsito4UnV/C0NFG/UrA1qDWlHG9f4XjwRb8LVVa4VKsqrbVY4oSxHFCULu3mNay4gGoGI3nXGEr0ZlOUiZ0U1vgFigKqRsYKIUpkqJudq3HfEWGm5o5hjM2LMFPLBUE7UwuSdrcOcGeWlJzcVmDi6jeILxndvohS7Uhz/zzPDZfbsT+Q7WLqyyIhAHr97ENImFrr7Y8nA7ZZgXoi4934J/5TKKpuHnTHwXp6y2ZzXryVXELAlLOKFciKA0jiVxZMULYbvsLM+maS1U3NJCtmlcIjvvIw8nDdr8+kt3VXMgNcMx0zv3Hl1TYbVb21Ie/LyEm+Zw0xhRVWLddbHiWGixmoLtByV51gw3SwhEWxCWUVvQNDC2ZBvB4AbUCbGBVINpIZ0Sy8WEKfgLTVlln1WpYWWAjQSaMSaSKkAvR/p3mw1yzZXnKYsNfqPZMZxGPRK1RCySfeRqJq+8gjQp4EKN1H/2Gx979ld2svcycrd+YR0TIt1bt6Wi2ilY/2khCFo40gWsgkyelr07dL8vtu+sl9hs7k1H96+0ECccBluCbTpNMB2NECdjWVHsBuO1PLhuhMurSkLqrufglcSV/liLnNmDaIvTQnlCjDXR1Lp00NjcRQd9zpVIPKUsYMc57GkMaxrDS3K08wzr7LXRZRZWgFbgw2cEVZqu8CCzce8xKuyTfOJ4Sr9tRjItxBYwqDTYvSOneSKBxVVBjUItkpp8Vr6YBcZaUBQZRscp4uEADkPvaYWDLIHrBZLTysNd24cXkDyzULoM39fJPqcCwEVooaH29zG6dUfAru24X1Z/7V/+9b/55d3kH7YYtNrsYuA7iMYD7N86QGp7aDse1rstDCqqNhvcpZxxfm7HMPXYnLNxS82gi5vGKGWWY0QfXthABZfsIndtpj0vYgz2j5EWUyGgclQIXBcb3TYeWrex1QowTIBrAxeer1ASpdP9ci1h7mKGEM6M4T6I2BiXlvuxSui77soryTxkEGVVVvIc9jSBO5zAGk5lQnqOje0owHanjfVuG71WhMhlVrVJuecoJLrCcVnKQhpx3xPHwYGyMCwLKdHjwqBnw+s0HonAxUZLSIGOwttaMcZxjqNJjJsHFrI8RpqkmMYZkipH6EUIWGEXcqsME5YPHBe5W8IPIomqkgY3JmkuHYuLJipzHOzcRaAtDAsC7MlPqWc+8Yx30+p+ZVqV79hueYhaESbk+dMch9y5B0DIGgPmGyiNqWiwXFi4fhhgKIylSSxhsQr99lycZdpXS2hln+FmeiGMi3DLqOlU6GNB/bRLUqTsoNdycGndh1XY+OaNTMwIc9hLlxukpXhyo4O2b6Pgl+thUtg4qughfDum5g2EZhmjGTtMOlxMR4ZwmmCN2y4FPq6u9LDd66IVuAgZzbRNf22Wzx5XjB1RMCrBYceKgmFjVGqMsky2aGJiDyM/9OXaDHTlKUbjDDmB69jkaG62clxet3AQp3h9v8Cto4lkavl1SgFbNPcJ1r1QSC4GSrK6Sw61K8eduwqROrddspu10ajlQzb9Oh5jNJ3Ad+i06+eO0733yKfe94m/csHy/M9tRPY72j6wnzDS7MhJx9wMhsXDjmXyCEuFjDvUsB82ba2lccyUN8FpjQwu1vHpunpc016Brc/snP2pR0jLQmoli7yUzCHF/dTJFVBlU5iiEI9vtvC1u/uodCHX6rRDbHciXNj0EbqGQ5mUHl7PLQwKw/QtKkezRk7wKg+qZWo07xQV/CzHSprjnFa43IpwsdvCBvdM9V3hIw7KEkPaZu6bphUSgsmc9bYl9ssCA232ByFJFqFEX1VoOQX0ZIrJpMDeNMWN4wKO4qIgC1VIBdjVbQ/wKtwdZBhOC6kMKwpuZO/LIqPn5EQh1vs9icPkpN9z3gOFjr4QywwB21NI+U5horvcTp1tpodJbNIbLO85yyre/+yf/99uzQzqWz/xjPf4xtpHNzz1Y4HnPfWtg7IzyTjxCkOpvbDBbpgjZhkzb5C9DCQHjdJoTMiIDyOrzZDxhilkwIbbE7loWYX0mOBxGTK4usSjfR5S4WCaoSoU9scZilzjoa6N736yja++sIvnXk+hbO6rFcALPZzrd7HdtbESWegFLlj2yDS1o8TFTm5jJ7fEfZ6JwiLIWhQZmguW4dUBPQF2pMvrMLP4+5TvyoDMTppjs6pwOfBxMQrEzIWeJ1zGpKow0CUOCo29shQte1QaM8IJYg+LTSfDll1IfCRNcozjDDfZr3Q8xXSaSs8Ixlb+9MV1PH97jNFoKuqfe4exMoyNXlnpT+aTJpRsrhe1oaUdtDL9QOp4TZM7ca8br+HbCpHlYFyWo1KXX4dSP1PmBx//xgc/KUTG/wsR0NGyZ+AiPQAAAABJRU5ErkJggg==";
8782
9456
  const Zhongqiu = "data:image/png;base64,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";
@@ -8793,7 +9467,7 @@ const _sfc_main$j = {
8793
9467
  emits: ["change"],
8794
9468
  setup(__props, { emit: __emit }) {
8795
9469
  const emits = __emit;
8796
- const { t: t2 } = useI18n("layout");
9470
+ const { t: t2 } = useI18n();
8797
9471
  const appStore = useAppStore();
8798
9472
  const theme = computed(() => appStore.getTheme);
8799
9473
  const handleClick = (key) => {
@@ -8803,7 +9477,7 @@ const _sfc_main$j = {
8803
9477
  };
8804
9478
  return (_ctx, _cache) => {
8805
9479
  return openBlock(), createElementBlock(Fragment, null, [
8806
- createElementVNode("div", _hoisted_1$8, toDisplayString(unref(t2)("setting.festivalTheme")), 1),
9480
+ createElementVNode("div", _hoisted_1$8, toDisplayString(unref(t2)("layout.setting.festivalTheme")), 1),
8807
9481
  createElementVNode("div", _hoisted_2$7, [
8808
9482
  createElementVNode("div", {
8809
9483
  class: normalizeClass(["item", { "active": unref(theme) === "springFestival" }]),
@@ -8862,7 +9536,7 @@ const _sfc_main$j = {
8862
9536
  };
8863
9537
  }
8864
9538
  };
8865
- const FestivalThemeSwitch = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-86abb21f"]]);
9539
+ const FestivalThemeSwitch = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-868f3996"]]);
8866
9540
  const _hoisted_1$7 = { class: "mt-24px" };
8867
9541
  const _hoisted_2$6 = { class: "layout-list" };
8868
9542
  const _hoisted_3$5 = ["onClick"];
@@ -8872,7 +9546,7 @@ const _sfc_main$i = {
8872
9546
  emits: ["change"],
8873
9547
  setup(__props, { emit: __emit }) {
8874
9548
  const emits = __emit;
8875
- const { t: t2 } = useI18n("layout");
9549
+ const { t: t2 } = useI18n();
8876
9550
  const appStore = useAppStore();
8877
9551
  const layout = computed(() => appStore.getLayout);
8878
9552
  const layoutItems = ref([
@@ -8900,7 +9574,7 @@ const _sfc_main$i = {
8900
9574
  return (_ctx, _cache) => {
8901
9575
  const _component_Icon = resolveComponent("Icon");
8902
9576
  return openBlock(), createElementBlock(Fragment, null, [
8903
- createElementVNode("div", _hoisted_1$7, toDisplayString(unref(t2)("setting.layout")), 1),
9577
+ createElementVNode("div", _hoisted_1$7, toDisplayString(unref(t2)("layout.setting.layout")), 1),
8904
9578
  createElementVNode("div", _hoisted_2$6, [
8905
9579
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(layoutItems), (item) => {
8906
9580
  return openBlock(), createElementBlock("div", {
@@ -8927,7 +9601,7 @@ const _sfc_main$i = {
8927
9601
  };
8928
9602
  }
8929
9603
  };
8930
- const LayoutSwitch = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__scopeId", "data-v-f1cd8c74"]]);
9604
+ const LayoutSwitch = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__scopeId", "data-v-265f0ebb"]]);
8931
9605
  const _hoisted_1$6 = { class: "text-16px font-500 text-[var(--text-color)]" };
8932
9606
  const _sfc_main$h = /* @__PURE__ */ Object.assign({ name: "Setting" }, {
8933
9607
  __name: "Setting",
@@ -8937,10 +9611,12 @@ const _sfc_main$h = /* @__PURE__ */ Object.assign({ name: "Setting" }, {
8937
9611
  default: ""
8938
9612
  }
8939
9613
  },
8940
- setup(__props) {
8941
- const { t: t2 } = useI18n("layout");
9614
+ emits: ["clear-cache-logout-click"],
9615
+ setup(__props, { emit: __emit }) {
9616
+ const emit = __emit;
9617
+ const { t: t2 } = useI18n();
8942
9618
  const appStore = useAppStore();
8943
- const userStore = useUserStore();
9619
+ useUserStore();
8944
9620
  const { getPrefixCls: getPrefixCls2 } = useDesign();
8945
9621
  const prefixCls2 = getPrefixCls2("setting");
8946
9622
  const drawerCls = getPrefixCls2("setting-drawer");
@@ -8956,21 +9632,20 @@ const _sfc_main$h = /* @__PURE__ */ Object.assign({ name: "Setting" }, {
8956
9632
  `
8957
9633
  });
8958
9634
  if (!isSupported) {
8959
- ElMessage.error(t2("setting.copyFailed"));
9635
+ ElMessage.error(t2("layout.setting.copyFailed"));
8960
9636
  } else {
8961
9637
  await copy();
8962
9638
  if (unref(copied)) {
8963
- ElMessage.success(t2("setting.copySuccess"));
9639
+ ElMessage.success(t2("layout.setting.copySuccess"));
8964
9640
  }
8965
9641
  }
8966
9642
  };
8967
- const clearCache = async () => {
9643
+ const clearCacheAndLogout = async () => {
8968
9644
  await saveTheme({ theme: "whiteLight", layout: "left" });
8969
9645
  const { wsCache: wsCache2 } = useCache();
8970
9646
  wsCache2.delete(CACHE_KEY.THEME);
8971
9647
  wsCache2.delete(CACHE_KEY.LAYOUT);
8972
- await userStore.loginOut();
8973
- window.location.reload();
9648
+ emit("clear-cache-logout-click");
8974
9649
  };
8975
9650
  const themeChange = async (theme) => {
8976
9651
  await saveTheme({ theme, layout: appStore.getLayout });
@@ -8984,7 +9659,7 @@ const _sfc_main$h = /* @__PURE__ */ Object.assign({ name: "Setting" }, {
8984
9659
  const saveTheme = async ({ theme, layout }) => {
8985
9660
  ElMessage({
8986
9661
  type: "success",
8987
- message: t2("common.updateSuccess"),
9662
+ message: t2("layout.common.updateSuccess"),
8988
9663
  // drawer遮罩层遮挡问题
8989
9664
  appendTo: document.querySelector(`.${overlayCls}`)
8990
9665
  });
@@ -9009,13 +9684,14 @@ const _sfc_main$h = /* @__PURE__ */ Object.assign({ name: "Setting" }, {
9009
9684
  size: "400px",
9010
9685
  class: normalizeClass(unref(drawerCls)),
9011
9686
  "modal-class": unref(overlayCls),
9012
- "show-close": false
9687
+ "show-close": false,
9688
+ "append-to-body": ""
9013
9689
  }, {
9014
9690
  header: withCtx(() => [
9015
- createElementVNode("span", _hoisted_1$6, toDisplayString(unref(t2)("setting.projectSetting")), 1)
9691
+ createElementVNode("span", _hoisted_1$6, toDisplayString(unref(t2)("layout.setting.projectSetting")), 1)
9016
9692
  ]),
9017
9693
  footer: withCtx(() => [
9018
- createVNode(unref(ElButton), { onClick: clearCache }, {
9694
+ createVNode(unref(ElButton), { onClick: clearCacheAndLogout }, {
9019
9695
  default: withCtx(() => _cache[2] || (_cache[2] = [
9020
9696
  createTextVNode("清空缓存&退出登录", -1)
9021
9697
  ])),
@@ -9047,7 +9723,7 @@ const _sfc_main$h = /* @__PURE__ */ Object.assign({ name: "Setting" }, {
9047
9723
  };
9048
9724
  }
9049
9725
  });
9050
- const Setting = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["__scopeId", "data-v-5daa401e"]]);
9726
+ const Setting = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["__scopeId", "data-v-89f387dd"]]);
9051
9727
  const _sfc_main$g = {
9052
9728
  __name: "index",
9053
9729
  props: {
@@ -9194,6 +9870,10 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
9194
9870
  onLogoutClick: {
9195
9871
  type: Function,
9196
9872
  default: null
9873
+ },
9874
+ onClearCacheLogoutClick: {
9875
+ type: Function,
9876
+ default: null
9197
9877
  }
9198
9878
  },
9199
9879
  setup(props, {
@@ -9201,7 +9881,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
9201
9881
  }) {
9202
9882
  const appStore = useAppStore();
9203
9883
  const breadcrumb = computed(() => appStore.getBreadcrumb);
9204
- const hamburger = computed(() => appStore.getHamburger);
9884
+ computed(() => appStore.getHamburger);
9205
9885
  const search = computed(() => appStore.search);
9206
9886
  const layout = computed(() => appStore.getLayout);
9207
9887
  const locale = computed(() => appStore.getLocale);
@@ -9214,10 +9894,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
9214
9894
  "class": [prefixCls$2, "h-[var(--top-tool-height)] relative px-[var(--top-tool-p-x)] flex items-center justify-between", "dark:bg-[var(--el-bg-color)]"]
9215
9895
  }, [layout.value !== "top" ? createVNode("div", {
9216
9896
  "class": "h-full flex items-center"
9217
- }, [hamburger.value ? createVNode(_sfc_main$o, {
9218
- "class": "custom-hover",
9219
- "color": "var(--top-header-text-color)"
9220
- }, null) : void 0, breadcrumb.value ? createVNode(Breadcrumb, {
9897
+ }, [breadcrumb.value ? createVNode(Breadcrumb, {
9221
9898
  "class": "lt-md:hidden"
9222
9899
  }, null) : void 0]) : void 0, (_a2 = slots.default) == null ? void 0 : _a2.call(slots), createVNode("div", {
9223
9900
  "class": "h-full flex items-center"
@@ -9225,7 +9902,8 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
9225
9902
  "isModal": false
9226
9903
  }, null) : void 0, setting.value ? createVNode(Setting, {
9227
9904
  "class": "custom-hover cursor-pointer",
9228
- "color": "var(--top-header-text-color)"
9905
+ "color": "var(--top-header-text-color)",
9906
+ "onClearCacheLogoutClick": props.onClearCacheLogoutClick
9229
9907
  }, null) : void 0, locale.value ? createVNode(_sfc_main$l, {
9230
9908
  "class": "custom-hover",
9231
9909
  "color": "var(--top-header-text-color)"
@@ -9239,16 +9917,17 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
9239
9917
  };
9240
9918
  }
9241
9919
  });
9242
- const ToolHeader = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__scopeId", "data-v-73b69ef0"]]);
9920
+ const ToolHeader = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__scopeId", "data-v-0b5dffd2"]]);
9243
9921
  const {
9244
9922
  getPrefixCls: getPrefixCls$1
9245
9923
  } = useDesign();
9246
9924
  const prefixCls$1 = getPrefixCls$1("layout");
9247
9925
  const scrollRef = ref();
9248
- const useRenderLayout = (onLogoClick, onMessageClick, onLogoutClick) => {
9926
+ const useRenderLayout = (onLogoClick, onMessageClick, onLogoutClick, onClearCacheLogoutClick) => {
9249
9927
  const appStore = useAppStore();
9250
9928
  const permissionStore = usePermissionStore();
9251
9929
  const pageLoading = computed(() => appStore.getPageLoading);
9930
+ const tagsView = computed(() => appStore.getTagsView);
9252
9931
  const collapse = computed(() => appStore.getCollapse);
9253
9932
  const logo = computed(() => appStore.logo);
9254
9933
  const leftMenuRouters = computed(() => permissionStore.getLeftMenuRouters);
@@ -9279,7 +9958,7 @@ const useRenderLayout = (onLogoClick, onMessageClick, onLogoutClick) => {
9279
9958
  const renderLeft = () => {
9280
9959
  return createVNode(Fragment, null, [createVNode("div", {
9281
9960
  "class": ["relative flex items-center bg-[linear-gradient(var(--top-header-bg-color))] layout-border__bottom dark:bg-[var(--el-bg-color)] shadow-[0px_2px_6px_0px_rgba(197,206,225,0.35)]", festivalTopClass.value, zIndexClass.value]
9282
- }, [logo.value ? createVNode(_sfc_main$r, {
9961
+ }, [logo.value ? createVNode(_sfc_main$q, {
9283
9962
  "class": [{
9284
9963
  "w-[var(--left-menu-min-width)]": appStore.getCollapse,
9285
9964
  "w-[var(--left-menu-max-width)]": !appStore.getCollapse
@@ -9288,7 +9967,8 @@ const useRenderLayout = (onLogoClick, onMessageClick, onLogoutClick) => {
9288
9967
  }, null) : void 0, createVNode(ToolHeader, {
9289
9968
  "class": "flex-1",
9290
9969
  "onMessageClick": onMessageClick,
9291
- "onLogoutClick": onLogoutClick
9970
+ "onLogoutClick": onLogoutClick,
9971
+ "onClearCacheLogoutClick": onClearCacheLogoutClick
9292
9972
  }, null)]), createVNode("div", {
9293
9973
  "class": "h-[calc(100%-var(--top-header-height))] w-full flex"
9294
9974
  }, [createVNode(Menu, {
@@ -9300,36 +9980,54 @@ const useRenderLayout = (onLogoClick, onMessageClick, onLogoutClick) => {
9300
9980
  }],
9301
9981
  "style": "transition: all var(--transition-time-02);"
9302
9982
  }, [withDirectives(createVNode(ElScrollbar, {
9303
- "class": [`${prefixCls$1}-content-scrollbar`],
9983
+ "class": [`${prefixCls$1}-content-scrollbar`, {
9984
+ "!h-[calc(100%-var(--tags-view-height))] mt-[calc(var(--tags-view-height))]": tagsView.value
9985
+ }],
9304
9986
  "ref": scrollRef
9305
9987
  }, {
9306
- default: () => [createVNode(_sfc_main$q, null, null)]
9988
+ default: () => [tagsView.value ? createVNode(TagsView, {
9989
+ "class": ["layout-border__bottom absolute", "!fixed top-0 left-0 z-10", {
9990
+ "w-[calc(100%-var(--left-menu-min-width))] !left-[var(--left-menu-min-width)] mt-[var(--top-header-height)]": collapse.value,
9991
+ "w-[calc(100%-var(--left-menu-max-width))] !left-[var(--left-menu-max-width)] mt-[var(--top-header-height)]": !collapse.value
9992
+ }],
9993
+ "style": "transition: width var(--transition-time-02), left var(--transition-time-02);"
9994
+ }, null) : void 0, createVNode(_sfc_main$p, null, null)]
9307
9995
  }), [[resolveDirective("loading"), pageLoading.value]])])])]);
9308
9996
  };
9309
9997
  const renderTop = () => {
9310
9998
  return createVNode(Fragment, null, [createVNode("div", {
9311
- "class": ["relative flex items-center justify-between bg-[linear-gradient(var(--top-header-bg-color))]", "layout-border__bottom", festivalTopClass.value]
9312
- }, [logo.value ? createVNode(_sfc_main$r, {
9999
+ "class": ["relative flex items-center justify-between bg-[linear-gradient(var(--top-header-bg-color))]", {
10000
+ "layout-border__bottom": !tagsView.value
10001
+ }, festivalTopClass.value]
10002
+ }, [logo.value ? createVNode(_sfc_main$q, {
9313
10003
  "class": ["w-[var(--left-menu-max-width)]"],
9314
10004
  "onLogoClick": onLogoClick
9315
10005
  }, null) : void 0, createVNode(Menu, {
9316
10006
  "class": "h-[var(--top-tool-height)] flex-1 px-10px"
9317
10007
  }, null), createVNode(ToolHeader, {
9318
10008
  "onMessageClick": onMessageClick,
9319
- "onLogoutClick": onLogoutClick
10009
+ "onLogoutClick": onLogoutClick,
10010
+ "onClearCacheLogoutClick": onClearCacheLogoutClick
9320
10011
  }, null)]), createVNode("div", {
9321
10012
  "class": [`${prefixCls$1}-content`, "w-full h-[calc(100%-var(--top-tool-height))]"]
9322
10013
  }, [withDirectives(createVNode(ElScrollbar, {
9323
- "class": [`${prefixCls$1}-content-scrollbar`],
10014
+ "class": [`${prefixCls$1}-content-scrollbar`, {
10015
+ "!h-[calc(100%-var(--tags-view-height))] mt-[calc(var(--tags-view-height))]": tagsView.value
10016
+ }],
9324
10017
  "ref": scrollRef
9325
10018
  }, {
9326
- default: () => [createVNode(_sfc_main$q, null, null)]
10019
+ default: () => [tagsView.value ? createVNode(TagsView, {
10020
+ "class": ["layout-border__bottom layout-border__top relative", "!fixed w-full top-[var(--top-tool-height)] left-0"],
10021
+ "style": "transition: width var(--transition-time-02), left var(--transition-time-02);"
10022
+ }, null) : void 0, createVNode(_sfc_main$p, null, null)]
9327
10023
  }), [[resolveDirective("loading"), pageLoading.value]])])]);
9328
10024
  };
9329
10025
  const renderTopLeft = () => {
9330
10026
  return createVNode(Fragment, null, [createVNode("div", {
9331
- "class": ["relative flex items-center justify-between bg-[linear-gradient(var(--top-header-bg-color))] shadow-[0px_2px_6px_0px_rgba(197,206,225,0.35)]", "layout-border__bottom", festivalTopClass.value, zIndexClass.value]
9332
- }, [logo.value ? createVNode(_sfc_main$r, {
10027
+ "class": ["relative flex items-center justify-between bg-[linear-gradient(var(--top-header-bg-color))] shadow-[0px_2px_6px_0px_rgba(197,206,225,0.35)]", {
10028
+ "layout-border__bottom": !tagsView.value
10029
+ }, festivalTopClass.value, zIndexClass.value]
10030
+ }, [logo.value ? createVNode(_sfc_main$q, {
9333
10031
  "class": [{
9334
10032
  "w-[var(--left-menu-min-width)]": appStore.getCollapse,
9335
10033
  "w-[var(--left-menu-max-width)]": !appStore.getCollapse
@@ -9338,7 +10036,8 @@ const useRenderLayout = (onLogoClick, onMessageClick, onLogoutClick) => {
9338
10036
  }, null) : void 0, createVNode(ToolHeader, {
9339
10037
  "class": "flex-1",
9340
10038
  "onMessageClick": onMessageClick,
9341
- "onLogoutClick": onLogoutClick
10039
+ "onLogoutClick": onLogoutClick,
10040
+ "onClearCacheLogoutClick": onClearCacheLogoutClick
9342
10041
  }, {
9343
10042
  default: () => createVNode(Menu, {
9344
10043
  "mode": "horizontal",
@@ -9359,10 +10058,18 @@ const useRenderLayout = (onLogoClick, onMessageClick, onLogoutClick) => {
9359
10058
  }],
9360
10059
  "style": "transition: all var(--transition-time-02);"
9361
10060
  }, [withDirectives(createVNode(ElScrollbar, {
9362
- "class": [`${prefixCls$1}-content-scrollbar`],
10061
+ "class": [`${prefixCls$1}-content-scrollbar`, {
10062
+ "!h-[calc(100%-var(--tags-view-height))] mt-[calc(var(--tags-view-height))]": tagsView.value
10063
+ }],
9363
10064
  "ref": scrollRef
9364
10065
  }, {
9365
- default: () => [createVNode(_sfc_main$q, null, null)]
10066
+ default: () => [tagsView.value ? createVNode(TagsView, {
10067
+ "class": ["layout-border__bottom absolute", "!fixed top-0 left-0 z-10", {
10068
+ "w-[calc(100%-var(--left-menu-min-width))] !left-[var(--left-menu-min-width)] mt-[var(--top-header-height)]": collapse.value,
10069
+ "w-[calc(100%-var(--left-menu-max-width))] !left-[var(--left-menu-max-width)] mt-[var(--top-header-height)]": !collapse.value
10070
+ }],
10071
+ "style": "transition: width var(--transition-time-02), left var(--transition-time-02);"
10072
+ }, null) : void 0, createVNode(_sfc_main$p, null, null)]
9366
10073
  }), [[resolveDirective("loading"), pageLoading.value]])])])]);
9367
10074
  };
9368
10075
  return {
@@ -9377,13 +10084,13 @@ const {
9377
10084
  } = useDesign();
9378
10085
  const prefixCls = getPrefixCls("layout");
9379
10086
  const layoutScrollRef = ref();
9380
- const renderLayout = (layout, onLogoClick, onMessageClick, onLogoutClick) => {
10087
+ const renderLayout = (layout, onLogoClick, onMessageClick, onLogoutClick, onClearCacheLogoutClick) => {
9381
10088
  const {
9382
10089
  renderLeft,
9383
10090
  renderTop,
9384
10091
  renderTopLeft,
9385
10092
  scrollRef: scrollRef2
9386
- } = useRenderLayout(onLogoClick, onMessageClick, onLogoutClick);
10093
+ } = useRenderLayout(onLogoClick, onMessageClick, onLogoutClick, onClearCacheLogoutClick);
9387
10094
  layoutScrollRef.value = scrollRef2.value;
9388
10095
  switch (unref(layout)) {
9389
10096
  case "left":
@@ -9396,7 +10103,7 @@ const renderLayout = (layout, onLogoClick, onMessageClick, onLogoutClick) => {
9396
10103
  };
9397
10104
  const _sfc_main$e = /* @__PURE__ */ defineComponent({
9398
10105
  name: "Layout",
9399
- emits: ["logo-click", "message-click", "logout-click"],
10106
+ emits: ["logo-click", "message-click", "logout-click", "clear-cache-logout-click"],
9400
10107
  setup(props, {
9401
10108
  emit
9402
10109
  }) {
@@ -9413,12 +10120,15 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
9413
10120
  const handleLogoutClick = () => {
9414
10121
  emit("logout-click");
9415
10122
  };
10123
+ const handleClearCacheLogoutClick = () => {
10124
+ emit("clear-cache-logout-click");
10125
+ };
9416
10126
  return () => createVNode("section", {
9417
10127
  "class": [prefixCls, `${prefixCls}__${layout.value}`, "w-[100%] h-[100%] relative", `${prefixCls}__${theme.value}`]
9418
- }, [renderLayout(layout, handleLogoClick, handleMessageClick, handleLogoutClick), createVNode(_sfc_main$w, null, null)]);
10128
+ }, [renderLayout(layout, handleLogoClick, handleMessageClick, handleLogoutClick, handleClearCacheLogoutClick), createVNode(_sfc_main$y, null, null)]);
9419
10129
  }
9420
10130
  });
9421
- const Layout = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-1f128bba"]]);
10131
+ const Layout = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-0fb07176"]]);
9422
10132
  const _sfc_main$d = {
9423
10133
  __name: "ConfigGlobal",
9424
10134
  props: {
@@ -10446,7 +11156,7 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "Steps" }, {
10446
11156
  createElementVNode("div", _hoisted_2$3, [
10447
11157
  createElementVNode("div", _hoisted_3$3, [
10448
11158
  createElementVNode("div", _hoisted_4$3, [
10449
- __props.active > index ? (openBlock(), createBlock(unref(_sfc_main$v), {
11159
+ __props.active > index ? (openBlock(), createBlock(unref(_sfc_main$x), {
10450
11160
  key: 0,
10451
11161
  icon: "ant-design:check-outlined",
10452
11162
  color: "#fff"
@@ -10541,7 +11251,7 @@ function createImageViewer(options) {
10541
11251
  render(instance, container);
10542
11252
  }
10543
11253
  const useMessage = () => {
10544
- const { t: t2 } = useI18n("layout");
11254
+ const { t: t2 } = useI18n();
10545
11255
  const scssVariables = variables$1;
10546
11256
  return {
10547
11257
  // 消息提示
@@ -10562,19 +11272,19 @@ const useMessage = () => {
10562
11272
  },
10563
11273
  // 弹出提示
10564
11274
  alert(content) {
10565
- ElMessageBox.alert(content, t2("common.confirmTitle"));
11275
+ ElMessageBox.alert(content, t2("layout.common.confirmTitle"));
10566
11276
  },
10567
11277
  // 错误提示
10568
11278
  alertError(content) {
10569
- ElMessageBox.alert(content, t2("common.confirmTitle"), { type: "error" });
11279
+ ElMessageBox.alert(content, t2("layout.common.confirmTitle"), { type: "error" });
10570
11280
  },
10571
11281
  // 成功提示
10572
11282
  alertSuccess(content) {
10573
- ElMessageBox.alert(content, t2("common.confirmTitle"), { type: "success" });
11283
+ ElMessageBox.alert(content, t2("layout.common.confirmTitle"), { type: "success" });
10574
11284
  },
10575
11285
  // 警告提示
10576
11286
  alertWarning(content) {
10577
- ElMessageBox.alert(content, t2("common.confirmTitle"), { type: "warning" });
11287
+ ElMessageBox.alert(content, t2("layout.common.confirmTitle"), { type: "warning" });
10578
11288
  },
10579
11289
  // 通知提示
10580
11290
  notify(content) {
@@ -10594,11 +11304,11 @@ const useMessage = () => {
10594
11304
  },
10595
11305
  // 确认窗体
10596
11306
  confirm(content, tip, options = {}) {
10597
- return ElMessageBox.confirm(content, tip ? tip : t2("common.confirmTitle"), {
11307
+ return ElMessageBox.confirm(content, tip ? tip : t2("layout.common.confirmTitle"), {
10598
11308
  ...options,
10599
11309
  customClass: `${options.customClass} ${scssVariables.namespace}-message-box`,
10600
- confirmButtonText: options.confirmButtonText ?? t2("common.ok"),
10601
- cancelButtonText: options.cancelButtonText ?? t2("common.cancel"),
11310
+ confirmButtonText: options.confirmButtonText ?? t2("layout.common.ok"),
11311
+ cancelButtonText: options.cancelButtonText ?? t2("layout.common.cancel"),
10602
11312
  buttonSize: "default",
10603
11313
  center: true
10604
11314
  });
@@ -10606,12 +11316,12 @@ const useMessage = () => {
10606
11316
  // 删除窗体
10607
11317
  delConfirm(content, tip) {
10608
11318
  return ElMessageBox.confirm(
10609
- content ? content : t2("common.delMessage"),
10610
- tip ? tip : t2("common.confirmTitle"),
11319
+ content ? content : t2("layout.common.delMessage"),
11320
+ tip ? tip : t2("layout.common.confirmTitle"),
10611
11321
  {
10612
11322
  customClass: `${scssVariables.namespace}-message-box`,
10613
- confirmButtonText: t2("common.ok"),
10614
- cancelButtonText: t2("common.cancel"),
11323
+ confirmButtonText: t2("layout.common.ok"),
11324
+ cancelButtonText: t2("layout.common.cancel"),
10615
11325
  buttonSize: "default",
10616
11326
  center: true,
10617
11327
  type: "warning"
@@ -10621,11 +11331,11 @@ const useMessage = () => {
10621
11331
  // 导出窗体
10622
11332
  exportConfirm(content, tip) {
10623
11333
  return ElMessageBox.confirm(
10624
- content ? content : t2("common.exportMessage"),
10625
- tip ? tip : t2("common.confirmTitle"),
11334
+ content ? content : t2("layout.common.exportMessage"),
11335
+ tip ? tip : t2("layout.common.confirmTitle"),
10626
11336
  {
10627
- confirmButtonText: t2("common.ok"),
10628
- cancelButtonText: t2("common.cancel"),
11337
+ confirmButtonText: t2("layout.common.ok"),
11338
+ cancelButtonText: t2("layout.common.cancel"),
10629
11339
  type: "warning"
10630
11340
  }
10631
11341
  );
@@ -10633,8 +11343,8 @@ const useMessage = () => {
10633
11343
  // 提交内容
10634
11344
  prompt(content, tip, options = {}) {
10635
11345
  return ElMessageBox.prompt(content, tip, {
10636
- confirmButtonText: t2("common.ok"),
10637
- cancelButtonText: t2("common.cancel"),
11346
+ confirmButtonText: t2("layout.common.ok"),
11347
+ cancelButtonText: t2("layout.common.cancel"),
10638
11348
  ...options
10639
11349
  });
10640
11350
  }
@@ -10720,12 +11430,12 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({ name: "UploadImg", inheritAt
10720
11430
  emits: ["update:modelValue"],
10721
11431
  setup(__props, { emit: __emit }) {
10722
11432
  useCssVars((_ctx) => ({
10723
- "3d8ea9da": __props.width,
10724
- "2c0dbd7a": __props.height,
10725
- "00ef71d1": __props.borderradius
11433
+ "ed349720": __props.width,
11434
+ "ecfc4086": __props.height,
11435
+ "38f8d458": __props.borderradius
10726
11436
  }));
10727
11437
  const props = __props;
10728
- const { t: t2 } = useI18n("layout");
11438
+ const { t: t2 } = useI18n();
10729
11439
  const message = useMessage();
10730
11440
  const uuid = ref("id-" + generateUUID());
10731
11441
  const imagePreview = (imgUrl) => {
@@ -10790,21 +11500,21 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({ name: "UploadImg", inheritAt
10790
11500
  class: "handle-icon",
10791
11501
  onClick: _cache[0] || (_cache[0] = ($event) => imagePreview(__props.modelValue))
10792
11502
  }, [
10793
- createVNode(unref(_sfc_main$v), { icon: "ant-design:zoom-in-outlined" }),
10794
- __props.showBtnText ? (openBlock(), createElementBlock("span", _hoisted_3$2, toDisplayString(unref(t2)("action.detail")), 1)) : createCommentVNode("", true)
11503
+ createVNode(unref(_sfc_main$x), { icon: "ant-design:zoom-in-outlined" }),
11504
+ __props.showBtnText ? (openBlock(), createElementBlock("span", _hoisted_3$2, toDisplayString(unref(t2)("layout.action.detail")), 1)) : createCommentVNode("", true)
10795
11505
  ]),
10796
11506
  __props.showDelete && !__props.disabled ? (openBlock(), createElementBlock("div", {
10797
11507
  key: 0,
10798
11508
  class: "handle-icon",
10799
11509
  onClick: deleteImg
10800
11510
  }, [
10801
- createVNode(unref(_sfc_main$v), { icon: "ant-design:delete-outlined" }),
10802
- __props.showBtnText ? (openBlock(), createElementBlock("span", _hoisted_4$2, toDisplayString(unref(t2)("action.del")), 1)) : createCommentVNode("", true)
11511
+ createVNode(unref(_sfc_main$x), { icon: "ant-design:delete-outlined" }),
11512
+ __props.showBtnText ? (openBlock(), createElementBlock("span", _hoisted_4$2, toDisplayString(unref(t2)("layout.action.del")), 1)) : createCommentVNode("", true)
10803
11513
  ])) : createCommentVNode("", true)
10804
11514
  ])
10805
11515
  ], 64)) : (openBlock(), createElementBlock("div", _hoisted_5$2, [
10806
11516
  renderSlot(_ctx.$slots, "empty", {}, () => [
10807
- createVNode(unref(_sfc_main$v), {
11517
+ createVNode(unref(_sfc_main$x), {
10808
11518
  icon: "ep:plus",
10809
11519
  size: 20
10810
11520
  }),
@@ -10821,7 +11531,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({ name: "UploadImg", inheritAt
10821
11531
  };
10822
11532
  }
10823
11533
  });
10824
- const UploadImg = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-4a1df97a"]]);
11534
+ const UploadImg = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-fb79db48"]]);
10825
11535
  const _hoisted_1$1 = { class: "upload-box" };
10826
11536
  const _hoisted_2$1 = { class: "upload-empty" };
10827
11537
  const _hoisted_3$1 = ["src"];
@@ -10901,9 +11611,9 @@ const _sfc_main$1 = /* @__PURE__ */ Object.assign({ name: "UploadImgs", inheritA
10901
11611
  emits: ["update:modelValue"],
10902
11612
  setup(__props, { emit: __emit }) {
10903
11613
  useCssVars((_ctx) => ({
10904
- "1238a60c": __props.borderradius,
10905
- "c60c1990": __props.width,
10906
- "2f150c16": __props.height
11614
+ "7ab73d80": __props.borderradius,
11615
+ "07ec1644": __props.width,
11616
+ "48708f2e": __props.height
10907
11617
  }));
10908
11618
  const message = useMessage();
10909
11619
  const imagePreview = (imgUrl) => {
@@ -11029,7 +11739,7 @@ const _sfc_main$1 = /* @__PURE__ */ Object.assign({ name: "UploadImgs", inheritA
11029
11739
  class: "handle-icon",
11030
11740
  onClick: ($event) => imagePreview(file.url)
11031
11741
  }, [
11032
- createVNode(unref(_sfc_main$v), { icon: "ant-design:zoom-in-outlined" }),
11742
+ createVNode(unref(_sfc_main$x), { icon: "ant-design:zoom-in-outlined" }),
11033
11743
  __props.showBtnText ? (openBlock(), createElementBlock("span", _hoisted_5$1, "查看")) : createCommentVNode("", true)
11034
11744
  ], 8, _hoisted_4$1),
11035
11745
  !__props.disabled ? (openBlock(), createElementBlock("div", {
@@ -11037,7 +11747,7 @@ const _sfc_main$1 = /* @__PURE__ */ Object.assign({ name: "UploadImgs", inheritA
11037
11747
  class: "handle-icon",
11038
11748
  onClick: ($event) => handleRemove(file)
11039
11749
  }, [
11040
- createVNode(unref(_sfc_main$v), { icon: "ant-design:delete-outlined" }),
11750
+ createVNode(unref(_sfc_main$x), { icon: "ant-design:delete-outlined" }),
11041
11751
  __props.showBtnText ? (openBlock(), createElementBlock("span", _hoisted_7, "删除")) : createCommentVNode("", true)
11042
11752
  ], 8, _hoisted_6)) : createCommentVNode("", true)
11043
11753
  ])
@@ -11045,7 +11755,7 @@ const _sfc_main$1 = /* @__PURE__ */ Object.assign({ name: "UploadImgs", inheritA
11045
11755
  default: withCtx(() => [
11046
11756
  createElementVNode("div", _hoisted_2$1, [
11047
11757
  renderSlot(_ctx.$slots, "empty", {}, () => [
11048
- createVNode(unref(_sfc_main$v), {
11758
+ createVNode(unref(_sfc_main$x), {
11049
11759
  icon: "ep:plus",
11050
11760
  size: 20
11051
11761
  }),
@@ -11062,7 +11772,7 @@ const _sfc_main$1 = /* @__PURE__ */ Object.assign({ name: "UploadImgs", inheritA
11062
11772
  };
11063
11773
  }
11064
11774
  });
11065
- const UploadImgs = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-92b67a34"]]);
11775
+ const UploadImgs = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-eb21783b"]]);
11066
11776
  const _hoisted_1 = { class: "mt-10px line-height-20px color-[var(--el-upload-tip-color)] text-12px" };
11067
11777
  const _hoisted_2 = { class: "flex items-center" };
11068
11778
  const _hoisted_3 = { class: "ml-10px" };
@@ -11286,7 +11996,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({ name: "UploadFile", inheritAtt
11286
11996
  default: withCtx(() => [
11287
11997
  createVNode(unref(ElButton), { type: "primary" }, {
11288
11998
  default: withCtx(() => [
11289
- createVNode(unref(_sfc_main$v), { icon: "ant-design:upload-outlined" }),
11999
+ createVNode(unref(_sfc_main$x), { icon: "ant-design:upload-outlined" }),
11290
12000
  _cache[1] || (_cache[1] = createTextVNode(" 选取文件 ", -1))
11291
12001
  ]),
11292
12002
  _: 1,
@@ -11332,7 +12042,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({ name: "UploadFile", inheritAtt
11332
12042
  };
11333
12043
  }
11334
12044
  });
11335
- const UploadFile = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-f625d304"]]);
12045
+ const UploadFile = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-9fa6e6bc"]]);
11336
12046
  function useLayout() {
11337
12047
  const collapsed = ref(false);
11338
12048
  const toggleCollapsed = () => {
@@ -11348,14 +12058,14 @@ const install = (app) => {
11348
12058
  app.component("BmpConfigGlobal", _sfc_main$d);
11349
12059
  app.component("BmpPageCard", PageCard);
11350
12060
  app.component("BmpPageNavBar", PageNavBar);
11351
- app.component("BmpIcon", _sfc_main$v);
12061
+ app.component("BmpIcon", _sfc_main$x);
11352
12062
  app.component("BmpBadge", _sfc_main$a);
11353
12063
  app.component("BmpPagination", _sfc_main$9);
11354
12064
  app.component("BmpDialog", _sfc_main$8);
11355
12065
  app.component("BmpAlert", _sfc_main$7);
11356
12066
  app.component("BmpAnchor", _sfc_main$5);
11357
12067
  app.component("BmpSteps", Steps);
11358
- app.component("BmpBacktop", _sfc_main$w);
12068
+ app.component("BmpBacktop", _sfc_main$y);
11359
12069
  app.component("BmpUploadImg", UploadImg);
11360
12070
  app.component("BmpUploadImgs", UploadImgs);
11361
12071
  app.component("BmpUploadFile", UploadFile);
@@ -11474,7 +12184,7 @@ export {
11474
12184
  ElAside2 as BmpAside,
11475
12185
  ElAutocomplete2 as BmpAutocomplete,
11476
12186
  ElAvatar2 as BmpAvatar,
11477
- _sfc_main$w as BmpBacktop,
12187
+ _sfc_main$y as BmpBacktop,
11478
12188
  ElBacktop2 as BmpBacktop2,
11479
12189
  _sfc_main$a as BmpBadge,
11480
12190
  ElBadge2 as BmpBadge2,
@@ -11517,7 +12227,7 @@ export {
11517
12227
  ElForm2 as BmpForm,
11518
12228
  ElFormItem2 as BmpFormItem,
11519
12229
  ElHeader2 as BmpHeader,
11520
- _sfc_main$v as BmpIcon,
12230
+ _sfc_main$x as BmpIcon,
11521
12231
  ElIcon2 as BmpIcon2,
11522
12232
  ElImage2 as BmpImage,
11523
12233
  ElImageViewer2 as BmpImageViewer,
@@ -11597,6 +12307,8 @@ export {
11597
12307
  useLayout as BmpUseLayout,
11598
12308
  usePermissionStore as BmpUsePermissionStore,
11599
12309
  usePermissionStoreWithOut as BmpUsePermissionStoreWithOut,
12310
+ useTagsViewStore as BmpUseTagsViewStore,
12311
+ useTagsViewStoreWithOut as BmpUseTagsViewStoreWithOut,
11600
12312
  useUserStore as BmpUseUserStore,
11601
12313
  useUserStoreWithOut as BmpUseUserStoreWithOut,
11602
12314
  ElWatermark2 as BmpWatermark,