@ditari/bsui 5.1.2 → 5.1.4

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.
Files changed (43) hide show
  1. package/dist/cjs/components/card/Card.cjs +1 -1
  2. package/dist/cjs/components/card/Card.cjs.map +1 -1
  3. package/dist/cjs/components/layout/AppContext.cjs.map +1 -1
  4. package/dist/cjs/components/layout/Layout.vue2.cjs +24 -6
  5. package/dist/cjs/components/layout/Layout.vue2.cjs.map +1 -1
  6. package/dist/cjs/components/layout/List.cjs +26 -23
  7. package/dist/cjs/components/layout/List.cjs.map +1 -1
  8. package/dist/cjs/components/layout/Show.cjs +80 -36
  9. package/dist/cjs/components/layout/Show.cjs.map +1 -1
  10. package/dist/cjs/components/layout/components/layout/RouterContent.vue2.cjs +57 -21
  11. package/dist/cjs/components/layout/components/layout/RouterContent.vue2.cjs.map +1 -1
  12. package/dist/cjs/components/layout/components/layout/RouterContentName.vue2.cjs +42 -27
  13. package/dist/cjs/components/layout/components/layout/RouterContentName.vue2.cjs.map +1 -1
  14. package/dist/cjs/components/tab/Tab.vue2.cjs +4 -10
  15. package/dist/cjs/components/tab/Tab.vue2.cjs.map +1 -1
  16. package/dist/esm/components/card/Card.mjs +1 -1
  17. package/dist/esm/components/card/Card.mjs.map +1 -1
  18. package/dist/esm/components/layout/AppContext.mjs.map +1 -1
  19. package/dist/esm/components/layout/Layout.vue2.mjs +26 -8
  20. package/dist/esm/components/layout/Layout.vue2.mjs.map +1 -1
  21. package/dist/esm/components/layout/List.mjs +26 -23
  22. package/dist/esm/components/layout/List.mjs.map +1 -1
  23. package/dist/esm/components/layout/Show.mjs +82 -38
  24. package/dist/esm/components/layout/Show.mjs.map +1 -1
  25. package/dist/esm/components/layout/components/layout/RouterContent.vue2.mjs +58 -22
  26. package/dist/esm/components/layout/components/layout/RouterContent.vue2.mjs.map +1 -1
  27. package/dist/esm/components/layout/components/layout/RouterContentName.vue2.mjs +43 -28
  28. package/dist/esm/components/layout/components/layout/RouterContentName.vue2.mjs.map +1 -1
  29. package/dist/esm/components/tab/Tab.vue2.mjs +4 -10
  30. package/dist/esm/components/tab/Tab.vue2.mjs.map +1 -1
  31. package/dist/types/components/card/Card.d.ts.map +1 -1
  32. package/dist/types/components/layout/AppContext.d.ts +3 -1
  33. package/dist/types/components/layout/AppContext.d.ts.map +1 -1
  34. package/dist/types/components/layout/Layout.vue.d.ts +16 -29
  35. package/dist/types/components/layout/Layout.vue.d.ts.map +1 -1
  36. package/dist/types/components/layout/Show.d.ts +18 -0
  37. package/dist/types/components/layout/Show.d.ts.map +1 -1
  38. package/dist/types/components/layout/components/layout/HeaderLayout.vue.d.ts +2 -2
  39. package/dist/types/components/layout/components/layout/RouterContent.vue.d.ts +4 -2
  40. package/dist/types/components/layout/components/layout/RouterContent.vue.d.ts.map +1 -1
  41. package/dist/types/components/tab/Tab.vue.d.ts +2 -2
  42. package/dist/types/components/tab/Tab.vue.d.ts.map +1 -1
  43. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"List.mjs","sources":["../../../../src/components/layout/List.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n inject,\r\n nextTick,\r\n onActivated,\r\n onDeactivated,\r\n onMounted,\r\n onUnmounted,\r\n ref,\r\n watch,\r\n type WatchStopHandle\r\n} from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport {\r\n Card,\r\n Flex,\r\n Space,\r\n Watermark\r\n} from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\nimport { useElementSize } from \"@vueuse/core\";\r\n\r\nimport { AppContext, AppContextKey } from \"./AppContext\";\r\nimport { useAppStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nconst tableRootStyle = css`\r\n height: 100%;\r\n position: relative;\r\n overflow: hidden;\r\n`;\r\n\r\nconst list = defineComponent({\r\n name: \"DListLayout\",\r\n emits: [\"refresh\"],\r\n setup(_, { slots, emit }) {\r\n const appContext = inject<AppContext | null>(\r\n AppContextKey,\r\n null\r\n );\r\n\r\n const watermarkContent = computed(\r\n () => appContext?.watermarkContent?.value.content\r\n );\r\n\r\n const route = useRoute();\r\n const { refresh } = storeToRefs(useAppStore());\r\n const {\r\n tableRef,\r\n height,\r\n tableVisible,\r\n playTableHeight\r\n } = useTableHeight();\r\n const { formRef } = useForm();\r\n useReload();\r\n // 使用 computed 来动态计算样式\r\n const maskDivStyle = computed(() => {\r\n return css`\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 1;\r\n background: white;\r\n display: ${tableVisible.value ? \"block\" : \"none\"};\r\n `;\r\n });\r\n\r\n const tableWrapperStyle = css`\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n overflow: hidden;\r\n `;\r\n\r\n const cardStyle = css`\r\n box-shadow: none !important;\r\n `;\r\n\r\n const leftCardStyle = css`\r\n .ant-card-body {\r\n overflow-y: scroll;\r\n -ms-overflow-style: none; /* 对 IE 和 Edge 生效 */\r\n scrollbar-width: none; /* 对 Firefox 生效 */\r\n\r\n /* Webkit 浏览器 */\r\n\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n `;\r\n\r\n const listStyle = computed(\r\n () => css`\r\n padding: 10px;\r\n height: 100%;\r\n //height: calc(100vh - 44px);\r\n `\r\n );\r\n\r\n onMounted(() => {\r\n playTableHeight();\r\n });\r\n\r\n function useTableHeight() {\r\n const tableRef = ref();\r\n const height = ref(0);\r\n const tableVisible = ref(true);\r\n\r\n function playTableHeight() {\r\n tableVisible.value = true;\r\n height.value = tableRef?.value?.$el.offsetHeight;\r\n nextTick(() => {\r\n setTimeout(() => {\r\n tableVisible.value = false;\r\n }, 10);\r\n });\r\n }\r\n\r\n return {\r\n tableRef,\r\n height,\r\n tableVisible,\r\n playTableHeight\r\n };\r\n }\r\n\r\n function useForm() {\r\n const formRef = ref(null);\r\n const { height: formHeight } =\r\n useElementSize(formRef);\r\n watch(\r\n () => formHeight.value,\r\n () => {\r\n nextTick(() => {\r\n playTableHeight();\r\n });\r\n }\r\n );\r\n\r\n return {\r\n formRef\r\n };\r\n }\r\n\r\n // 处理标签重载\r\n function useReload() {\r\n let stopHandleWatch: WatchStopHandle;\r\n // !route.meta.keepAlive\r\n if (!route.name) {\r\n stopHandleWatch = _useWatch();\r\n // 卸载未缓存的组件\r\n onUnmounted(() => {\r\n stopHandleWatch?.();\r\n });\r\n } else {\r\n // 激活缓存页面\r\n onActivated(() => {\r\n if (refresh.value) {\r\n refresh.value = false;\r\n emit(\"refresh\");\r\n }\r\n stopHandleWatch = _useWatch();\r\n });\r\n // 离开缓存页面\r\n onDeactivated(() => {\r\n stopHandleWatch?.();\r\n });\r\n }\r\n\r\n function _useWatch() {\r\n //点击了标签重载图标\r\n return watch(\r\n () => refresh.value,\r\n val => {\r\n if (val) {\r\n // 发送刷新事件到列表页面\r\n emit(\"refresh\");\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n function useLayout() {\r\n function formLayout() {\r\n return () =>\r\n slots.form && (\r\n <Card\r\n class={cardStyle}\r\n ref={formRef}\r\n style={{ marginBottom: \"10px\" }}\r\n bodyStyle={{ padding: \"10px 10px 0 10px\" }}\r\n bordered={false}\r\n >\r\n {slots.form()}\r\n </Card>\r\n );\r\n }\r\n\r\n function tableLayout() {\r\n return () => (\r\n <Flex flex={1} vertical={true}>\r\n <Card\r\n class={cardStyle}\r\n style={{ height: \"100%\" }}\r\n bodyStyle={{\r\n height: \"100%\",\r\n padding: \"10px\"\r\n }}\r\n bordered={false}\r\n >\r\n <Flex\r\n style={{ height: \"100%\" }}\r\n vertical={true}\r\n >\r\n <Space style={{ marginBottom: \"6px\" }}>\r\n {slots.tools?.()}\r\n </Space>\r\n <Flex\r\n ref={tableRef}\r\n flex={1}\r\n style={{ height: \"100%\" }}\r\n vertical={true}\r\n >\r\n <div class={tableRootStyle}>\r\n <div class={maskDivStyle.value}></div>\r\n <div class={tableWrapperStyle}>\r\n {slots.table?.({\r\n height: height.value\r\n })}\r\n </div>\r\n </div>\r\n </Flex>\r\n </Flex>\r\n </Card>\r\n </Flex>\r\n );\r\n }\r\n\r\n return (\r\n <Watermark\r\n style={{ height: \"100%\" }}\r\n content={watermarkContent.value}\r\n >\r\n <Flex\r\n class={[listStyle.value, \"app-list\"]}\r\n gap={10}\r\n >\r\n {slots.left ? (\r\n <Card\r\n class={[cardStyle, leftCardStyle]}\r\n bordered={false}\r\n bodyStyle={{\r\n height: \"100%\",\r\n padding: \"10px\"\r\n }}\r\n >\r\n {slots.left?.()}\r\n </Card>\r\n ) : null}\r\n <Flex vertical={true} flex={1}>\r\n {formLayout()()}\r\n {tableLayout()()}\r\n </Flex>\r\n </Flex>\r\n </Watermark>\r\n );\r\n }\r\n\r\n return () => useLayout();\r\n }\r\n});\r\n\r\nexport default list;\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","tableRootStyle","css","list","defineComponent","name","emits","setup","_","slots","emit","appContext","inject","AppContextKey","watermarkContent","computed","value","content","route","useRoute","refresh","storeToRefs","useAppStore","tableRef","height","tableVisible","playTableHeight","useTableHeight","formRef","useForm","useReload","maskDivStyle","tableWrapperStyle","cardStyle","leftCardStyle","listStyle","onMounted","ref","$el","offsetHeight","nextTick","setTimeout","formHeight","useElementSize","watch","stopHandleWatch","_useWatch","onUnmounted","onActivated","onDeactivated","val","useLayout","formLayout","_slot","form","_createVNode","Card","marginBottom","padding","default","tableLayout","Flex","Space","tools","table","Watermark","left"],"mappings":"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"}
