From d1ef1192b2b84d8d125131272909f8ca621f6e2e Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Mon, 6 Jan 2025 12:36:57 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E5=85=A8=E5=B1=8F=E5=BC=95=E5=AF=BC+?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web-antd/src/components/tree/src/hook.tsx | 57 +++++++++++++++++++ .../components/tree/src/menu-select-table.vue | 11 +++- .../views/system/role-beta/role-drawer.vue | 12 ++-- 3 files changed, 72 insertions(+), 8 deletions(-) create mode 100644 apps/web-antd/src/components/tree/src/hook.tsx diff --git a/apps/web-antd/src/components/tree/src/hook.tsx b/apps/web-antd/src/components/tree/src/hook.tsx new file mode 100644 index 00000000..31b52bdd --- /dev/null +++ b/apps/web-antd/src/components/tree/src/hook.tsx @@ -0,0 +1,57 @@ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ +import type { TourProps } from 'ant-design-vue'; + +import { defineComponent, ref } from 'vue'; + +import { useLocalStorage } from '@vueuse/core'; +import { Tour } from 'ant-design-vue'; + +/** + * 全屏引导 + * @returns value + */ +export function useFullScreenGuide() { + const open = ref(false); + /** + * 是否已读 只显示一次 + */ + const read = useLocalStorage('menu_select_fullscreen_read', false); + + function openGuide() { + if (!read.value) { + open.value = true; + } + } + + function closeGuide() { + open.value = false; + read.value = true; + } + + const steps: TourProps['steps'] = [ + { + title: '提示', + description: '点击这里可以全屏', + target: () => + document.querySelector( + 'div#menu-select-table .vxe-tools--operate > button[title="全屏"]', + )!, + }, + ]; + + const FullScreenGuide = defineComponent({ + name: 'FullScreenGuide', + inheritAttrs: false, + setup() { + return () => ( + + ); + }, + }); + + return { + FullScreenGuide, + openGuide, + closeGuide, + }; +} diff --git a/apps/web-antd/src/components/tree/src/menu-select-table.vue b/apps/web-antd/src/components/tree/src/menu-select-table.vue index 43643fbf..e4d14a12 100644 --- a/apps/web-antd/src/components/tree/src/menu-select-table.vue +++ b/apps/web-antd/src/components/tree/src/menu-select-table.vue @@ -15,6 +15,7 @@ import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { columns, nodeOptions } from './data'; import { menusWithPermissions, rowAndChildrenChecked } from './helper'; +import { useFullScreenGuide } from './hook'; defineOptions({ name: 'MenuSelectTable', @@ -169,6 +170,7 @@ function setCheckedByKeys( }); } +const { FullScreenGuide, openGuide } = useFullScreenGuide(); onMounted(() => { /** * 加载表格数据 转为指定结构 @@ -212,6 +214,9 @@ onMounted(() => { const records = tableApi.grid.getData(); setCheckedByKeys(records, allCheckedKeys, association.value); updateCheckedNumber(); + + // 全屏引导 + setTimeout(() => openGuide, 1000); }, ); }); @@ -329,8 +334,7 @@ defineExpose({