<template> <el-breadcrumb separator="/"> <el-breadcrumb-item :to='item.path' :key='index' v-for="(item, index) in breadcrumb" > {{item.name}} </el-breadcrumb-item> </el-breadcrumb> </template> <script> // 获取多级菜单 const types = { list: '列表', add: '新增', edit: '编辑', view: '查看', importView: '导入', resetPwdView:'重置密码', }; const findEntity = (list, value, key) => { let data = {}; list.forEach((item, i)=>{ if(item[key] === value) { data = item; return; } }) return data; }; const find = (list, path, arr) => { // 获取二级菜单 let newList = JSON.parse(JSON.stringify(list)); let data = findEntity(newList, path, 'path'); let parentId = data.parentId; arr.push(data); // 获取一级菜单 if(parentId){ let parent = findEntity(newList, parentId, 'id'); arr.unshift(parent); } return arr } export default { props: { list: { type: Array, default: () => [] } }, watch: { '$route'(route) { this.query = route.query; } }, computed: { breadcrumb() { // 如果用户指定面包屑,则使用用户配置 if(this.list.length) { return this.list; } const path = this.$route.path.replace(/\/(list|add|edit|importView|view|resetPwdView)$/, '/list'); const group = find(this.menu, path, []); let urlArray = this.$route.path.split('/'); const type = urlArray.pop(); group.unshift({ name: "政务在线考试学习系统" }) if(types[type]) { group.push({ name: types[type] }) } console.log("group",group) return group }, menu() { return this.$store.state.userData.flat || []; }, }, data() { return { } } } </script> <style lang="less"> .el-breadcrumb{ font-size: 12px; } </style>