@ditari/bsui 5.1.24 → 5.1.26

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 (32) hide show
  1. package/dist/cjs/components/action-bar/ActionBar.vue2.cjs +4 -2
  2. package/dist/cjs/components/action-bar/ActionBar.vue2.cjs.map +1 -1
  3. package/dist/cjs/components/layout/Show.cjs +30 -6
  4. package/dist/cjs/components/layout/Show.cjs.map +1 -1
  5. package/dist/cjs/components/layout/Show.d.ts +9 -0
  6. package/dist/cjs/components/layout/components/layout/HeaderLayout.vue2.cjs +1 -1
  7. package/dist/cjs/components/layout/components/layout/HeaderLayout.vue2.cjs.map +1 -1
  8. package/dist/cjs/components/table/Table.cjs +79 -97
  9. package/dist/cjs/components/table/Table.cjs.map +1 -1
  10. package/dist/cjs/components/table-form/TableFormItem.cjs +0 -1
  11. package/dist/cjs/components/table-form/TableFormItem.cjs.map +1 -1
  12. package/dist/cjs/components/table-form/style.cjs +2 -2
  13. package/dist/cjs/components/table-form/style.cjs.map +1 -1
  14. package/dist/esm/components/action-bar/ActionBar.vue2.mjs +4 -2
  15. package/dist/esm/components/action-bar/ActionBar.vue2.mjs.map +1 -1
  16. package/dist/esm/components/layout/Show.d.ts +9 -0
  17. package/dist/esm/components/layout/Show.mjs +30 -6
  18. package/dist/esm/components/layout/Show.mjs.map +1 -1
  19. package/dist/esm/components/layout/components/layout/HeaderLayout.vue2.mjs +1 -1
  20. package/dist/esm/components/layout/components/layout/HeaderLayout.vue2.mjs.map +1 -1
  21. package/dist/esm/components/table/Table.mjs +80 -98
  22. package/dist/esm/components/table/Table.mjs.map +1 -1
  23. package/dist/esm/components/table-form/TableFormItem.mjs +0 -1
  24. package/dist/esm/components/table-form/TableFormItem.mjs.map +1 -1
  25. package/dist/esm/components/table-form/style.mjs +2 -2
  26. package/dist/esm/components/table-form/style.mjs.map +1 -1
  27. package/dist/types/components/action-bar/ActionBar.vue.d.ts.map +1 -1
  28. package/dist/types/components/layout/Show.d.ts +9 -0
  29. package/dist/types/components/layout/Show.d.ts.map +1 -1
  30. package/dist/types/components/table/Table.d.ts.map +1 -1
  31. package/dist/types/components/table-form/TableFormItem.d.ts.map +1 -1
  32. package/package.json +1 -1
@@ -51,14 +51,16 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues
51
51
  if (!isShow(item)) {
52
52
  return false;
53
53
  }
54
- const visibleIndex = visibleButtons.value.findIndex((v) => v.title === item.title);
54
+ const visibleIndex = visibleButtons.value.findIndex(
55
+ (v) => v.title === item.title
56
+ );
55
57
  return visibleIndex !== -1 && visibleIndex < visibleButtons.value.length - 1;
56
58
  };
