php短视频源码,vue递归动态加载菜单

php短视频源码,vue递归动态加载菜单

1
/**<br> * 静态路由懒加载<br> * @param view  格式必须为 xxx/xxx 开头不要加斜杠<br> * @returns<br> */<br>export const loadView = (view) => {<br>return (resolve) => require([`@/views/${view}.vue`], resolve)<br>}<br>export function   GetMenuData(menuRouters,data){<br>    if(data=='' ||data==undefined || data.length==0 ){<br>      return Message.success('菜单数据为空')<br>    }<br>    let  menuList = JSON.parse(JSON.stringify(data)); //深拷贝<br>    // let menuRouters = []<br>// const menuRouters = Object.assign([], asyncRoutes)<br>    menuList.forEach((m, i) => {<br>            if (m.upid == '0') { //最外层,没有父层的<br>                let module = {<br>                    path:m.path,<br>children: [],<br>                    component: m.component === '#' ? Layout : loadView(m.component),<br>                    name: m.code,<br>hidden: m.hiddenStatus === 0, // 状态为0的隐藏<br>redirect: m.redirect,<br>                    meta: {  id: m.id,title: m.metaTitle, icon: m.metaIcon},<br>                }<br>                menuRouters.push(module);<br>            }<br>            <br>        })<br>        function convertTree(routers) { //递归添加children<br>          routers.forEach(r=>{<br>            menuList.forEach((m,i)=>{<br>                if(m.upid && m.upid == r.meta.id){<br>                    if(!r.children) {r.children=[]; };<br>                    // let key=m.url.lastIndexOf('/')<br>                    // let fileName=m.url.slice(key); //后端传的/system/user 我需要这样/system/user/user<br>                    let menu={<br>                      path:m.path,<br>                      name:m.code,<br>                      children: [],<br>  hidden: m.hiddenStatus === 0, // 状态为0的隐藏<br>  redirect: m.redirect,<br>                      component: m.component === '#' ? Layout : loadView(m.component),<br>                      meta:{id:m.id,title:m.metaTitle, icon: m.metaIcon}<br>                    }<br>                    r.children.push(menu) <br>                }<br> <br>              })<br>              if(r.children) convertTree(r.children)<br>          })<br>        }<br>       convertTree(menuRouters);<br> <br>       return menuRouters<br> <br>  }<br>const actions = {<br>generateRoutes({<br>commit<br>}, token) {<br>return new Promise(resolve => {<br> <br>// 通过token从后端获取用户菜单,并加入全局状态<br>GetCourseCategoryList(token).then(res => {<br>const menuData = Object.assign([], res)<br>const tempAsyncRoutes = Object.assign([], asyncRoutes)<br>// alert("info: "+token)<br>// const accessedRoutes = generaMenu(tempAsyncRoutes, menuData)<br>const accessedRoutes = GetMenuData(tempAsyncRoutes,res)<br>commit('SET_ROUTES', accessedRoutes)<br>resolve(accessedRoutes)<br>}).catch(error => {<br>console.log(error)<br>})<br>})<br>}<br>}

​以上就是php短视频源码,vue递归动态加载菜单, 更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示