@ditari/bsui 1.1.36 → 1.1.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @ditari/bsui
2
2
 
3
+ ## 1.1.38
4
+
5
+ ### Patch Changes
6
+
7
+ - 表格添加点击激活的背景 class
8
+
9
+ ## 1.1.37
10
+
11
+ ### Patch Changes
12
+
13
+ - 修复 show 组件,菜单收缩的时候没用进行添加宽度的 bug
14
+
3
15
  ## 1.1.36
4
16
 
5
17
  ### Patch Changes
@@ -1,11 +1,4 @@
1
- declare const _default: import("vue").DefineComponent<{
2
- showConfig: {
3
- type: null;
4
- required: true;
5
- default: any;
6
- };
7
- }, {
8
- props: any;
1
+ declare const _default: import("vue").DefineComponent<{}, {
9
2
  store: import("pinia").Store<string, {
10
3
  list: string[];
11
4
  }, {
@@ -131,13 +124,5 @@ declare const _default: import("vue").DefineComponent<{
131
124
  readonly CloseOutlined: import("@ant-design/icons-vue/lib/icons/CloseOutlined").CloseOutlinedIconType;
132
125
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
133
126
  readonly Menu: import("vue").DefineComponent<{}, () => JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
134
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
135
- showConfig: {
136
- type: null;
137
- required: true;
138
- default: any;
139
- };
140
- }>>, {
141
- showConfig: any;
142
- }, {}>;
127
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
143
128
  export default _default;
@@ -13,17 +13,12 @@ const _hoisted_2 = { class: "ditari-menu" };
13
13
  const _hoisted_3 = { class: "ditari-user-menu" };
14
14
  var _sfc_main = /* @__PURE__ */ vue.defineComponent({
15
15
  __name: "FuckMain",
16
- props: {
17
- "showConfig": { type: null, required: true, default: { backBtn: "LeftOutlined" } }
18
- },
19
16
  setup(__props) {
20
- const props = __props;
21
17
  const store$1 = store.useKeepAliveStore();
22
18
  const keepAliveNames = vue.computed(() => store$1.get);
23
19
  const settingsStore = store.useSettingsStore();
24
20
  const { switchCollapsed } = settingsStore;
25
21
  const collapsedStatus = vue.computed(() => settingsStore.getCollapsed);
26
- vue.provide("showConfig", props.showConfig);
27
22
  return (_ctx, _cache) => {
28
23
  const _component_a_layout_sider = vue.resolveComponent("a-layout-sider");
29
24
  const _component_router_view = vue.resolveComponent("router-view");
@@ -80,26 +75,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
80
75
  vue.createVNode(NavTabs.default),
81
76
  vue.createElementVNode("div", _hoisted_3, [
82
77
  vue.renderSlot(_ctx.$slots, "operation")
83
- ]),
84
- vue.createCommentVNode(' <div class="ditari-layout-header">'),
85
- vue.createCommentVNode(' <div class="ditari-layout-header-left">'),
86
- vue.createCommentVNode(' <div class="ditari-side-collapsed" @click="switchCollapsed">'),
87
- vue.createCommentVNode(" <menu-unfold-outlined"),
88
- vue.createCommentVNode(' v-if="collapsedStatus"'),
89
- vue.createCommentVNode(' class="trigger"'),
90
- vue.createCommentVNode(' style="font-size: 16px; font-weight: bold; cursor: pointer"'),
91
- vue.createCommentVNode(" />"),
92
- vue.createCommentVNode(" <menu-fold-outlined"),
93
- vue.createCommentVNode(" v-else"),
94
- vue.createCommentVNode(' style="font-size: 16px; font-weight: bold; cursor: pointer"'),
95
- vue.createCommentVNode(" />"),
96
- vue.createCommentVNode(" </div>"),
97
- vue.createCommentVNode(" "),
98
- vue.createCommentVNode(" </div>"),
99
- vue.createCommentVNode(' <div class="ditari-user-menu">'),
100
- vue.createCommentVNode(' <slot name="operation"></slot>'),
101
- vue.createCommentVNode(" </div>"),
102
- vue.createCommentVNode(" </div>")
78
+ ])
103
79
  ],
104
80
  4
105
81
  /* STYLE */
@@ -1 +1 @@
1
- {"version":3,"file":"FuckMain.vue2.cjs","sources":["../../../src/layout/FuckMain.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * FUCK MAIN 入口文件\n */\nimport { computed, provide } from \"vue\";\nimport { MenuFoldOutlined, MenuUnfoldOutlined } from \"@ant-design/icons-vue\";\nimport { useKeepAliveStore, useSettingsStore } from \"@ditari/store\";\n\n//标签页组件\nimport DNavTabs from \"./NavTabs.vue\";\n// 菜单组件\nimport Menu from \"../menu/Menu\";\n\nconst props = defineProps({\n \"showConfig\": { type: null, required: true, default: { backBtn: \"LeftOutlined\" } as any }\n});\n\n// 缓存store\nconst store = useKeepAliveStore();\n// 缓存的names\nconst keepAliveNames = computed(() => store.get);\n// 设置store\nconst settingsStore = useSettingsStore();\nconst { switchCollapsed } = settingsStore;\nconst collapsedStatus = computed(() => settingsStore.getCollapsed);\n\n// 注入show组件的配置文件\nprovide(\"showConfig\", props.showConfig);\n</script>\n<template>\n <a-layout class=\"ditari-layout\">\n <a-layout-sider\n v-model:collapsed=\"collapsedStatus\"\n :trigger=\"null\"\n collapsible\n class=\"ditari-layout-sider\"\n >\n <div class=\"ditari-logo\">\n <slot name=\"logo\"></slot>\n </div>\n <div class=\"ditari-menu\">\n <Menu />\n </div>\n </a-layout-sider>\n <a-layout>\n <div\n class=\"ditari-fuck-top-layout\"\n :style=\"{ left: collapsedStatus ? '80px' : '200px' }\"\n >\n <div class=\"ditari-side-collapsed\" @click=\"switchCollapsed\">\n <menu-unfold-outlined\n v-if=\"collapsedStatus\"\n class=\"trigger\"\n style=\"font-size: 16px; font-weight: bold; cursor: pointer\"\n />\n <menu-fold-outlined\n v-else\n style=\"font-size: 16px; font-weight: bold; cursor: pointer\"\n />\n </div>\n <d-nav-tabs />\n <div class=\"ditari-user-menu\">\n <slot name=\"operation\"></slot>\n </div>\n <!-- <div class=\"ditari-layout-header\">-->\n <!-- <div class=\"ditari-layout-header-left\">-->\n <!-- <div class=\"ditari-side-collapsed\" @click=\"switchCollapsed\">-->\n <!-- <menu-unfold-outlined-->\n <!-- v-if=\"collapsedStatus\"-->\n <!-- class=\"trigger\"-->\n <!-- style=\"font-size: 16px; font-weight: bold; cursor: pointer\"-->\n <!-- />-->\n <!-- <menu-fold-outlined-->\n <!-- v-else-->\n <!-- style=\"font-size: 16px; font-weight: bold; cursor: pointer\"-->\n <!-- />-->\n <!-- </div>-->\n <!-- -->\n <!-- </div>-->\n <!-- <div class=\"ditari-user-menu\">-->\n <!-- <slot name=\"operation\"></slot>-->\n <!-- </div>-->\n <!-- </div>-->\n </div>\n <a-layout-content\n style=\"margin-top: 42px\"\n class=\"ditari-layout-content\"\n :style=\"{ marginLeft: collapsedStatus ? '80px' : '200px' }\"\n >\n <router-view v-slot=\"{ Component }\">\n <transition name=\"main\" mode=\"out-in\" appear>\n <keep-alive ref=\"keepAliveRef\" :include=\"keepAliveNames\">\n <component :is=\"Component\" :key=\"$route.path\" />\n </keep-alive>\n </transition>\n </router-view>\n <slot name=\"micro\"></slot>\n </a-layout-content>\n </a-layout>\n </a-layout>\n <a-back-top class=\"ditari-ant-back-top\" :visibility-height=\"50\"></a-back-top>\n</template>\n"],"names":["store","useKeepAliveStore","computed","useSettingsStore","provide"],"mappings":";;;;;;;;;;;;;;;;;;;;AAkBA,IAAA,MAAMA,UAAQC,uBAAkB,EAAA,CAAA;AAEhC,IAAA,MAAM,cAAiB,GAAAC,YAAA,CAAS,MAAMF,OAAA,CAAM,GAAG,CAAA,CAAA;AAE/C,IAAA,MAAM,gBAAgBG,sBAAiB,EAAA,CAAA;AACvC,IAAM,MAAA,EAAE,iBAAoB,GAAA,aAAA,CAAA;AAC5B,IAAA,MAAM,eAAkB,GAAAD,YAAA,CAAS,MAAM,aAAA,CAAc,YAAY,CAAA,CAAA;AAGjE,IAAQE,WAAA,CAAA,YAAA,EAAc,MAAM,UAAU,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"FuckMain.vue2.cjs","sources":["../../../src/layout/FuckMain.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * FUCK MAIN 入口文件\n */\nimport { computed } from \"vue\";\nimport { MenuFoldOutlined, MenuUnfoldOutlined } from \"@ant-design/icons-vue\";\nimport { useKeepAliveStore, useSettingsStore } from \"@ditari/store\";\n\n//标签页组件\nimport DNavTabs from \"./NavTabs.vue\";\n// 菜单组件\nimport Menu from \"../menu/Menu\";\n\n// 缓存store\nconst store = useKeepAliveStore();\n// 缓存的names\nconst keepAliveNames = computed(() => store.get);\n// 设置store\nconst settingsStore = useSettingsStore();\nconst { switchCollapsed } = settingsStore;\nconst collapsedStatus = computed(() => settingsStore.getCollapsed);\n</script>\n<template>\n <a-layout class=\"ditari-layout\">\n <a-layout-sider\n v-model:collapsed=\"collapsedStatus\"\n :trigger=\"null\"\n collapsible\n class=\"ditari-layout-sider\"\n >\n <div class=\"ditari-logo\">\n <slot name=\"logo\"></slot>\n </div>\n <div class=\"ditari-menu\">\n <Menu />\n </div>\n </a-layout-sider>\n <a-layout>\n <div\n class=\"ditari-fuck-top-layout\"\n :style=\"{ left: collapsedStatus ? '80px' : '200px' }\"\n >\n <div class=\"ditari-side-collapsed\" @click=\"switchCollapsed\">\n <menu-unfold-outlined\n v-if=\"collapsedStatus\"\n class=\"trigger\"\n style=\"font-size: 16px; font-weight: bold; cursor: pointer\"\n />\n <menu-fold-outlined\n v-else\n style=\"font-size: 16px; font-weight: bold; cursor: pointer\"\n />\n </div>\n <d-nav-tabs />\n <div class=\"ditari-user-menu\">\n <slot name=\"operation\"></slot>\n </div>\n </div>\n <a-layout-content\n style=\"margin-top: 42px\"\n class=\"ditari-layout-content\"\n :style=\"{ marginLeft: collapsedStatus ? '80px' : '200px' }\"\n >\n <router-view v-slot=\"{ Component }\">\n <transition name=\"main\" mode=\"out-in\" appear>\n <keep-alive ref=\"keepAliveRef\" :include=\"keepAliveNames\">\n <component :is=\"Component\" :key=\"$route.path\" />\n </keep-alive>\n </transition>\n </router-view>\n <slot name=\"micro\"></slot>\n </a-layout-content>\n </a-layout>\n </a-layout>\n <a-back-top class=\"ditari-ant-back-top\" :visibility-height=\"50\"></a-back-top>\n</template>\n"],"names":["store","useKeepAliveStore","computed","useSettingsStore"],"mappings":";;;;;;;;;;;;;;;;AAcA,IAAA,MAAMA,UAAQC,uBAAkB,EAAA,CAAA;AAEhC,IAAA,MAAM,cAAiB,GAAAC,YAAA,CAAS,MAAMF,OAAA,CAAM,GAAG,CAAA,CAAA;AAE/C,IAAA,MAAM,gBAAgBG,sBAAiB,EAAA,CAAA;AACvC,IAAM,MAAA,EAAE,iBAAoB,GAAA,aAAA,CAAA;AAC5B,IAAA,MAAM,eAAkB,GAAAD,YAAA,CAAS,MAAM,aAAA,CAAc,YAAY,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -82,6 +82,7 @@ declare const _default: import("vue").DefineComponent<{
82
82
  gridMatching(): any;
83
83
  }>;
84
84
  showConfig: any;
85
+ collapsedStatus: import("vue").ComputedRef<boolean>;
85
86
  btnRender: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
86
87
  [key: string]: any;
87
88
  }>;
@@ -10,10 +10,6 @@ var store = require('@ditari/store');
10
10
  var pinia = require('pinia');
11
11
 
12
12
  const _hoisted_1 = { class: "ditari-show-layout" };
13
- const _hoisted_2 = {
14
- key: 0,
15
- class: "ditari-show-footer"
16
- };
17
13
  const delayTime = 200;
18
14
  var _sfc_main = /* @__PURE__ */ vue.defineComponent({
19
15
  __name: "Show",
@@ -29,6 +25,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
29
25
  const navTabStore = store.useNavTabsStore();
30
26
  const settingsStore = store.useSettingsStore();
31
27
  const showConfig = vue.inject("showConfig");
28
+ const collapsedStatus = vue.computed(() => settingsStore.getCollapsed);
32
29
  const btnRender = () => {
33
30
  if (!showConfig) {
34
31
  return vue.h(iconsVue.LeftOutlined);
@@ -106,9 +103,19 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
106
103
  }, [
107
104
  vue.renderSlot(_ctx.$slots, "default")
108
105
  ]),
109
- _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, [
110
- vue.renderSlot(_ctx.$slots, "footer")
111
- ])) : vue.createCommentVNode("v-if", true)
106
+ _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock(
107
+ "div",
108
+ {
109
+ key: 0,
110
+ class: "ditari-show-footer",
111
+ style: vue.normalizeStyle({ left: collapsedStatus.value ? "80px" : "200px" })
112
+ },
113
+ [
114
+ vue.renderSlot(_ctx.$slots, "footer")
115
+ ],
116
+ 4
117
+ /* STYLE */
118
+ )) : vue.createCommentVNode("v-if", true)
112
119
  ]),
113
120
  _: 3
114
121
  /* FORWARDED */
