zmdms-webui 1.1.4 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,8 @@
1
1
  import React__default from 'react';
2
2
 
3
- var ztxkMenuContext = {};
3
+ var ztxkMenuContext = {
4
+ getNewPath: function () { return ""; },
5
+ };
4
6
  /** 菜单相关Context */
5
7
  var LayoutMenuContext = React__default.createContext(ztxkMenuContext);
6
8
 
@@ -35,6 +35,26 @@ var AppLayoutSider = function (props) {
35
35
  }
36
36
  return null;
37
37
  }, [apps]);
38
+ /**
39
+ * 通过传入选项、和前缀,根据规则生成一个新的路由
40
+ * 因为有些路由是配置在非本系统下面的。比如:
41
+ * A系统下的页面把它的菜单配置在B系统菜单下。这个时候B系统的菜单路由就会携带上A系统的前缀。
42
+ * 这个时候在拼接前缀的时候,就不需要拼接系统前缀了
43
+ */
44
+ var getNewPath = useCallback(function (menuItem, prefix) {
45
+ var rulePath = "";
46
+ if (menuJoinRule) {
47
+ rulePath = menuJoinRule(menuItem, prefix);
48
+ }
49
+ var path = menuItem.path;
50
+ return rulePath
51
+ ? rulePath
52
+ : path === "/"
53
+ ? "/"
54
+ : prefix
55
+ ? "/".concat(prefix).concat(path)
56
+ : path;
57
+ }, [menuJoinRule]);
38
58
  return (jsx(Layout.Sider, __assign({ className: "zmdms-sider", collapsedWidth: "0", collapsible: true, trigger: null, width: siderWidth, ref: layoutSiderRef, style: {
39
59
  backgroundImage: "url(".concat(siderBg, ")"),
40
60
  } }, { children: jsx(LayoutMenuContext.Provider, __assign({ value: {
@@ -50,7 +70,9 @@ var AppLayoutSider = function (props) {
50
70
  postMergeSystemIds: postMergeSystemIds,
51
71
  drawerTitle: drawerTitle,
52
72
  selectMainMenu: selectMainMenu,
73
+ // 这个方法封装到getNewPath里面了
53
74
  menuJoinRule: menuJoinRule,
75
+ getNewPath: getNewPath,
54
76
  renderItem: renderItem,
55
77
  } }, { children: jsx(Menu, { width: siderWidth, subMenuWidth: subMenuWidth, layoutSiderRef: layoutSiderRef, addTab: addTab, logo: logo, subMenuLogo: subMenuLogo, getPrefixByAppId: getPrefixByAppId, defaultVisible: defaultVisible, defaultFixed: defaultFixed, isShowSearchInput: isShowSearchInput }) })) })));
56
78
  };
@@ -10,7 +10,7 @@ import { Menu } from 'antd';
10
10
  // 是否隐藏菜单 isHiddenMenu 1 是 2 否
11
11
  var MainMenu = function (props) {
12
12
  var onMouseEnter = props.onMouseEnter, addTab = props.addTab, getPrefixByAppId = props.getPrefixByAppId, subMenu = props.subMenu;
13
- var _a = useContext(LayoutMenuContext), mainMenuSelectedKeys = _a.mainMenuSelectedKeys, setMainMenuSelectedKeys = _a.setMainMenuSelectedKeys, userMenus = _a.userMenus, apps = _a.apps, mergeSystemIds = _a.mergeSystemIds, postMergeSystemIds = _a.postMergeSystemIds, menuJoinRule = _a.menuJoinRule, renderItem = _a.renderItem;
13
+ var _a = useContext(LayoutMenuContext), mainMenuSelectedKeys = _a.mainMenuSelectedKeys, setMainMenuSelectedKeys = _a.setMainMenuSelectedKeys, userMenus = _a.userMenus, apps = _a.apps, mergeSystemIds = _a.mergeSystemIds, postMergeSystemIds = _a.postMergeSystemIds, getNewPath = _a.getNewPath, renderItem = _a.renderItem;
14
14
  // 获取主菜单展开的内容
15
15
  var _b = useMainMenuOpenKeys(userMenus, mainMenuSelectedKeys, { apps: apps, mergeSystemIds: mergeSystemIds, postMergeSystemIds: postMergeSystemIds }), mainMenuOpenKeys = _b.mainMenuOpenKeys, onMainMenuOpenChange = _b.onMainMenuOpenChange;
16
16
  // 创建主菜单标签
@@ -19,17 +19,7 @@ var MainMenu = function (props) {
19
19
  // 获取当前菜单的系统id
20
20
  var system = menuItem.system, path = menuItem.path;
21
21
  var prefix = getPrefixByAppId(system);
22
- var rulePath = "";
23
- if (menuJoinRule) {
24
- rulePath = menuJoinRule(menuItem, prefix);
25
- }
26
- var newPath = rulePath
27
- ? rulePath
28
- : path === "/"
29
- ? "/"
30
- : prefix
31
- ? "/".concat(prefix).concat(path)
32
- : path;
22
+ var newPath = getNewPath(menuItem, prefix);
33
23
  if (renderItem) {
34
24
  var result = renderItem(newPath, menuItem, addTab);
35
25
  if (result) {
@@ -64,7 +54,7 @@ var MainMenu = function (props) {
64
54
  label: menuItem.name,
65
55
  });
66
56
  } }, { children: menuItem.name })));
