From 8859ee5f295348b930a24accfcbb10342115fc9d Mon Sep 17 00:00:00 2001 From: puhui999 Date: Fri, 9 May 2025 16:42:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20useTableToolbar=20?= =?UTF-8?q?hooks=20=E7=AE=80=E5=8C=96=20toolbar=20=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E6=A0=8F=E6=8C=82=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web-antd/src/hooks/index.ts | 1 + apps/web-antd/src/hooks/use-table-toolbar.ts | 36 + .../views/infra/demo/general/demo01/index.vue | 20 +- .../views/infra/demo/general/demo02/index.vue | 24 +- .../infra/demo/general/demo03/erp/index.vue | 24 +- .../demo03/erp/modules/demo03-course-list.vue | 22 +- .../demo03/erp/modules/demo03-grade-list.vue | 22 +- .../infra/demo/general/demo03/inner/index.vue | 24 +- .../inner/modules/demo03-course-form.vue | 5 +- .../inner/modules/demo03-course-list.vue | 4 +- .../inner/modules/demo03-grade-list.vue | 3 +- .../demo/general/demo03/normal/index.vue | 24 +- .../normal/modules/demo03-course-form.vue | 5 +- pnpm-lock.yaml | 1473 +++++++++-------- 14 files changed, 823 insertions(+), 864 deletions(-) create mode 100644 apps/web-antd/src/hooks/index.ts create mode 100644 apps/web-antd/src/hooks/use-table-toolbar.ts diff --git a/apps/web-antd/src/hooks/index.ts b/apps/web-antd/src/hooks/index.ts new file mode 100644 index 00000000..75f01b53 --- /dev/null +++ b/apps/web-antd/src/hooks/index.ts @@ -0,0 +1 @@ +export * from './use-table-toolbar'; diff --git a/apps/web-antd/src/hooks/use-table-toolbar.ts b/apps/web-antd/src/hooks/use-table-toolbar.ts new file mode 100644 index 00000000..c8fd01a2 --- /dev/null +++ b/apps/web-antd/src/hooks/use-table-toolbar.ts @@ -0,0 +1,36 @@ +import type { VxeTableInstance } from '#/adapter/vxe-table'; +import type { TableToolbar } from '#/components/table-toolbar'; + +import { ref, watch } from 'vue'; + +export function useTableToolbar() { + const hiddenSearchBar = ref(false); // 隐藏搜索栏 + const tableToolbarRef = ref>(); + const tableRef = ref(); + const isBound = ref(false); + + /** 挂载 toolbar 工具栏 */ + async function bindTableToolbar() { + const table = tableRef.value; + const tableToolbar = tableToolbarRef.value; + if (table && tableToolbar) { + await table.connect(tableToolbar.getToolbarRef()!); + isBound.value = true; + } + } + + watch( + () => tableRef.value, + (val) => { + if (!val || isBound.value) return; + bindTableToolbar(); + }, + { immediate: true }, + ); + + return { + hiddenSearchBar, + tableToolbarRef, + tableRef, + }; +} diff --git a/apps/web-antd/src/views/infra/demo/general/demo01/index.vue b/apps/web-antd/src/views/infra/demo/general/demo01/index.vue index 9a856fee..b9249f0e 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo01/index.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo01/index.vue @@ -1,8 +1,7 @@ diff --git a/apps/web-antd/src/views/infra/demo/general/demo02/index.vue b/apps/web-antd/src/views/infra/demo/general/demo02/index.vue index 787ead28..cbd25210 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo02/index.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo02/index.vue @@ -1,9 +1,7 @@ diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/erp/index.vue b/apps/web-antd/src/views/infra/demo/general/demo03/erp/index.vue index eac71e3e..237f5d41 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/erp/index.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/erp/index.vue @@ -1,9 +1,7 @@ diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-course-list.vue b/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-course-list.vue index d73eb780..346032d3 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-course-list.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-course-list.vue @@ -1,6 +1,4 @@ diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-grade-list.vue b/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-grade-list.vue index 30c4e425..921d896d 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-grade-list.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-grade-list.vue @@ -1,6 +1,4 @@ diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/inner/index.vue b/apps/web-antd/src/views/infra/demo/general/demo03/inner/index.vue index c04af694..71f005b8 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/inner/index.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/inner/index.vue @@ -1,9 +1,7 @@ diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/inner/modules/demo03-course-form.vue b/apps/web-antd/src/views/infra/demo/general/demo03/inner/modules/demo03-course-form.vue index 26c1e890..3736a841 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/inner/modules/demo03-course-form.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/inner/modules/demo03-course-form.vue @@ -1,6 +1,5 @@ diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/normal/modules/demo03-course-form.vue b/apps/web-antd/src/views/infra/demo/general/demo03/normal/modules/demo03-course-form.vue index 26c1e890..3736a841 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/normal/modules/demo03-course-form.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/normal/modules/demo03-course-form.vue @@ -1,6 +1,5 @@