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递归动态加载菜单, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现