Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
8d6cfce8
提交
8d6cfce8
authored
3月 12, 2019
作者:
sin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
- 修改后台配置菜单
上级
2385f239
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
85 行增加
和
24 行删除
+85
-24
menu.js
admin-web/src/models/menu.js
+85
-24
没有找到文件。
admin-web/src/models/menu.js
x
→
admin-web/src/models/menu.js
浏览文件 @
8d6cfce8
...
@@ -72,20 +72,87 @@ const filterMenuData = menuData => {
...
@@ -72,20 +72,87 @@ const filterMenuData = menuData => {
.
filter
(
item
=>
item
);
.
filter
(
item
=>
item
);
};
};
/**
// 用于生成uuid
* 递归构建服务端,配置的菜单
function
S4
()
{
* @param resultMenuData
return
((
1
+
Math
.
random
())
*
0x10000
||
0
).
toString
(
16
).
substring
(
1
);
*/
}
const
recursionBuildResultMenu
=
resultMenuData
=>
{
function
guid
()
{
const
res
=
{};
return
S4
()
+
S4
()
+
S4
()
+
S4
()
+
S4
()
+
S4
()
+
S4
()
+
S4
();
for
(
let
i
=
0
;
i
<
resultMenuData
.
length
;
i
+=
1
)
{
}
const
menuItem
=
resultMenuData
[
i
];
// 存在子节点
const
findRootMenu
=
(
antDataMenus
,
rootAntDataMenu
,
requestDataMenu
)
=>
{
res
[
menuItem
.
handler
]
=
{
let
res
;
...
menuItem
,
for
(
let
i
=
0
;
i
<
antDataMenus
.
length
;
i
+=
1
)
{
const
antDataMenu
=
antDataMenus
[
i
];
if
(
antDataMenu
.
path
===
requestDataMenu
.
handler
)
{
res
=
rootAntDataMenu
;
break
;
}
if
(
antDataMenu
.
children
)
{
res
=
findRootMenu
(
antDataMenu
.
children
,
antDataMenu
,
requestDataMenu
);
break
;
}
}
return
res
;
};
const
buildTreeMenu
=
(
antMenuData
,
moveChildrenMenusData
,
requestDataMenus
)
=>
{
return
requestDataMenus
.
map
(
item
=>
{
if
(
!
item
.
handler
)
{
// root 节点
const
uuid
=
`sms
${
guid
()}
`
;
const
res
=
{
icon
:
'user'
,
name
:
item
.
displayName
,
path
:
uuid
,
};
// 子节点
if
(
item
.
children
)
{
// 通过子节点找到对于的父节点,设置 path,没有则是 uuid
const
rootMenu
=
findRootMenu
(
antMenuData
,
{},
item
.
children
[
0
]);
if
(
rootMenu
)
{
res
.
path
=
rootMenu
.
path
;
}
// 开始递归构建数据结构
const
childrenMenus
=
buildTreeMenu
(
antMenuData
,
moveChildrenMenusData
,
item
.
children
);
res
.
children
=
childrenMenus
;
}
return
res
;
}
// moveChildrenMenusData 是一个 map,对比 url 地址是否存在,不存在就给一个 404 的页面
const
handleMapperData
=
moveChildrenMenusData
[
item
.
handler
];
if
(
handleMapperData
)
{
return
{
...
handleMapperData
,
icon
:
'user'
,
name
:
item
.
displayName
,
path
:
item
.
handler
,
};
}
// 没有就返回404页面
return
moveChildrenMenusData
[
'/exception/404'
];
});
};
const
moveChildrenMenus
=
antDataMenus
=>
{
let
res
=
{};
for
(
let
i
=
0
;
i
<
antDataMenus
.
length
;
i
+=
1
)
{
const
antDataMenu
=
antDataMenus
[
i
];
res
[
antDataMenu
.
path
]
=
{
...
res
,
...
antDataMenu
,
};
};
if
(
menuItem
.
children
)
{
res
[
menuItem
.
handler
].
children
=
recursionBuildResultMenu
(
menuItem
.
children
);
if
(
antDataMenu
.
children
)
{
const
childrenMenus
=
moveChildrenMenus
(
antDataMenu
.
children
);
res
=
{
...
res
,
...
childrenMenus
,
};
}
}
}
}
return
res
;
return
res
;
...
@@ -126,21 +193,15 @@ export default {
...
@@ -126,21 +193,15 @@ export default {
*
getMenuData
({
payload
},
{
put
,
call
})
{
*
getMenuData
({
payload
},
{
put
,
call
})
{
const
{
data
}
=
yield
call
(
getAdminMenus
);
const
{
data
}
=
yield
call
(
getAdminMenus
);
const
{
routes
,
authority
}
=
payload
;
const
{
routes
,
authority
}
=
payload
;
// authority 已经不适用
// authority 已经不适用
const
antMenuData
=
filterMenuData
(
memoizeOneFormatter
(
routes
,
authority
));
const
antMenuData
=
filterMenuData
(
memoizeOneFormatter
(
routes
,
authority
));
let
menuData
=
antMenuData
;
let
menuData
=
antMenuData
;
const
resultMenuData
=
data
;
//
const resultMenuData = data;
if
(
data
!==
'all'
)
{
if
(
data
!==
'all'
)
{
// 处理后台数据结构
const
moveChildrenMenusData
=
moveChildrenMenus
(
antMenuData
);
const
buildResultMenu
=
recursionBuildResultMenu
(
resultMenuData
);
const
buildTreeMenuData
=
buildTreeMenu
(
antMenuData
,
moveChildrenMenusData
,
data
);
// 过滤没有权限的菜单
menuData
=
buildTreeMenuData
;
menuData
=
antMenuData
.
filter
(
item
=>
{
if
(
buildResultMenu
[
item
.
path
])
{
return
item
;
}
return
false
;
});
}
}
// 生成 menu 和 router mapping
// 生成 menu 和 router mapping
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论