1
+ {"version":3,"file":"List.mjs","sources":["../../../../src/components/layout/List.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n inject,\r\n nextTick,\r\n onActivated,\r\n onDeactivated,\r\n onMounted,\r\n onUnmounted,\r\n ref,\r\n watch,\r\n type WatchStopHandle\r\n} from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport {\r\n Card,\r\n Flex,\r\n Space,\r\n Watermark\r\n} from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\nimport { useElementSize } from \"@vueuse/core\";\r\n\r\nimport { AppContext, AppContextKey } from \"./AppContext\";\r\nimport { useAppStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nconst tableRootStyle = css`\r\n height: 100%;\r\n position: relative;\r\n overflow: hidden;\r\n`;\r\n\r\nconst list = defineComponent({\r\n name: \"DListLayout\",\r\n emits: [\"refresh\"],\r\n setup(_, { slots, emit }) {\r\n const appContext = inject<AppContext | null>(\r\n AppContextKey,\r\n null\r\n );\r\n\r\n const watermarkContent = computed(\r\n () => appContext?.watermarkContent?.value.content\r\n );\r\n\r\n const route = useRoute();\r\n const { refresh } = storeToRefs(useAppStore());\r\n const {\r\n tableRef,\r\n height,\r\n tableVisible,\r\n playTableHeight\r\n } = useTableHeight();\r\n const { formRef } = useForm();\r\n useReload();\r\n // 使用 computed 来动态计算样式\r\n const maskDivStyle = computed(() => {\r\n return css`\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 1;\r\n background: white;\r\n display: ${tableVisible.value ? \"block\" : \"none\"};\r\n `;\r\n });\r\n\r\n const tableWrapperStyle = css`\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n overflow: hidden;\r\n `;\r\n\r\n const cardStyle = css`\r\n box-shadow: none !important;\r\n `;\r\n\r\n const leftCardStyle = css`\r\n .ant-card-body {\r\n overflow-y: scroll;\r\n -ms-overflow-style: none; /* 对 IE 和 Edge 生效 */\r\n scrollbar-width: none; /* 对 Firefox 生效 */\r\n\r\n /* Webkit 浏览器 */\r\n\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n `;\r\n\r\n const listStyle = computed(\r\n () => css`\r\n padding: 10px;\r\n height: 100%;\r\n //height: calc(100vh - 44px);\r\n `\r\n );\r\n\r\n onMounted(() => {\r\n playTableHeight();\r\n });\r\n\r\n function useTableHeight() {\r\n const tableRef = ref();\r\n const height = ref(0);\r\n const tableVisible = ref(true);\r\n\r\n function playTableHeight() {\r\n tableVisible.value = true;\r\n height.value = tableRef?.value?.$el.offsetHeight;\r\n nextTick(() => {\r\n setTimeout(() => {\r\n tableVisible.value = false;\r\n }, 10);\r\n });\r\n }\r\n\r\n return {\r\n tableRef,\r\n height,\r\n tableVisible,\r\n playTableHeight\r\n };\r\n }\r\n\r\n function useForm() {\r\n const formRef = ref(null);\r\n const { height: formHeight } =\r\n useElementSize(formRef);\r\n watch(\r\n () => formHeight.value,\r\n () => {\r\n nextTick(() => {\r\n playTableHeight();\r\n });\r\n }\r\n );\r\n\r\n return {\r\n formRef\r\n };\r\n }\r\n\r\n // 处理标签重载\r\n function useReload() {\r\n let stopHandleWatch: WatchStopHandle;\r\n if (!route.name && !route.meta.keepAlive) {\r\n stopHandleWatch = _useWatch();\r\n // 卸载未缓存的组件\r\n onUnmounted(() => {\r\n stopHandleWatch?.();\r\n });\r\n } else {\r\n // 激活缓存页面\r\n onActivated(() => {\r\n if (refresh.value) {\r\n refresh.value = false;\r\n emit(\"refresh\");\r\n }\r\n stopHandleWatch = _useWatch();\r\n });\r\n // 离开缓存页面\r\n onDeactivated(() => {\r\n stopHandleWatch?.();\r\n });\r\n }\r\n\r\n function _useWatch() {\r\n //点击了标签重载图标\r\n return watch(\r\n () => refresh.value,\r\n val => {\r\n if (val) {\r\n // 发送刷新事件到列表页面\r\n emit(\"refresh\");\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n function useLayout() {\r\n function formLayout() {\r\n return () =>\r\n slots.form && (\r\n <Card\r\n class={cardStyle}\r\n ref={formRef}\r\n style={{ marginBottom: \"10px\" }}\r\n bodyStyle={{ padding: \"10px 10px 0 10px\" }}\r\n bordered={false}\r\n >\r\n {slots.form()}\r\n </Card>\r\n );\r\n }\r\n\r\n function tableLayout() {\r\n return () => (\r\n <Flex flex={1} vertical={true}>\r\n <Card\r\n class={cardStyle}\r\n style={{ height: \"100%\" }}\r\n bodyStyle={{\r\n height: \"100%\",\r\n padding: \"10px\"\r\n }}\r\n bordered={false}\r\n >\r\n <Flex\r\n style={{ height: \"100%\" }}\r\n vertical={true}\r\n >\r\n <Space style={{ marginBottom: \"6px\" }}>\r\n {slots.tools?.()}\r\n </Space>\r\n <Flex\r\n ref={tableRef}\r\n flex={1}\r\n style={{ height: \"100%\" }}\r\n vertical={true}\r\n >\r\n <div class={tableRootStyle}>\r\n <div class={maskDivStyle.value}></div>\r\n <div class={tableWrapperStyle}>\r\n {slots.table?.({\r\n height: height.value\r\n })}\r\n </div>\r\n </div>\r\n </Flex>\r\n </Flex>\r\n </Card>\r\n </Flex>\r\n );\r\n }\r\n\r\n return (\r\n <Watermark\r\n style={{ height: \"100%\" }}\r\n content={watermarkContent.value}\r\n >\r\n <Flex\r\n class={[listStyle.value, \"app-list\"]}\r\n gap={10}\r\n >\r\n {slots.left ? (\r\n <Card\r\n class={[cardStyle, leftCardStyle]}\r\n bordered={false}\r\n bodyStyle={{\r\n height: \"100%\",\r\n padding: \"10px\"\r\n }}\r\n >\r\n {slots.left?.()}\r\n </Card>\r\n ) : null}\r\n <Flex vertical={true} flex={1}>\r\n {formLayout()()}\r\n {tableLayout()()}\r\n </Flex>\r\n </Flex>\r\n {slots.extra?.()}\r\n </Watermark>\r\n );\r\n }\r\n\r\n return () => useLayout();\r\n }\r\n});\r\n\r\nexport default list;\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","tableRootStyle","css","list","defineComponent","name","emits","setup","_","slots","emit","appContext","inject","AppContextKey","watermarkContent","computed","value","content","route","useRoute","refresh","storeToRefs","useAppStore","tableRef","height","tableVisible","playTableHeight","useTableHeight","formRef","useForm","useReload","maskDivStyle","tableWrapperStyle","cardStyle","leftCardStyle","listStyle","onMounted","ref","$el","offsetHeight","nextTick","setTimeout","formHeight","useElementSize","watch","stopHandleWatch","meta","keepAlive","_useWatch","onUnmounted","onActivated","onDeactivated","val","useLayout","formLayout","_slot","form","_createVNode","Card","marginBottom","padding","default","tableLayout","Flex","Space","tools","table","Watermark","left","_a","extra"],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import { defineComponent, inject, computed, createVNode, ref } from 'vue';
2
2
  import { useRoute, useRouter } from 'vue-router';
3
- import { theme, Watermark, Flex, PageHeader } from 'ant-design-vue';
3
+ import { theme, Watermark, Flex, PageHeader, Spin } from 'ant-design-vue';
4
4
  import { storeToRefs } from 'pinia';
5
5
  import { useWindowScroll } from '@vueuse/core';
6
6
  import { AppContextKey } from './AppContext.mjs';
7
7
  import { LeftOutlined } from '@ant-design/icons-vue';
8
8
  import { useAppStore, useNavTabStore } from '@ditari/store';
9
- import { css } from '@emotion/css';
9
+ import { css, cx } from '@emotion/css';
10
+ import { useDesign } from '../../hooks/useDesign.mjs';
10
11
 
11
12
  "use strict";
12
13
  const getProps = () => {
@@ -14,6 +15,14 @@ const getProps = () => {
14
15
  close: {
15
16
  type: Boolean,
16
17
  default: false
18
+ },
19
+ loading: {
20
+ type: Boolean,
21
+ default: false
22
+ },
23
+ loadingText: {
24
+ type: String,
25
+ default: "\u6B63\u5728\u8BF7\u6C42..."
17
26
  }
18
27
  };
19
28
  };
@@ -28,6 +37,10 @@ const show = /* @__PURE__ */ defineComponent({
28
37
  useToken
29
38
  } = theme;
30
39
  const appContext = inject(AppContextKey, null);
40
+ const {
41
+ getPrefixCls
42
+ } = useDesign("show-layout");
43
+ const rootCls = getPrefixCls();
31
44
  const watermarkContent = computed(() => {
32
45
  var _a;
33
46
  return (_a = appContext == null ? void 0 : appContext.watermarkContent) == null ? void 0 : _a.value.content;
@@ -35,6 +48,8 @@ const show = /* @__PURE__ */ defineComponent({
35
48
  const {
36
49
  token
37
50
  } = useToken();
51
+ const loading = computed(() => props.loading);
52
+ const loadingText = computed(() => props.loadingText);
38
53
  const {
39
54
  layout,
40
55
  modeConfig,
@@ -110,45 +125,74 @@ const show = /* @__PURE__ */ defineComponent({
110
125
  expose({
111
126
  close: onClosePage
112
127
  });
113
- return () => createVNode(Watermark, {
114
- "content": watermarkContent.value
115
- }, {
116
- default: () => [createVNode(Flex, {
117
- "vertical": true
128
+ function showContent() {
129
+ return createVNode("div", {
130
+ "class": cx(rootCls),
131
+ "style": {
132
+ display: !loading.value ? "block" : "none"
133
+ }
134
+ }, [createVNode(Watermark, {
135
+ "content": watermarkContent.value
118
136
  }, {
119
- default: () => {
120
- var _a, _b;
121
- return [createVNode(PageHeader, {
122
- "ghost": ghost.value,
123
- "class": pageHeaderStyle.value,
124
- "onBack": () => onBack(),
125
- "title": pageTitle()
126
- }, {
127
- backIcon: () => createVNode("div", null, [createVNode(LeftOutlined, {
128
- "style": {
129
- fontSize: "26px"
137
+ default: () => [createVNode(Flex, {
138
+ "vertical": true
139
+ }, {
140
+ default: () => {
141
+ var _a, _b;
142
+ return [createVNode(PageHeader, {
143
+ "ghost": ghost.value,
144
+ "class": pageHeaderStyle.value,
145
+ "onBack": () => onBack(),
146
+ "title": pageTitle()
147
+ }, {
148
+ backIcon: () => createVNode("div", null, [createVNode(LeftOutlined, {
149
+ "style": {
150
+ fontSize: "26px"
151
+ }
152
+ }, null)]),
153
+ extra: () => {
154
+ var _a2;
155
+ return (_a2 = slots.extra) == null ? void 0 : _a2.call(slots);
156
+ },
157
+ footer: () => {
158
+ var _a2;
159
+ return (_a2 = slots.footer) == null ? void 0 : _a2.call(slots);
160
+ },
161
+ subTitle: () => {
162
+ var _a2;
163
+ return (_a2 = slots.subTitle) == null ? void 0 : _a2.call(slots);
130
164
  }
131
- }, null)]),
132
- extra: () => {
133
- var _a2;
134
- return (_a2 = slots.extra) == null ? void 0 : _a2.call(slots);
135
- },
136
- footer: () => {
137
- var _a2;
138
- return (_a2 = slots.footer) == null ? void 0 : _a2.call(slots);
139
- },
140
- subTitle: () => {
141
- var _a2;
142
- return (_a2 = slots.subTitle) == null ? void 0 : _a2.call(slots);
143
- }
144
- }), createVNode("div", {
145
- "class": contentStyle.value
146
- }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]), slots.bottomFooter ? createVNode("div", {
147
- "class": footerStyle.value
148
- }, [(_b = slots.bottomFooter) == null ? void 0 : _b.call(slots)]) : null];
165
+ }), createVNode("div", {
166
+ "class": contentStyle.value
167
+ }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]), slots.bottomFooter ? createVNode("div", {
168
+ "class": footerStyle.value
169
+ }, [(_b = slots.bottomFooter) == null ? void 0 : _b.call(slots)]) : null];
170
+ }
171
+ })]
172
+ })]);
173
+ }
174
+ function loadingContent() {
175
+ return createVNode("div", {
176
+ "style": {
177
+ height: "100%",
178
+ display: loading.value ? "block" : "none"
149
179
  }
150
- })]
151
- });
180
+ }, [createVNode("div", {
181
+ "style": {
182
+ height: "100%",
183
+ display: "flex",
184
+ justifyContent: "center",
185
+ alignItems: "center"
186
+ }
187
+ }, [slots.loading ? slots.loading() : createVNode(Spin, {
188
+ "tip": loadingText.value
189
+ }, null)])]);
190
+ }
191
+ return () => createVNode("div", {
192
+ "style": {
193
+ height: "100%"
194
+ }
195
+ }, [showContent(), loadingContent()]);
152
196
  }
153
197
  });
154
198
 
@@ -1 +1 @@
1
- {"version":3,"file":"Show.mjs","sources":["../../../../src/components/layout/Show.tsx"],"sourcesContent":["import {\r\n computed,\r\n ComputedRef,\r\n defineComponent,\r\n inject,\r\n ref\r\n} from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport {\r\n Flex,\r\n PageHeader,\r\n theme,\r\n Watermark\r\n} from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\nimport { useWindowScroll } from \"@vueuse/core\";\r\n\r\nimport { AppContext, AppContextKey } from \"./AppContext\";\r\nimport { LeftOutlined } from \"@ant-design/icons-vue\";\r\nimport { useAppStore, useNavTabStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nconst getProps = () => {\r\n return {\r\n close: {\r\n type: Boolean,\r\n default: false\r\n }\r\n };\r\n};\r\nconst show = defineComponent({\r\n name: \"DShowLayout\",\r\n props: getProps(),\r\n setup(props, { slots, expose }) {\r\n const { useToken } = theme;\r\n\r\n const appContext = inject<AppContext | null>(\r\n AppContextKey,\r\n null\r\n );\r\n\r\n const watermarkContent = computed(\r\n () => appContext?.watermarkContent?.value.content\r\n );\r\n\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n\r\n const { layout, modeConfig, refresh } =\r\n storeToRefs(useAppStore());\r\n const { deleteTabs } = useNavTabStore();\r\n\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n const { y } = useWindowScroll();\r\n\r\n const pageHeaderStyle = computed(\r\n () => css`\r\n position: sticky;\r\n top: ${layout.value.headerHeight}px;\r\n z-index: 10;\r\n padding: 0;\r\n transition: all 0.3s;\r\n background-color: ${token.value.colorBgLayout};\r\n\r\n ${y.value > 0\r\n ? \"box-shadow:0 10px 10px rgba(0, 0, 0, 0.15);\"\r\n : \"\"}\r\n .ant-page-header-back {\r\n height: 100%;\r\n margin-right: 0;\r\n\r\n .ant-page-header-back-button {\r\n height: 100%;\r\n padding: 0 6px !important;\r\n display: flex !important;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n }\r\n\r\n .ant-page-header-heading-title {\r\n font-size: 14px;\r\n }\r\n `\r\n );\r\n const contentStyle = computed(\r\n () => css`\r\n padding: 10px 10px\r\n ${slots.bottomFooter ? \"50px\" : \"0\"};\r\n background: ${token.value.colorBgLayout};\r\n `\r\n );\r\n const footerStyle = computed(\r\n () => css`\r\n position: fixed;\r\n right: 0;\r\n bottom: 0;\r\n height: 50px;\r\n left: ${layout.value.collapsed\r\n ? layout.value.collapsedWidth\r\n : layout.value.sideWidth}px;\r\n z-index: 10;\r\n padding: 10px;\r\n background: ${modeConfig.value.mode !== \"light\"\r\n ? token.value.colorBgContainer\r\n : \"#fff\"};\r\n box-shadow: 6px 0 10px rgba(0, 0, 0, 0.15);\r\n transition: left 0.4s\r\n cubic-bezier(0.22, 1.2, 0.36, 1);\r\n `\r\n );\r\n const pageTitle = () => (\r\n <div>{route.meta.title || \"无标题\"}</div>\r\n );\r\n const ghost = ref(false);\r\n\r\n const onBack = () => {\r\n if (props.close) {\r\n // 返回关闭标签\r\n deleteTabs(route.fullPath);\r\n router.go(-1);\r\n } else {\r\n // 不关闭标签\r\n router.go(-1);\r\n }\r\n };\r\n\r\n const onClosePage = () => {\r\n refresh.value = true;\r\n deleteTabs(route.fullPath);\r\n router.go(-1);\r\n };\r\n\r\n expose({\r\n close: onClosePage\r\n });\r\n\r\n return () => (\r\n <Watermark content={watermarkContent.value}>\r\n <Flex vertical={true}>\r\n <PageHeader\r\n ghost={ghost.value}\r\n class={pageHeaderStyle.value}\r\n onBack={() => onBack()}\r\n title={pageTitle()}\r\n >\r\n {{\r\n backIcon: () => (\r\n <div>\r\n <LeftOutlined\r\n style={{ fontSize: \"26px\" }}\r\n />\r\n </div>\r\n ),\r\n extra: () => slots.extra?.(),\r\n footer: () => slots.footer?.(),\r\n subTitle: () => slots.subTitle?.()\r\n }}\r\n </PageHeader>\r\n <div class={contentStyle.value}>\r\n {slots.default?.()}\r\n </div>\r\n {slots.bottomFooter ? (\r\n <div class={footerStyle.value}>\r\n {slots.bottomFooter?.()}\r\n </div>\r\n ) : null}\r\n </Flex>\r\n </Watermark>\r\n );\r\n }\r\n});\r\n\r\nexport default show;\r\n"],"names":["getProps","close","type","Boolean","default","show","defineComponent","name","props","setup","slots","expose","useToken","theme","appContext","inject","AppContextKey","watermarkContent","computed","value","content","token","layout","modeConfig","refresh","storeToRefs","useAppStore","deleteTabs","useNavTabStore","route","useRoute","router","useRouter","y","useWindowScroll","pageHeaderStyle","css","headerHeight","colorBgLayout","contentStyle","bottomFooter","footerStyle","collapsed","collapsedWidth","sideWidth","mode","colorBgContainer","pageTitle","_createVNode","meta","title","ghost","ref","onBack","fullPath","go","onClosePage","Watermark","Flex","PageHeader","backIcon","LeftOutlined","fontSize","extra","_a","footer","subTitle"],"mappings":"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"}
1
+ {"version":3,"file":"Show.mjs","sources":["../../../../src/components/layout/Show.tsx"],"sourcesContent":["import {\r\n computed,\r\n ComputedRef,\r\n defineComponent,\r\n inject,\r\n ref\r\n} from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport {\r\n Flex,\r\n PageHeader,\r\n Spin,\r\n theme,\r\n Watermark\r\n} from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\nimport { useWindowScroll } from \"@vueuse/core\";\r\n\r\nimport { AppContext, AppContextKey } from \"./AppContext\";\r\nimport { LeftOutlined } from \"@ant-design/icons-vue\";\r\nimport { useAppStore, useNavTabStore } from \"@ditari/store\";\r\nimport { css, cx } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nimport { useDesign } from \"../../hooks/useDesign\";\r\n\r\nconst getProps = () => {\r\n return {\r\n close: {\r\n type: Boolean,\r\n default: false\r\n },\r\n loading: {\r\n type: Boolean,\r\n default: false\r\n },\r\n loadingText: {\r\n type: String,\r\n default: \"正在请求...\"\r\n }\r\n };\r\n};\r\nconst show = defineComponent({\r\n name: \"DShowLayout\",\r\n props: getProps(),\r\n setup(props, { slots, expose }) {\r\n const { useToken } = theme;\r\n\r\n const appContext = inject<AppContext | null>(\r\n AppContextKey,\r\n null\r\n );\r\n\r\n const { getPrefixCls } = useDesign(\"show-layout\");\r\n // 生成语义化类名\r\n const rootCls = getPrefixCls();\r\n\r\n const watermarkContent = computed(\r\n () => appContext?.watermarkContent?.value.content\r\n );\r\n\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n\r\n const loading = computed(() => props.loading);\r\n const loadingText = computed(() => props.loadingText);\r\n\r\n const { layout, modeConfig, refresh } =\r\n storeToRefs(useAppStore());\r\n const { deleteTabs } = useNavTabStore();\r\n\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n const { y } = useWindowScroll();\r\n\r\n const pageHeaderStyle = computed(\r\n () => css`\r\n position: sticky;\r\n top: ${layout.value.headerHeight}px;\r\n z-index: 10;\r\n padding: 0;\r\n transition: all 0.3s;\r\n background-color: ${token.value.colorBgLayout};\r\n\r\n ${y.value > 0\r\n ? \"box-shadow:0 10px 10px rgba(0, 0, 0, 0.15);\"\r\n : \"\"}\r\n .ant-page-header-back {\r\n height: 100%;\r\n margin-right: 0;\r\n\r\n .ant-page-header-back-button {\r\n height: 100%;\r\n padding: 0 6px !important;\r\n display: flex !important;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n }\r\n\r\n .ant-page-header-heading-title {\r\n font-size: 14px;\r\n }\r\n `\r\n );\r\n const contentStyle = computed(\r\n () => css`\r\n padding: 10px 10px\r\n ${slots.bottomFooter ? \"50px\" : \"0\"};\r\n background: ${token.value.colorBgLayout};\r\n `\r\n );\r\n const footerStyle = computed(\r\n () => css`\r\n position: fixed;\r\n right: 0;\r\n bottom: 0;\r\n height: 50px;\r\n left: ${layout.value.collapsed\r\n ? layout.value.collapsedWidth\r\n : layout.value.sideWidth}px;\r\n z-index: 10;\r\n padding: 10px;\r\n background: ${modeConfig.value.mode !== \"light\"\r\n ? token.value.colorBgContainer\r\n : \"#fff\"};\r\n box-shadow: 6px 0 10px rgba(0, 0, 0, 0.15);\r\n transition: left 0.4s\r\n cubic-bezier(0.22, 1.2, 0.36, 1);\r\n `\r\n );\r\n const pageTitle = () => (\r\n <div>{route.meta.title || \"无标题\"}</div>\r\n );\r\n const ghost = ref(false);\r\n\r\n const onBack = () => {\r\n if (props.close) {\r\n // 返回关闭标签\r\n deleteTabs(route.fullPath);\r\n router.go(-1);\r\n } else {\r\n // 不关闭标签\r\n router.go(-1);\r\n }\r\n };\r\n\r\n const onClosePage = () => {\r\n refresh.value = true;\r\n deleteTabs(route.fullPath);\r\n router.go(-1);\r\n };\r\n\r\n expose({\r\n close: onClosePage\r\n });\r\n\r\n function showContent() {\r\n return (\r\n <div\r\n class={cx(rootCls)}\r\n style={{\r\n display: !loading.value ? \"block\" : \"none\"\r\n }}\r\n >\r\n <Watermark content={watermarkContent.value}>\r\n <Flex vertical={true}>\r\n <PageHeader\r\n ghost={ghost.value}\r\n class={pageHeaderStyle.value}\r\n onBack={() => onBack()}\r\n title={pageTitle()}\r\n >\r\n {{\r\n backIcon: () => (\r\n <div>\r\n <LeftOutlined\r\n style={{ fontSize: \"26px\" }}\r\n />\r\n </div>\r\n ),\r\n extra: () => slots.extra?.(),\r\n footer: () => slots.footer?.(),\r\n subTitle: () => slots.subTitle?.()\r\n }}\r\n </PageHeader>\r\n\r\n <div class={contentStyle.value}>\r\n {slots.default?.()}\r\n </div>\r\n\r\n {slots.bottomFooter ? (\r\n <div class={footerStyle.value}>\r\n {slots.bottomFooter?.()}\r\n </div>\r\n ) : null}\r\n </Flex>\r\n </Watermark>\r\n </div>\r\n );\r\n }\r\n\r\n function loadingContent() {\r\n return (\r\n <div\r\n style={{\r\n height: \"100%\",\r\n display: loading.value ? \"block\" : \"none\"\r\n }}\r\n >\r\n <div\r\n style={{\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\"\r\n }}\r\n >\r\n {slots.loading ? (\r\n slots.loading()\r\n ) : (\r\n <Spin tip={loadingText.value}></Spin>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return () => (\r\n <div style={{ height: \"100%\" }}>\r\n {showContent()}\r\n {loadingContent()}\r\n </div>\r\n );\r\n }\r\n});\r\n\r\nexport default show;\r\n"],"names":["getProps","close","type","Boolean","default","loading","loadingText","String","show","defineComponent","name","props","setup","slots","expose","useToken","theme","appContext","inject","AppContextKey","getPrefixCls","useDesign","rootCls","watermarkContent","computed","value","content","token","layout","modeConfig","refresh","storeToRefs","useAppStore","deleteTabs","useNavTabStore","route","useRoute","router","useRouter","y","useWindowScroll","pageHeaderStyle","css","headerHeight","colorBgLayout","contentStyle","bottomFooter","footerStyle","collapsed","collapsedWidth","sideWidth","mode","colorBgContainer","pageTitle","_createVNode","meta","title","ghost","ref","onBack","fullPath","go","onClosePage","showContent","cx","display","Watermark","Flex","PageHeader","backIcon","LeftOutlined","fontSize","extra","_a","footer","subTitle","loadingContent","height","justifyContent","alignItems","Spin"],"mappings":"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"}
@@ -1,44 +1,80 @@
1
- import { defineComponent, computed, h, watch, resolveComponent, createBlock, openBlock, withCtx, createVNode, Transition, KeepAlive, resolveDynamicComponent, unref } from 'vue';
2
- import { useRoute } from 'vue-router';
1
+ import { defineComponent, ref, computed, h, nextTick, watch, resolveComponent, createBlock, openBlock, withCtx, createVNode, Transition, KeepAlive, resolveDynamicComponent } from 'vue';
3
2
  import { storeToRefs } from 'pinia';
4
3
  import { useNavTabStore } from '@ditari/store';
5
4
 
6
5
  "use strict";
6
+ var __async = (__this, __arguments, generator) => {
7
+ return new Promise((resolve, reject) => {
8
+ var fulfilled = (value) => {
9
+ try {
10
+ step(generator.next(value));
11
+ } catch (e) {
12
+ reject(e);
13
+ }
14
+ };
15
+ var rejected = (value) => {
16
+ try {
17
+ step(generator.throw(value));
18
+ } catch (e) {
19
+ reject(e);
20
+ }
21
+ };
22
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
23
+ step((generator = generator.apply(__this, __arguments)).next());
24
+ });
25
+ };
7
26
  var _sfc_main = /* @__PURE__ */ defineComponent({
8
27
  __name: "RouterContent",
9
- setup(__props) {
28
+ setup(__props, { expose: __expose }) {
10
29
  const { list } = storeToRefs(useNavTabStore());
11
- const route = useRoute();
30
+ const toPascalCase = (str) => {
31
+ return str.replace(/[^a-zA-Z0-9]/g, " ").split(" ").filter(Boolean).map(
32
+ (word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()
33
+ ).join("");
34
+ };
35
+ const refreshingPath = ref(null);
36
+ const wrapperMap = /* @__PURE__ */ new Map();
12
37
  const cachedViews = computed(() => {
13
- return list.value.filter(
14
- (tab) => {
15
- var _a;
16
- return ((_a = tab.meta) == null ? void 0 : _a.keepAlive) === true && tab.fullPath;
17
- }
18
- ).map((tab) => tab.fullPath);
38
+ return list.value.filter((tab) => {
39
+ var _a;
40
+ const isKeepAlive = ((_a = tab.meta) == null ? void 0 : _a.keepAlive) === true;
41
+ const isNotRefreshing = tab.fullPath !== refreshingPath.value;
42
+ return isKeepAlive && tab.fullPath && isNotRefreshing;
43
+ }).map((tab) => {
44
+ return tab.name || toPascalCase(tab.fullPath);
45
+ });
19
46
  });
20
- const wrapperMap = /* @__PURE__ */ new Map();
21
- const getWrapper = (Component, route2) => {
47
+ const getWrapper = (Component, route) => {
22
48
  if (!Component) return null;
23
- const wrapperName = route2.fullPath;
24
- if (wrapperMap.has(wrapperName)) {
25
- return wrapperMap.get(wrapperName);
49
+ const fullPath = route.fullPath;
50
+ const wrapperName = route.name || toPascalCase(fullPath);
51
+ if (wrapperMap.has(fullPath)) {
52
+ return wrapperMap.get(fullPath);
26
53
  }
27
54
  const wrapper = defineComponent({
28
55
  name: wrapperName,
29
- // 这确保了 keep-alive 的 include 能够匹配到
56
+ // KeepAlive 识别
30
57
  setup() {
31
58
  return () => h(Component);
32
59
  }
33
60
  });
34
- wrapperMap.set(wrapperName, wrapper);
61
+ wrapperMap.set(fullPath, wrapper);
35
62
  return wrapper;
36
63
  };
64
+ const reloadPage = (fullPath) => __async(null, null, function* () {
65
+ refreshingPath.value = fullPath;
66
+ wrapperMap.delete(fullPath);
67
+ yield nextTick();
68
+ yield nextTick();
69
+ refreshingPath.value = null;
70
+ });
71
+ __expose({ reloadPage });
37
72
  watch(
38
73
  cachedViews,
39
74
  (names) => {
40
- wrapperMap.forEach((_, key) => {
41
- if (!names.includes(key)) {
75
+ const activeNames = new Set(names);
76
+ wrapperMap.forEach((wrapper, key) => {
77
+ if (!activeNames.has(wrapper.name)) {
42
78
  wrapperMap.delete(key);
43
79
  }
44
80
  });
@@ -48,7 +84,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
48
84
  return (_ctx, _cache) => {
49
85
  const _component_router_view = resolveComponent("router-view");
50
86
  return openBlock(), createBlock(_component_router_view, null, {
51
- default: withCtx(({ Component }) => [
87
+ default: withCtx(({ Component, route: currentRoute }) => [
52
88
  createVNode(
53
89
  Transition,
54
90
  {
@@ -59,8 +95,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
59
95
  {
60
96
  default: withCtx(() => [
61
97
  (openBlock(), createBlock(KeepAlive, { include: cachedViews.value }, [
62
- (openBlock(), createBlock(resolveDynamicComponent(getWrapper(Component, unref(route))), {
63
- key: unref(route).fullPath
98
+ (openBlock(), createBlock(resolveDynamicComponent(getWrapper(Component, currentRoute)), {
99
+ key: currentRoute.fullPath
64
100
  }))
65
101
  ], 1032, ["include"]))
66
102
  ]),
@@ -1 +1 @@
1
- {"version":3,"file":"RouterContent.vue2.mjs","sources":["../../../../../../src/components/layout/components/layout/RouterContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, defineComponent, h, watch } from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useNavTabStore } from \"@ditari/store\";\r\n\r\nconst { list } = storeToRefs(useNavTabStore());\r\nconst route = useRoute();\r\n\r\n// 1. 依然保留 cachedViews,它存储的是 fullPath 数组\r\nconst cachedViews = computed<string[]>(() => {\r\n return list.value\r\n .filter(\r\n tab => tab.meta?.keepAlive === true && tab.fullPath\r\n ) // 确保 fullPath 存在\r\n .map(tab => tab.fullPath as string); // 明确断言为 string\r\n});\r\n\r\n// 2. 使用 shallowRef 存储包装组件,避免不必要的深层响应式开销\r\nconst wrapperMap = new Map();\r\n\r\nconst getWrapper = (Component: any, route: any) => {\r\n if (!Component) return null;\r\n\r\n // 使用 fullPath 作为唯一的组件名\r\n const wrapperName = route.fullPath;\r\n\r\n if (wrapperMap.has(wrapperName)) {\r\n return wrapperMap.get(wrapperName);\r\n }\r\n\r\n // 3. 关键:创建一个新组件,其 name 必须在 cachedViews 数组中\r\n const wrapper = defineComponent({\r\n name: wrapperName, // 这确保了 keep-alive 的 include 能够匹配到\r\n setup() {\r\n return () => h(Component);\r\n }\r\n });\r\n\r\n wrapperMap.set(wrapperName, wrapper);\r\n return wrapper;\r\n};\r\nwatch(\r\n cachedViews,\r\n names => {\r\n wrapperMap.forEach((_, key) => {\r\n if (!names.includes(key)) {\r\n wrapperMap.delete(key);\r\n }\r\n });\r\n },\r\n { deep: true }\r\n);\r\n</script>\r\n<template>\r\n <router-view v-slot=\"{ Component }\">\r\n <transition name=\"main\" mode=\"out-in\" appear>\r\n <keep-alive :include=\"cachedViews\">\r\n <component\r\n :is=\"getWrapper(Component, route)\"\r\n :key=\"route.fullPath\"\r\n />\r\n </keep-alive>\r\n </transition>\r\n </router-view>\r\n</template>\r\n"],"names":["route","_createBlock","_withCtx","_createVNode","_Transition","_KeepAlive","_openBlock","_resolveDynamicComponent","_unref"],"mappings":";;;;;;;;;AAOA,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,WAAA,CAAY,gBAAgB,CAAA;AAC7C,IAAA,MAAM,QAAQ,QAAA,EAAS;AAGvB,IAAA,MAAM,WAAA,GAAc,SAAmB,MAAM;AAC3C,MAAA,OAAO,KAAK,KAAA,CACT,MAAA;AAAA,QACC,CAAA,GAAA,KAAI;;AAAG,UAAA,OAAA,CAAA,CAAA,EAAA,GAAA,GAAA,CAAI,IAAA,KAAJ,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAU,SAAA,MAAc,IAAA,IAAQ,GAAA,CAAI,QAAA;AAAA,QAAA;AAAA,OAC7C,CACC,GAAA,CAAI,CAAA,GAAA,KAAO,GAAA,CAAI,QAAkB,CAAA;AAAA,IACtC,CAAC,CAAA;AAGD,IAAA,MAAM,UAAA,uBAAiB,GAAA,EAAI;AAE3B,IAAA,MAAM,UAAA,GAAa,CAAC,SAAA,EAAgBA,MAAAA,KAAe;AACjD,MAAA,IAAI,CAAC,WAAW,OAAO,IAAA;AAGvB,MAAA,MAAM,cAAcA,MAAAA,CAAM,QAAA;AAE1B,MAAA,IAAI,UAAA,CAAW,GAAA,CAAI,WAAW,CAAA,EAAG;AAC/B,QAAA,OAAO,UAAA,CAAW,IAAI,WAAW,CAAA;AAAA,MACnC;AAGA,MAAA,MAAM,UAAU,eAAA,CAAgB;AAAA,QAC9B,IAAA,EAAM,WAAA;AAAA;AAAA,QACN,KAAA,GAAQ;AACN,UAAA,OAAO,MAAM,EAAE,SAAS,CAAA;AAAA,QAC1B;AAAA,OACD,CAAA;AAED,MAAA,UAAA,CAAW,GAAA,CAAI,aAAa,OAAO,CAAA;AACnC,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AACA,IAAA,KAAA;AAAA,MACE,WAAA;AAAA,MACA,CAAA,KAAA,KAAS;AACP,QAAA,UAAA,CAAW,OAAA,CAAQ,CAAC,CAAA,EAAG,GAAA,KAAQ;AAC7B,UAAA,IAAI,CAAC,KAAA,CAAM,QAAA,CAAS,GAAG,CAAA,EAAG;AACxB,YAAA,UAAA,CAAW,OAAO,GAAG,CAAA;AAAA,UACvB;AAAA,QACF,CAAC,CAAA;AAAA,MACH,CAAA;AAAA,MACA,EAAE,MAAM,IAAA;AAAK,KACf;;;0BAGEC,WAAA,CASc,sBAAA,EAAA,IAAA,EAAA;AAAA,QARZ,OAAA,EAAAC,OAAA,CAAA,CAOa,EARQ,WAAS,KAAA;AAAA,UAC9BC,WAAA;AAAA,YAOaC,UAAA;AAAA,YAAA;AAAA,cAPD,IAAA,EAAK,MAAA;AAAA,cAAO,IAAA,EAAK,QAAA;AAAA,cAAS,MAAA,EAAA;AAAA;;+BACpC,MAKa;AAAA,8BALbH,WAAA,CAKaI,SAAA,EAAA,EALA,OAAA,EAAS,WAAA,CAAA,OAAW,EAAA;AAAA,mBAC/BC,SAAA,EAAA,EAAAL,WAAA,CAGEM,uBAAA,CAFK,UAAA,CAAW,WAAWC,KAAA,CAAA,KAAA,CAAK,CAAA,CAAA,EAAA;AAAA,oBAC/B,GAAA,EAAKA,KAAA,CAAA,KAAA,CAAA,CAAM;AAAA;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"RouterContent.vue2.mjs","sources":["../../../../../../src/components/layout/components/layout/RouterContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n computed,\r\n defineComponent,\r\n h,\r\n nextTick,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useNavTabStore } from \"@ditari/store\";\r\n\r\nconst { list } = storeToRefs(useNavTabStore());\r\n\r\n/**\r\n * 工具函数:大驼峰转换\r\n */\r\nconst toPascalCase = (str: string) => {\r\n return str\r\n .replace(/[^a-zA-Z0-9]/g, \" \")\r\n .split(\" \")\r\n .filter(Boolean)\r\n .map(\r\n word =>\r\n word.charAt(0).toUpperCase() +\r\n word.slice(1).toLowerCase()\r\n )\r\n .join(\"\");\r\n};\r\n\r\n/**\r\n * 1. 状态管理\r\n * refreshingPath: 记录当前正在执行重载的路径。\r\n * wrapperMap: 存储包装组件的缓存。\r\n */\r\nconst refreshingPath = ref<string | null>(null);\r\nconst wrapperMap = new Map();\r\n\r\n/**\r\n * 2. 计算缓存名单 (KeepAlive 的 include 属性)\r\n * 逻辑:meta.keepAlive 为 true,且当前路径不在“重载黑名单”中。\r\n */\r\nconst cachedViews = computed<string[]>(() => {\r\n return list.value\r\n .filter(tab => {\r\n const isKeepAlive = tab.meta?.keepAlive === true;\r\n const isNotRefreshing =\r\n tab.fullPath !== refreshingPath.value;\r\n return isKeepAlive && tab.fullPath && isNotRefreshing;\r\n })\r\n .map(tab => {\r\n // 这里的生成逻辑必须与 getWrapper 中的 name 保持严格一致\r\n return (\r\n (tab.name as string) ||\r\n toPascalCase(tab.fullPath as string)\r\n );\r\n });\r\n});\r\n\r\n/**\r\n * 3. 动态包装组件逻辑\r\n */\r\nconst getWrapper = (Component: any, route: any) => {\r\n if (!Component) return null;\r\n\r\n const fullPath = route.fullPath;\r\n const wrapperName =\r\n (route.name as string) || toPascalCase(fullPath);\r\n\r\n // 如果缓存中有,直接返回。\r\n // 注意:重载时我们会从 wrapperMap 中 delete 掉它,强制这里重新生成。\r\n if (wrapperMap.has(fullPath)) {\r\n return wrapperMap.get(fullPath);\r\n }\r\n\r\n // 创建一个全新的组件定义\r\n const wrapper = defineComponent({\r\n name: wrapperName, // KeepAlive 识别\r\n setup() {\r\n return () => h(Component);\r\n }\r\n });\r\n\r\n wrapperMap.set(fullPath, wrapper);\r\n return wrapper;\r\n};\r\n\r\n/**\r\n * 4. 暴露重载方法 (供父组件调用)\r\n * 核心:先从 include 移除触发销毁,清理定义,再恢复。\r\n */\r\nconst reloadPage = async (fullPath: string) => {\r\n // A. 将路径加入“黑名单”,cachedViews 会立即更新\r\n // KeepAlive 发现 include 不再包含此组件,会执行正常的销毁流程(避免 deactivate 报错)\r\n refreshingPath.value = fullPath;\r\n\r\n // B. 清理包装组件的内存缓存,确保下次进入时 setup 重新执行\r\n wrapperMap.delete(fullPath);\r\n\r\n // C. 等待两个 Tick,确保 Vue 渲染器完成了销毁动作\r\n await nextTick();\r\n await nextTick();\r\n\r\n // D. 移除黑名单,KeepAlive 重新将该路径加入缓存范围\r\n refreshingPath.value = null;\r\n};\r\n\r\ndefineExpose({ reloadPage });\r\n\r\n/**\r\n * 5. 监听标签页关闭\r\n * 当从标签栏删除某个页面时,同步清理包装组件内存\r\n */\r\nwatch(\r\n cachedViews,\r\n names => {\r\n const activeNames = new Set(names);\r\n wrapperMap.forEach((wrapper, key) => {\r\n if (!activeNames.has(wrapper.name)) {\r\n wrapperMap.delete(key);\r\n }\r\n });\r\n },\r\n { deep: true }\r\n);\r\n</script>\r\n\r\n<template>\r\n <router-view v-slot=\"{ Component, route: currentRoute }\">\r\n <transition name=\"main\" mode=\"out-in\" appear>\r\n <keep-alive :include=\"cachedViews\">\r\n <component\r\n :is=\"getWrapper(Component, currentRoute)\"\r\n :key=\"currentRoute.fullPath\"\r\n />\r\n </keep-alive>\r\n </transition>\r\n </router-view>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["_createBlock","_createVNode","_Transition","_KeepAlive","_openBlock","_resolveDynamicComponent"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, computed, resolveComponent, createBlock, openBlock, withCtx, createVNode, Transition, KeepAlive, resolveDynamicComponent, unref } from 'vue';
1
+ import { defineComponent, computed, resolveComponent, createElementBlock, openBlock, Fragment, createElementVNode, createVNode, withCtx, Transition, createBlock, KeepAlive, resolveDynamicComponent, unref } from 'vue';
2
2
  import { useRoute } from 'vue-router';
3
3
  import { storeToRefs } from 'pinia';
4
4
  import { useKeepAliveStore } from '@ditari/store';
@@ -13,33 +13,48 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
13
13
  const route = useRoute();
14
14
  return (_ctx, _cache) => {
15
15
  const _component_router_view = resolveComponent("router-view");
16
- return openBlock(), createBlock(_component_router_view, null, {
17
- default: withCtx(({ Component }) => [
18
- createVNode(
19
- Transition,
20
- {
21
- name: "main",
22
- mode: "out-in",
23
- appear: ""
24
- },
25
- {
26
- default: withCtx(() => [
27
- (openBlock(), createBlock(KeepAlive, { include: keepAliveNames.value }, [
28
- (openBlock(), createBlock(resolveDynamicComponent(Component), {
29
- key: unref(route).path
30
- }))
31
- ], 1032, ["include"]))
32
- ]),
33
- _: 2
34
- /* DYNAMIC */
35
- },
36
- 1024
37
- /* DYNAMIC_SLOTS */
38
- )
39
- ]),
40
- _: 1
41
- /* STABLE */
42
- });
16
+ return openBlock(), createElementBlock(
17
+ Fragment,
18
+ null,
19
+ [
20
+ _cache[0] || (_cache[0] = createElementVNode(
21
+ "div",
22
+ null,
23
+ "name",
24
+ -1
25
+ /* CACHED */
26
+ )),
27
+ createVNode(_component_router_view, null, {
28
+ default: withCtx(({ Component }) => [
29
+ createVNode(
30
+ Transition,
31
+ {
32
+ name: "main",
33
+ mode: "out-in",
34
+ appear: ""
35
+ },
36
+ {
37
+ default: withCtx(() => [
38
+ (openBlock(), createBlock(KeepAlive, { include: keepAliveNames.value }, [
39
+ (openBlock(), createBlock(resolveDynamicComponent(Component), {
40
+ key: unref(route).fullPath
41
+ }))
42
+ ], 1032, ["include"]))
43
+ ]),
44
+ _: 2
45
+ /* DYNAMIC */
46
+ },
47
+ 1024
48
+ /* DYNAMIC_SLOTS */
49
+ )
50
+ ]),
51
+ _: 1
52
+ /* STABLE */
53
+ })
54
+ ],
55
+ 64
56
+ /* STABLE_FRAGMENT */
57
+ );
43
58
  };
44
59
  }
45
60
  });
@@ -1 +1 @@
1
- {"version":3,"file":"RouterContentName.vue2.mjs","sources":["../../../../../../src/components/layout/components/layout/RouterContentName.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed } from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useKeepAliveStore } from \"@ditari/store\";\r\n\r\nconst keepAliveStore = useKeepAliveStore();\r\n\r\nconst { get } = storeToRefs(keepAliveStore);\r\nconst keepAliveNames = computed<string[]>(() => get.value);\r\n\r\nconst route = useRoute();\r\n</script>\r\n\r\n<template>\r\n <router-view v-slot=\"{ Component }\">\r\n <transition name=\"main\" mode=\"out-in\" appear>\r\n <keep-alive :include=\"keepAliveNames\">\r\n <component :is=\"Component\" :key=\"route.path\" />\r\n </keep-alive>\r\n </transition>\r\n </router-view>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["_createBlock","_withCtx","_createVNode","_Transition","_KeepAlive","_openBlock","_resolveDynamicComponent","_unref"],"mappings":";;;;;;;;;AAOA,IAAA,MAAM,iBAAiB,iBAAA,EAAkB;AAEzC,IAAA,MAAM,EAAE,GAAA,EAAI,GAAI,WAAA,CAAY,cAAc,CAAA;AAC1C,IAAA,MAAM,cAAA,GAAiB,QAAA,CAAmB,MAAM,GAAA,CAAI,KAAK,CAAA;AAEzD,IAAA,MAAM,QAAQ,QAAA,EAAS;;;0BAIrBA,WAAA,CAMc,sBAAA,EAAA,IAAA,EAAA;AAAA,QALZ,OAAA,EAAAC,OAAA,CAAA,CAIa,EALQ,WAAS,KAAA;AAAA,UAC9BC,WAAA;AAAA,YAIaC,UAAA;AAAA,YAAA;AAAA,cAJD,IAAA,EAAK,MAAA;AAAA,cAAO,IAAA,EAAK,QAAA;AAAA,cAAS,MAAA,EAAA;AAAA;;+BACpC,MAEa;AAAA,8BAFbH,WAAA,CAEaI,SAAA,EAAA,EAFA,OAAA,EAAS,cAAA,CAAA,OAAc,EAAA;AAAA,mBAClCC,SAAA,EAAA,EAAAL,WAAA,CAA+CM,uBAAA,CAA/B,SAAS,CAAA,EAAA;AAAA,oBAAG,GAAA,EAAKC,KAAA,CAAA,KAAA,CAAA,CAAM;AAAA;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"RouterContentName.vue2.mjs","sources":["../../../../../../src/components/layout/components/layout/RouterContentName.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed } from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useKeepAliveStore } from \"@ditari/store\";\r\n\r\nconst keepAliveStore = useKeepAliveStore();\r\n\r\nconst { get } = storeToRefs(keepAliveStore);\r\nconst keepAliveNames = computed<string[]>(() => get.value);\r\n\r\nconst route = useRoute();\r\n</script>\r\n\r\n<template>\r\n <div>name</div>\r\n <router-view v-slot=\"{ Component }\">\r\n <transition name=\"main\" mode=\"out-in\" appear>\r\n <keep-alive :include=\"keepAliveNames\">\r\n <component :is=\"Component\" :key=\"route.fullPath\" />\r\n </keep-alive>\r\n </transition>\r\n </router-view>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["_createElementVNode","_createVNode","_withCtx","_Transition","_createBlock","_KeepAlive","_openBlock","_resolveDynamicComponent","_unref"],"mappings":";;;;;;;;;AAOA,IAAA,MAAM,iBAAiB,iBAAA,EAAkB;AAEzC,IAAA,MAAM,EAAE,GAAA,EAAI,GAAI,WAAA,CAAY,cAAc,CAAA;AAC1C,IAAA,MAAM,cAAA,GAAiB,QAAA,CAAmB,MAAM,GAAA,CAAI,KAAK,CAAA;AAEzD,IAAA,MAAM,QAAQ,QAAA,EAAS;;;;;;;UAIrB,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAAA,kBAAA;AAAA,YAAe,KAAA;AAAA;YAAV,MAAA;AAAA,YAAI,CAAA;AAAA;AAAA,WAAA,CAAA;AAAA,UACTC,WAAA,CAMc,wBAAA,IAAA,EAAA;AAAA,YALZ,OAAA,EAAAC,OAAA,CAAA,CAIa,EALQ,WAAS,KAAA;AAAA,cAC9BD,WAAA;AAAA,gBAIaE,UAAA;AAAA,gBAAA;AAAA,kBAJD,IAAA,EAAK,MAAA;AAAA,kBAAO,IAAA,EAAK,QAAA;AAAA,kBAAS,MAAA,EAAA;AAAA;;mCACpC,MAEa;AAAA,kCAFbC,WAAA,CAEaC,SAAA,EAAA,EAFA,OAAA,EAAS,cAAA,CAAA,OAAc,EAAA;AAAA,uBAClCC,SAAA,EAAA,EAAAF,WAAA,CAAmDG,uBAAA,CAAnC,SAAS,CAAA,EAAA;AAAA,wBAAG,GAAA,EAAKC,KAAA,CAAA,KAAA,CAAA,CAAM;AAAA;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -126,18 +126,12 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
126
126
  );
127
127
  const store = useNavTabStore();
128
128
  const router = useRouter();
129
- const onContextMenuClick2 = ({ key }, targetKey) => {
129
+ const onContextMenuClick2 = ({ key }, item) => {
130
130
  var _a, _b, _c, _d;
131
+ const targetKey = item.fullPath;
131
132
  switch (key) {
132
133
  case "reload":
133
- if (targetKey !== activeKey.value) {
134
- router.push(targetKey).then(() => {
135
- var _a2;
136
- return (_a2 = appContext == null ? void 0 : appContext.onReloadPage) == null ? void 0 : _a2.call(appContext);
137
- });
138
- } else {
139
- (_a = appContext == null ? void 0 : appContext.onReloadPage) == null ? void 0 : _a.call(appContext);
140
- }
134
+ (_a = appContext == null ? void 0 : appContext.onReloadPage) == null ? void 0 : _a.call(appContext, item);
141
135
  break;
142
136
  case "other":
143
137
  (_b = store.closeOtherTabs) == null ? void 0 : _b.call(store, targetKey);
@@ -225,7 +219,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
225
219
  {
226
220
  overlay: withCtx(() => [
227
221
  createVNode(_component_a_menu, {
228
- onClick: (e) => unref(onContextMenuClick)(e, item.fullPath)
222
+ onClick: (e) => unref(onContextMenuClick)(e, item)
229
223
  }, {
230
224
  default: withCtx(() => [
231
225
  createVNode(_component_a_menu_item, { key: "reload" }, {