车间能级提升-智能设备管理系统
朱桂飞
2025-01-09 3e8f7f239bedae0b4f04a1ac6bd443ba6298f73c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
import type { MenuRecordBadgeRaw, ThemeModeType } from '@vben-core/typings';
 
import type { Component, Ref } from 'vue';
 
interface MenuProps {
  /**
   * @zh_CN 是否开启手风琴模式
   * @default true
   */
  accordion?: boolean;
  /**
   * @zh_CN 菜单是否折叠
   * @default false
   */
  collapse?: boolean;
 
  /**
   * @zh_CN 菜单折叠时是否显示菜单名称
   * @default false
   */
  collapseShowTitle?: boolean;
 
  /**
   * @zh_CN 默认激活的菜单
   */
  defaultActive?: string;
 
  /**
   * @zh_CN 默认展开的菜单
   */
  defaultOpeneds?: string[];
 
  /**
   * @zh_CN 菜单模式
   * @default vertical
   */
  mode?: 'horizontal' | 'vertical';
 
  /**
   * @zh_CN 是否圆润风格
   * @default true
   */
  rounded?: boolean;
 
  /**
   * @zh_CN 菜单主题
   * @default dark
   */
  theme?: ThemeModeType;
}
 
interface SubMenuProps extends MenuRecordBadgeRaw {
  /**
   * @zh_CN 激活图标
   */
  activeIcon?: string;
  /**
   * @zh_CN 是否禁用
   */
  disabled?: boolean;
  /**
   * @zh_CN 图标
   */
  icon?: Component | string;
  /**
   * @zh_CN submenu 名称
   */
  path: string;
}
 
interface MenuItemProps extends MenuRecordBadgeRaw {
  /**
   * @zh_CN 图标
   */
  activeIcon?: string;
  /**
   * @zh_CN 是否禁用
   */
  disabled?: boolean;
  /**
   * @zh_CN 图标
   */
  icon?: Component | string;
  /**
   * @zh_CN menuitem 名称
   */
  path: string;
}
 
interface MenuItemRegistered {
  active: boolean;
  parentPaths: string[];
  path: string;
}
 
interface MenuItemClicked {
  parentPaths: string[];
  path: string;
}
 
interface MenuProvider {
  activePath?: string;
  addMenuItem: (item: MenuItemRegistered) => void;
 
  addSubMenu: (item: MenuItemRegistered) => void;
  closeMenu: (path: string, parentLinks: string[]) => void;
  handleMenuItemClick: (item: MenuItemClicked) => void;
  handleSubMenuClick: (subMenu: MenuItemRegistered) => void;
  isMenuPopup: boolean;
  items: Record<string, MenuItemRegistered>;
 
  openedMenus: string[];
  openMenu: (path: string, parentLinks: string[]) => void;
  props: MenuProps;
  removeMenuItem: (item: MenuItemRegistered) => void;
 
  removeSubMenu: (item: MenuItemRegistered) => void;
 
  subMenus: Record<string, MenuItemRegistered>;
  theme: string;
}
 
interface SubMenuProvider {
  addSubMenu: (item: MenuItemRegistered) => void;
  handleMouseleave?: (deepDispatch: boolean) => void;
  level: number;
  mouseInChild: Ref<boolean>;
  removeSubMenu: (item: MenuItemRegistered) => void;
}
 
export type {
  MenuItemClicked,
  MenuItemProps,
  MenuItemRegistered,
  MenuProps,
  MenuProvider,
  SubMenuProps,
  SubMenuProvider,
};