Files
django-vue3-admin/web/src/utils/menu.ts
猿小天 7ae15022c0 新功能:
1.菜单新增框架外显示字段
2023-12-24 23:05:00 +08:00

80 lines
2.2 KiB
TypeScript

import XEUtils from "xe-utils"
import {dynamicRoutes, staticRoutes} from "/@/router/route";
/**
* @description: 处理后端菜单数据格式
* @param {Array} menuData
* @return {*}
*/
export const handleMenu = (menuData: Array<any>) => {
// 先处理menu meta数据转换
const handleMeta = (item: any) => {
item.meta = {
title: item.title,
isLink: item.link_url,
isHide: !item.visible,
isKeepAlive: item.cache,
isAffix: item.is_affix,
isIframe: item.is_iframe,
roles: ['admin'],
icon: item.icon
}
item.name = item.component_name
item.path = item.web_path
return item
}
// 处理框架外的路由
const handleFrame = (item: any) => {
if (item.is_iframe) {
item.meta = {
title: item.title,
isLink: item.link_url,
isHide: !item.visible,
isKeepAlive: item.cache,
isAffix: item.is_affix,
isIframe: item.is_iframe,
roles: ['admin'],
icon: item.icon
}
item.name = item.component_name
item.path = item.web_path
}
return item
}
// 框架内路由
const defaultRoutes:Array<any> = []
// 框架外路由
const iframeRoutes:Array<any> = []
menuData.forEach((val) => {
// if (val.is_iframe) {
// // iframeRoutes.push(handleFrame(val))
// } else {
// defaultRoutes.push(handleMeta(val))
// }
defaultRoutes.push(handleMeta(val))
})
const data = XEUtils.toArrayTree(defaultRoutes, {
parentKey: 'parent',
strict: true,
})
const dynamicRoutes = [
{
path: '/home', name: 'home', component: '/system/home/index', meta: {
title: 'message.router.home',
isLink: '',
isHide: false,
isKeepAlive: true,
isAffix: true,
isIframe: false,
roles: ['admin'],
icon: 'iconfont icon-shouye'
}
},
...data
]
return {frameIn:dynamicRoutes,frameOut:iframeRoutes}
}