@@ -1 +1 @@
1
- {"version":3,"file":"Show.vue2.cjs","sources":["../../../src/layout/Show.vue"],"sourcesContent":["<script lang=\"ts\">\nconst delayTime = 200\n</script>\n<script setup lang=\"ts\">\n/**\n * 详情/新增/编辑组件\n */\nimport { computed, inject, useSlots, watch, h, resolveComponent } from \"vue\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { useScrollLock, useWindowScroll } from \"@vueuse/core\";\nimport { LeftOutlined } from \"@ant-design/icons-vue\";\nimport { useNavTabsStore, useSettingsStore } from \"@ditari/store\";\n\nimport { storeToRefs } from \"pinia\";\n\nconst props = defineProps({\n \"close\": { type: Boolean, required: false, default: false },\n \"loading\": { type: Boolean, required: false, default: false }\n});\n\nconst router = useRouter();\nconst route = useRoute();\nconst slots = useSlots();\n\nconst navTabStore = useNavTabsStore();\nconst settingsStore = useSettingsStore();\n\nconst showConfig = inject(\"showConfig\") as any;\n\nconst btnRender = () => {\n if (!showConfig) {\n return h(LeftOutlined);\n } else {\n return h(resolveComponent(showConfig.backBtn));\n }\n};\n\nconst { refresh } = storeToRefs(settingsStore);\n\nconst showLoading = computed(() => props.loading);\n\nconst contentStyle = {\n padding: `10px 10px ${slots.footer ? \"70px\" : \"10px\"} 10px`\n};\n\n/**\n * 点击返回\n */\nconst onBack = () => {\n if (props.close) {\n // 返回关闭标签\n navTabStore.deleteTabs(route.path);\n router.go(-1);\n } else {\n // 不关闭标签\n router.go(-1);\n }\n};\n\n/**\n * 对外暴露方法 调用后关闭标签 并且出发List组件刷新动作\n */\nconst onRefresh = () => {\n refresh.value = true;\n navTabStore.deleteTabs(route.fullPath);\n router.go(-1);\n};\n\n/**\n * 监听屏幕滚动,滚动大于0的时候给a-page-header组件添加阴影\n */\nconst { y } = useWindowScroll();\n// 锁定屏幕\nconst isLocked = useScrollLock(document.body);\n\nwatch(\n () => props.loading,\n (val) => {\n isLocked.value = val;\n }\n);\n\n\ndefineExpose({\n closePage: onRefresh\n});\n</script>\n<template>\n <div class=\"ditari-show-layout\">\n <a-spin\n tip=\"正在处理...\"\n :spinning=\"showLoading\"\n :delay=\"delayTime\"\n size=\"large\"\n >\n <a-page-header\n class=\"ditari-page-header\"\n :class=\"{ active: y > 0 }\"\n :ghost=\"false\"\n @back=\"onBack\"\n >\n <template #backIcon>\n <btn-render />\n </template>\n <template #title>{{ $route.meta.title }} </template>\n <template #subTitle>\n <slot name=\"subTitle\"></slot>\n </template>\n <template #extra>\n <slot name=\"extra\"></slot>\n </template>\n </a-page-header>\n <div class=\"ditari-show-content\" :style=\"contentStyle\">\n <slot></slot>\n </div>\n <div v-if=\"$slots.footer\" class=\"ditari-show-footer\">\n <slot name=\"footer\"></slot>\n </div>\n </a-spin>\n </div>\n</template>\n<style lang=\"scss\"></style>\n"],"names":["useRouter","useRoute","useSlots","useNavTabsStore","useSettingsStore","inject","h","LeftOutlined","resolveComponent","storeToRefs","computed","useWindowScroll","useScrollLock","watch"],"mappings":";;;;;;;;;;;;;;;;AACA,MAAM,SAAY,GAAA,GAAA,CAAA;;;;;;;;;AAmBlB,IAAA,MAAM,SAASA,mBAAU,EAAA,CAAA;AACzB,IAAA,MAAM,QAAQC,kBAAS,EAAA,CAAA;AACvB,IAAA,MAAM,QAAQC,YAAS,EAAA,CAAA;AAEvB,IAAA,MAAM,cAAcC,qBAAgB,EAAA,CAAA;AACpC,IAAA,MAAM,gBAAgBC,sBAAiB,EAAA,CAAA;AAEvC,IAAM,MAAA,UAAA,GAAaC,WAAO,YAAY,CAAA,CAAA;AAEtC,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,IAAI,CAAC,UAAY,EAAA;AACf,QAAA,OAAOC,MAAEC,qBAAY,CAAA,CAAA;AAAA,OAChB,MAAA;AACL,QAAA,OAAOD,KAAE,CAAAE,oBAAA,CAAiB,UAAW,CAAA,OAAO,CAAC,CAAA,CAAA;AAAA,OAC/C;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,EAAE,OAAA,EAAY,GAAAC,iBAAA,CAAY,aAAa,CAAA,CAAA;AAE7C,IAAA,MAAM,WAAc,GAAAC,YAAA,CAAS,MAAM,KAAA,CAAM,OAAO,CAAA,CAAA;AAEhD,IAAA,MAAM,YAAe,GAAA;AAAA,MACnB,OAAS,EAAA,CAAA,UAAA,EAAa,KAAM,CAAA,MAAA,GAAS,SAAS,MAAM,CAAA,KAAA,CAAA;AAAA,KACtD,CAAA;AAKA,IAAA,MAAM,SAAS,MAAM;AACnB,MAAA,IAAI,MAAM,KAAO,EAAA;AAEf,QAAY,WAAA,CAAA,UAAA,CAAW,MAAM,IAAI,CAAA,CAAA;AACjC,QAAA,MAAA,CAAO,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,OACP,MAAA;AAEL,QAAA,MAAA,CAAO,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,OACd;AAAA,KACF,CAAA;AAKA,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA,CAAA;AAChB,MAAY,WAAA,CAAA,UAAA,CAAW,MAAM,QAAQ,CAAA,CAAA;AACrC,MAAA,MAAA,CAAO,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,KACd,CAAA;AAKA,IAAM,MAAA,EAAE,CAAE,EAAA,GAAIC,oBAAgB,EAAA,CAAA;AAE9B,IAAM,MAAA,QAAA,GAAWC,kBAAc,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAE5C,IAAAC,SAAA;AAAA,MACE,MAAM,KAAM,CAAA,OAAA;AAAA,MACZ,CAAC,GAAQ,KAAA;AACP,QAAA,QAAA,CAAS,KAAQ,GAAA,GAAA,CAAA;AAAA,OACnB;AAAA,KACF,CAAA;AAGA,IAAa,QAAA,CAAA;AAAA,MACX,SAAW,EAAA,SAAA;AAAA,KACZ,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Show.vue2.cjs","sources":["../../../src/layout/Show.vue"],"sourcesContent":["<script lang=\"ts\">\nconst delayTime = 200\n</script>\n<script setup lang=\"ts\">\n/**\n * 详情/新增/编辑组件\n */\nimport { computed, inject, useSlots, watch, h, resolveComponent } from \"vue\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { useScrollLock, useWindowScroll } from \"@vueuse/core\";\nimport { LeftOutlined } from \"@ant-design/icons-vue\";\nimport { useNavTabsStore, useSettingsStore } from \"@ditari/store\";\n\nimport { storeToRefs } from \"pinia\";\n\nconst props = defineProps({\n \"close\": { type: Boolean, required: false, default: false },\n \"loading\": { type: Boolean, required: false, default: false }\n});\n\nconst router = useRouter();\nconst route = useRoute();\nconst slots = useSlots();\n\nconst navTabStore = useNavTabsStore();\nconst settingsStore = useSettingsStore();\n\nconst showConfig = inject(\"showConfig\") as any;\nconst collapsedStatus = computed(() => settingsStore.getCollapsed);\nconst btnRender = () => {\n if (!showConfig) {\n return h(LeftOutlined);\n } else {\n return h(resolveComponent(showConfig.backBtn));\n }\n};\n\nconst { refresh } = storeToRefs(settingsStore);\n\nconst showLoading = computed(() => props.loading);\n\nconst contentStyle = {\n padding: `10px 10px ${slots.footer ? \"70px\" : \"10px\"} 10px`\n};\n\n/**\n * 点击返回\n */\nconst onBack = () => {\n if (props.close) {\n // 返回关闭标签\n navTabStore.deleteTabs(route.path);\n router.go(-1);\n } else {\n // 不关闭标签\n router.go(-1);\n }\n};\n\n/**\n * 对外暴露方法 调用后关闭标签 并且出发List组件刷新动作\n */\nconst onRefresh = () => {\n refresh.value = true;\n navTabStore.deleteTabs(route.fullPath);\n router.go(-1);\n};\n\n/**\n * 监听屏幕滚动,滚动大于0的时候给a-page-header组件添加阴影\n */\nconst { y } = useWindowScroll();\n// 锁定屏幕\nconst isLocked = useScrollLock(document.body);\n\nwatch(\n () => props.loading,\n (val) => {\n isLocked.value = val;\n }\n);\n\n\ndefineExpose({\n closePage: onRefresh\n});\n</script>\n<template>\n <div class=\"ditari-show-layout\">\n <a-spin\n tip=\"正在处理...\"\n :spinning=\"showLoading\"\n :delay=\"delayTime\"\n size=\"large\"\n >\n <a-page-header\n class=\"ditari-page-header\"\n :class=\"{ active: y > 0 }\"\n :ghost=\"false\"\n @back=\"onBack\"\n >\n <template #backIcon>\n <btn-render />\n </template>\n <template #title>{{ $route.meta.title }} </template>\n <template #subTitle>\n <slot name=\"subTitle\"></slot>\n </template>\n <template #extra>\n <slot name=\"extra\"></slot>\n </template>\n </a-page-header>\n <div class=\"ditari-show-content\" :style=\"contentStyle\">\n <slot></slot>\n </div>\n <div\n v-if=\"$slots.footer\"\n class=\"ditari-show-footer\"\n :style=\"{ left: collapsedStatus ? '80px' : '200px' }\"\n >\n <slot name=\"footer\"></slot>\n </div>\n </a-spin>\n </div>\n</template>\n<style lang=\"scss\"></style>\n"],"names":["useRouter","useRoute","useSlots","useNavTabsStore","useSettingsStore","inject","computed","h","LeftOutlined","resolveComponent","storeToRefs","useWindowScroll","useScrollLock","watch"],"mappings":";;;;;;;;;;;;AACA,MAAM,SAAY,GAAA,GAAA,CAAA;;;;;;;;;AAmBlB,IAAA,MAAM,SAASA,mBAAU,EAAA,CAAA;AACzB,IAAA,MAAM,QAAQC,kBAAS,EAAA,CAAA;AACvB,IAAA,MAAM,QAAQC,YAAS,EAAA,CAAA;AAEvB,IAAA,MAAM,cAAcC,qBAAgB,EAAA,CAAA;AACpC,IAAA,MAAM,gBAAgBC,sBAAiB,EAAA,CAAA;AAEvC,IAAM,MAAA,UAAA,GAAaC,WAAO,YAAY,CAAA,CAAA;AACtC,IAAA,MAAM,eAAkB,GAAAC,YAAA,CAAS,MAAM,aAAA,CAAc,YAAY,CAAA,CAAA;AACjE,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,IAAI,CAAC,UAAY,EAAA;AACf,QAAA,OAAOC,MAAEC,qBAAY,CAAA,CAAA;AAAA,OAChB,MAAA;AACL,QAAA,OAAOD,KAAE,CAAAE,oBAAA,CAAiB,UAAW,CAAA,OAAO,CAAC,CAAA,CAAA;AAAA,OAC/C;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,EAAE,OAAA,EAAY,GAAAC,iBAAA,CAAY,aAAa,CAAA,CAAA;AAE7C,IAAA,MAAM,WAAc,GAAAJ,YAAA,CAAS,MAAM,KAAA,CAAM,OAAO,CAAA,CAAA;AAEhD,IAAA,MAAM,YAAe,GAAA;AAAA,MACnB,OAAS,EAAA,CAAA,UAAA,EAAa,KAAM,CAAA,MAAA,GAAS,SAAS,MAAM,CAAA,KAAA,CAAA;AAAA,KACtD,CAAA;AAKA,IAAA,MAAM,SAAS,MAAM;AACnB,MAAA,IAAI,MAAM,KAAO,EAAA;AAEf,QAAY,WAAA,CAAA,UAAA,CAAW,MAAM,IAAI,CAAA,CAAA;AACjC,QAAA,MAAA,CAAO,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,OACP,MAAA;AAEL,QAAA,MAAA,CAAO,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,OACd;AAAA,KACF,CAAA;AAKA,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA,CAAA;AAChB,MAAY,WAAA,CAAA,UAAA,CAAW,MAAM,QAAQ,CAAA,CAAA;AACrC,MAAA,MAAA,CAAO,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,KACd,CAAA;AAKA,IAAM,MAAA,EAAE,CAAE,EAAA,GAAIK,oBAAgB,EAAA,CAAA;AAE9B,IAAM,MAAA,QAAA,GAAWC,kBAAc,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAE5C,IAAAC,SAAA;AAAA,MACE,MAAM,KAAM,CAAA,OAAA;AAAA,MACZ,CAAC,GAAQ,KAAA;AACP,QAAA,QAAA,CAAS,KAAQ,GAAA,GAAA,CAAA;AAAA,OACnB;AAAA,KACF,CAAA;AAGA,IAAa,QAAA,CAAA;AAAA,MACX,SAAW,EAAA,SAAA;AAAA,KACZ,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -261,10 +261,25 @@ const DXTable = /* @__PURE__ */ vue.defineComponent({
261
261
  }
262
262
  emit("update:keys", selectedRowKeys.value);
263
263
  };