57
59
  return (_ctx, _cache) => {
58
60
  const _component_a_divider = vue.resolveComponent("a-divider");
59
61
  return vue.openBlock(), vue.createElementBlock("div", {
60
62
  onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
61
- }, ["stop"]))
63
+ }, ["stop", "self"]))
62
64
  }, [
63
65
  (vue.openBlock(true), vue.createElementBlock(
64
66
  vue.Fragment,
@@ -1 +1 @@
1
- {"version":3,"file":"ActionBar.vue2.cjs","sources":["../../../../src/components/action-bar/ActionBar.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\n import { computed, isVNode, type VNode } from \"vue\";\r\n\r\n defineOptions({\r\n name: \"DActionBar\"\r\n });\r\n\r\n interface ButtonItem {\r\n title: string | VNode;\r\n status?: boolean | ((record: { [key: string]: unknown }) => boolean);\r\n onClick?: (record: { [key: string]: unknown }) => void;\r\n onEvent?: (record: { [key: string]: unknown }) => void; // 别名,为了向后兼容\r\n }\r\n\r\n // 2. 普通的 Props 声明\r\n const props = defineProps({\n buttonGroups: { type: Array, required: false },\n actions: { type: Array, required: false },\n record: { type: Object, required: true }\n});\r\n\r\n /**\r\n * 判断按钮是否显示\r\n */\r\n const isShow = (item: ButtonItem): boolean => {\r\n if (typeof item.status === \"function\") {\r\n return item.status(props.record);\r\n }\r\n return item.status ?? true;\r\n };\r\n\r\n /**\r\n * 过滤出当前真正显示的按钮列表\r\n */\r\n const visibleButtons = computed(() => {\r\n const groups: ButtonItem[] = props.actions || props.buttonGroups || [];\r\n return groups.filter((item: ButtonItem) => isShow(item));\r\n });\r\n\r\n /**\r\n * 判断分隔线状态\r\n */\r\n const showDivider = (item: ButtonItem): boolean => {\r\n if (!isShow(item)) {\r\n return false;\r\n }\r\n\r\n // 逻辑保持不变:在可见列表里找自己\r\n const visibleIndex = visibleButtons.value.findIndex((v: ButtonItem) => v.title === item.title);\r\n return visibleIndex !== -1 && visibleIndex < visibleButtons.value.length - 1;\r\n };\r\n</script>\r\n\r\n<template>\r\n <div @click.stop>\r\n <template v-for=\"(item, index) in actions || buttonGroups || []\" :key=\"index\">\r\n <a v-if=\"isShow(item)\" @click.stop=\"(item.onClick || item.onEvent)?.(record)\">\r\n <template v-if=\"isVNode(item.title)\">\r\n <component :is=\"item.title\" :record=\"record\" />\r\n </template>\r\n <template v-else>\r\n {{ item.title }}\r\n </template>\r\n </a>\r\n <a-divider\r\n v-if=\"showDivider(item)\"\r\n type=\"vertical\"\r\n style=\"border-color: #3e7fff; border-width: 2px\"\r\n />\r\n </template>\r\n </div>\r\n</template>\r\n"],"names":["computed","_createElementBlock","_openBlock","_Fragment","_withModifiers","isVNode","_createBlock","_resolveDynamicComponent","_createTextVNode","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeE,IAAA,MAAM,KAAA,GAAQ,OAAA;AASd,IAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAA8B;;AAC5C,MAAA,IAAI,OAAO,IAAA,CAAK,MAAA,KAAW,UAAA,EAAY;AACrC,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AAAA,MACjC;AACA,MAAA,OAAA,CAAO,EAAA,GAAA,IAAA,CAAK,WAAL,IAAA,GAAA,EAAA,GAAe,IAAA;AAAA,IACxB,CAAA;AAKA,IAAA,MAAM,cAAA,GAAiBA,aAAS,MAAM;AACpC,MAAA,MAAM,MAAA,GAAuB,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,gBAAgB,EAAC;AACrE,MAAA,OAAO,OAAO,MAAA,CAAO,CAAC,IAAA,KAAqB,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,IACzD,CAAC,CAAA;AAKD,IAAA,MAAM,WAAA,GAAc,CAAC,IAAA,KAA8B;AACjD,MAAA,IAAI,CAAC,MAAA,CAAO,IAAI,CAAA,EAAG;AACjB,QAAA,OAAO,KAAA;AAAA,MACT;AAGA,MAAA,MAAM,YAAA,GAAe,eAAe,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA,KAAkB,CAAA,CAAE,KAAA,KAAU,IAAA,CAAK,KAAK,CAAA;AAC7F,MAAA,OAAO,YAAA,KAAiB,CAAA,CAAA,IAAM,YAAA,GAAe,cAAA,CAAe,MAAM,MAAA,GAAS,CAAA;AAAA,IAC7E,CAAA;;;8BAIAC,sBAAA,CAgBM,KAAA,EAAA;AAAA,QAhBA,OAAA,8CAAD,MAAA;AAAA,QAAA,CAAA,EAAW,CAAA,MAAA,CAAA,CAAA;AAAA;SACdC,aAAA,CAAA,IAAA,CAAA,EAAAD,sBAAA;AAAA,UAcWE,YAAA;AAAA;yBAduB,QAAA,OAAA,IAAW,OAAA,iBAAY,EAAA,EAAA,CAAvC,IAAA,EAAM,KAAA,KAAK;;;qBAA0C,KAAA,EAAK;AAAA,cAAA;AAAA,gBACjE,OAAO,IAAI,CAAA,qBAApBF,uBAOI,GAAA,EAAA;AAAA;kBAPoB,OAAA,EAAKG,iBAAA,CAAA,CAAA,MAAA,KAAA;;AAAQ,oBAAA,OAAA,CAAA,EAAA,GAAA,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,OAAA,KAArB,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgC,OAAA,CAAA,MAAA,CAAA;AAAA,kBAAA,CAAA,EAAM,CAAA,MAAA,CAAA;AAAA;kBACzDC,WAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,qBAChCC,eAAA,CAA+CC,2BAAA,CAA/B,IAAA,CAAK,KAAK,CAAA,EAAA;AAAA;oBAAG,QAAQ,OAAA,CAAA;AAAA,+DAEvCN,sBAAA;AAAA,oBAEWE,YAAA;AAAA,oBAAA,EAAA,KAAA,CAAA,EAAA;AAAA,oBAAA;AAAA,sBADNK,mBAAA;AAAA,wBAAAC,mBAAA,CAAA,KAAK,KAAK,CAAA;AAAA,wBAAA;AAAA;AAAA;AAAA;;;;;gBAIT,YAAY,IAAI,CAAA,qBADxBH,gBAIE,oBAAA,EAAA;AAAA;kBAFA,IAAA,EAAK,UAAA;AAAA,kBACL,KAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,gBAAA,KAAA;AAAA;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ActionBar.vue2.cjs","sources":["../../../../src/components/action-bar/ActionBar.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, isVNode, type VNode } from \"vue\";\r\n\r\ndefineOptions({\r\n name: \"DActionBar\"\r\n});\r\n\r\ninterface ButtonItem {\r\n title: string | VNode;\r\n status?:\r\n | boolean\r\n | ((record: { [key: string]: unknown }) => boolean);\r\n onClick?: (record: { [key: string]: unknown }) => void;\r\n onEvent?: (record: { [key: string]: unknown }) => void; // 别名,为了向后兼容\r\n}\r\n\r\n// 2. 普通的 Props 声明\r\nconst props = defineProps({\n buttonGroups: { type: Array, required: false },\n actions: { type: Array, required: false },\n record: { type: Object, required: true }\n});\r\n\r\n/**\r\n * 判断按钮是否显示\r\n */\r\nconst isShow = (item: ButtonItem): boolean => {\r\n if (typeof item.status === \"function\") {\r\n return item.status(props.record);\r\n }\r\n return item.status ?? true;\r\n};\r\n\r\n/**\r\n * 过滤出当前真正显示的按钮列表\r\n */\r\nconst visibleButtons = computed(() => {\r\n const groups: ButtonItem[] =\r\n props.actions || props.buttonGroups || [];\r\n return groups.filter((item: ButtonItem) => isShow(item));\r\n});\r\n\r\n/**\r\n * 判断分隔线状态\r\n */\r\nconst showDivider = (item: ButtonItem): boolean => {\r\n if (!isShow(item)) {\r\n return false;\r\n }\r\n\r\n // 逻辑保持不变:在可见列表里找自己\r\n const visibleIndex = visibleButtons.value.findIndex(\r\n (v: ButtonItem) => v.title === item.title\r\n );\r\n return (\r\n visibleIndex !== -1 &&\r\n visibleIndex < visibleButtons.value.length - 1\r\n );\r\n};\r\n</script>\r\n\r\n<template>\r\n <div @click.stop.self>\r\n <template\r\n v-for=\"(item, index) in actions || buttonGroups || []\"\r\n :key=\"index\"\r\n >\r\n <a\r\n v-if=\"isShow(item)\"\r\n @click.stop=\"\r\n (item.onClick || item.onEvent)?.(record)\r\n \"\r\n >\r\n <template v-if=\"isVNode(item.title)\">\r\n <component :is=\"item.title\" :record=\"record\" />\r\n </template>\r\n <template v-else>\r\n {{ item.title }}\r\n </template>\r\n </a>\r\n <a-divider\r\n v-if=\"showDivider(item)\"\r\n type=\"vertical\"\r\n style=\"border-color: #3e7fff; border-width: 2px\"\r\n />\r\n </template>\r\n </div>\r\n</template>\r\n"],"names":["computed","_createElementBlock","_openBlock","_Fragment","_withModifiers","isVNode","_createBlock","_resolveDynamicComponent","_createTextVNode","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,IAAA,MAAM,KAAA,GAAQ,OAAA;AASd,IAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAA8B;;AAC5C,MAAA,IAAI,OAAO,IAAA,CAAK,MAAA,KAAW,UAAA,EAAY;AACrC,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AAAA,MACjC;AACA,MAAA,OAAA,CAAO,EAAA,GAAA,IAAA,CAAK,WAAL,IAAA,GAAA,EAAA,GAAe,IAAA;AAAA,IACxB,CAAA;AAKA,IAAA,MAAM,cAAA,GAAiBA,aAAS,MAAM;AACpC,MAAA,MAAM,MAAA,GACJ,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,gBAAgB,EAAC;AAC1C,MAAA,OAAO,OAAO,MAAA,CAAO,CAAC,IAAA,KAAqB,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,IACzD,CAAC,CAAA;AAKD,IAAA,MAAM,WAAA,GAAc,CAAC,IAAA,KAA8B;AACjD,MAAA,IAAI,CAAC,MAAA,CAAO,IAAI,CAAA,EAAG;AACjB,QAAA,OAAO,KAAA;AAAA,MACT;AAGA,MAAA,MAAM,YAAA,GAAe,eAAe,KAAA,CAAM,SAAA;AAAA,QACxC,CAAC,CAAA,KAAkB,CAAA,CAAE,KAAA,KAAU,IAAA,CAAK;AAAA,OACtC;AACA,MAAA,OACE,YAAA,KAAiB,CAAA,CAAA,IACjB,YAAA,GAAe,cAAA,CAAe,MAAM,MAAA,GAAS,CAAA;AAAA,IAEjD,CAAA;;;8BAIEC,sBAAA,CAwBM,KAAA,EAAA;AAAA,QAxBA,OAAA,8CAAD,MAAA;AAAA,QAAA,CAAA,EAAgB,CAAA,MAAA,EAAA,MAAA,CAAA,CAAA;AAAA;SACnBC,aAAA,CAAA,IAAA,CAAA,EAAAD,sBAAA;AAAA,UAsBWE,YAAA;AAAA;yBArBe,QAAA,OAAA,IAAW,OAAA,iBAAY,EAAA,EAAA,CAAvC,IAAA,EAAM,KAAA,KAAK;;;qBACb,KAAA,EAAK;AAAA,cAAA;AAAA,gBAGH,OAAO,IAAI,CAAA,qBADnBF,uBAYI,GAAA,EAAA;AAAA;kBAVD,OAAA,EAAKG,iBAAA,CAAA,CAAA,MAAA,KAAA;;AAAoB,oBAAA,OAAA,CAAA,EAAA,GAAA,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,OAAA,KAArB,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgC,OAAA,CAAA,MAAA,CAAA;AAAA,kBAAA,CAAA;;kBAI1CC,WAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,qBAChCC,eAAA,CAA+CC,2BAAA,CAA/B,IAAA,CAAK,KAAK,CAAA,EAAA;AAAA;oBAAG,QAAQ,OAAA,CAAA;AAAA,+DAEvCN,sBAAA;AAAA,oBAEWE,YAAA;AAAA,oBAAA,EAAA,KAAA,CAAA,EAAA;AAAA,oBAAA;AAAA,sBADNK,mBAAA;AAAA,wBAAAC,mBAAA,CAAA,KAAK,KAAK,CAAA;AAAA,wBAAA;AAAA;AAAA;AAAA;;;;;gBAIT,YAAY,IAAI,CAAA,qBADxBH,gBAIE,oBAAA,EAAA;AAAA;kBAFA,IAAA,EAAK,UAAA;AAAA,kBACL,KAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,gBAAA,KAAA;AAAA;;;;;;;;;;;;;;;;"}
@@ -27,6 +27,11 @@ const getProps = () => {
27
27
  loadingText: {
28
28
  type: String,
29
29
  default: "\u6B63\u5728\u8BF7\u6C42..."
30
+ },
31
+ // 新增属性:是否撑满高度
32
+ fullHeight: {
33
+ type: Boolean,
34
+ default: false
30
35
  }
31
36
  };
32
37
  };
@@ -67,6 +72,11 @@ const show = /* @__PURE__ */ vue.defineComponent({
67
72
  const {
68
73
  y
69
74
  } = core.useWindowScroll();
75
+ const containerStyle = vue.computed(() => ({
76
+ height: "100%",
77
+ display: "flex",
78
+ flexDirection: "column"
79
+ }));
70
80
  const pageHeaderStyle = vue.computed(() => css.css`
71
81
  position: sticky;
72
82
  top: ${layout.value.headerHeight}px;
@@ -74,6 +84,7 @@ const show = /* @__PURE__ */ vue.defineComponent({
74
84
  padding: 0;
75
85
  transition: all 0.3s;
76
86
  background-color: ${token.value.colorBgLayout};
87
+ flex-shrink: 0; /* 确保头部不被压缩 */
77
88
 
78
89
  ${y.value > 0 ? "box-shadow:0 10px 10px rgba(0, 0, 0, 0.15);" : ""}
79
90
  .ant-page-header-back {
@@ -97,6 +108,14 @@ const show = /* @__PURE__ */ vue.defineComponent({
97
108
  padding: 10px 10px
98
109
  ${slots.bottomFooter ? "50px" : "0"};
99
110
  background: ${token.value.colorBgLayout};
111
+
112
+ /* 关键逻辑:如果 fullHeight 为 true,则填充剩余空间 */
113
+ ${props.fullHeight ? `
114
+ flex: 1;
115
+ overflow: auto;
116
+ display: flex;
117
+ flex-direction: column;
118
+ ` : ""}
100
119
  `);
101
120
  const footerStyle = vue.computed(() => css.css`
102
121
  position: fixed;
@@ -133,13 +152,20 @@ const show = /* @__PURE__ */ vue.defineComponent({
133
152
  return vue.createVNode("div", {
134
153
  "class": css.cx(rootCls),
135
154
  "style": {
136
- display: !loading.value ? "block" : "none"
155
+ display: !loading.value ? "block" : "none",
156
+ height: props.fullHeight ? "100%" : "auto"
137
157
  }
138
158
  }, [vue.createVNode(antDesignVue.Watermark, {
139
- "content": watermarkContent.value
159
+ "content": watermarkContent.value,
160
+ "style": {
161
+ height: props.fullHeight ? "100%" : "auto"
162
+ }
140
163
  }, {
141
164
  default: () => [vue.createVNode(antDesignVue.Flex, {
142
- "vertical": true
165
+ "vertical": true,
166
+ "style": {
167
+ height: props.fullHeight ? "100%" : "auto"
168
+ }
143
169
  }, {
144
170
  default: () => {
145
171
  var _a, _b;
@@ -193,9 +219,7 @@ const show = /* @__PURE__ */ vue.defineComponent({
193
219
  }, null)])]);
194
220
  }
195
221
  return () => vue.createVNode("div", {
196
- "style": {
197
- height: "100%"
198
- }
222
+ "style": containerStyle.value
199
223
  }, [showContent(), loadingContent()]);
200
224
  }
201
225
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Show.cjs","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
+ {"version":3,"file":"Show.cjs","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 CSSProperties\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 fullHeight: {\r\n type: Boolean,\r\n default: false\r\n }\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 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 // 整个容器的样式\r\n const containerStyle = computed(\r\n (): CSSProperties => ({\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\"\r\n })\r\n );\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 flex-shrink: 0; /* 确保头部不被压缩 */\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\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 /* 关键逻辑:如果 fullHeight 为 true,则填充剩余空间 */\r\n ${props.fullHeight\r\n ? `\r\n flex: 1;\r\n overflow: auto; \r\n display: flex;\r\n flex-direction: column;\r\n `\r\n : \"\"}\r\n `\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\r\n const pageTitle = () => (\r\n <div>{route.meta.title || \"无标题\"}</div>\r\n );\r\n\r\n const ghost = ref(false);\r\n\r\n const onBack = () => {\r\n if (props.close) {\r\n deleteTabs(route.fullPath);\r\n router.go(-1);\r\n } else {\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 height: props.fullHeight ? \"100%\" : \"auto\"\r\n }}\r\n >\r\n <Watermark\r\n content={watermarkContent.value}\r\n style={{\r\n height: props.fullHeight ? \"100%\" : \"auto\"\r\n }}\r\n >\r\n <Flex\r\n vertical={true}\r\n style={{\r\n height: props.fullHeight ? \"100%\" : \"auto\"\r\n }}\r\n >\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={containerStyle.value}>\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","fullHeight","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","containerStyle","height","display","flexDirection","pageHeaderStyle","css","headerHeight","colorBgLayout","contentStyle","bottomFooter","footerStyle","collapsed","collapsedWidth","sideWidth","mode","colorBgContainer","pageTitle","_createVNode","meta","title","ghost","ref","onBack","fullPath","go","onClosePage","showContent","cx","Watermark","Flex","PageHeader","backIcon","LeftOutlined","fontSize","extra","_a","footer","subTitle","loadingContent","justifyContent","alignItems","Spin"],"mappings":"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"}
@@ -11,6 +11,10 @@ declare const show: import("vue").DefineComponent<import("vue").ExtractPropTypes
11
11
  type: StringConstructor;
12
12
  default: string;
13
13
  };
14
+ fullHeight: {
15
+ type: BooleanConstructor;
16
+ default: boolean;
17
+ };
14
18
  }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
15
19
  close: {
16
20
  type: BooleanConstructor;
@@ -24,10 +28,15 @@ declare const show: import("vue").DefineComponent<import("vue").ExtractPropTypes
24
28
  type: StringConstructor;
25
29
  default: string;
26
30
  };
31
+ fullHeight: {
32
+ type: BooleanConstructor;
33
+ default: boolean;
34
+ };
27
35
  }>> & Readonly<{}>, {
28
36
  loading: boolean;
29
37
  close: boolean;
30
38
  loadingText: string;
39
+ fullHeight: boolean;
31
40
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
32
41
  export default show;
33
42
  //# sourceMappingURL=Show.d.ts.map
@@ -34,7 +34,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
34
34
  position: fixed;
35
35
  top: 0;
36
36
  right: 0;
37
- z-index: 1;
37
+ z-index: 5;
38
38
  background-color: ${modeConfig.value.mode !== "light" ? token.value.colorBgContainer : headerTokenStyle.value.colorBgHeader};
39
39
  left: ${left.value};
40
40
  height: ${layout.value.headerHeight}px;
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderLayout.vue2.cjs","sources":["../../../../../../src/components/layout/components/layout/HeaderLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, type ComputedRef } from \"vue\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport {\r\n MenuFoldOutlined,\r\n MenuUnfoldOutlined\r\n} from \"@ant-design/icons-vue\";\r\nimport { useAppStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\nimport type { RouteLocationNormalized } from \"vue-router\";\r\n\r\nimport Tab from \"../../../tab/Tab.vue\";\r\n\r\nconst appStore = useAppStore();\r\n\r\nconst { layout, modeConfig, headerTokenStyle } =\r\n storeToRefs(appStore);\r\n\r\nconst {\r\n headerStyle,\r\n headerTabStyle,\r\n collapsedStyle,\r\n rightStyle\r\n} = useStyle();\r\n\r\nfunction useStyle(): {\r\n headerStyle: ComputedRef<string>;\r\n headerTabStyle: ComputedRef<string>;\r\n collapsedStyle: ComputedRef<string>;\r\n rightStyle: ComputedRef<string>;\r\n} {\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n\r\n const left = computed(\r\n () =>\r\n `${layout.value.collapsed ? layout.value.collapsedWidth : layout.value.sideWidth}px`\r\n );\r\n\r\n const headerStyle = computed(\r\n () => css`\r\n position: fixed;\r\n top: 0;\r\n right: 0;\r\n z-index: 1;\r\n background-color: ${modeConfig.value.mode !== \"light\"\r\n ? token.value.colorBgContainer\r\n : headerTokenStyle.value.colorBgHeader};\r\n left: ${left.value};\r\n height: ${layout.value.headerHeight}px;\r\n transition: left 0.4s cubic-bezier(0.22, 1.2, 0.36, 1);\r\n display: flex;\r\n align-items: flex-end;\r\n `\r\n );\r\n\r\n const headerTabStyle = computed(\r\n () => css`\r\n flex: 1;\r\n overflow: hidden;\r\n padding-right: 10px;\r\n `\r\n );\r\n\r\n const collapsedStyle = computed(\r\n () => css`\r\n padding: 0 10px;\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n `\r\n );\r\n\r\n const rightStyle = computed(\r\n () => css`\r\n height: 100%;\r\n `\r\n );\r\n\r\n return {\r\n headerStyle,\r\n headerTabStyle,\r\n collapsedStyle,\r\n rightStyle\r\n };\r\n}\r\n</script>\r\n<template>\r\n <div :class=\"[headerStyle, 'app-header-layout']\">\r\n <div\r\n :class=\"collapsedStyle\"\r\n @click=\"layout.collapsed = !layout.collapsed\"\r\n >\r\n <menu-unfold-outlined\r\n v-if=\"layout.collapsed\"\r\n class=\"trigger\"\r\n />\r\n <menu-fold-outlined v-else />\r\n </div>\r\n <div :class=\"headerTabStyle\">\r\n <Tab />\r\n </div>\r\n <div :class=\"rightStyle\">\r\n <slot></slot>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["useAppStore","storeToRefs","theme","computed","headerStyle","css","headerTabStyle","collapsedStyle","rightStyle","_createElementBlock","_unref","_createElementVNode","_createBlock","MenuUnfoldOutlined","MenuFoldOutlined","_createVNode","Tab","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;;AAgBA,IAAA,MAAM,WAAWA,iBAAA,EAAY;AAE7B,IAAA,MAAM,EAAE,MAAA,EAAQ,UAAA,EAAY,gBAAA,EAAiB,GAC3CC,kBAAY,QAAQ,CAAA;AAEtB,IAAA,MAAM;AAAA,MACJ,WAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,QACE,QAAA,EAAS;AAEb,IAAA,SAAS,QAAA,GAKP;AACA,MAAA,MAAM,EAAE,UAAS,GAAIC,kBAAA;AACrB,MAAA,MAAM,EAAE,KAAA,EAAM,GACZ,QAAA,EAAS;AAEX,MAAA,MAAM,IAAA,GAAOC,YAAA;AAAA,QACX,MACE,CAAA,EAAG,MAAA,CAAO,KAAA,CAAM,SAAA,GAAY,OAAO,KAAA,CAAM,cAAA,GAAiB,MAAA,CAAO,KAAA,CAAM,SAAS,CAAA,EAAA;AAAA,OACpF;AAEA,MAAA,MAAMC,YAAAA,GAAcD,YAAA;AAAA,QAClB,MAAME,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAA,EAKgB,UAAA,CAAW,MAAM,IAAA,KAAS,OAAA,GAC1C,MAAM,KAAA,CAAM,gBAAA,GACZ,gBAAA,CAAiB,KAAA,CAAM,aAAa,CAAA;AAAA,YAAA,EAChC,KAAK,KAAK,CAAA;AAAA,cAAA,EACR,MAAA,CAAO,MAAM,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA,IAAA;AAAA,OAKvC;AAEA,MAAA,MAAMC,eAAAA,GAAiBH,YAAA;AAAA,QACrB,MAAME,OAAA;AAAA;AAAA;AAAA;AAAA,IAAA;AAAA,OAKR;AAEA,MAAA,MAAME,eAAAA,GAAiBJ,YAAA;AAAA,QACrB,MAAME,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA;AAAA,OAQR;AAEA,MAAA,MAAMG,WAAAA,GAAaL,YAAA;AAAA,QACjB,MAAME,OAAA;AAAA;AAAA,IAAA;AAAA,OAGR;AAEA,MAAA,OAAO;AAAA,QACL,WAAA,EAAAD,YAAAA;AAAA,QACA,cAAA,EAAAE,eAAAA;AAAA,QACA,cAAA,EAAAC,eAAAA;AAAA,QACA,UAAA,EAAAC;AAAA,OACF;AAAA,IACF;;8BAGEC,sBAAA;AAAA,QAiBM,KAAA;AAAA,QAAA;AAAA,UAjBA,2BAAQC,UAAA,WAAA,CAAA,EAAW,mBAAA,CAAA;AAAA;;UACvBC,sBAAA;AAAA,YASM,KAAA;AAAA,YAAA;AAAA,cARH,KAAA,qBAAOD,SAAA,CAAA,cAAA,CAAc,CAAA;AAAA,cACrB,+CAAOA,SAAA,CAAA,MAAA,CAAA,CAAO,SAAA,GAAS,CAAIA,SAAA,CAAA,MAAA,CAAA,CAAO,SAAA;AAAA;;cAG3BA,SAAA,CAAA,MAAA,CAAA,CAAO,SAAA,qBADfE,eAAA,CAGEF,SAAA,CAAAG,2BAAA,CAAA,EAAA;AAAA;gBADA,KAAA,EAAM;AAAA,sCAERD,eAAA,CAA6BF,SAAA,CAAAI,yBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,EAAA,CAAA;AAAA;;;;UAE/BH,sBAAA;AAAA,YAEM,KAAA;AAAA,YAAA;AAAA,cAFA,KAAA,qBAAOD,SAAA,CAAA,cAAA,CAAc;AAAA;;cACzBK,gBAAOC,+CAAA;AAAA;;;;UAETL,sBAAA;AAAA,YAEM,KAAA;AAAA,YAAA;AAAA,cAFA,KAAA,qBAAOD,SAAA,CAAA,UAAA,CAAU;AAAA;;cACrBO,cAAA,CAAa,IAAA,CAAA,MAAA,EAAA,SAAA;AAAA;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"HeaderLayout.vue2.cjs","sources":["../../../../../../src/components/layout/components/layout/HeaderLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, type ComputedRef } from \"vue\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport {\r\n MenuFoldOutlined,\r\n MenuUnfoldOutlined\r\n} from \"@ant-design/icons-vue\";\r\nimport { useAppStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\nimport type { RouteLocationNormalized } from \"vue-router\";\r\n\r\nimport Tab from \"../../../tab/Tab.vue\";\r\n\r\nconst appStore = useAppStore();\r\n\r\nconst { layout, modeConfig, headerTokenStyle } =\r\n storeToRefs(appStore);\r\n\r\nconst {\r\n headerStyle,\r\n headerTabStyle,\r\n collapsedStyle,\r\n rightStyle\r\n} = useStyle();\r\n\r\nfunction useStyle(): {\r\n headerStyle: ComputedRef<string>;\r\n headerTabStyle: ComputedRef<string>;\r\n collapsedStyle: ComputedRef<string>;\r\n rightStyle: ComputedRef<string>;\r\n} {\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n\r\n const left = computed(\r\n () =>\r\n `${layout.value.collapsed ? layout.value.collapsedWidth : layout.value.sideWidth}px`\r\n );\r\n\r\n const headerStyle = computed(\r\n () => css`\r\n position: fixed;\r\n top: 0;\r\n right: 0;\r\n z-index: 5;\r\n background-color: ${modeConfig.value.mode !== \"light\"\r\n ? token.value.colorBgContainer\r\n : headerTokenStyle.value.colorBgHeader};\r\n left: ${left.value};\r\n height: ${layout.value.headerHeight}px;\r\n transition: left 0.4s cubic-bezier(0.22, 1.2, 0.36, 1);\r\n display: flex;\r\n align-items: flex-end;\r\n `\r\n );\r\n\r\n const headerTabStyle = computed(\r\n () => css`\r\n flex: 1;\r\n overflow: hidden;\r\n padding-right: 10px;\r\n `\r\n );\r\n\r\n const collapsedStyle = computed(\r\n () => css`\r\n padding: 0 10px;\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n `\r\n );\r\n\r\n const rightStyle = computed(\r\n () => css`\r\n height: 100%;\r\n `\r\n );\r\n\r\n return {\r\n headerStyle,\r\n headerTabStyle,\r\n collapsedStyle,\r\n rightStyle\r\n };\r\n}\r\n</script>\r\n<template>\r\n <div :class=\"[headerStyle, 'app-header-layout']\">\r\n <div\r\n :class=\"collapsedStyle\"\r\n @click=\"layout.collapsed = !layout.collapsed\"\r\n >\r\n <menu-unfold-outlined\r\n v-if=\"layout.collapsed\"\r\n class=\"trigger\"\r\n />\r\n <menu-fold-outlined v-else />\r\n </div>\r\n <div :class=\"headerTabStyle\">\r\n <Tab />\r\n </div>\r\n <div :class=\"rightStyle\">\r\n <slot></slot>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["useAppStore","storeToRefs","theme","computed","headerStyle","css","headerTabStyle","collapsedStyle","rightStyle","_createElementBlock","_unref","_createElementVNode","_createBlock","MenuUnfoldOutlined","MenuFoldOutlined","_createVNode","Tab","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;;AAgBA,IAAA,MAAM,WAAWA,iBAAA,EAAY;AAE7B,IAAA,MAAM,EAAE,MAAA,EAAQ,UAAA,EAAY,gBAAA,EAAiB,GAC3CC,kBAAY,QAAQ,CAAA;AAEtB,IAAA,MAAM;AAAA,MACJ,WAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,QACE,QAAA,EAAS;AAEb,IAAA,SAAS,QAAA,GAKP;AACA,MAAA,MAAM,EAAE,UAAS,GAAIC,kBAAA;AACrB,MAAA,MAAM,EAAE,KAAA,EAAM,GACZ,QAAA,EAAS;AAEX,MAAA,MAAM,IAAA,GAAOC,YAAA;AAAA,QACX,MACE,CAAA,EAAG,MAAA,CAAO,KAAA,CAAM,SAAA,GAAY,OAAO,KAAA,CAAM,cAAA,GAAiB,MAAA,CAAO,KAAA,CAAM,SAAS,CAAA,EAAA;AAAA,OACpF;AAEA,MAAA,MAAMC,YAAAA,GAAcD,YAAA;AAAA,QAClB,MAAME,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAA,EAKgB,UAAA,CAAW,MAAM,IAAA,KAAS,OAAA,GAC1C,MAAM,KAAA,CAAM,gBAAA,GACZ,gBAAA,CAAiB,KAAA,CAAM,aAAa,CAAA;AAAA,YAAA,EAChC,KAAK,KAAK,CAAA;AAAA,cAAA,EACR,MAAA,CAAO,MAAM,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA,IAAA;AAAA,OAKvC;AAEA,MAAA,MAAMC,eAAAA,GAAiBH,YAAA;AAAA,QACrB,MAAME,OAAA;AAAA;AAAA;AAAA;AAAA,IAAA;AAAA,OAKR;AAEA,MAAA,MAAME,eAAAA,GAAiBJ,YAAA;AAAA,QACrB,MAAME,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA;AAAA,OAQR;AAEA,MAAA,MAAMG,WAAAA,GAAaL,YAAA;AAAA,QACjB,MAAME,OAAA;AAAA;AAAA,IAAA;AAAA,OAGR;AAEA,MAAA,OAAO;AAAA,QACL,WAAA,EAAAD,YAAAA;AAAA,QACA,cAAA,EAAAE,eAAAA;AAAA,QACA,cAAA,EAAAC,eAAAA;AAAA,QACA,UAAA,EAAAC;AAAA,OACF;AAAA,IACF;;8BAGEC,sBAAA;AAAA,QAiBM,KAAA;AAAA,QAAA;AAAA,UAjBA,2BAAQC,UAAA,WAAA,CAAA,EAAW,mBAAA,CAAA;AAAA;;UACvBC,sBAAA;AAAA,YASM,KAAA;AAAA,YAAA;AAAA,cARH,KAAA,qBAAOD,SAAA,CAAA,cAAA,CAAc,CAAA;AAAA,cACrB,+CAAOA,SAAA,CAAA,MAAA,CAAA,CAAO,SAAA,GAAS,CAAIA,SAAA,CAAA,MAAA,CAAA,CAAO,SAAA;AAAA;;cAG3BA,SAAA,CAAA,MAAA,CAAA,CAAO,SAAA,qBADfE,eAAA,CAGEF,SAAA,CAAAG,2BAAA,CAAA,EAAA;AAAA;gBADA,KAAA,EAAM;AAAA,sCAERD,eAAA,CAA6BF,SAAA,CAAAI,yBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,EAAA,CAAA;AAAA;;;;UAE/BH,sBAAA;AAAA,YAEM,KAAA;AAAA,YAAA;AAAA,cAFA,KAAA,qBAAOD,SAAA,CAAA,cAAA,CAAc;AAAA;;cACzBK,gBAAOC,+CAAA;AAAA;;;;UAETL,sBAAA;AAAA,YAEM,KAAA;AAAA,YAAA;AAAA,cAFA,KAAA,qBAAOD,SAAA,CAAA,UAAA,CAAU;AAAA;;cACrBO,cAAA,CAAa,IAAA,CAAA,MAAA,EAAA,SAAA;AAAA;;;;;;;;;;;;;;"}
@@ -88,6 +88,13 @@ const paginationStyle = css.css`
88
88
  justify-content: center;
89
89
  padding-top: 6px;
90
90
  `;
91
+ function isArrayEqual(a, b) {
92
+ if (a.length !== b.length) return false;
93
+ for (let i = 0; i < a.length; i++) {
94
+ if (a[i] !== b[i]) return false;
95
+ }
96
+ return true;
97
+ }
91
98
  const DTable = /* @__PURE__ */ vue.defineComponent({
92
99
  name: "DTable",
93
100
  props: tableProps(),
@@ -99,6 +106,7 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
99
106
  attrs
100
107
  }) {
101
108
  const selectedRowKeys = vue.ref(props.keys || []);
109
+ const selectedKeySet = vue.computed(() => new Set(selectedRowKeys.value));
102
110
  const {
103
111
  columns,
104
112
  data,
@@ -116,6 +124,7 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
116
124
  tableHeight,
117
125
  antTableBodyRef
118
126
  } = useHeight();
127
+ const customRowFn = useCustomRow();
119
128
  const rowSelection = useRowSelection();
120
129
  vue.onMounted(() => {
121
130
  });
@@ -131,60 +140,46 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
131
140
  };
132
141
  }
133
142
  function useSlots() {
134
- const tableSlots2 = {
135
- // --- 单元格类 ---
136
- bodyCell: (params) => {
137
- var _a;
138
- return (_a = slots.bodyCell) == null ? void 0 : _a.call(slots, params);
139
- },
140
- headerCell: (params) => {
141
- var _a;
142
- return (_a = slots.headerCell) == null ? void 0 : _a.call(slots, params);
143
- },
144
- // 自定义表头
145
- // --- 展开与总结 ---
146
- expandedRowRender: (params) => {
147
- var _a;
148
- return (_a = slots.expandedRowRender) == null ? void 0 : _a.call(slots, params);
149
- },
150
- // 额外展开行内容
151
- expandIcon: (params) => {
152
- var _a;
153
- return (_a = slots.expandIcon) == null ? void 0 : _a.call(slots, params);
154
- },
155
- // 自定义展开图标
156
- summary: () => {
157
- var _a;
158
- return (_a = slots.summary) == null ? void 0 : _a.call(slots);
159
- },
160
- // 总结行
161
- // --- 筛选与搜索 ---
162
- customFilterDropdown: (params) => {
163
- var _a;
164
- return (_a = slots.customFilterDropdown) == null ? void 0 : _a.call(slots, params);
165
- },
166
- // 自定义筛选菜单
167
- customFilterIcon: (params) => {
168
- var _a;
169
- return (_a = slots.customFilterIcon) == null ? void 0 : _a.call(slots, params);
170
- },
171
- // 自定义筛选图标
172
- // --- 装饰类 ---
173
- title: () => {
174
- var _a;
175
- return (_a = slots.title) == null ? void 0 : _a.call(slots);
176
- },
177
- // 表格顶部标题
178
- footer: () => {
179
- var _a;
180
- return (_a = slots.footer) == null ? void 0 : _a.call(slots);
181
- },
182
- // 表格底部页脚
183
- emptyText: () => {
184
- var _a;
185
- return (_a = slots.emptyText) == null ? void 0 : _a.call(slots);
186
- }
187
- // 自定义空状态内容
143
+ const tableSlots2 = {};
144
+ if (slots.bodyCell) tableSlots2.bodyCell = (params) => {
145
+ var _a;
146
+ return (_a = slots.bodyCell) == null ? void 0 : _a.call(slots, params);
147
+ };
148
+ if (slots.headerCell) tableSlots2.headerCell = (params) => {
149
+ var _a;
150
+ return (_a = slots.headerCell) == null ? void 0 : _a.call(slots, params);
151
+ };
152
+ if (slots.expandedRowRender) tableSlots2.expandedRowRender = (params) => {
153
+ var _a;
154
+ return (_a = slots.expandedRowRender) == null ? void 0 : _a.call(slots, params);
155
+ };
156
+ if (slots.expandIcon) tableSlots2.expandIcon = (params) => {
157
+ var _a;
158
+ return (_a = slots.expandIcon) == null ? void 0 : _a.call(slots, params);
159
+ };
160
+ if (slots.summary) tableSlots2.summary = () => {
161
+ var _a;
162
+ return (_a = slots.summary) == null ? void 0 : _a.call(slots);
163
+ };
164
+ if (slots.customFilterDropdown) tableSlots2.customFilterDropdown = (params) => {
165
+ var _a;
166
+ return (_a = slots.customFilterDropdown) == null ? void 0 : _a.call(slots, params);
167
+ };
168
+ if (slots.customFilterIcon) tableSlots2.customFilterIcon = (params) => {
169
+ var _a;
170
+ return (_a = slots.customFilterIcon) == null ? void 0 : _a.call(slots, params);
171
+ };
172
+ if (slots.title) tableSlots2.title = () => {
173
+ var _a;
174
+ return (_a = slots.title) == null ? void 0 : _a.call(slots);
175
+ };
176
+ if (slots.footer) tableSlots2.footer = () => {
177
+ var _a;
178
+ return (_a = slots.footer) == null ? void 0 : _a.call(slots);
179
+ };
180
+ if (slots.emptyText) tableSlots2.emptyText = () => {
181
+ var _a;
182
+ return (_a = slots.emptyText) == null ? void 0 : _a.call(slots);
188
183
  };
189
184
  return {
190
185
  tableSlots: tableSlots2
@@ -280,15 +275,14 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
280
275
  if (selection === "N" || checkEnable) {
281
276
  return;
282
277
  }
283
- const haveState = selectedRowKeys.value.some((key) => key === id);
278
+ const haveState = selectedKeySet.value.has(id);
284
279
  if (haveState) {
285
280
  selectedRowKeys.value = selectedRowKeys.value.filter((key) => key !== id);
286
281
  } else {
287
282
  if (selection === "S") {
288
- selectedRowKeys.value = [];
289
- selectedRowKeys.value.push(id);
283
+ selectedRowKeys.value = [id];
290
284
  } else {
291
- selectedRowKeys.value.push(id);
285
+ selectedRowKeys.value = [...selectedRowKeys.value, id];
292
286
  }
293
287
  }
294
288
  emit("update:keys", selectedRowKeys.value);
@@ -326,63 +320,51 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
326
320
  };
327
321
  }
328
322
  function useRowSelection() {
329
- const rowSelection2 = vue.ref(void 0);
330
- const {
331
- rowKey,
332
- config: {
333
- getCheckboxProps,
334
- selection
335
- } = {}
336
- } = props;
337
323
  const onSelect = (record, selected) => {
324
+ var _a;
338
325
  const data2 = record;
326
+ const {
327
+ rowKey
328
+ } = props;
329
+ const selection = (_a = props.config) == null ? void 0 : _a.selection;
339
330
  if (selection === "S") {
340
- selectedRowKeys.value = [];
341
331
  selectedRowKeys.value = selected ? [data2[rowKey]] : [];
342
332
  } else {
343
- selectedRowKeys.value = selected ? selectedRowKeys.value.concat(data2[rowKey]) : selectedRowKeys.value.filter((key) => key !== data2[rowKey]);
333
+ selectedRowKeys.value = selected ? [...selectedRowKeys.value, data2[rowKey]] : selectedRowKeys.value.filter((key) => key !== data2[rowKey]);
344
334
  }
345
335
  emit("update:keys", selectedRowKeys.value);
346
336
  };
347
337
  const onSelectAll = (selected, selectedRows, changeRows) => {
338
+ const {
339
+ rowKey
340
+ } = props;
348
341
  const _ids = changeRows.map((record) => record[rowKey]);
349
- selectedRowKeys.value = selected ? selectedRowKeys.value.concat(_ids) : selectedRowKeys.value.filter((key) => !_ids.includes(key));
350
- emit("update:keys", selectedRowKeys.value);
351
- };
352
- const onChange = (rowKeys, selectedRows) => {
353
- const data2 = selectedRows;
354
- const selected = data2.length !== 0;
355
- const _ids = props.data.map((record) => record[rowKey]);
356
- selectedRowKeys.value = selected ? selectedRowKeys.value.concat(rowKeys.filter((key) => !selectedRowKeys.value.includes(key))) : selectedRowKeys.value.filter((key) => !_ids.includes(key));
342
+ const idSet = new Set(_ids);
343
+ selectedRowKeys.value = selected ? [...selectedRowKeys.value, ..._ids] : selectedRowKeys.value.filter((key) => !idSet.has(key));
357
344
  emit("update:keys", selectedRowKeys.value);
358
345
  };
359
346
  vue.watch(() => props.keys, (val) => {
347
+ if (isArrayEqual(val, selectedRowKeys.value)) return;
360
348
  selectedRowKeys.value = val;
361
349
  }, {
362
350
  deep: true,
363
351
  immediate: true
364
352
  });
365
- vue.watch(() => {
366
- var _a;
367
- return (_a = props.config) == null ? void 0 : _a.selection;
368
- }, (val) => {
369
- if (val !== "N") {
370
- rowSelection2.value = {
371
- selectedRowKeys,
372
- onSelect,
373
- onSelectAll,
374
- fixed: true,
375
- columnTitle: selection === "S" ? "\u9009\u62E9" : null,
376
- columnWidth: selection === "S" ? 60 : 40,
377
- getCheckboxProps
378
- };
379
- } else {
380
- rowSelection2.value = void 0;
381
- }
382
- }, {
383
- immediate: true
353
+ return vue.computed(() => {
354
+ const {
355
+ config
356
+ } = props;
357
+ if ((config == null ? void 0 : config.selection) === "N") return void 0;
358
+ return {
359
+ selectedRowKeys: selectedRowKeys.value,
360
+ onSelect,
361
+ onSelectAll,
362
+ fixed: true,
363
+ columnTitle: (config == null ? void 0 : config.selection) === "S" ? "\u9009\u62E9" : null,
364
+ columnWidth: (config == null ? void 0 : config.selection) === "S" ? 60 : 40,
365
+ getCheckboxProps: config == null ? void 0 : config.getCheckboxProps
366
+ };
384
367
  });
385
- return rowSelection2;
386
368
  }
387
369
  return () => vue.createVNode(antDesignVue.Flex, {
388
370
  "vertical": true,
@@ -395,7 +377,7 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
395
377
  "dataSource": data.value,
396
378
  "columns": columns.value,
397
379
  "rowSelection": rowSelection.value,
398
- "customRow": useCustomRow(),
380
+ "customRow": customRowFn,
399
381
  "pagination": false,
400
382
  "rowKey": props.rowKey,
401
383
  "scroll": {