67
- }, [addTab, getPrefixByAppId, menuJoinRule, renderItem]);
57
+ }, [addTab, getPrefixByAppId, getNewPath, renderItem]);
68
58
  var items = useMemo(function () {
69
59
  var _a;
70
60
  if (!Array.isArray(userMenus)) {
@@ -15,7 +15,7 @@ import { Drawer, Menu } from 'antd';
15
15
  var defaultSubMenu = [];
16
16
  var SubMenu = function (props, ref) {
17
17
  var marginLeft = props.marginLeft, subMenuWidth = props.subMenuWidth, layoutSiderRef = props.layoutSiderRef, addTab = props.addTab, getPrefixByAppId = props.getPrefixByAppId, subMenuLogo = props.subMenuLogo, visible = props.visible, setVisible = props.setVisible, _a = props.defaultFixed, defaultFixed = _a === void 0 ? true : _a;
18
- var _b = useContext(LayoutMenuContext), mainMenuSelectedKeys = _b.mainMenuSelectedKeys, setMainMenuSelectedKeys = _b.setMainMenuSelectedKeys, activeTab = _b.activeTab, userSubMenus = _b.userSubMenus, innerUserSubMenus = _b.innerUserSubMenus, drawerTitle = _b.drawerTitle, selectMainMenu = _b.selectMainMenu, menuJoinRule = _b.menuJoinRule, renderItem = _b.renderItem;
18
+ var _b = useContext(LayoutMenuContext), mainMenuSelectedKeys = _b.mainMenuSelectedKeys, setMainMenuSelectedKeys = _b.setMainMenuSelectedKeys, activeTab = _b.activeTab, userSubMenus = _b.userSubMenus, innerUserSubMenus = _b.innerUserSubMenus, drawerTitle = _b.drawerTitle, selectMainMenu = _b.selectMainMenu, getNewPath = _b.getNewPath, renderItem = _b.renderItem;
19
19
  // 二级菜单当前选中项
20
20
  var subMenusSelectedKeys = useMemo(function () {
21
21
  return activeTab ? [activeTab] : [];
@@ -39,6 +39,7 @@ var SubMenu = function (props, ref) {
39
39
  setMainMenuSelectedKeys: setMainMenuSelectedKeys,
40
40
  selectMainMenu: selectMainMenu,
41
41
  isClickSubMenu: isClickSubMenu,
42
+ getNewPath: getNewPath,
42
43
  }), subMenuOpenKeys = _c.subMenuOpenKeys, onSubMenuOpenChange = _c.onSubMenuOpenChange;
43
44
  // 如果是搜索或者收藏 把二级菜单都展开
44
45
  useEffect(function () {
@@ -100,20 +101,10 @@ var SubMenu = function (props, ref) {
100
101
  if (Array.isArray(arr)) {
101
102
  filterMenu(arr).forEach(function (menuItem) {
102
103
  // 获取当前菜单的系统id
103
- var system = menuItem.system, path = menuItem.path;
104
+ var system = menuItem.system;
104
105
  var prefix = getPrefixByAppId(system);
105
- var rulePath = "";
106
- if (menuJoinRule) {
107
- rulePath = menuJoinRule(menuItem, prefix);
108
- }
109
106
  // 二级菜单如果没有配置路由的 不需要跳转
110
- var newPath = rulePath
111
- ? rulePath
112
- : path === "/"
113
- ? "/"
114
- : prefix
115
- ? "/".concat(prefix).concat(path)
116
- : path;
107
+ var newPath = getNewPath(menuItem, prefix);
117
108
  var getLabel = function () {
118
109
  if (renderItem) {
119
110
  var result = renderItem(newPath, menuItem, function (info) {
@@ -153,7 +144,7 @@ var SubMenu = function (props, ref) {
153
144
  };
154
145
  var newSubMenusItems = dfn(subMenus);
155
146
  return newSubMenusItems;
156
- }, [subMenus, addTab, getPrefixByAppId, menuJoinRule, renderItem]);
147
+ }, [subMenus, addTab, getPrefixByAppId, getNewPath, renderItem]);
157
148
  var classes = classNames("zmdms-menu--sub", {
158
149
  "zmdms-menu--sub-margin": !drawerTitle,
159
150
  });
@@ -82,7 +82,7 @@ function useMainMenuOpenKeys(userMenus, mainMenuSelectedKeys, options) {
82
82
  }
83
83
  // 需要打开的二级菜单
84
84
  function useSubMenuOpenKeys(userSubMenus, activeTab, options) {
85
- var getPrefixByAppId = options.getPrefixByAppId, setMainMenuSelectedKeys = options.setMainMenuSelectedKeys, selectMainMenu = options.selectMainMenu, isClickSubMenu = options.isClickSubMenu;
85
+ var getPrefixByAppId = options.getPrefixByAppId, setMainMenuSelectedKeys = options.setMainMenuSelectedKeys, selectMainMenu = options.selectMainMenu, isClickSubMenu = options.isClickSubMenu, getNewPath = options.getNewPath;
86
86
  // 展开指定的二级菜单
87
87
  var _a = useState([]), openKeys = _a[0], setOpenKeys = _a[1];
88
88
  var onOpenChange = useCallback(function (openKeys) {
@@ -126,12 +126,16 @@ function useSubMenuOpenKeys(userSubMenus, activeTab, options) {
126
126
  return "continue";
127
127
  }
128
128
  // 存放当前二级菜单的值
129
+ // 20240327 这里有一个问题,就是开发可能会再A系统配置B系统的菜单;
130
+ // 这个时候这个菜单的path 就会带上B系统的前缀;这里再去做拼接的话,就会比对不上activeTab当前选中的tab。所以这里要做下判断 如果当前菜单的path有前缀的话,那么不再做前缀的拼接
129
131
  // let currentSubMenu: any = null;
130
132
  var result = value.find(function (subMenuVal) {
131
- var system = subMenuVal.system, path = subMenuVal.path;
133
+ var system = subMenuVal.system;
132
134
  var prefix = getPrefixByAppId(system);
133
135
  // 二级菜单如果没有配置路由的 不需要跳转
134
- var newPath = path === "/" ? "/" : prefix ? "/".concat(prefix).concat(path) : path;
136
+ // const newPath =
137
+ // path === "/" ? "/" : prefix ? `/${prefix}${path}` : path;
138
+ var newPath = getNewPath(subMenuVal, prefix);
135
139
  // 如果值相等的话,说明这个就是目标值
136
140
  // 即父级就是当前选中项
137
141
  if (newPath === activeTab) {
@@ -187,6 +191,7 @@ function useSubMenuOpenKeys(userSubMenus, activeTab, options) {
187
191
  setMainMenuSelectedKeys,
188
192
  selectMainMenu,
189
193
  isClickSubMenu,
194
+ getNewPath,
190
195
  ]);
191
196
  return {
192
197
  subMenuOpenKeys: openKeys,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zmdms-webui",
3
- "version": "1.1.4",
3
+ "version": "1.1.5",
4
4
  "private": false,
5
5
  "main": "dist/index.es.js",
6
6
  "module": "dist/index.es.js",