|  | @@ -1,26 +1,24 @@
 | 
	
		
			
				|  |  |  <template>
 | 
	
		
			
				|  |  | -  <div class="menu-wrapper">
 | 
	
		
			
				|  |  | -    <template v-for="item in routes" v-if="!item.hidden&&item.children">
 | 
	
		
			
				|  |  | +  <div v-if="!item.hidden&&item.children" class="menu-wrapper">
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      <router-link v-if="hasOneShowingChildren(item.children) && !item.children[0].children&&!item.alwaysShow" :to="item.path+'/'+item.children[0].path"
 | 
	
		
			
				|  |  | -        :key="item.children[0].name">
 | 
	
		
			
				|  |  | -        <el-menu-item :index="item.path+'/'+item.children[0].path" :class="{'submenu-title-noDropdown':!isNest}">
 | 
	
		
			
				|  |  | +      <router-link v-if="hasOneShowingChildren(item.children) && !item.children[0].children&&!item.alwaysShow" :to="resolvePath(item.children[0].path)">
 | 
	
		
			
				|  |  | +        <el-menu-item :index="resolvePath(item.children[0].path)" :class="{'submenu-title-noDropdown':!isNest}">
 | 
	
		
			
				|  |  |            <svg-icon v-if="item.children[0].meta&&item.children[0].meta.icon" :icon-class="item.children[0].meta.icon"></svg-icon>
 | 
	
		
			
				|  |  |            <span v-if="item.children[0].meta&&item.children[0].meta.title" slot="title">{{item.children[0].meta.title}}</span>
 | 
	
		
			
				|  |  |          </el-menu-item>
 | 
	
		
			
				|  |  |        </router-link>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      <el-submenu v-else :index="item.name||item.path" :key="item.name">
 | 
	
		
			
				|  |  | +      <el-submenu v-else :index="item.name||item.path">
 | 
	
		
			
				|  |  |          <template slot="title">
 | 
	
		
			
				|  |  |            <svg-icon v-if="item.meta&&item.meta.icon" :icon-class="item.meta.icon"></svg-icon>
 | 
	
		
			
				|  |  |            <span v-if="item.meta&&item.meta.title" slot="title">{{item.meta.title}}</span>
 | 
	
		
			
				|  |  |          </template>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          <template v-for="child in item.children" v-if="!child.hidden">
 | 
	
		
			
				|  |  | -          <sidebar-item :is-nest="true" class="nest-menu" v-if="child.children&&child.children.length>0" :routes="[child]" :key="child.path"></sidebar-item>
 | 
	
		
			
				|  |  | +          <sidebar-item :is-nest="true" class="nest-menu" v-if="child.children&&child.children.length>0" :item="child" :key="child.path" :base-path="resolvePath(child.path)"></sidebar-item>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -          <router-link v-else :to="item.path+'/'+child.path" :key="child.name">
 | 
	
		
			
				|  |  | -            <el-menu-item :index="item.path+'/'+child.path">
 | 
	
		
			
				|  |  | +          <router-link v-else :to="resolvePath(child.path)" :key="child.name">
 | 
	
		
			
				|  |  | +            <el-menu-item :index="resolvePath(child.path)">
 | 
	
		
			
				|  |  |                <svg-icon v-if="child.meta&&child.meta.icon" :icon-class="child.meta.icon"></svg-icon>
 | 
	
		
			
				|  |  |                <span v-if="child.meta&&child.meta.title" slot="title">{{child.meta.title}}</span>
 | 
	
		
			
				|  |  |              </el-menu-item>
 | 
	
	
		
			
				|  | @@ -28,20 +26,27 @@
 | 
	
		
			
				|  |  |          </template>
 | 
	
		
			
				|  |  |        </el-submenu>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    </template>
 | 
	
		
			
				|  |  |    </div>
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <script>
 | 
	
		
			
				|  |  | +import path from 'path'
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  export default {
 | 
	
		
			
				|  |  |    name: 'SidebarItem',
 | 
	
		
			
				|  |  |    props: {
 | 
	
		
			
				|  |  | -    routes: {
 | 
	
		
			
				|  |  | -      type: Array
 | 
	
		
			
				|  |  | +    // route配置json
 | 
	
		
			
				|  |  | +    item: {
 | 
	
		
			
				|  |  | +      type: Object,
 | 
	
		
			
				|  |  | +      required: true
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      isNest: {
 | 
	
		
			
				|  |  |        type: Boolean,
 | 
	
		
			
				|  |  |        default: false
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    basePath: {
 | 
	
		
			
				|  |  | +      type: String,
 | 
	
		
			
				|  |  | +      default: ''
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    methods: {
 | 
	
	
		
			
				|  | @@ -53,6 +58,9 @@ export default {
 | 
	
		
			
				|  |  |          return true
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        return false
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    resolvePath(...paths) {
 | 
	
		
			
				|  |  | +      return path.resolve(this.basePath, ...paths)
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 |