You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.4 KiB
65 lines
1.4 KiB
<script>
|
|
export default {
|
|
name: 'MenuItem',
|
|
functional: true,
|
|
props: {
|
|
pid: {
|
|
type: Number,
|
|
default: 0
|
|
},
|
|
icon: {
|
|
type: String,
|
|
default: ''
|
|
},
|
|
title: {
|
|
type: String,
|
|
default: ''
|
|
}
|
|
},
|
|
render(h, context) {
|
|
const { icon, title, pid } = context.props
|
|
const vnodes = []
|
|
//解决el-menu-item 中行内样式padding-left为动态计算问题
|
|
vnodes.push(<span style="padding-left: 16px;"> </span>)
|
|
if (pid === 0) {
|
|
if (icon) {
|
|
if (icon.includes('el-icon')) {
|
|
vnodes.push(<i class={[icon, 'sub-el-icon']} />)
|
|
}
|
|
else if(icon.includes("viewicon")){
|
|
let _icon=icon.split("/")[1];
|
|
vnodes.push(<Icon type={_icon} class='sub-el-icon' size="18" />)
|
|
}
|
|
else if(icon.includes("iconfont")){
|
|
let _icon=icon.split("/")[1];
|
|
vnodes.push(<i class={[_icon, 'iconfont','sub-el-icon']} />)
|
|
}
|
|
else {
|
|
vnodes.push(<svg-icon icon-class={icon}/>)
|
|
}
|
|
}else {
|
|
var _icon="el-icon-menu";
|
|
vnodes.push(<i class={[_icon, 'sub-el-icon']} />)
|
|
}
|
|
}
|
|
|
|
if (title) {
|
|
vnodes.push(<span slot='title'>{(title)}</span>)
|
|
}
|
|
|
|
return vnodes
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
.sub-el-icon {
|
|
color: currentColor;
|
|
width: 1em;
|
|
height: 1em;
|
|
}
|
|
.iconfont{
|
|
font-size: 18px;
|
|
}
|
|
</style>
|