diff --git a/apps/web-antd/src/app.vue b/apps/web-antd/src/app.vue
index 4921d77d..46515f7a 100644
--- a/apps/web-antd/src/app.vue
+++ b/apps/web-antd/src/app.vue
@@ -9,6 +9,7 @@ import { App, ConfigProvider, theme } from 'antdv-next';
import { antdLocale } from '#/locales';
import { useUploadTip } from './upload-tip';
+import { PopupContext } from './utils/context';
defineOptions({ name: 'App' });
@@ -38,6 +39,7 @@ useUploadTip();
+
diff --git a/apps/web-antd/src/utils/context.tsx b/apps/web-antd/src/utils/context.tsx
new file mode 100644
index 00000000..f7d5ca82
--- /dev/null
+++ b/apps/web-antd/src/utils/context.tsx
@@ -0,0 +1,20 @@
+import { defineComponent } from 'vue';
+
+import { App } from 'antdv-next';
+
+/**
+ * 弹窗上下文
+ * 提供 message, modal, notification 方法
+ * @see https://ant.design/components/app-cn#global-scene-redux
+ */
+export const PopupContext = defineComponent({
+ name: 'PopupContext',
+ render() {
+ const staticFunction = App.useApp();
+ window.message = staticFunction.message;
+ window.modal = staticFunction.modal;
+ window.notification = staticFunction.notification;
+
+ return null;
+ },
+});
diff --git a/apps/web-antd/src/views/dashboard/analytics/index.vue b/apps/web-antd/src/views/dashboard/analytics/index.vue
index a93a98ca..86a8a4c3 100644
--- a/apps/web-antd/src/views/dashboard/analytics/index.vue
+++ b/apps/web-antd/src/views/dashboard/analytics/index.vue
@@ -15,7 +15,7 @@ import {
SvgDownloadIcon,
} from '@vben/icons';
-import { Alert, notification } from 'antdv-next';
+import { Alert } from 'antdv-next';
import AnalyticsTrends from './analytics-trends.vue';
import AnalyticsVisitsData from './analytics-visits-data.vue';
@@ -67,7 +67,7 @@ const chartTabs: TabOption[] = [
];
function handleClick() {
- notification.success({
+ window.notification.success({
title: '新的 notification 样式',
description: 'ant design',
});
diff --git a/apps/web-antd/types/global.d.ts b/apps/web-antd/types/global.d.ts
new file mode 100644
index 00000000..0ac11cc1
--- /dev/null
+++ b/apps/web-antd/types/global.d.ts
@@ -0,0 +1,11 @@
+import type { MessageInstance } from 'antdv-next/dist/message/interface';
+import type { ModalStaticFunctions } from 'antdv-next/dist/modal/confirm';
+import type { NotificationInstance } from 'antdv-next/dist/notification/interface';
+
+declare global {
+ interface Window {
+ message: MessageInstance;
+ modal: Omit;
+ notification: NotificationInstance;
+ }
+}