From 44709668c91a392dd0c346d6a15b07144ebf41ea Mon Sep 17 00:00:00 2001
From: zs <zhousong@weben-smart.com>
Date: 周三, 30 4月 2025 19:55:29 +0800
Subject: [PATCH] 库位条件查询
---
HIAWms/web/src/components/vue3-context-menu/ContextMenu.vue | 70 +++++++++++++++++++++++++++++++++++
1 files changed, 70 insertions(+), 0 deletions(-)
diff --git a/HIAWms/web/src/components/vue3-context-menu/ContextMenu.vue b/HIAWms/web/src/components/vue3-context-menu/ContextMenu.vue
new file mode 100644
index 0000000..8b4c115
--- /dev/null
+++ b/HIAWms/web/src/components/vue3-context-menu/ContextMenu.vue
@@ -0,0 +1,70 @@
+<script lang="ts">
+import { defineComponent, h, Teleport, toRefs } from 'vue'
+import type { PropType, VNode } from 'vue'
+import type { MenuOptions } from './ContextMenuDefine'
+import { genContainer } from "./ContextMenuUtils";
+import ContextSubMenuWrapperConstructor from './ContextSubMenuWrapper.vue'
+
+export type GlobalHasSlot = (name: string) => boolean;
+export type GlobalRenderSlot = (name: string, params: Record<string, unknown>) => VNode;
+
+/**
+ * Context menu component
+ */
+export default defineComponent({
+ name: 'ContextMenu',
+ emits: [ 'update:show', 'close' ],
+ props: {
+ /**
+ * Menu options
+ */
+ options: {
+ type: Object as PropType<MenuOptions>,
+ default: null
+ },
+ /**
+ * Show menu?
+ */
+ show: {
+ type: Boolean,
+ default: false
+ },
+ },
+ setup(props, ctx) {
+
+ const {
+ options,
+ show,
+ } = toRefs(props);
+
+ ctx.expose({
+ closeMenu: () => ctx.emit('update:show', false),
+ isClosed: () => !show.value,
+ });
+
+ return () => {
+ const { isNew, container, eleId } = genContainer(options.value);
+
+ return [
+ h(
+ Teleport,
+ { to: `#${eleId}` },
+ [
+ h(ContextSubMenuWrapperConstructor as unknown as string, {
+ options: options,
+ show: show,
+ container: container,
+ isFullScreenContainer: !isNew,
+ onClose: (fromItem: undefined) => {
+ ctx.emit('update:show', false);
+ ctx.emit('close');
+ options.value.onClose?.(fromItem);
+ },
+ }, ctx.slots)
+ ]
+ )
+ ];
+ }
+ },
+})
+</script>
--
Gitblit v1.9.3