264
+ function onClickSelectedBg(event) {
265
+ const {
266
+ clickSelectedClassName
267
+ } = props.config;
268
+ if (!clickSelectedClassName)
269
+ return;
270
+ const curEl = event.target;
271
+ const parentElement = curEl.parentNode;
272
+ if (!parentElement.classList.contains(clickSelectedClassName)) {
273
+ parentElement.classList.add(clickSelectedClassName);
274
+ } else {
275
+ parentElement.classList.remove(clickSelectedClassName);
276
+ }
277
+ }
264
278
  return {
265
- onClick: () => {
279
+ onClick: (event) => {
266
280
  clearTimeout(clickTimeout);
267
281
  clickTimeout = setTimeout(() => {
282
+ onClickSelectedBg(event);
268
283
  onClick();
269
284
  click ? click(record, index) : void 0;
270
285
  }, 200);
@@ -274,15 +289,6 @@ const DXTable = /* @__PURE__ */ vue.defineComponent({
274
289
  clearTimeout(clickTimeout);
275
290
  dbClick ? dbClick(record, index) : void 0;
276
291
  }
277
- // onContextmenu: (event) => {
278
- // //TODO
279
- // },
280
- // onMouseenter: (event) => {
281
- // //TODO
282
- // }, // 鼠标移入行
283
- // onMouseleave: (event) => {
284
- // //TODO
285
- // }
286
292
  };
287
293
  };
288
294
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Table.cjs","sources":["../../../src/table/Table.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n nextTick,\n PropType,\n reactive,\n ref,\n watch,\n watchEffect\n} from \"vue\";\nimport { Pagination, Space, Table } from \"ant-design-vue\";\nimport { useEleHeight } from \"../_utils/html\";\nimport { prefixName } from \"../theme\";\n\nimport type { TableProps, Key } from \"./interface/table\";\n/**\n * 表格组件 基于TSX封装ATable\n */\nconst tableProps = () => {\n return {\n data: {\n type: Object as PropType<TableProps[\"data\"]>,\n required: true\n },\n height: {\n type: Number as PropType<TableProps[\"height\"]>,\n default: 300\n },\n keys: Array as PropType<TableProps[\"keys\"]>,\n rowKey: {\n type: String as PropType<TableProps[\"rowKey\"]>,\n default: \"id\"\n },\n loading: {\n type: Boolean as PropType<TableProps[\"loading\"]>,\n default: false\n },\n pagination: {\n type: Object as PropType<TableProps[\"pagination\"]>,\n default: () => ({})\n },\n config: {\n type: Object as PropType<TableProps[\"config\"]>,\n default: () => ({})\n },\n expandedRowKeys: {\n type: Object as PropType<TableProps[\"expandedRowKeys\"]>,\n default: () => []\n },\n defaultExpandAllRows: {\n type: Boolean as PropType<TableProps[\"defaultExpandAllRows\"]>,\n default: () => true\n }\n };\n};\n\n// 使用有问题\n// const tableEmits = defineEmits<{\n// \"update:keys\": (keys: []) => void;\n// }>();\n// interface MyEvents {\n// [key: string]: (...args: any[]) => void;\n// \"update:keys\": (keys: []) => void;\n// }\n\n//分页class名称\nconst basePageClassName = `${prefixName}-pagination`;\n\n/**\n * 表格组件定义\n */\nconst DXTable = defineComponent({\n name: \"DTable\",\n inheritAttrs: false,\n props: tableProps(),\n // emits: { \"update:keys\": (keys: []) => void }\n // TODO 需要做调整\n emits: [\"update:keys\"],\n setup: function (props, { emit, slots, attrs }) {\n //分页默认配置\n const paginationConfig = reactive({\n defaultPageSize: 20,\n hideOnSinglePage: false,\n pageSizeOptions: [\"10\", \"20\", \"30\", \"40\"],\n responsive: true,\n showQuickJumper: true,\n showLessItems: true,\n showTotal: (total: number) => {\n return `总共 ${total} 条`;\n }\n });\n\n // 保存选中的唯一id\n const selectedRowKeys = ref<any>(props.keys || []);\n // 数据源\n const dataSource = computed(() => props.data);\n // 表格列\n const columns = computed(() => props.config?.columns ?? []);\n const paginationState = computed(\n () => props.config?.pagination ?? ({} as any)\n );\n // 展开行\n // eslint-disable-next-line vue/no-setup-props-destructure\n const expandedKeys = ref<any>(props.expandedRowKeys);\n // 分页条数配置\n paginationConfig.pageSizeOptions =\n props.config?.pageOption?.sizeOptions ?? paginationConfig.pageSizeOptions;\n // 默认条数\n paginationConfig.defaultPageSize =\n props.config?.pageOption?.defaultSize ?? paginationConfig.defaultPageSize;\n\n watchEffect(() => {\n const { expandedRowKeys } = props;\n expandedKeys.value = expandedRowKeys;\n });\n\n // 初始化表格\n const {\n tableRef,\n tableRootRef,\n tableHeight,\n onPageChange,\n onRowClassName\n } = useTable();\n\n function useTable() {\n const {\n rowClassName,\n keepSelected,\n onPageChange: onChange\n } = props.config;\n\n const selection = props.config.selection ?? \"N\";\n const isInit = ref(false);\n // 表格根div\n const tableRootRef = ref<HTMLElement>();\n // 表格组件对象\n const tableRef = ref<any>(null);\n // 表格计算出来的高度\n const tableHeight = ref<number>();\n // 表格body对象\n const antTableBodyRef = ref<any>(null);\n // 计算高度\n const playHeight = (height: number) => {\n try {\n const tableEl = tableRef?.value?.$el;\n const headerHeight = useEleHeight(\n tableEl.getElementsByClassName(\"ant-table-header\")[0]\n );\n isInit.value = true;\n // 获取分页组件高度\n let paginationHeight = 0;\n if (props.config.pagination) {\n const paginationEl =\n tableRootRef.value?.getElementsByClassName(basePageClassName)[0];\n paginationHeight = useEleHeight(paginationEl as any) ?? 0;\n }\n tableHeight.value = height - (headerHeight + paginationHeight);\n\n // 设置body高度\n tableEl.getElementsByClassName(\"ant-table-body\")[0].style.height =\n tableHeight.value + \"px\";\n // 表格body对象 用于切换页码后滚动条置顶\n antTableBodyRef.value =\n tableEl.getElementsByClassName(\"ant-table-body\")[0];\n } catch (e) {\n console.warn(e);\n }\n };\n //监听传入的height的变化 默认组件创建的时候会执行一次\n watchEffect(() => {\n if (props.height !== 0) {\n nextTick(() => {\n if (isInit.value) {\n playHeight(props.height);\n } else {\n // 必须在组件挂载成功后 执行计算高度 否则无法正确获取元素的高度\n setTimeout(() => {\n playHeight(props.height);\n // 如果表格头有很多列的情况下,获取到的头部高度不对,需要延迟执行获取高度方法\n }, 100);\n }\n });\n }\n });\n // 监听分页组件\n const onPageChange = (page: number, size: number) => {\n onChange ? onChange({ page: page === 0 ? 1 : page, size }) : null;\n // 切换分页的时候,表体滚动到顶部\n antTableBodyRef.value.scrollTop = 0;\n // 如果当前为单选或未开启分页保留数据选中的数据都会被清除\n // 清空历史选中数据\n if (selection === \"S\" || !keepSelected) {\n selectedRowKeys.value = [];\n emit(\"update:keys\", selectedRowKeys.value);\n }\n };\n //自定义样式\n const onRowClassName = (record: any, index: number) => {\n return rowClassName ? rowClassName(record, index) : undefined;\n };\n return {\n tableRef,\n tableRootRef,\n tableHeight,\n onPageChange,\n onRowClassName\n };\n }\n\n //表格选中配置\n const rowSelection = useRowSelection();\n\n function useRowSelection() {\n const {\n rowKey,\n config: { getCheckboxProps }\n } = props;\n\n let localSelection = props.config.selection ?? \"N\";\n //if (selection === \"N\") return undefined;\n\n const onSelect = (record: any, selected: any) => {\n if (localSelection === \"S\") {\n selectedRowKeys.value = [];\n selectedRowKeys.value = selected ? [record[rowKey]] : [];\n } else {\n selectedRowKeys.value = selected\n ? selectedRowKeys.value.concat(record[rowKey])\n : selectedRowKeys.value.filter(\n (key: Key) => key !== record[rowKey]\n );\n }\n emit(\"update:keys\", selectedRowKeys.value);\n };\n\n const onSelectAll = (\n selected: any,\n selectedRows: any,\n changeRows: any\n ) => {\n const _ids = changeRows.map((record: any) => record[rowKey]);\n selectedRowKeys.value = selected\n ? selectedRowKeys.value.concat(_ids)\n : selectedRowKeys.value.filter((key: Key) => !_ids.includes(key));\n\n emit(\"update:keys\", selectedRowKeys.value);\n };\n\n // 监听父组件手动改变keys 重新赋值给 表格选中变量selectedRowKeys\n // 否则父组件 改变keys后当前selectedRowKeys还是原来的值\n watch(\n () => props.keys,\n (val) => {\n selectedRowKeys.value = val;\n }\n );\n\n const rowSelection = ref<any>(undefined);\n\n watchEffect(() => {\n const { selection } = props.config;\n localSelection = selection as any;\n if (localSelection !== \"N\") {\n rowSelection.value = {\n selectedRowKeys,\n onSelect,\n onSelectAll,\n fixed: true,\n columnTitle: localSelection === \"S\" ? \"选择\" : null,\n columnWidth: localSelection === \"S\" ? 60 : 40,\n getCheckboxProps: getCheckboxProps\n };\n } else {\n rowSelection.value = undefined;\n }\n });\n\n // return {\n // selectedRowKeys,\n // onSelect,\n // onSelectAll,\n // fixed: true,\n // columnTitle: localSelection === \"S\" ? \"选择\" : null,\n // columnWidth: localSelection === \"S\" ? 60 : 40,\n // getCheckboxProps: getCheckboxProps\n // };\n return rowSelection;\n }\n\n const customRow = useCustomRow();\n\n //表格行配置\n function useCustomRow() {\n return (record: any, index: any) => {\n // 用于存储 在某个事件内双击两次 则取消单击事件业务\n let clickTimeout: any = undefined;\n const {\n rowKey,\n config: { click, dbClick, selection, getCheckboxProps }\n } = props as any;\n\n // 当前点击行的唯一ID,通过rowKey从record中取值\n const id = record[rowKey];\n\n /**\n * 处理单击事件业务\n * @param record 当前点击行数据\n */\n const onClick = () => {\n // 获取getCheckboxProps方法,如果不等于undefined,则执行方法获取disabled的值\n // 否则checkEnable为false\n const checkEnable =\n getCheckboxProps === undefined\n ? false\n : getCheckboxProps(record).disabled;\n\n if (selection === \"N\" || checkEnable) {\n // 1. 未开启复选框 则不处理数据选中操作\n // 2. 如果当前点击的行 包含在禁用的数据项目里面 则不进行选中操作\n // 3. checkEnable 用来判断复选框属性的值,如果当前的数据满足getCheckboxProps这个\n // 方法返回的disabled为true就不执行\n // 复选框选中的操作\n return;\n }\n const haveState = selectedRowKeys.value.some(\n (key: Key) => key === id\n );\n if (haveState) {\n //如果 当前点击行的ID 已存在 那么直接过滤掉当前的id\n selectedRowKeys.value = selectedRowKeys.value.filter(\n (key: Key) => key !== id\n );\n } else {\n if (selection === \"S\") {\n //单选的时候 清空选中的数据 再赋值新的ID\n selectedRowKeys.value = [];\n selectedRowKeys.value.push(id);\n } else {\n //多选直接追加ID\n selectedRowKeys.value.push(id);\n }\n }\n emit(\"update:keys\", selectedRowKeys.value);\n };\n\n return {\n onClick: () => {\n clearTimeout(clickTimeout);\n clickTimeout = setTimeout(() => {\n // 处理单击事件业务\n onClick();\n // 回传数据 自定义单击后的业务\n click ? click(record, index) : undefined;\n }, 200);\n }, // 点击行\n onDblclick: () => {\n clearTimeout(clickTimeout);\n // 回传数据 自定义单击后的业务\n dbClick ? dbClick(record, index) : undefined;\n }\n // onContextmenu: (event) => {\n // //TODO\n // },\n // onMouseenter: (event) => {\n // //TODO\n // }, // 鼠标移入行\n // onMouseleave: (event) => {\n // //TODO\n // }\n };\n };\n }\n\n const actionStop = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n const expandRowByClick = computed(() => {\n const { selection } = props.config;\n return selection === \"N\";\n });\n const tableSlots: any = {};\n if (slots.expandedRowRender) {\n tableSlots.expandedRowRender = (record: any) => {\n return (\n <>{slots.expandedRowRender && slots.expandedRowRender(record)}</>\n );\n };\n }\n const summary = () => {\n return <>{slots.summary && slots.summary()}</>;\n };\n\n /**\n * 展开行事件\n * @param expanded\n * @param record\n */\n const onExpand = (expanded: any, record: any) => {\n props.config.onExpand && props.config.onExpand({ expanded, record });\n };\n\n return () => (\n <div ref={tableRootRef}>\n <Table\n ref={tableRef}\n row-key={props.rowKey}\n bordered={props.config.bordered}\n {...attrs}\n columns={columns.value}\n dataSource={dataSource.value}\n loading={props.loading}\n size={props.config?.size ?? \"small\"}\n scroll={{\n scrollToFirstRowOnChange: true,\n x: \"100%\",\n y: tableHeight.value + \"px\"\n }}\n v-model:expandedRowKeys={expandedKeys.value}\n expandRowByClick={expandRowByClick.value}\n defaultExpandAllRows={props.defaultExpandAllRows}\n pagination={false}\n customRow={customRow}\n rowSelection={rowSelection.value}\n rowClassName={onRowClassName}\n onExpand={onExpand}\n >\n {{\n bodyCell: ({ column, record, index }: any) => {\n if (column.slot === \"action\") {\n return (\n <div onClick={actionStop} onDblclick={actionStop}>\n <Space>\n {slots.action && slots.action({ record, index })}\n </Space>\n </div>\n );\n }\n },\n ...tableSlots,\n // 总结栏插槽\n summary: summary\n }}\n </Table>\n <Pagination\n v-show={props.config.pagination}\n class={[basePageClassName]}\n v-model:current={paginationState.value.current}\n v-model:pageSize={paginationState.value.pageSize}\n disabled={props.loading}\n show-size-changer\n size={\"default\"}\n hide-on-single-page={paginationConfig.hideOnSinglePage}\n show-quick-jumper={paginationConfig.showQuickJumper}\n default-page-size={paginationConfig.defaultPageSize}\n page-size-options={paginationConfig.pageSizeOptions}\n show-total={paginationConfig.showTotal}\n total={paginationState.value.total}\n onChange={onPageChange}\n />\n </div>\n );\n }\n});\n\nexport default DXTable;\n"],"names":["tableProps","data","type","Object","required","height","Number","default","keys","Array","rowKey","String","loading","Boolean","pagination","config","expandedRowKeys","defaultExpandAllRows","basePageClassName","prefixName","DXTable","defineComponent","name","inheritAttrs","props","emits","setup","emit","slots","attrs","paginationConfig","reactive","defaultPageSize","hideOnSinglePage","pageSizeOptions","responsive","showQuickJumper","showLessItems","showTotal","total","selectedRowKeys","ref","dataSource","computed","columns","paginationState","expandedKeys","pageOption","sizeOptions","defaultSize","watchEffect","value","tableRef","tableRootRef","tableHeight","onPageChange","onRowClassName","useTable","rowClassName","keepSelected","onChange","selection","isInit","antTableBodyRef","playHeight","tableEl","$el","headerHeight","useEleHeight","getElementsByClassName","paginationHeight","paginationEl","style","e","console","warn","nextTick","setTimeout","page","size","scrollTop","record","index","undefined","rowSelection","useRowSelection","getCheckboxProps","localSelection","onSelect","selected","concat","filter","key","onSelectAll","selectedRows","changeRows","_ids","map","includes","watch","val","fixed","columnTitle","columnWidth","customRow","useCustomRow","clickTimeout","click","dbClick","id","onClick","checkEnable","disabled","haveState","some","push","clearTimeout","onDblclick","actionStop","event","stopPropagation","expandRowByClick","tableSlots","expandedRowRender","_createVNode","_Fragment","summary","onExpand","expanded","Table","_mergeProps","bordered","scrollToFirstRowOnChange","x","y","$event","bodyCell","column","slot","Space","action","_withDirectives","Pagination","current","pageSize","_vShow"],"mappings":"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"}
1
+ {"version":3,"file":"Table.cjs","sources":["../../../src/table/Table.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n nextTick,\n PropType,\n reactive,\n ref,\n watch,\n watchEffect\n} from \"vue\";\nimport { Pagination, Space, Table } from \"ant-design-vue\";\nimport { useEleHeight } from \"../_utils/html\";\nimport { prefixName } from \"../theme\";\n\nimport type { TableProps, Key } from \"./interface/table\";\n/**\n * 表格组件 基于TSX封装ATable\n */\nconst tableProps = () => {\n return {\n data: {\n type: Object as PropType<TableProps[\"data\"]>,\n required: true\n },\n height: {\n type: Number as PropType<TableProps[\"height\"]>,\n default: 300\n },\n keys: Array as PropType<TableProps[\"keys\"]>,\n rowKey: {\n type: String as PropType<TableProps[\"rowKey\"]>,\n default: \"id\"\n },\n loading: {\n type: Boolean as PropType<TableProps[\"loading\"]>,\n default: false\n },\n pagination: {\n type: Object as PropType<TableProps[\"pagination\"]>,\n default: () => ({})\n },\n config: {\n type: Object as PropType<TableProps[\"config\"]>,\n default: () => ({})\n },\n expandedRowKeys: {\n type: Object as PropType<TableProps[\"expandedRowKeys\"]>,\n default: () => []\n },\n defaultExpandAllRows: {\n type: Boolean as PropType<TableProps[\"defaultExpandAllRows\"]>,\n default: () => true\n }\n };\n};\n\n// 使用有问题\n// const tableEmits = defineEmits<{\n// \"update:keys\": (keys: []) => void;\n// }>();\n// interface MyEvents {\n// [key: string]: (...args: any[]) => void;\n// \"update:keys\": (keys: []) => void;\n// }\n\n//分页class名称\nconst basePageClassName = `${prefixName}-pagination`;\n\n/**\n * 表格组件定义\n */\nconst DXTable = defineComponent({\n name: \"DTable\",\n inheritAttrs: false,\n props: tableProps(),\n // emits: { \"update:keys\": (keys: []) => void }\n // TODO 需要做调整\n emits: [\"update:keys\"],\n setup: function (props, { emit, slots, attrs }) {\n //分页默认配置\n const paginationConfig = reactive({\n defaultPageSize: 20,\n hideOnSinglePage: false,\n pageSizeOptions: [\"10\", \"20\", \"30\", \"40\"],\n responsive: true,\n showQuickJumper: true,\n showLessItems: true,\n showTotal: (total: number) => {\n return `总共 ${total} 条`;\n }\n });\n\n // 保存选中的唯一id\n const selectedRowKeys = ref<any>(props.keys || []);\n // 数据源\n const dataSource = computed(() => props.data);\n // 表格列\n const columns = computed(() => props.config?.columns ?? []);\n const paginationState = computed(\n () => props.config?.pagination ?? ({} as any)\n );\n // 展开行\n // eslint-disable-next-line vue/no-setup-props-destructure\n const expandedKeys = ref<any>(props.expandedRowKeys);\n // 分页条数配置\n paginationConfig.pageSizeOptions =\n props.config?.pageOption?.sizeOptions ?? paginationConfig.pageSizeOptions;\n // 默认条数\n paginationConfig.defaultPageSize =\n props.config?.pageOption?.defaultSize ?? paginationConfig.defaultPageSize;\n\n watchEffect(() => {\n const { expandedRowKeys } = props;\n expandedKeys.value = expandedRowKeys;\n });\n\n // 初始化表格\n const {\n tableRef,\n tableRootRef,\n tableHeight,\n onPageChange,\n onRowClassName\n } = useTable();\n\n function useTable() {\n const {\n rowClassName,\n keepSelected,\n onPageChange: onChange\n } = props.config;\n\n const selection = props.config.selection ?? \"N\";\n const isInit = ref(false);\n // 表格根div\n const tableRootRef = ref<HTMLElement>();\n // 表格组件对象\n const tableRef = ref<any>(null);\n // 表格计算出来的高度\n const tableHeight = ref<number>();\n // 表格body对象\n const antTableBodyRef = ref<any>(null);\n // 计算高度\n const playHeight = (height: number) => {\n try {\n const tableEl = tableRef?.value?.$el;\n const headerHeight = useEleHeight(\n tableEl.getElementsByClassName(\"ant-table-header\")[0]\n );\n isInit.value = true;\n // 获取分页组件高度\n let paginationHeight = 0;\n if (props.config.pagination) {\n const paginationEl =\n tableRootRef.value?.getElementsByClassName(basePageClassName)[0];\n paginationHeight = useEleHeight(paginationEl as any) ?? 0;\n }\n tableHeight.value = height - (headerHeight + paginationHeight);\n\n // 设置body高度\n tableEl.getElementsByClassName(\"ant-table-body\")[0].style.height =\n tableHeight.value + \"px\";\n // 表格body对象 用于切换页码后滚动条置顶\n antTableBodyRef.value =\n tableEl.getElementsByClassName(\"ant-table-body\")[0];\n } catch (e) {\n console.warn(e);\n }\n };\n //监听传入的height的变化 默认组件创建的时候会执行一次\n watchEffect(() => {\n if (props.height !== 0) {\n nextTick(() => {\n if (isInit.value) {\n playHeight(props.height);\n } else {\n // 必须在组件挂载成功后 执行计算高度 否则无法正确获取元素的高度\n setTimeout(() => {\n playHeight(props.height);\n // 如果表格头有很多列的情况下,获取到的头部高度不对,需要延迟执行获取高度方法\n }, 100);\n }\n });\n }\n });\n // 监听分页组件\n const onPageChange = (page: number, size: number) => {\n onChange ? onChange({ page: page === 0 ? 1 : page, size }) : null;\n // 切换分页的时候,表体滚动到顶部\n antTableBodyRef.value.scrollTop = 0;\n // 如果当前为单选或未开启分页保留数据选中的数据都会被清除\n // 清空历史选中数据\n if (selection === \"S\" || !keepSelected) {\n selectedRowKeys.value = [];\n emit(\"update:keys\", selectedRowKeys.value);\n }\n };\n //自定义样式\n const onRowClassName = (record: any, index: number) => {\n return rowClassName ? rowClassName(record, index) : undefined;\n };\n return {\n tableRef,\n tableRootRef,\n tableHeight,\n onPageChange,\n onRowClassName\n };\n }\n\n //表格选中配置\n const rowSelection = useRowSelection();\n\n function useRowSelection() {\n const {\n rowKey,\n config: { getCheckboxProps }\n } = props;\n\n let localSelection = props.config.selection ?? \"N\";\n //if (selection === \"N\") return undefined;\n\n const onSelect = (record: any, selected: any) => {\n if (localSelection === \"S\") {\n selectedRowKeys.value = [];\n selectedRowKeys.value = selected ? [record[rowKey]] : [];\n } else {\n selectedRowKeys.value = selected\n ? selectedRowKeys.value.concat(record[rowKey])\n : selectedRowKeys.value.filter(\n (key: Key) => key !== record[rowKey]\n );\n }\n emit(\"update:keys\", selectedRowKeys.value);\n };\n\n const onSelectAll = (\n selected: any,\n selectedRows: any,\n changeRows: any\n ) => {\n const _ids = changeRows.map((record: any) => record[rowKey]);\n selectedRowKeys.value = selected\n ? selectedRowKeys.value.concat(_ids)\n : selectedRowKeys.value.filter((key: Key) => !_ids.includes(key));\n\n emit(\"update:keys\", selectedRowKeys.value);\n };\n\n // 监听父组件手动改变keys 重新赋值给 表格选中变量selectedRowKeys\n // 否则父组件 改变keys后当前selectedRowKeys还是原来的值\n watch(\n () => props.keys,\n (val) => {\n selectedRowKeys.value = val;\n }\n );\n\n const rowSelection = ref<any>(undefined);\n\n watchEffect(() => {\n const { selection } = props.config;\n localSelection = selection as any;\n if (localSelection !== \"N\") {\n rowSelection.value = {\n selectedRowKeys,\n onSelect,\n onSelectAll,\n fixed: true,\n columnTitle: localSelection === \"S\" ? \"选择\" : null,\n columnWidth: localSelection === \"S\" ? 60 : 40,\n getCheckboxProps: getCheckboxProps\n };\n } else {\n rowSelection.value = undefined;\n }\n });\n\n // return {\n // selectedRowKeys,\n // onSelect,\n // onSelectAll,\n // fixed: true,\n // columnTitle: localSelection === \"S\" ? \"选择\" : null,\n // columnWidth: localSelection === \"S\" ? 60 : 40,\n // getCheckboxProps: getCheckboxProps\n // };\n return rowSelection;\n }\n\n const customRow = useCustomRow();\n\n //表格行配置\n function useCustomRow() {\n return (record: any, index: any) => {\n // 用于存储 在某个事件内双击两次 则取消单击事件业务\n let clickTimeout: any = undefined;\n const {\n rowKey,\n config: { click, dbClick, selection, getCheckboxProps }\n } = props as any;\n\n // 当前点击行的唯一ID,通过rowKey从record中取值\n const id = record[rowKey];\n\n /**\n * 处理单击事件业务\n * @param record 当前点击行数据\n */\n const onClick = () => {\n // 获取getCheckboxProps方法,如果不等于undefined,则执行方法获取disabled的值\n // 否则checkEnable为false\n const checkEnable =\n getCheckboxProps === undefined\n ? false\n : getCheckboxProps(record).disabled;\n\n if (selection === \"N\" || checkEnable) {\n // 1. 未开启复选框 则不处理数据选中操作\n // 2. 如果当前点击的行 包含在禁用的数据项目里面 则不进行选中操作\n // 3. checkEnable 用来判断复选框属性的值,如果当前的数据满足getCheckboxProps这个\n // 方法返回的disabled为true就不执行\n // 复选框选中的操作\n return;\n }\n const haveState = selectedRowKeys.value.some(\n (key: Key) => key === id\n );\n if (haveState) {\n //如果 当前点击行的ID 已存在 那么直接过滤掉当前的id\n selectedRowKeys.value = selectedRowKeys.value.filter(\n (key: Key) => key !== id\n );\n } else {\n if (selection === \"S\") {\n //单选的时候 清空选中的数据 再赋值新的ID\n selectedRowKeys.value = [];\n selectedRowKeys.value.push(id);\n } else {\n //多选直接追加ID\n selectedRowKeys.value.push(id);\n }\n }\n emit(\"update:keys\", selectedRowKeys.value);\n };\n\n function onClickSelectedBg(event: any) {\n const { clickSelectedClassName } = props.config;\n if (!clickSelectedClassName) return;\n const curEl = event.target;\n // 找到父元素\n const parentElement = curEl.parentNode;\n // 判断父元素是否有某个 class\n if (!parentElement.classList.contains(clickSelectedClassName)) {\n // 如果父元素没有指定的 class,则添加 class\n parentElement.classList.add(clickSelectedClassName);\n } else {\n // 如果父元素已经有指定的 class,则移除 class\n parentElement.classList.remove(clickSelectedClassName);\n }\n }\n\n return {\n onClick: (event: any) => {\n clearTimeout(clickTimeout);\n clickTimeout = setTimeout(() => {\n // 处理背景激活逻辑\n onClickSelectedBg(event);\n // 处理单击事件业务\n onClick();\n // 回传数据 自定义单击后的业务\n click ? click(record, index) : undefined;\n }, 200);\n }, // 点击行\n onDblclick: () => {\n clearTimeout(clickTimeout);\n // 回传数据 自定义单击后的业务\n dbClick ? dbClick(record, index) : undefined;\n }\n };\n };\n }\n\n const actionStop = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n const expandRowByClick = computed(() => {\n const { selection } = props.config;\n return selection === \"N\";\n });\n const tableSlots: any = {};\n if (slots.expandedRowRender) {\n tableSlots.expandedRowRender = (record: any) => {\n return (\n <>{slots.expandedRowRender && slots.expandedRowRender(record)}</>\n );\n };\n }\n const summary = () => {\n return <>{slots.summary && slots.summary()}</>;\n };\n\n /**\n * 展开行事件\n * @param expanded\n * @param record\n */\n const onExpand = (expanded: any, record: any) => {\n props.config.onExpand && props.config.onExpand({ expanded, record });\n };\n\n return () => (\n <div ref={tableRootRef}>\n <Table\n ref={tableRef}\n row-key={props.rowKey}\n bordered={props.config.bordered}\n {...attrs}\n columns={columns.value}\n dataSource={dataSource.value}\n loading={props.loading}\n size={props.config?.size ?? \"small\"}\n scroll={{\n scrollToFirstRowOnChange: true,\n x: \"100%\",\n y: tableHeight.value + \"px\"\n }}\n v-model:expandedRowKeys={expandedKeys.value}\n expandRowByClick={expandRowByClick.value}\n defaultExpandAllRows={props.defaultExpandAllRows}\n pagination={false}\n customRow={customRow}\n rowSelection={rowSelection.value}\n rowClassName={onRowClassName}\n onExpand={onExpand}\n >\n {{\n bodyCell: ({ column, record, index }: any) => {\n if (column.slot === \"action\") {\n return (\n <div onClick={actionStop} onDblclick={actionStop}>\n <Space>\n {slots.action && slots.action({ record, index })}\n </Space>\n </div>\n );\n }\n },\n ...tableSlots,\n // 总结栏插槽\n summary: summary\n }}\n </Table>\n <Pagination\n v-show={props.config.pagination}\n class={[basePageClassName]}\n v-model:current={paginationState.value.current}\n v-model:pageSize={paginationState.value.pageSize}\n disabled={props.loading}\n show-size-changer\n size={\"default\"}\n hide-on-single-page={paginationConfig.hideOnSinglePage}\n show-quick-jumper={paginationConfig.showQuickJumper}\n default-page-size={paginationConfig.defaultPageSize}\n page-size-options={paginationConfig.pageSizeOptions}\n show-total={paginationConfig.showTotal}\n total={paginationState.value.total}\n onChange={onPageChange}\n />\n </div>\n );\n }\n});\n\nexport default DXTable;\n"],"names":["tableProps","data","type","Object","required","height","Number","default","keys","Array","rowKey","String","loading","Boolean","pagination","config","expandedRowKeys","defaultExpandAllRows","basePageClassName","prefixName","DXTable","defineComponent","name","inheritAttrs","props","emits","setup","emit","slots","attrs","paginationConfig","reactive","defaultPageSize","hideOnSinglePage","pageSizeOptions","responsive","showQuickJumper","showLessItems","showTotal","total","selectedRowKeys","ref","dataSource","computed","columns","paginationState","expandedKeys","pageOption","sizeOptions","defaultSize","watchEffect","value","tableRef","tableRootRef","tableHeight","onPageChange","onRowClassName","useTable","rowClassName","keepSelected","onChange","selection","isInit","antTableBodyRef","playHeight","tableEl","$el","headerHeight","useEleHeight","getElementsByClassName","paginationHeight","paginationEl","style","e","console","warn","nextTick","setTimeout","page","size","scrollTop","record","index","undefined","rowSelection","useRowSelection","getCheckboxProps","localSelection","onSelect","selected","concat","filter","key","onSelectAll","selectedRows","changeRows","_ids","map","includes","watch","val","fixed","columnTitle","columnWidth","customRow","useCustomRow","clickTimeout","click","dbClick","id","onClick","checkEnable","disabled","haveState","some","push","onClickSelectedBg","event","clickSelectedClassName","curEl","target","parentElement","parentNode","classList","contains","add","remove","clearTimeout","onDblclick","actionStop","stopPropagation","expandRowByClick","tableSlots","expandedRowRender","_createVNode","_Fragment","summary","onExpand","expanded","Table","_mergeProps","bordered","scrollToFirstRowOnChange","x","y","$event","bodyCell","column","slot","Space","action","_withDirectives","Pagination","current","pageSize","_vShow"],"mappings":"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"}
@@ -17,6 +17,7 @@ export interface Config {
17
17
  click?: (record: unknown) => void;
18
18
  dbClick?: (record: any) => void;
19
19
  getCheckboxProps?: (record: any) => any;
20
+ clickSelectedClassName?: string;
20
21
  pageOption: {
21
22
  sizeOptions: string[];
22
23
  defaultSize: number;
@@ -1,11 +1,4 @@
1
- declare const _default: import("vue").DefineComponent<{
2
- showConfig: {
3
- type: null;
4
- required: true;
5
- default: any;
6
- };
7
- }, {
8
- props: any;
1
+ declare const _default: import("vue").DefineComponent<{}, {
9
2
  store: import("pinia").Store<string, {
10
3
  list: string[];
11
4
  }, {
@@ -131,13 +124,5 @@ declare const _default: import("vue").DefineComponent<{
131
124
  readonly CloseOutlined: import("@ant-design/icons-vue/lib/icons/CloseOutlined").CloseOutlinedIconType;
132
125
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
133
126
  readonly Menu: import("vue").DefineComponent<{}, () => JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
134
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
135
- showConfig: {
136
- type: null;
137
- required: true;
138
- default: any;
139
- };
140
- }>>, {
141
- showConfig: any;
142
- }, {}>;
127
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
143
128
  export default _default;
@@ -1,4 +1,4 @@
1
- import { defineComponent, computed, provide, resolveComponent, openBlock, createElementBlock, Fragment, createVNode, withCtx, createElementVNode, renderSlot, unref, normalizeStyle, createBlock, createCommentVNode, Transition, KeepAlive, resolveDynamicComponent } from 'vue';
1
+ import { defineComponent, computed, resolveComponent, openBlock, createElementBlock, Fragment, createVNode, withCtx, createElementVNode, renderSlot, unref, normalizeStyle, createBlock, Transition, KeepAlive, resolveDynamicComponent } from 'vue';
2
2
  import { MenuUnfoldOutlined, MenuFoldOutlined } from '@ant-design/icons-vue';
3
3
  import { useKeepAliveStore, useSettingsStore } from '@ditari/store';
4
4
  import DNavTabs from './NavTabs.vue.mjs';
@@ -9,17 +9,12 @@ const _hoisted_2 = { class: "ditari-menu" };
9
9
  const _hoisted_3 = { class: "ditari-user-menu" };
10
10
  var _sfc_main = /* @__PURE__ */ defineComponent({
11
11
  __name: "FuckMain",
12
- props: {
13
- "showConfig": { type: null, required: true, default: { backBtn: "LeftOutlined" } }
14
- },
15
12
  setup(__props) {
16
- const props = __props;
17
13
  const store = useKeepAliveStore();
18
14
  const keepAliveNames = computed(() => store.get);
19
15
  const settingsStore = useSettingsStore();
20
16
  const { switchCollapsed } = settingsStore;
21
17
  const collapsedStatus = computed(() => settingsStore.getCollapsed);
22
- provide("showConfig", props.showConfig);
23
18
  return (_ctx, _cache) => {
24
19
  const _component_a_layout_sider = resolveComponent("a-layout-sider");
25
20
  const _component_router_view = resolveComponent("router-view");
@@ -76,26 +71,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
76
71
  createVNode(DNavTabs),
77
72
  createElementVNode("div", _hoisted_3, [
78
73
  renderSlot(_ctx.$slots, "operation")
79
- ]),
80
- createCommentVNode(' <div class="ditari-layout-header">'),
81
- createCommentVNode(' <div class="ditari-layout-header-left">'),
82
- createCommentVNode(' <div class="ditari-side-collapsed" @click="switchCollapsed">'),
83
- createCommentVNode(" <menu-unfold-outlined"),
84
- createCommentVNode(' v-if="collapsedStatus"'),
85
- createCommentVNode(' class="trigger"'),
86
- createCommentVNode(' style="font-size: 16px; font-weight: bold; cursor: pointer"'),
87
- createCommentVNode(" />"),
88
- createCommentVNode(" <menu-fold-outlined"),
89
- createCommentVNode(" v-else"),
90
- createCommentVNode(' style="font-size: 16px; font-weight: bold; cursor: pointer"'),
91
- createCommentVNode(" />"),
92
- createCommentVNode(" </div>"),
93
- createCommentVNode(" "),
94
- createCommentVNode(" </div>"),
95
- createCommentVNode(' <div class="ditari-user-menu">'),
96
- createCommentVNode(' <slot name="operation"></slot>'),
97
- createCommentVNode(" </div>"),
98
- createCommentVNode(" </div>")
74
+ ])
99
75
  ],
100
76
  4
101
77
  /* STYLE */
@@ -1 +1 @@
1
- {"version":3,"file":"FuckMain.vue2.mjs","sources":["../../../src/layout/FuckMain.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * FUCK MAIN 入口文件\n */\nimport { computed, provide } from \"vue\";\nimport { MenuFoldOutlined, MenuUnfoldOutlined } from \"@ant-design/icons-vue\";\nimport { useKeepAliveStore, useSettingsStore } from \"@ditari/store\";\n\n//标签页组件\nimport DNavTabs from \"./NavTabs.vue\";\n// 菜单组件\nimport Menu from \"../menu/Menu\";\n\nconst props = defineProps({\n \"showConfig\": { type: null, required: true, default: { backBtn: \"LeftOutlined\" } as any }\n});\n\n// 缓存store\nconst store = useKeepAliveStore();\n// 缓存的names\nconst keepAliveNames = computed(() => store.get);\n// 设置store\nconst settingsStore = useSettingsStore();\nconst { switchCollapsed } = settingsStore;\nconst collapsedStatus = computed(() => settingsStore.getCollapsed);\n\n// 注入show组件的配置文件\nprovide(\"showConfig\", props.showConfig);\n</script>\n<template>\n <a-layout class=\"ditari-layout\">\n <a-layout-sider\n v-model:collapsed=\"collapsedStatus\"\n :trigger=\"null\"\n collapsible\n class=\"ditari-layout-sider\"\n >\n <div class=\"ditari-logo\">\n <slot name=\"logo\"></slot>\n </div>\n <div class=\"ditari-menu\">\n <Menu />\n </div>\n </a-layout-sider>\n <a-layout>\n <div\n class=\"ditari-fuck-top-layout\"\n :style=\"{ left: collapsedStatus ? '80px' : '200px' }\"\n >\n <div class=\"ditari-side-collapsed\" @click=\"switchCollapsed\">\n <menu-unfold-outlined\n v-if=\"collapsedStatus\"\n class=\"trigger\"\n style=\"font-size: 16px; font-weight: bold; cursor: pointer\"\n />\n <menu-fold-outlined\n v-else\n style=\"font-size: 16px; font-weight: bold; cursor: pointer\"\n />\n </div>\n <d-nav-tabs />\n <div class=\"ditari-user-menu\">\n <slot name=\"operation\"></slot>\n </div>\n <!-- <div class=\"ditari-layout-header\">-->\n <!-- <div class=\"ditari-layout-header-left\">-->\n <!-- <div class=\"ditari-side-collapsed\" @click=\"switchCollapsed\">-->\n <!-- <menu-unfold-outlined-->\n <!-- v-if=\"collapsedStatus\"-->\n <!-- class=\"trigger\"-->\n <!-- style=\"font-size: 16px; font-weight: bold; cursor: pointer\"-->\n <!-- />-->\n <!-- <menu-fold-outlined-->\n <!-- v-else-->\n <!-- style=\"font-size: 16px; font-weight: bold; cursor: pointer\"-->\n <!-- />-->\n <!-- </div>-->\n <!-- -->\n <!-- </div>-->\n <!-- <div class=\"ditari-user-menu\">-->\n <!-- <slot name=\"operation\"></slot>-->\n <!-- </div>-->\n <!-- </div>-->\n </div>\n <a-layout-content\n style=\"margin-top: 42px\"\n class=\"ditari-layout-content\"\n :style=\"{ marginLeft: collapsedStatus ? '80px' : '200px' }\"\n >\n <router-view v-slot=\"{ Component }\">\n <transition name=\"main\" mode=\"out-in\" appear>\n <keep-alive ref=\"keepAliveRef\" :include=\"keepAliveNames\">\n <component :is=\"Component\" :key=\"$route.path\" />\n </keep-alive>\n </transition>\n </router-view>\n <slot name=\"micro\"></slot>\n </a-layout-content>\n </a-layout>\n </a-layout>\n <a-back-top class=\"ditari-ant-back-top\" :visibility-height=\"50\"></a-back-top>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAkBA,IAAA,MAAM,QAAQ,iBAAkB,EAAA,CAAA;AAEhC,IAAA,MAAM,cAAiB,GAAA,QAAA,CAAS,MAAM,KAAA,CAAM,GAAG,CAAA,CAAA;AAE/C,IAAA,MAAM,gBAAgB,gBAAiB,EAAA,CAAA;AACvC,IAAM,MAAA,EAAE,iBAAoB,GAAA,aAAA,CAAA;AAC5B,IAAA,MAAM,eAAkB,GAAA,QAAA,CAAS,MAAM,aAAA,CAAc,YAAY,CAAA,CAAA;AAGjE,IAAQ,OAAA,CAAA,YAAA,EAAc,MAAM,UAAU,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"FuckMain.vue2.mjs","sources":["../../../src/layout/FuckMain.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * FUCK MAIN 入口文件\n */\nimport { computed } from \"vue\";\nimport { MenuFoldOutlined, MenuUnfoldOutlined } from \"@ant-design/icons-vue\";\nimport { useKeepAliveStore, useSettingsStore } from \"@ditari/store\";\n\n//标签页组件\nimport DNavTabs from \"./NavTabs.vue\";\n// 菜单组件\nimport Menu from \"../menu/Menu\";\n\n// 缓存store\nconst store = useKeepAliveStore();\n// 缓存的names\nconst keepAliveNames = computed(() => store.get);\n// 设置store\nconst settingsStore = useSettingsStore();\nconst { switchCollapsed } = settingsStore;\nconst collapsedStatus = computed(() => settingsStore.getCollapsed);\n</script>\n<template>\n <a-layout class=\"ditari-layout\">\n <a-layout-sider\n v-model:collapsed=\"collapsedStatus\"\n :trigger=\"null\"\n collapsible\n class=\"ditari-layout-sider\"\n >\n <div class=\"ditari-logo\">\n <slot name=\"logo\"></slot>\n </div>\n <div class=\"ditari-menu\">\n <Menu />\n </div>\n </a-layout-sider>\n <a-layout>\n <div\n class=\"ditari-fuck-top-layout\"\n :style=\"{ left: collapsedStatus ? '80px' : '200px' }\"\n >\n <div class=\"ditari-side-collapsed\" @click=\"switchCollapsed\">\n <menu-unfold-outlined\n v-if=\"collapsedStatus\"\n class=\"trigger\"\n style=\"font-size: 16px; font-weight: bold; cursor: pointer\"\n />\n <menu-fold-outlined\n v-else\n style=\"font-size: 16px; font-weight: bold; cursor: pointer\"\n />\n </div>\n <d-nav-tabs />\n <div class=\"ditari-user-menu\">\n <slot name=\"operation\"></slot>\n </div>\n </div>\n <a-layout-content\n style=\"margin-top: 42px\"\n class=\"ditari-layout-content\"\n :style=\"{ marginLeft: collapsedStatus ? '80px' : '200px' }\"\n >\n <router-view v-slot=\"{ Component }\">\n <transition name=\"main\" mode=\"out-in\" appear>\n <keep-alive ref=\"keepAliveRef\" :include=\"keepAliveNames\">\n <component :is=\"Component\" :key=\"$route.path\" />\n </keep-alive>\n </transition>\n </router-view>\n <slot name=\"micro\"></slot>\n </a-layout-content>\n </a-layout>\n </a-layout>\n <a-back-top class=\"ditari-ant-back-top\" :visibility-height=\"50\"></a-back-top>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAcA,IAAA,MAAM,QAAQ,iBAAkB,EAAA,CAAA;AAEhC,IAAA,MAAM,cAAiB,GAAA,QAAA,CAAS,MAAM,KAAA,CAAM,GAAG,CAAA,CAAA;AAE/C,IAAA,MAAM,gBAAgB,gBAAiB,EAAA,CAAA;AACvC,IAAM,MAAA,EAAE,iBAAoB,GAAA,aAAA,CAAA;AAC5B,IAAA,MAAM,eAAkB,GAAA,QAAA,CAAS,MAAM,aAAA,CAAc,YAAY,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -82,6 +82,7 @@ declare const _default: import("vue").DefineComponent<{
82
82
  gridMatching(): any;
83
83
  }>;
84
84
  showConfig: any;
85
+ collapsedStatus: import("vue").ComputedRef<boolean>;
85
86
  btnRender: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
86
87
  [key: string]: any;
87
88
  }>;
@@ -1,4 +1,4 @@
1
- import { defineComponent, useSlots, inject, h, resolveComponent, computed, watch, openBlock, createElementBlock, createVNode, withCtx, normalizeClass, unref, createTextVNode, toDisplayString, renderSlot, createElementVNode, createCommentVNode } from 'vue';
1
+ import { defineComponent, useSlots, inject, computed, h, resolveComponent, watch, openBlock, createElementBlock, createVNode, withCtx, normalizeClass, unref, createTextVNode, toDisplayString, renderSlot, createElementVNode, normalizeStyle, createCommentVNode } from 'vue';
2
2
  import { useRouter, useRoute } from 'vue-router';
3
3
  import { useWindowScroll, useScrollLock } from '@vueuse/core';
4
4
  import { LeftOutlined } from '@ant-design/icons-vue';
@@ -6,10 +6,6 @@ import { useNavTabsStore, useSettingsStore } from '@ditari/store';
6
6
  import { storeToRefs } from 'pinia';
7
7
 
8
8
  const _hoisted_1 = { class: "ditari-show-layout" };
9
- const _hoisted_2 = {
10
- key: 0,
11
- class: "ditari-show-footer"
12
- };
13
9
  const delayTime = 200;
14
10
  var _sfc_main = /* @__PURE__ */ defineComponent({
15
11
  __name: "Show",
@@ -25,6 +21,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
25
21
  const navTabStore = useNavTabsStore();
26
22
  const settingsStore = useSettingsStore();
27
23
  const showConfig = inject("showConfig");
24
+ const collapsedStatus = computed(() => settingsStore.getCollapsed);
28
25
  const btnRender = () => {
29
26
  if (!showConfig) {
30
27
  return h(LeftOutlined);
@@ -102,9 +99,19 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
102
99
  }, [
103
100
  renderSlot(_ctx.$slots, "default")
104
101
  ]),
105
- _ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_2, [
106
- renderSlot(_ctx.$slots, "footer")
107
- ])) : createCommentVNode("v-if", true)
102
+ _ctx.$slots.footer ? (openBlock(), createElementBlock(
103
+ "div",
104
+ {
105
+ key: 0,
106
+ class: "ditari-show-footer",
107
+ style: normalizeStyle({ left: collapsedStatus.value ? "80px" : "200px" })
108
+ },
109
+ [
110
+ renderSlot(_ctx.$slots, "footer")
111
+ ],
112
+ 4
113
+ /* STYLE */
114
+ )) : createCommentVNode("v-if", true)
108
115
  ]),
109
116
  _: 3
110
117
  /* FORWARDED */
@@ -1 +1 @@
1
- {"version":3,"file":"Show.vue2.mjs","sources":["../../../src/layout/Show.vue"],"sourcesContent":["<script lang=\"ts\">\nconst delayTime = 200\n</script>\n<script setup lang=\"ts\">\n/**\n * 详情/新增/编辑组件\n */\nimport { computed, inject, useSlots, watch, h, resolveComponent } from \"vue\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { useScrollLock, useWindowScroll } from \"@vueuse/core\";\nimport { LeftOutlined } from \"@ant-design/icons-vue\";\nimport { useNavTabsStore, useSettingsStore } from \"@ditari/store\";\n\nimport { storeToRefs } from \"pinia\";\n\nconst props = defineProps({\n \"close\": { type: Boolean, required: false, default: false },\n \"loading\": { type: Boolean, required: false, default: false }\n});\n\nconst router = useRouter();\nconst route = useRoute();\nconst slots = useSlots();\n\nconst navTabStore = useNavTabsStore();\nconst settingsStore = useSettingsStore();\n\nconst showConfig = inject(\"showConfig\") as any;\n\nconst btnRender = () => {\n if (!showConfig) {\n return h(LeftOutlined);\n } else {\n return h(resolveComponent(showConfig.backBtn));\n }\n};\n\nconst { refresh } = storeToRefs(settingsStore);\n\nconst showLoading = computed(() => props.loading);\n\nconst contentStyle = {\n padding: `10px 10px ${slots.footer ? \"70px\" : \"10px\"} 10px`\n};\n\n/**\n * 点击返回\n */\nconst onBack = () => {\n if (props.close) {\n // 返回关闭标签\n navTabStore.deleteTabs(route.path);\n router.go(-1);\n } else {\n // 不关闭标签\n router.go(-1);\n }\n};\n\n/**\n * 对外暴露方法 调用后关闭标签 并且出发List组件刷新动作\n */\nconst onRefresh = () => {\n refresh.value = true;\n navTabStore.deleteTabs(route.fullPath);\n router.go(-1);\n};\n\n/**\n * 监听屏幕滚动,滚动大于0的时候给a-page-header组件添加阴影\n */\nconst { y } = useWindowScroll();\n// 锁定屏幕\nconst isLocked = useScrollLock(document.body);\n\nwatch(\n () => props.loading,\n (val) => {\n isLocked.value = val;\n }\n);\n\n\ndefineExpose({\n closePage: onRefresh\n});\n</script>\n<template>\n <div class=\"ditari-show-layout\">\n <a-spin\n tip=\"正在处理...\"\n :spinning=\"showLoading\"\n :delay=\"delayTime\"\n size=\"large\"\n >\n <a-page-header\n class=\"ditari-page-header\"\n :class=\"{ active: y > 0 }\"\n :ghost=\"false\"\n @back=\"onBack\"\n >\n <template #backIcon>\n <btn-render />\n </template>\n <template #title>{{ $route.meta.title }} </template>\n <template #subTitle>\n <slot name=\"subTitle\"></slot>\n </template>\n <template #extra>\n <slot name=\"extra\"></slot>\n </template>\n </a-page-header>\n <div class=\"ditari-show-content\" :style=\"contentStyle\">\n <slot></slot>\n </div>\n <div v-if=\"$slots.footer\" class=\"ditari-show-footer\">\n <slot name=\"footer\"></slot>\n </div>\n </a-spin>\n </div>\n</template>\n<style lang=\"scss\"></style>\n"],"names":[],"mappings":";;;;;;;;;;;;AACA,MAAM,SAAY,GAAA,GAAA,CAAA;;;;;;;;;AAmBlB,IAAA,MAAM,SAAS,SAAU,EAAA,CAAA;AACzB,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AACvB,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AAEvB,IAAA,MAAM,cAAc,eAAgB,EAAA,CAAA;AACpC,IAAA,MAAM,gBAAgB,gBAAiB,EAAA,CAAA;AAEvC,IAAM,MAAA,UAAA,GAAa,OAAO,YAAY,CAAA,CAAA;AAEtC,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,IAAI,CAAC,UAAY,EAAA;AACf,QAAA,OAAO,EAAE,YAAY,CAAA,CAAA;AAAA,OAChB,MAAA;AACL,QAAA,OAAO,CAAE,CAAA,gBAAA,CAAiB,UAAW,CAAA,OAAO,CAAC,CAAA,CAAA;AAAA,OAC/C;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,EAAE,OAAA,EAAY,GAAA,WAAA,CAAY,aAAa,CAAA,CAAA;AAE7C,IAAA,MAAM,WAAc,GAAA,QAAA,CAAS,MAAM,KAAA,CAAM,OAAO,CAAA,CAAA;AAEhD,IAAA,MAAM,YAAe,GAAA;AAAA,MACnB,OAAS,EAAA,CAAA,UAAA,EAAa,KAAM,CAAA,MAAA,GAAS,SAAS,MAAM,CAAA,KAAA,CAAA;AAAA,KACtD,CAAA;AAKA,IAAA,MAAM,SAAS,MAAM;AACnB,MAAA,IAAI,MAAM,KAAO,EAAA;AAEf,QAAY,WAAA,CAAA,UAAA,CAAW,MAAM,IAAI,CAAA,CAAA;AACjC,QAAA,MAAA,CAAO,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,OACP,MAAA;AAEL,QAAA,MAAA,CAAO,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,OACd;AAAA,KACF,CAAA;AAKA,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA,CAAA;AAChB,MAAY,WAAA,CAAA,UAAA,CAAW,MAAM,QAAQ,CAAA,CAAA;AACrC,MAAA,MAAA,CAAO,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,KACd,CAAA;AAKA,IAAM,MAAA,EAAE,CAAE,EAAA,GAAI,eAAgB,EAAA,CAAA;AAE9B,IAAM,MAAA,QAAA,GAAW,aAAc,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAE5C,IAAA,KAAA;AAAA,MACE,MAAM,KAAM,CAAA,OAAA;AAAA,MACZ,CAAC,GAAQ,KAAA;AACP,QAAA,QAAA,CAAS,KAAQ,GAAA,GAAA,CAAA;AAAA,OACnB;AAAA,KACF,CAAA;AAGA,IAAa,QAAA,CAAA;AAAA,MACX,SAAW,EAAA,SAAA;AAAA,KACZ,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Show.vue2.mjs","sources":["../../../src/layout/Show.vue"],"sourcesContent":["<script lang=\"ts\">\nconst delayTime = 200\n</script>\n<script setup lang=\"ts\">\n/**\n * 详情/新增/编辑组件\n */\nimport { computed, inject, useSlots, watch, h, resolveComponent } from \"vue\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { useScrollLock, useWindowScroll } from \"@vueuse/core\";\nimport { LeftOutlined } from \"@ant-design/icons-vue\";\nimport { useNavTabsStore, useSettingsStore } from \"@ditari/store\";\n\nimport { storeToRefs } from \"pinia\";\n\nconst props = defineProps({\n \"close\": { type: Boolean, required: false, default: false },\n \"loading\": { type: Boolean, required: false, default: false }\n});\n\nconst router = useRouter();\nconst route = useRoute();\nconst slots = useSlots();\n\nconst navTabStore = useNavTabsStore();\nconst settingsStore = useSettingsStore();\n\nconst showConfig = inject(\"showConfig\") as any;\nconst collapsedStatus = computed(() => settingsStore.getCollapsed);\nconst btnRender = () => {\n if (!showConfig) {\n return h(LeftOutlined);\n } else {\n return h(resolveComponent(showConfig.backBtn));\n }\n};\n\nconst { refresh } = storeToRefs(settingsStore);\n\nconst showLoading = computed(() => props.loading);\n\nconst contentStyle = {\n padding: `10px 10px ${slots.footer ? \"70px\" : \"10px\"} 10px`\n};\n\n/**\n * 点击返回\n */\nconst onBack = () => {\n if (props.close) {\n // 返回关闭标签\n navTabStore.deleteTabs(route.path);\n router.go(-1);\n } else {\n // 不关闭标签\n router.go(-1);\n }\n};\n\n/**\n * 对外暴露方法 调用后关闭标签 并且出发List组件刷新动作\n */\nconst onRefresh = () => {\n refresh.value = true;\n navTabStore.deleteTabs(route.fullPath);\n router.go(-1);\n};\n\n/**\n * 监听屏幕滚动,滚动大于0的时候给a-page-header组件添加阴影\n */\nconst { y } = useWindowScroll();\n// 锁定屏幕\nconst isLocked = useScrollLock(document.body);\n\nwatch(\n () => props.loading,\n (val) => {\n isLocked.value = val;\n }\n);\n\n\ndefineExpose({\n closePage: onRefresh\n});\n</script>\n<template>\n <div class=\"ditari-show-layout\">\n <a-spin\n tip=\"正在处理...\"\n :spinning=\"showLoading\"\n :delay=\"delayTime\"\n size=\"large\"\n >\n <a-page-header\n class=\"ditari-page-header\"\n :class=\"{ active: y > 0 }\"\n :ghost=\"false\"\n @back=\"onBack\"\n >\n <template #backIcon>\n <btn-render />\n </template>\n <template #title>{{ $route.meta.title }} </template>\n <template #subTitle>\n <slot name=\"subTitle\"></slot>\n </template>\n <template #extra>\n <slot name=\"extra\"></slot>\n </template>\n </a-page-header>\n <div class=\"ditari-show-content\" :style=\"contentStyle\">\n <slot></slot>\n </div>\n <div\n v-if=\"$slots.footer\"\n class=\"ditari-show-footer\"\n :style=\"{ left: collapsedStatus ? '80px' : '200px' }\"\n >\n <slot name=\"footer\"></slot>\n </div>\n </a-spin>\n </div>\n</template>\n<style lang=\"scss\"></style>\n"],"names":[],"mappings":";;;;;;;;AACA,MAAM,SAAY,GAAA,GAAA,CAAA;;;;;;;;;AAmBlB,IAAA,MAAM,SAAS,SAAU,EAAA,CAAA;AACzB,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AACvB,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AAEvB,IAAA,MAAM,cAAc,eAAgB,EAAA,CAAA;AACpC,IAAA,MAAM,gBAAgB,gBAAiB,EAAA,CAAA;AAEvC,IAAM,MAAA,UAAA,GAAa,OAAO,YAAY,CAAA,CAAA;AACtC,IAAA,MAAM,eAAkB,GAAA,QAAA,CAAS,MAAM,aAAA,CAAc,YAAY,CAAA,CAAA;AACjE,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,IAAI,CAAC,UAAY,EAAA;AACf,QAAA,OAAO,EAAE,YAAY,CAAA,CAAA;AAAA,OAChB,MAAA;AACL,QAAA,OAAO,CAAE,CAAA,gBAAA,CAAiB,UAAW,CAAA,OAAO,CAAC,CAAA,CAAA;AAAA,OAC/C;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,EAAE,OAAA,EAAY,GAAA,WAAA,CAAY,aAAa,CAAA,CAAA;AAE7C,IAAA,MAAM,WAAc,GAAA,QAAA,CAAS,MAAM,KAAA,CAAM,OAAO,CAAA,CAAA;AAEhD,IAAA,MAAM,YAAe,GAAA;AAAA,MACnB,OAAS,EAAA,CAAA,UAAA,EAAa,KAAM,CAAA,MAAA,GAAS,SAAS,MAAM,CAAA,KAAA,CAAA;AAAA,KACtD,CAAA;AAKA,IAAA,MAAM,SAAS,MAAM;AACnB,MAAA,IAAI,MAAM,KAAO,EAAA;AAEf,QAAY,WAAA,CAAA,UAAA,CAAW,MAAM,IAAI,CAAA,CAAA;AACjC,QAAA,MAAA,CAAO,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,OACP,MAAA;AAEL,QAAA,MAAA,CAAO,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,OACd;AAAA,KACF,CAAA;AAKA,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA,CAAA;AAChB,MAAY,WAAA,CAAA,UAAA,CAAW,MAAM,QAAQ,CAAA,CAAA;AACrC,MAAA,MAAA,CAAO,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,KACd,CAAA;AAKA,IAAM,MAAA,EAAE,CAAE,EAAA,GAAI,eAAgB,EAAA,CAAA;AAE9B,IAAM,MAAA,QAAA,GAAW,aAAc,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAE5C,IAAA,KAAA;AAAA,MACE,MAAM,KAAM,CAAA,OAAA;AAAA,MACZ,CAAC,GAAQ,KAAA;AACP,QAAA,QAAA,CAAS,KAAQ,GAAA,GAAA,CAAA;AAAA,OACnB;AAAA,KACF,CAAA;AAGA,IAAa,QAAA,CAAA;AAAA,MACX,SAAW,EAAA,SAAA;AAAA,KACZ,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -257,10 +257,25 @@ const DXTable = /* @__PURE__ */ defineComponent({
257
257
  }
258
258
  emit("update:keys", selectedRowKeys.value);
259
259
  };
260
+ function onClickSelectedBg(event) {
261
+ const {
262
+ clickSelectedClassName
263
+ } = props.config;
264
+ if (!clickSelectedClassName)
265
+ return;
266
+ const curEl = event.target;
267
+ const parentElement = curEl.parentNode;
268
+ if (!parentElement.classList.contains(clickSelectedClassName)) {
269
+ parentElement.classList.add(clickSelectedClassName);
270
+ } else {
271
+ parentElement.classList.remove(clickSelectedClassName);
272
+ }
273
+ }
260
274
  return {
261
- onClick: () => {
275
+ onClick: (event) => {
262
276
  clearTimeout(clickTimeout);
263
277
  clickTimeout = setTimeout(() => {
278
+ onClickSelectedBg(event);
264
279
  onClick();
265
280
  click ? click(record, index) : void 0;
266
281
  }, 200);
@@ -270,15 +285,6 @@ const DXTable = /* @__PURE__ */ defineComponent({
270
285
  clearTimeout(clickTimeout);
271
286
  dbClick ? dbClick(record, index) : void 0;
272
287
  }
273
- // onContextmenu: (event) => {
274
- // //TODO
275
- // },
276
- // onMouseenter: (event) => {
277
- // //TODO
278
- // }, // 鼠标移入行
279
- // onMouseleave: (event) => {
280
- // //TODO
281
- // }
282
288
  };
283
289
  };
284
290
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Table.mjs","sources":["../../../src/table/Table.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n nextTick,\n PropType,\n reactive,\n ref,\n watch,\n watchEffect\n} from \"vue\";\nimport { Pagination, Space, Table } from \"ant-design-vue\";\nimport { useEleHeight } from \"../_utils/html\";\nimport { prefixName } from \"../theme\";\n\nimport type { TableProps, Key } from \"./interface/table\";\n/**\n * 表格组件 基于TSX封装ATable\n */\nconst tableProps = () => {\n return {\n data: {\n type: Object as PropType<TableProps[\"data\"]>,\n required: true\n },\n height: {\n type: Number as PropType<TableProps[\"height\"]>,\n default: 300\n },\n keys: Array as PropType<TableProps[\"keys\"]>,\n rowKey: {\n type: String as PropType<TableProps[\"rowKey\"]>,\n default: \"id\"\n },\n loading: {\n type: Boolean as PropType<TableProps[\"loading\"]>,\n default: false\n },\n pagination: {\n type: Object as PropType<TableProps[\"pagination\"]>,\n default: () => ({})\n },\n config: {\n type: Object as PropType<TableProps[\"config\"]>,\n default: () => ({})\n },\n expandedRowKeys: {\n type: Object as PropType<TableProps[\"expandedRowKeys\"]>,\n default: () => []\n },\n defaultExpandAllRows: {\n type: Boolean as PropType<TableProps[\"defaultExpandAllRows\"]>,\n default: () => true\n }\n };\n};\n\n// 使用有问题\n// const tableEmits = defineEmits<{\n// \"update:keys\": (keys: []) => void;\n// }>();\n// interface MyEvents {\n// [key: string]: (...args: any[]) => void;\n// \"update:keys\": (keys: []) => void;\n// }\n\n//分页class名称\nconst basePageClassName = `${prefixName}-pagination`;\n\n/**\n * 表格组件定义\n */\nconst DXTable = defineComponent({\n name: \"DTable\",\n inheritAttrs: false,\n props: tableProps(),\n // emits: { \"update:keys\": (keys: []) => void }\n // TODO 需要做调整\n emits: [\"update:keys\"],\n setup: function (props, { emit, slots, attrs }) {\n //分页默认配置\n const paginationConfig = reactive({\n defaultPageSize: 20,\n hideOnSinglePage: false,\n pageSizeOptions: [\"10\", \"20\", \"30\", \"40\"],\n responsive: true,\n showQuickJumper: true,\n showLessItems: true,\n showTotal: (total: number) => {\n return `总共 ${total} 条`;\n }\n });\n\n // 保存选中的唯一id\n const selectedRowKeys = ref<any>(props.keys || []);\n // 数据源\n const dataSource = computed(() => props.data);\n // 表格列\n const columns = computed(() => props.config?.columns ?? []);\n const paginationState = computed(\n () => props.config?.pagination ?? ({} as any)\n );\n // 展开行\n // eslint-disable-next-line vue/no-setup-props-destructure\n const expandedKeys = ref<any>(props.expandedRowKeys);\n // 分页条数配置\n paginationConfig.pageSizeOptions =\n props.config?.pageOption?.sizeOptions ?? paginationConfig.pageSizeOptions;\n // 默认条数\n paginationConfig.defaultPageSize =\n props.config?.pageOption?.defaultSize ?? paginationConfig.defaultPageSize;\n\n watchEffect(() => {\n const { expandedRowKeys } = props;\n expandedKeys.value = expandedRowKeys;\n });\n\n // 初始化表格\n const {\n tableRef,\n tableRootRef,\n tableHeight,\n onPageChange,\n onRowClassName\n } = useTable();\n\n function useTable() {\n const {\n rowClassName,\n keepSelected,\n onPageChange: onChange\n } = props.config;\n\n const selection = props.config.selection ?? \"N\";\n const isInit = ref(false);\n // 表格根div\n const tableRootRef = ref<HTMLElement>();\n // 表格组件对象\n const tableRef = ref<any>(null);\n // 表格计算出来的高度\n const tableHeight = ref<number>();\n // 表格body对象\n const antTableBodyRef = ref<any>(null);\n // 计算高度\n const playHeight = (height: number) => {\n try {\n const tableEl = tableRef?.value?.$el;\n const headerHeight = useEleHeight(\n tableEl.getElementsByClassName(\"ant-table-header\")[0]\n );\n isInit.value = true;\n // 获取分页组件高度\n let paginationHeight = 0;\n if (props.config.pagination) {\n const paginationEl =\n tableRootRef.value?.getElementsByClassName(basePageClassName)[0];\n paginationHeight = useEleHeight(paginationEl as any) ?? 0;\n }\n tableHeight.value = height - (headerHeight + paginationHeight);\n\n // 设置body高度\n tableEl.getElementsByClassName(\"ant-table-body\")[0].style.height =\n tableHeight.value + \"px\";\n // 表格body对象 用于切换页码后滚动条置顶\n antTableBodyRef.value =\n tableEl.getElementsByClassName(\"ant-table-body\")[0];\n } catch (e) {\n console.warn(e);\n }\n };\n //监听传入的height的变化 默认组件创建的时候会执行一次\n watchEffect(() => {\n if (props.height !== 0) {\n nextTick(() => {\n if (isInit.value) {\n playHeight(props.height);\n } else {\n // 必须在组件挂载成功后 执行计算高度 否则无法正确获取元素的高度\n setTimeout(() => {\n playHeight(props.height);\n // 如果表格头有很多列的情况下,获取到的头部高度不对,需要延迟执行获取高度方法\n }, 100);\n }\n });\n }\n });\n // 监听分页组件\n const onPageChange = (page: number, size: number) => {\n onChange ? onChange({ page: page === 0 ? 1 : page, size }) : null;\n // 切换分页的时候,表体滚动到顶部\n antTableBodyRef.value.scrollTop = 0;\n // 如果当前为单选或未开启分页保留数据选中的数据都会被清除\n // 清空历史选中数据\n if (selection === \"S\" || !keepSelected) {\n selectedRowKeys.value = [];\n emit(\"update:keys\", selectedRowKeys.value);\n }\n };\n //自定义样式\n const onRowClassName = (record: any, index: number) => {\n return rowClassName ? rowClassName(record, index) : undefined;\n };\n return {\n tableRef,\n tableRootRef,\n tableHeight,\n onPageChange,\n onRowClassName\n };\n }\n\n //表格选中配置\n const rowSelection = useRowSelection();\n\n function useRowSelection() {\n const {\n rowKey,\n config: { getCheckboxProps }\n } = props;\n\n let localSelection = props.config.selection ?? \"N\";\n //if (selection === \"N\") return undefined;\n\n const onSelect = (record: any, selected: any) => {\n if (localSelection === \"S\") {\n selectedRowKeys.value = [];\n selectedRowKeys.value = selected ? [record[rowKey]] : [];\n } else {\n selectedRowKeys.value = selected\n ? selectedRowKeys.value.concat(record[rowKey])\n : selectedRowKeys.value.filter(\n (key: Key) => key !== record[rowKey]\n );\n }\n emit(\"update:keys\", selectedRowKeys.value);\n };\n\n const onSelectAll = (\n selected: any,\n selectedRows: any,\n changeRows: any\n ) => {\n const _ids = changeRows.map((record: any) => record[rowKey]);\n selectedRowKeys.value = selected\n ? selectedRowKeys.value.concat(_ids)\n : selectedRowKeys.value.filter((key: Key) => !_ids.includes(key));\n\n emit(\"update:keys\", selectedRowKeys.value);\n };\n\n // 监听父组件手动改变keys 重新赋值给 表格选中变量selectedRowKeys\n // 否则父组件 改变keys后当前selectedRowKeys还是原来的值\n watch(\n () => props.keys,\n (val) => {\n selectedRowKeys.value = val;\n }\n );\n\n const rowSelection = ref<any>(undefined);\n\n watchEffect(() => {\n const { selection } = props.config;\n localSelection = selection as any;\n if (localSelection !== \"N\") {\n rowSelection.value = {\n selectedRowKeys,\n onSelect,\n onSelectAll,\n fixed: true,\n columnTitle: localSelection === \"S\" ? \"选择\" : null,\n columnWidth: localSelection === \"S\" ? 60 : 40,\n getCheckboxProps: getCheckboxProps\n };\n } else {\n rowSelection.value = undefined;\n }\n });\n\n // return {\n // selectedRowKeys,\n // onSelect,\n // onSelectAll,\n // fixed: true,\n // columnTitle: localSelection === \"S\" ? \"选择\" : null,\n // columnWidth: localSelection === \"S\" ? 60 : 40,\n // getCheckboxProps: getCheckboxProps\n // };\n return rowSelection;\n }\n\n const customRow = useCustomRow();\n\n //表格行配置\n function useCustomRow() {\n return (record: any, index: any) => {\n // 用于存储 在某个事件内双击两次 则取消单击事件业务\n let clickTimeout: any = undefined;\n const {\n rowKey,\n config: { click, dbClick, selection, getCheckboxProps }\n } = props as any;\n\n // 当前点击行的唯一ID,通过rowKey从record中取值\n const id = record[rowKey];\n\n /**\n * 处理单击事件业务\n * @param record 当前点击行数据\n */\n const onClick = () => {\n // 获取getCheckboxProps方法,如果不等于undefined,则执行方法获取disabled的值\n // 否则checkEnable为false\n const checkEnable =\n getCheckboxProps === undefined\n ? false\n : getCheckboxProps(record).disabled;\n\n if (selection === \"N\" || checkEnable) {\n // 1. 未开启复选框 则不处理数据选中操作\n // 2. 如果当前点击的行 包含在禁用的数据项目里面 则不进行选中操作\n // 3. checkEnable 用来判断复选框属性的值,如果当前的数据满足getCheckboxProps这个\n // 方法返回的disabled为true就不执行\n // 复选框选中的操作\n return;\n }\n const haveState = selectedRowKeys.value.some(\n (key: Key) => key === id\n );\n if (haveState) {\n //如果 当前点击行的ID 已存在 那么直接过滤掉当前的id\n selectedRowKeys.value = selectedRowKeys.value.filter(\n (key: Key) => key !== id\n );\n } else {\n if (selection === \"S\") {\n //单选的时候 清空选中的数据 再赋值新的ID\n selectedRowKeys.value = [];\n selectedRowKeys.value.push(id);\n } else {\n //多选直接追加ID\n selectedRowKeys.value.push(id);\n }\n }\n emit(\"update:keys\", selectedRowKeys.value);\n };\n\n return {\n onClick: () => {\n clearTimeout(clickTimeout);\n clickTimeout = setTimeout(() => {\n // 处理单击事件业务\n onClick();\n // 回传数据 自定义单击后的业务\n click ? click(record, index) : undefined;\n }, 200);\n }, // 点击行\n onDblclick: () => {\n clearTimeout(clickTimeout);\n // 回传数据 自定义单击后的业务\n dbClick ? dbClick(record, index) : undefined;\n }\n // onContextmenu: (event) => {\n // //TODO\n // },\n // onMouseenter: (event) => {\n // //TODO\n // }, // 鼠标移入行\n // onMouseleave: (event) => {\n // //TODO\n // }\n };\n };\n }\n\n const actionStop = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n const expandRowByClick = computed(() => {\n const { selection } = props.config;\n return selection === \"N\";\n });\n const tableSlots: any = {};\n if (slots.expandedRowRender) {\n tableSlots.expandedRowRender = (record: any) => {\n return (\n <>{slots.expandedRowRender && slots.expandedRowRender(record)}</>\n );\n };\n }\n const summary = () => {\n return <>{slots.summary && slots.summary()}</>;\n };\n\n /**\n * 展开行事件\n * @param expanded\n * @param record\n */\n const onExpand = (expanded: any, record: any) => {\n props.config.onExpand && props.config.onExpand({ expanded, record });\n };\n\n return () => (\n <div ref={tableRootRef}>\n <Table\n ref={tableRef}\n row-key={props.rowKey}\n bordered={props.config.bordered}\n {...attrs}\n columns={columns.value}\n dataSource={dataSource.value}\n loading={props.loading}\n size={props.config?.size ?? \"small\"}\n scroll={{\n scrollToFirstRowOnChange: true,\n x: \"100%\",\n y: tableHeight.value + \"px\"\n }}\n v-model:expandedRowKeys={expandedKeys.value}\n expandRowByClick={expandRowByClick.value}\n defaultExpandAllRows={props.defaultExpandAllRows}\n pagination={false}\n customRow={customRow}\n rowSelection={rowSelection.value}\n rowClassName={onRowClassName}\n onExpand={onExpand}\n >\n {{\n bodyCell: ({ column, record, index }: any) => {\n if (column.slot === \"action\") {\n return (\n <div onClick={actionStop} onDblclick={actionStop}>\n <Space>\n {slots.action && slots.action({ record, index })}\n </Space>\n </div>\n );\n }\n },\n ...tableSlots,\n // 总结栏插槽\n summary: summary\n }}\n </Table>\n <Pagination\n v-show={props.config.pagination}\n class={[basePageClassName]}\n v-model:current={paginationState.value.current}\n v-model:pageSize={paginationState.value.pageSize}\n disabled={props.loading}\n show-size-changer\n size={\"default\"}\n hide-on-single-page={paginationConfig.hideOnSinglePage}\n show-quick-jumper={paginationConfig.showQuickJumper}\n default-page-size={paginationConfig.defaultPageSize}\n page-size-options={paginationConfig.pageSizeOptions}\n show-total={paginationConfig.showTotal}\n total={paginationState.value.total}\n onChange={onPageChange}\n />\n </div>\n );\n }\n});\n\nexport default DXTable;\n"],"names":["tableProps","data","type","Object","required","height","Number","default","keys","Array","rowKey","String","loading","Boolean","pagination","config","expandedRowKeys","defaultExpandAllRows","basePageClassName","prefixName","DXTable","name","inheritAttrs","props","emits","setup","emit","slots","attrs","paginationConfig","reactive","defaultPageSize","hideOnSinglePage","pageSizeOptions","responsive","showQuickJumper","showLessItems","showTotal","total","selectedRowKeys","ref","dataSource","computed","columns","paginationState","expandedKeys","pageOption","sizeOptions","defaultSize","watchEffect","value","tableRef","tableRootRef","tableHeight","onPageChange","onRowClassName","useTable","rowClassName","keepSelected","onChange","selection","isInit","antTableBodyRef","playHeight","tableEl","$el","headerHeight","useEleHeight","getElementsByClassName","paginationHeight","paginationEl","style","e","console","warn","nextTick","setTimeout","page","size","scrollTop","record","index","undefined","rowSelection","useRowSelection","getCheckboxProps","localSelection","onSelect","selected","concat","filter","key","onSelectAll","selectedRows","changeRows","_ids","map","includes","watch","val","fixed","columnTitle","columnWidth","customRow","useCustomRow","clickTimeout","click","dbClick","id","onClick","checkEnable","disabled","haveState","some","push","clearTimeout","onDblclick","actionStop","event","stopPropagation","expandRowByClick","tableSlots","expandedRowRender","_createVNode","_Fragment","summary","onExpand","expanded","Table","_mergeProps","bordered","scrollToFirstRowOnChange","x","y","$event","bodyCell","column","slot","Space","action","_withDirectives","Pagination","current","pageSize","_vShow"],"mappings":"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"}
1
+ {"version":3,"file":"Table.mjs","sources":["../../../src/table/Table.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n nextTick,\n PropType,\n reactive,\n ref,\n watch,\n watchEffect\n} from \"vue\";\nimport { Pagination, Space, Table } from \"ant-design-vue\";\nimport { useEleHeight } from \"../_utils/html\";\nimport { prefixName } from \"../theme\";\n\nimport type { TableProps, Key } from \"./interface/table\";\n/**\n * 表格组件 基于TSX封装ATable\n */\nconst tableProps = () => {\n return {\n data: {\n type: Object as PropType<TableProps[\"data\"]>,\n required: true\n },\n height: {\n type: Number as PropType<TableProps[\"height\"]>,\n default: 300\n },\n keys: Array as PropType<TableProps[\"keys\"]>,\n rowKey: {\n type: String as PropType<TableProps[\"rowKey\"]>,\n default: \"id\"\n },\n loading: {\n type: Boolean as PropType<TableProps[\"loading\"]>,\n default: false\n },\n pagination: {\n type: Object as PropType<TableProps[\"pagination\"]>,\n default: () => ({})\n },\n config: {\n type: Object as PropType<TableProps[\"config\"]>,\n default: () => ({})\n },\n expandedRowKeys: {\n type: Object as PropType<TableProps[\"expandedRowKeys\"]>,\n default: () => []\n },\n defaultExpandAllRows: {\n type: Boolean as PropType<TableProps[\"defaultExpandAllRows\"]>,\n default: () => true\n }\n };\n};\n\n// 使用有问题\n// const tableEmits = defineEmits<{\n// \"update:keys\": (keys: []) => void;\n// }>();\n// interface MyEvents {\n// [key: string]: (...args: any[]) => void;\n// \"update:keys\": (keys: []) => void;\n// }\n\n//分页class名称\nconst basePageClassName = `${prefixName}-pagination`;\n\n/**\n * 表格组件定义\n */\nconst DXTable = defineComponent({\n name: \"DTable\",\n inheritAttrs: false,\n props: tableProps(),\n // emits: { \"update:keys\": (keys: []) => void }\n // TODO 需要做调整\n emits: [\"update:keys\"],\n setup: function (props, { emit, slots, attrs }) {\n //分页默认配置\n const paginationConfig = reactive({\n defaultPageSize: 20,\n hideOnSinglePage: false,\n pageSizeOptions: [\"10\", \"20\", \"30\", \"40\"],\n responsive: true,\n showQuickJumper: true,\n showLessItems: true,\n showTotal: (total: number) => {\n return `总共 ${total} 条`;\n }\n });\n\n // 保存选中的唯一id\n const selectedRowKeys = ref<any>(props.keys || []);\n // 数据源\n const dataSource = computed(() => props.data);\n // 表格列\n const columns = computed(() => props.config?.columns ?? []);\n const paginationState = computed(\n () => props.config?.pagination ?? ({} as any)\n );\n // 展开行\n // eslint-disable-next-line vue/no-setup-props-destructure\n const expandedKeys = ref<any>(props.expandedRowKeys);\n // 分页条数配置\n paginationConfig.pageSizeOptions =\n props.config?.pageOption?.sizeOptions ?? paginationConfig.pageSizeOptions;\n // 默认条数\n paginationConfig.defaultPageSize =\n props.config?.pageOption?.defaultSize ?? paginationConfig.defaultPageSize;\n\n watchEffect(() => {\n const { expandedRowKeys } = props;\n expandedKeys.value = expandedRowKeys;\n });\n\n // 初始化表格\n const {\n tableRef,\n tableRootRef,\n tableHeight,\n onPageChange,\n onRowClassName\n } = useTable();\n\n function useTable() {\n const {\n rowClassName,\n keepSelected,\n onPageChange: onChange\n } = props.config;\n\n const selection = props.config.selection ?? \"N\";\n const isInit = ref(false);\n // 表格根div\n const tableRootRef = ref<HTMLElement>();\n // 表格组件对象\n const tableRef = ref<any>(null);\n // 表格计算出来的高度\n const tableHeight = ref<number>();\n // 表格body对象\n const antTableBodyRef = ref<any>(null);\n // 计算高度\n const playHeight = (height: number) => {\n try {\n const tableEl = tableRef?.value?.$el;\n const headerHeight = useEleHeight(\n tableEl.getElementsByClassName(\"ant-table-header\")[0]\n );\n isInit.value = true;\n // 获取分页组件高度\n let paginationHeight = 0;\n if (props.config.pagination) {\n const paginationEl =\n tableRootRef.value?.getElementsByClassName(basePageClassName)[0];\n paginationHeight = useEleHeight(paginationEl as any) ?? 0;\n }\n tableHeight.value = height - (headerHeight + paginationHeight);\n\n // 设置body高度\n tableEl.getElementsByClassName(\"ant-table-body\")[0].style.height =\n tableHeight.value + \"px\";\n // 表格body对象 用于切换页码后滚动条置顶\n antTableBodyRef.value =\n tableEl.getElementsByClassName(\"ant-table-body\")[0];\n } catch (e) {\n console.warn(e);\n }\n };\n //监听传入的height的变化 默认组件创建的时候会执行一次\n watchEffect(() => {\n if (props.height !== 0) {\n nextTick(() => {\n if (isInit.value) {\n playHeight(props.height);\n } else {\n // 必须在组件挂载成功后 执行计算高度 否则无法正确获取元素的高度\n setTimeout(() => {\n playHeight(props.height);\n // 如果表格头有很多列的情况下,获取到的头部高度不对,需要延迟执行获取高度方法\n }, 100);\n }\n });\n }\n });\n // 监听分页组件\n const onPageChange = (page: number, size: number) => {\n onChange ? onChange({ page: page === 0 ? 1 : page, size }) : null;\n // 切换分页的时候,表体滚动到顶部\n antTableBodyRef.value.scrollTop = 0;\n // 如果当前为单选或未开启分页保留数据选中的数据都会被清除\n // 清空历史选中数据\n if (selection === \"S\" || !keepSelected) {\n selectedRowKeys.value = [];\n emit(\"update:keys\", selectedRowKeys.value);\n }\n };\n //自定义样式\n const onRowClassName = (record: any, index: number) => {\n return rowClassName ? rowClassName(record, index) : undefined;\n };\n return {\n tableRef,\n tableRootRef,\n tableHeight,\n onPageChange,\n onRowClassName\n };\n }\n\n //表格选中配置\n const rowSelection = useRowSelection();\n\n function useRowSelection() {\n const {\n rowKey,\n config: { getCheckboxProps }\n } = props;\n\n let localSelection = props.config.selection ?? \"N\";\n //if (selection === \"N\") return undefined;\n\n const onSelect = (record: any, selected: any) => {\n if (localSelection === \"S\") {\n selectedRowKeys.value = [];\n selectedRowKeys.value = selected ? [record[rowKey]] : [];\n } else {\n selectedRowKeys.value = selected\n ? selectedRowKeys.value.concat(record[rowKey])\n : selectedRowKeys.value.filter(\n (key: Key) => key !== record[rowKey]\n );\n }\n emit(\"update:keys\", selectedRowKeys.value);\n };\n\n const onSelectAll = (\n selected: any,\n selectedRows: any,\n changeRows: any\n ) => {\n const _ids = changeRows.map((record: any) => record[rowKey]);\n selectedRowKeys.value = selected\n ? selectedRowKeys.value.concat(_ids)\n : selectedRowKeys.value.filter((key: Key) => !_ids.includes(key));\n\n emit(\"update:keys\", selectedRowKeys.value);\n };\n\n // 监听父组件手动改变keys 重新赋值给 表格选中变量selectedRowKeys\n // 否则父组件 改变keys后当前selectedRowKeys还是原来的值\n watch(\n () => props.keys,\n (val) => {\n selectedRowKeys.value = val;\n }\n );\n\n const rowSelection = ref<any>(undefined);\n\n watchEffect(() => {\n const { selection } = props.config;\n localSelection = selection as any;\n if (localSelection !== \"N\") {\n rowSelection.value = {\n selectedRowKeys,\n onSelect,\n onSelectAll,\n fixed: true,\n columnTitle: localSelection === \"S\" ? \"选择\" : null,\n columnWidth: localSelection === \"S\" ? 60 : 40,\n getCheckboxProps: getCheckboxProps\n };\n } else {\n rowSelection.value = undefined;\n }\n });\n\n // return {\n // selectedRowKeys,\n // onSelect,\n // onSelectAll,\n // fixed: true,\n // columnTitle: localSelection === \"S\" ? \"选择\" : null,\n // columnWidth: localSelection === \"S\" ? 60 : 40,\n // getCheckboxProps: getCheckboxProps\n // };\n return rowSelection;\n }\n\n const customRow = useCustomRow();\n\n //表格行配置\n function useCustomRow() {\n return (record: any, index: any) => {\n // 用于存储 在某个事件内双击两次 则取消单击事件业务\n let clickTimeout: any = undefined;\n const {\n rowKey,\n config: { click, dbClick, selection, getCheckboxProps }\n } = props as any;\n\n // 当前点击行的唯一ID,通过rowKey从record中取值\n const id = record[rowKey];\n\n /**\n * 处理单击事件业务\n * @param record 当前点击行数据\n */\n const onClick = () => {\n // 获取getCheckboxProps方法,如果不等于undefined,则执行方法获取disabled的值\n // 否则checkEnable为false\n const checkEnable =\n getCheckboxProps === undefined\n ? false\n : getCheckboxProps(record).disabled;\n\n if (selection === \"N\" || checkEnable) {\n // 1. 未开启复选框 则不处理数据选中操作\n // 2. 如果当前点击的行 包含在禁用的数据项目里面 则不进行选中操作\n // 3. checkEnable 用来判断复选框属性的值,如果当前的数据满足getCheckboxProps这个\n // 方法返回的disabled为true就不执行\n // 复选框选中的操作\n return;\n }\n const haveState = selectedRowKeys.value.some(\n (key: Key) => key === id\n );\n if (haveState) {\n //如果 当前点击行的ID 已存在 那么直接过滤掉当前的id\n selectedRowKeys.value = selectedRowKeys.value.filter(\n (key: Key) => key !== id\n );\n } else {\n if (selection === \"S\") {\n //单选的时候 清空选中的数据 再赋值新的ID\n selectedRowKeys.value = [];\n selectedRowKeys.value.push(id);\n } else {\n //多选直接追加ID\n selectedRowKeys.value.push(id);\n }\n }\n emit(\"update:keys\", selectedRowKeys.value);\n };\n\n function onClickSelectedBg(event: any) {\n const { clickSelectedClassName } = props.config;\n if (!clickSelectedClassName) return;\n const curEl = event.target;\n // 找到父元素\n const parentElement = curEl.parentNode;\n // 判断父元素是否有某个 class\n if (!parentElement.classList.contains(clickSelectedClassName)) {\n // 如果父元素没有指定的 class,则添加 class\n parentElement.classList.add(clickSelectedClassName);\n } else {\n // 如果父元素已经有指定的 class,则移除 class\n parentElement.classList.remove(clickSelectedClassName);\n }\n }\n\n return {\n onClick: (event: any) => {\n clearTimeout(clickTimeout);\n clickTimeout = setTimeout(() => {\n // 处理背景激活逻辑\n onClickSelectedBg(event);\n // 处理单击事件业务\n onClick();\n // 回传数据 自定义单击后的业务\n click ? click(record, index) : undefined;\n }, 200);\n }, // 点击行\n onDblclick: () => {\n clearTimeout(clickTimeout);\n // 回传数据 自定义单击后的业务\n dbClick ? dbClick(record, index) : undefined;\n }\n };\n };\n }\n\n const actionStop = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n const expandRowByClick = computed(() => {\n const { selection } = props.config;\n return selection === \"N\";\n });\n const tableSlots: any = {};\n if (slots.expandedRowRender) {\n tableSlots.expandedRowRender = (record: any) => {\n return (\n <>{slots.expandedRowRender && slots.expandedRowRender(record)}</>\n );\n };\n }\n const summary = () => {\n return <>{slots.summary && slots.summary()}</>;\n };\n\n /**\n * 展开行事件\n * @param expanded\n * @param record\n */\n const onExpand = (expanded: any, record: any) => {\n props.config.onExpand && props.config.onExpand({ expanded, record });\n };\n\n return () => (\n <div ref={tableRootRef}>\n <Table\n ref={tableRef}\n row-key={props.rowKey}\n bordered={props.config.bordered}\n {...attrs}\n columns={columns.value}\n dataSource={dataSource.value}\n loading={props.loading}\n size={props.config?.size ?? \"small\"}\n scroll={{\n scrollToFirstRowOnChange: true,\n x: \"100%\",\n y: tableHeight.value + \"px\"\n }}\n v-model:expandedRowKeys={expandedKeys.value}\n expandRowByClick={expandRowByClick.value}\n defaultExpandAllRows={props.defaultExpandAllRows}\n pagination={false}\n customRow={customRow}\n rowSelection={rowSelection.value}\n rowClassName={onRowClassName}\n onExpand={onExpand}\n >\n {{\n bodyCell: ({ column, record, index }: any) => {\n if (column.slot === \"action\") {\n return (\n <div onClick={actionStop} onDblclick={actionStop}>\n <Space>\n {slots.action && slots.action({ record, index })}\n </Space>\n </div>\n );\n }\n },\n ...tableSlots,\n // 总结栏插槽\n summary: summary\n }}\n </Table>\n <Pagination\n v-show={props.config.pagination}\n class={[basePageClassName]}\n v-model:current={paginationState.value.current}\n v-model:pageSize={paginationState.value.pageSize}\n disabled={props.loading}\n show-size-changer\n size={\"default\"}\n hide-on-single-page={paginationConfig.hideOnSinglePage}\n show-quick-jumper={paginationConfig.showQuickJumper}\n default-page-size={paginationConfig.defaultPageSize}\n page-size-options={paginationConfig.pageSizeOptions}\n show-total={paginationConfig.showTotal}\n total={paginationState.value.total}\n onChange={onPageChange}\n />\n </div>\n );\n }\n});\n\nexport default DXTable;\n"],"names":["tableProps","data","type","Object","required","height","Number","default","keys","Array","rowKey","String","loading","Boolean","pagination","config","expandedRowKeys","defaultExpandAllRows","basePageClassName","prefixName","DXTable","name","inheritAttrs","props","emits","setup","emit","slots","attrs","paginationConfig","reactive","defaultPageSize","hideOnSinglePage","pageSizeOptions","responsive","showQuickJumper","showLessItems","showTotal","total","selectedRowKeys","ref","dataSource","computed","columns","paginationState","expandedKeys","pageOption","sizeOptions","defaultSize","watchEffect","value","tableRef","tableRootRef","tableHeight","onPageChange","onRowClassName","useTable","rowClassName","keepSelected","onChange","selection","isInit","antTableBodyRef","playHeight","tableEl","$el","headerHeight","useEleHeight","getElementsByClassName","paginationHeight","paginationEl","style","e","console","warn","nextTick","setTimeout","page","size","scrollTop","record","index","undefined","rowSelection","useRowSelection","getCheckboxProps","localSelection","onSelect","selected","concat","filter","key","onSelectAll","selectedRows","changeRows","_ids","map","includes","watch","val","fixed","columnTitle","columnWidth","customRow","useCustomRow","clickTimeout","click","dbClick","id","onClick","checkEnable","disabled","haveState","some","push","onClickSelectedBg","event","clickSelectedClassName","curEl","target","parentElement","parentNode","classList","contains","add","remove","clearTimeout","onDblclick","actionStop","stopPropagation","expandRowByClick","tableSlots","expandedRowRender","_createVNode","_Fragment","summary","onExpand","expanded","Table","_mergeProps","bordered","scrollToFirstRowOnChange","x","y","$event","bodyCell","column","slot","Space","action","_withDirectives","Pagination","current","pageSize","_vShow"],"mappings":"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"}
@@ -17,6 +17,7 @@ export interface Config {
17
17
  click?: (record: unknown) => void;
18
18
  dbClick?: (record: any) => void;
19
19
  getCheckboxProps?: (record: any) => any;
20
+ clickSelectedClassName?: string;
20
21
  pageOption: {
21
22
  sizeOptions: string[];
22
23
  defaultSize: number;
@@ -1,6 +1,7 @@
1
1
  import { createApp } from "vue";
2
2
  import Antd from "ant-design-vue";
3
3
  import "ant-design-vue/dist/antd.css";
4
+ import * as Icons from "@ant-design/icons-vue";
4
5
  import App from "./App.vue";
5
6
  import router from "./router";
6
7
  import ui from "../../../bsui/src/index";
@@ -12,4 +13,10 @@ app.use(Antd);
12
13
  app.use(router);
13
14
  app.use(ui, { menuIcon: { componentName: "nativeHtml", prop: "type" } } as any);
14
15
 
16
+ //注册UI自带的图标
17
+ const icons: any = Icons;
18
+ for (const i in icons) {
19
+ app.component(i, icons[i]);
20
+ }
21
+
15
22
  app.mount("#app");
@@ -2,8 +2,6 @@
2
2
  import { onActivated, ref } from "vue";
3
3
  import { useRoute } from "vue-router";
4
4
 
5
- import { useDeclareData } from "../../store";
6
-
7
5
  const columns = [
8
6
  {
9
7
  title: "商品编码"
@@ -22,17 +20,8 @@ const columns = [
22
20
  }
23
21
  ];
24
22
  const route = useRoute();
25
- const store = useDeclareData();
26
23
  const loading = ref(false);
27
24
 
28
- onActivated(() => {
29
- if (route.path.includes("form")) {
30
- store.data = store.exportDeclarationData;
31
- } else {
32
- store.data = store.importDeclarationData;
33
- }
34
- });
35
-
36
25
  const formState = ref({
37
26
  originCountry: ""
38
27
  });
@@ -44,148 +33,6 @@ export default {
44
33
  </script>
45
34
  <template>
46
35
  <d-show-layout :loading="loading">
47
-
48
- <a-card>
49
- <template #title>
50
- <span class="title">申报人信息</span>
51
- </template>
52
- <a-form :colon="false" :label-col="{ style: { width: '120px' } }">
53
- <d-grid class-name="ditari-bsui-grid-form" :fill="true" grid="repeat(2, 50%)">
54
- <d-grid-item>
55
- <a-form-item label="申报人姓名">
56
- <a-input />
57
- </a-form-item>
58
- </d-grid-item>
59
- <d-grid-item>
60
- <a-form-item label="申报人证件号">
61
- {{ formState.originCountry }}
62
- <a-input v-model:value="formState.originCountry" v-trim />
63
- </a-form-item>
64
- </d-grid-item>
65
- <d-grid-item>
66
- <a-button type="primary" block>选择申报人</a-button>
67
- </d-grid-item>
68
- </d-grid>
69
- </a-form>
70
- </a-card>
71
- <a-card>
72
- <template #title>
73
- <span class="title">基本信息</span>
74
- </template>
75
- <a-form :colon="false" :label-col="{ style: { width: '150px' } }">
76
- <d-grid class-name="ditari-bsui-grid-form">
77
- <d-grid-item>
78
- <a-form-item label="进出口标志"> </a-form-item>
79
- </d-grid-item>
80
- <d-grid-item>
81
- <a-form-item label="业务模式"> </a-form-item>
82
- </d-grid-item>
83
- <d-grid-item>
84
- <a-form-item label="运输方式"> </a-form-item>
85
- </d-grid-item>
86
- <d-grid-item>
87
- <a-form-item label="总金额(元)"> </a-form-item>
88
- </d-grid-item>
89
- <d-grid-item>
90
- <a-form-item label="总毛重(KG)"> </a-form-item>
91
- </d-grid-item>
92
- <d-grid-item>
93
- <a-form-item label="总净重(KG)"> </a-form-item>
94
- </d-grid-item>
95
- <d-grid-item>
96
- <a-form-item label="币制"> </a-form-item>
97
- </d-grid-item>
98
- <d-grid-item>
99
- <a-form-item label="件数"> </a-form-item>
100
- </d-grid-item>
101
- <d-grid-item>
102
- <a-form-item label="贸易国别"> </a-form-item>
103
- </d-grid-item>
104
- <d-grid-item>
105
- <a-form-item label="运输工具航次(班)号"> </a-form-item>
106
- </d-grid-item>
107
- <d-grid-item>
108
- <a-form-item label="运输工具号"> </a-form-item>
109
- </d-grid-item>
110
- <d-grid-item>
111
- <a-form-item label="提运单号"> </a-form-item>
112
- </d-grid-item>
113
- <d-grid-item>
114
- <a-form-item label="是否涉及证书预备案"> </a-form-item>
115
- </d-grid-item>
116
- <d-grid-item>
117
- <a-form-item label="证书类型"> </a-form-item>
118
- </d-grid-item>
119
- <d-grid-item>
120
- <a-form-item label="证书预备案编号"> </a-form-item>
121
- </d-grid-item>
122
- </d-grid>
123
- </a-form>
124
- </a-card>
125
- <!-- <a-card v-for="item in 3">-->
126
- <!-- <template #title>-->
127
- <!-- <span class="title">商品信息</span>-->
128
- <!-- </template>-->
129
- <!-- <d-table-->
130
- <!-- row-key="id"-->
131
- <!-- bordered-->
132
- <!-- :height="150"-->
133
- <!-- :columns="columns"-->
134
- <!-- :data="[{}]"-->
135
- <!-- ></d-table>-->
136
- <!-- <a-form :colon="false" :label-col="{ style: { width: '150px' } }">-->
137
- <!-- <d-grid class-name="ditari-bsui-grid-form">-->
138
- <!-- <d-grid-item>-->
139
- <!-- <a-form-item label="商品编码"> </a-form-item>-->
140
- <!-- </d-grid-item>-->
141
- <!-- <d-grid-item>-->
142
- <!-- <a-form-item label="商品名称"> </a-form-item>-->
143
- <!-- </d-grid-item>-->
144
- <!-- <d-grid-item>-->
145
- <!-- <a-form-item label="规格型号"> </a-form-item>-->
146
- <!-- </d-grid-item>-->
147
- <!-- <d-grid-item>-->
148
- <!-- <a-form-item label="申报计量单位"> </a-form-item>-->
149
- <!-- </d-grid-item>-->
150
- <!-- <d-grid-item>-->
151
- <!-- <a-form-item label="第一计量单位"> </a-form-item>-->
152
- <!-- </d-grid-item>-->
153
- <!-- <d-grid-item>-->
154
- <!-- <a-form-item label="第二计量单位"> </a-form-item>-->
155
- <!-- </d-grid-item>-->
156
- <!-- <d-grid-item>-->
157
- <!-- <a-form-item label="申报数量(千克)"> </a-form-item>-->
158
- <!-- </d-grid-item>-->
159
- <!-- <d-grid-item>-->
160
- <!-- <a-form-item label="第一数量"> </a-form-item>-->
161
- <!-- </d-grid-item>-->
162
- <!-- <d-grid-item>-->
163
- <!-- <a-form-item label="第二数量"> </a-form-item>-->
164
- <!-- </d-grid-item>-->
165
- <!-- <d-grid-item>-->
166
- <!-- <a-form-item label="毛重(KG)"> </a-form-item>-->
167
- <!-- </d-grid-item>-->
168
- <!-- <d-grid-item>-->
169
- <!-- <a-form-item label="净重(KG)"> </a-form-item>-->
170
- <!-- </d-grid-item>-->
171
- <!-- <d-grid-item>-->
172
- <!-- <a-form-item label="产销国"> </a-form-item>-->
173
- <!-- </d-grid-item>-->
174
- <!-- <d-grid-item>-->
175
- <!-- <a-form-item label="申报单价(元)"> </a-form-item>-->
176
- <!-- </d-grid-item>-->
177
- <!-- <d-grid-item>-->
178
- <!-- <a-form-item label="申报总价(元)"> </a-form-item>-->
179
- <!-- </d-grid-item>-->
180
- <!-- <d-grid-item>-->
181
- <!-- <a-form-item label="存储条件"> </a-form-item>-->
182
- <!-- </d-grid-item>-->
183
- <!-- <d-grid-item>-->
184
- <!-- <a-form-item label="用途"> </a-form-item>-->
185
- <!-- </d-grid-item>-->
186
- <!-- </d-grid>-->
187
- <!-- </a-form>-->
188
- <!-- </a-card>-->
189
36
  <template #footer>
190
37
  <a-space>
191
38
  <a-button type="primary" @click="loading = true">暂存</a-button>
@@ -201,5 +48,4 @@ export default {
201
48
  font-weight: bold;
202
49
  color: #2589ff;
203
50
  }
204
-
205
51
  </style>
@@ -20,7 +20,8 @@ export const useTable = () => {
20
20
  columns,
21
21
  // bordered: true,
22
22
  pagination,
23
- selection: "N",
23
+
24
+ clickSelectedClassName: "ant-table-row-selected",
24
25
  onPageChange,
25
26
  dbClick: (record: any) => {
26
27
  const index = selectedRowKeys.value.indexOf(record.id);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ditari/bsui",
3
- "version": "1.1.36",
3
+ "version": "1.1.38",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "",
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * FUCK MAIN 入口文件
4
4
  */
5
- import { computed, provide } from "vue";
5
+ import { computed } from "vue";
6
6
  import { MenuFoldOutlined, MenuUnfoldOutlined } from "@ant-design/icons-vue";
7
7
  import { useKeepAliveStore, useSettingsStore } from "@ditari/store";
8
8
 
@@ -11,15 +11,6 @@ import DNavTabs from "./NavTabs.vue";
11
11
  // 菜单组件
12
12
  import Menu from "../menu/Menu";
13
13
 
14
- const props = withDefaults(
15
- defineProps<{
16
- showConfig: any;
17
- }>(),
18
- {
19
- showConfig: { backBtn: "LeftOutlined" } as any
20
- }
21
- );
22
-
23
14
  // 缓存store
24
15
  const store = useKeepAliveStore();
25
16
  // 缓存的names
@@ -28,9 +19,6 @@ const keepAliveNames = computed(() => store.get);
28
19
  const settingsStore = useSettingsStore();
29
20
  const { switchCollapsed } = settingsStore;
30
21
  const collapsedStatus = computed(() => settingsStore.getCollapsed);
31
-
32
- // 注入show组件的配置文件
33
- provide("showConfig", props.showConfig);
34
22
  </script>
35
23
  <template>
36
24
  <a-layout class="ditari-layout">
@@ -67,25 +55,6 @@ provide("showConfig", props.showConfig);
67
55
  <div class="ditari-user-menu">
68
56
  <slot name="operation"></slot>
69
57
  </div>
70
- <!-- <div class="ditari-layout-header">-->
71
- <!-- <div class="ditari-layout-header-left">-->
72
- <!-- <div class="ditari-side-collapsed" @click="switchCollapsed">-->
73
- <!-- <menu-unfold-outlined-->
74
- <!-- v-if="collapsedStatus"-->
75
- <!-- class="trigger"-->
76
- <!-- style="font-size: 16px; font-weight: bold; cursor: pointer"-->
77
- <!-- />-->
78
- <!-- <menu-fold-outlined-->
79
- <!-- v-else-->
80
- <!-- style="font-size: 16px; font-weight: bold; cursor: pointer"-->
81
- <!-- />-->
82
- <!-- </div>-->
83
- <!-- -->
84
- <!-- </div>-->
85
- <!-- <div class="ditari-user-menu">-->
86
- <!-- <slot name="operation"></slot>-->
87
- <!-- </div>-->
88
- <!-- </div>-->
89
58
  </div>
90
59
  <a-layout-content
91
60
  style="margin-top: 42px"
@@ -31,7 +31,7 @@ const navTabStore = useNavTabsStore();
31
31
  const settingsStore = useSettingsStore();
32
32
 
33
33
  const showConfig = inject("showConfig") as any;
34
-
34
+ const collapsedStatus = computed(() => settingsStore.getCollapsed);
35
35
  const btnRender = () => {
36
36
  if (!showConfig) {
37
37
  return h(LeftOutlined);
@@ -118,7 +118,11 @@ defineExpose({
118
118
  <div class="ditari-show-content" :style="contentStyle">
119
119
  <slot></slot>
120
120
  </div>
121
- <div v-if="$slots.footer" class="ditari-show-footer">
121
+ <div
122
+ v-if="$slots.footer"
123
+ class="ditari-show-footer"
124
+ :style="{ left: collapsedStatus ? '80px' : '200px' }"
125
+ >
122
126
  <slot name="footer"></slot>
123
127
  </div>
124
128
  </a-spin>
@@ -344,10 +344,28 @@ const DXTable = defineComponent({
344
344
  emit("update:keys", selectedRowKeys.value);
345
345
  };
346
346
 
347
+ function onClickSelectedBg(event: any) {
348
+ const { clickSelectedClassName } = props.config;
349
+ if (!clickSelectedClassName) return;
350
+ const curEl = event.target;
351
+ // 找到父元素
352
+ const parentElement = curEl.parentNode;
353
+ // 判断父元素是否有某个 class
354
+ if (!parentElement.classList.contains(clickSelectedClassName)) {
355
+ // 如果父元素没有指定的 class,则添加 class
356
+ parentElement.classList.add(clickSelectedClassName);
357
+ } else {
358
+ // 如果父元素已经有指定的 class,则移除 class
359
+ parentElement.classList.remove(clickSelectedClassName);
360
+ }
361
+ }
362
+
347
363
  return {
348
- onClick: () => {
364
+ onClick: (event: any) => {
349
365
  clearTimeout(clickTimeout);
350
366
  clickTimeout = setTimeout(() => {
367
+ // 处理背景激活逻辑
368
+ onClickSelectedBg(event);
351
369
  // 处理单击事件业务
352
370
  onClick();
353
371
  // 回传数据 自定义单击后的业务
@@ -359,15 +377,6 @@ const DXTable = defineComponent({
359
377
  // 回传数据 自定义单击后的业务
360
378
  dbClick ? dbClick(record, index) : undefined;
361
379
  }
362
- // onContextmenu: (event) => {
363
- // //TODO
364
- // },
365
- // onMouseenter: (event) => {
366
- // //TODO
367
- // }, // 鼠标移入行
368
- // onMouseleave: (event) => {
369
- // //TODO
370
- // }
371
380
  };
372
381
  };
373
382
  }
@@ -27,6 +27,8 @@ export interface Config {
27
27
  dbClick?: (record: any) => void;
28
28
  // 选择框的默认属性配置
29
29
  getCheckboxProps?: (record: any) => any;
30
+ // 点击激活背景色的class
31
+ clickSelectedClassName?: string;
30
32
  // 分页配置
31
33
  pageOption: {
32
34
  sizeOptions: string[];