diff --git a/apps/web-antd/src/views/bpm/model/index.vue b/apps/web-antd/src/views/bpm/model/index.vue index c51782e2..c40c53e8 100644 --- a/apps/web-antd/src/views/bpm/model/index.vue +++ b/apps/web-antd/src/views/bpm/model/index.vue @@ -152,10 +152,10 @@ const handleCategorySortSubmit = async () => { -
+
流程模型
{ + (extendedApi as ExtendedDrawerApi)?.close?.(); + }); + return [Drawer, extendedApi as ExtendedDrawerApi] as const; } diff --git a/packages/@core/ui-kit/popup-ui/src/modal/use-modal.ts b/packages/@core/ui-kit/popup-ui/src/modal/use-modal.ts index 6ece1324..048243da 100644 --- a/packages/@core/ui-kit/popup-ui/src/modal/use-modal.ts +++ b/packages/@core/ui-kit/popup-ui/src/modal/use-modal.ts @@ -1,6 +1,15 @@ import type { ExtendedModalApi, ModalApiOptions, ModalProps } from './modal'; -import { defineComponent, h, inject, nextTick, provide, reactive } from 'vue'; +import { + defineComponent, + h, + inject, + nextTick, + onDeactivated, + provide, + reactive, + ref, +} from 'vue'; import { useStore } from '@vben-core/shared/store'; @@ -24,6 +33,7 @@ export function useVbenModal( const { connectedComponent } = options; if (connectedComponent) { const extendedApi = reactive({}); + const isModalReady = ref(true); const Modal = defineComponent( (props: TParentModalProps, { attrs, slots }) => { provide(USER_MODAL_INJECT_KEY, { @@ -33,6 +43,11 @@ export function useVbenModal( Object.setPrototypeOf(extendedApi, api); }, options, + async reCreateModal() { + isModalReady.value = false; + await nextTick(); + isModalReady.value = true; + }, }); checkProps(extendedApi as ExtendedModalApi, { ...props, @@ -41,7 +56,7 @@ export function useVbenModal( }); return () => h( - connectedComponent, + isModalReady.value ? connectedComponent : 'div', { ...props, ...attrs, @@ -55,6 +70,14 @@ export function useVbenModal( inheritAttrs: false, }, ); + + /** + * 在开启keepAlive情况下 直接通过浏览器按钮/手势等返回 不会关闭弹窗 + */ + onDeactivated(() => { + (extendedApi as ExtendedModalApi)?.close?.(); + }); + return [Modal, extendedApi as ExtendedModalApi] as const; } diff --git a/packages/utils/src/helpers/generate-menus.ts b/packages/utils/src/helpers/generate-menus.ts index 823259d9..fada2f57 100644 --- a/packages/utils/src/helpers/generate-menus.ts +++ b/packages/utils/src/helpers/generate-menus.ts @@ -53,7 +53,7 @@ function generateMenus( // 处理子菜单 const resultChildren = hideChildrenInMenu ? [] - : (children as MenuRecordRaw[]); + : ((children as MenuRecordRaw[]) ?? []); // 设置子菜单的父子关系 if (resultChildren.length > 0) {