|
|
|
@ -1,7 +1,9 @@ |
|
|
|
<template> |
|
|
|
<template> |
|
|
|
<el-menu unique-opened :default-active="activeMenu" :mode="setting.sidebar" :collapse="isCollapse" |
|
|
|
<el-menu unique-opened :default-active="activeMenu" :mode="setting.sidebar" :collapse="isCollapse" |
|
|
|
v-if="setting.styleRadio == '1'"> |
|
|
|
v-if="setting.styleRadio == '1'"> |
|
|
|
<sidebar-item :menu="menu"></sidebar-item> |
|
|
|
<el-input v-model="input1" class="w-50 m-2" size="large" placeholder="请输入" suffix-icon="Search" |
|
|
|
|
|
|
|
style="width:90%;margin-left:5%;" clearable /> |
|
|
|
|
|
|
|
<sidebar-item :menu="filteredMenu"></sidebar-item> |
|
|
|
</el-menu> |
|
|
|
</el-menu> |
|
|
|
|
|
|
|
|
|
|
|
<el-menu unique-opened :default-active="activeMenu" :mode="setting.sidebar" :collapse="isCollapse" |
|
|
|
<el-menu unique-opened :default-active="activeMenu" :mode="setting.sidebar" :collapse="isCollapse" |
|
|
|
@ -11,23 +13,25 @@ |
|
|
|
|
|
|
|
|
|
|
|
<left-menu :menulist="menu" v-if="setting.styleRadio == '2'"></left-menu> |
|
|
|
<left-menu :menulist="menu" v-if="setting.styleRadio == '2'"></left-menu> |
|
|
|
<leftMenuSec :menulist="menu" v-if="setting.styleRadio == '5'"></leftMenuSec> |
|
|
|
<leftMenuSec :menulist="menu" v-if="setting.styleRadio == '5'"></leftMenuSec> |
|
|
|
<div class="left_menu_box" :class="leftMenu[selectIndex].children ? 'right_box' : ''" style="display: flex;height: 100%;background: #fff;" |
|
|
|
<div class="left_menu_box" :class="leftMenu[selectIndex].children ? 'right_box' : ''" |
|
|
|
v-if="setting.styleRadio == '3'"> |
|
|
|
style="display: flex;height: 100%;background: #fff;" v-if="setting.styleRadio == '3'"> |
|
|
|
<div :class="leftMenu.find(item => item.children) ? 'children' : 'no_child'"> |
|
|
|
<div :class="leftMenu.find(item => item.children) ? 'children' : 'no_child'"> |
|
|
|
<!-- <div class="top_title">{{ this.menu.find(item => item.id == this.leftMenu[selectIndex].parentId).name }}</div> --> |
|
|
|
<!-- <div class="top_title">{{ this.menu.find(item => item.id == this.leftMenu[selectIndex].parentId).name }}</div> --> |
|
|
|
<div class="left_menu" @click="clickItem(item, index)" v-for="(item, index) in leftMenu" :key="item.id" @mouseenter="mouseEnter(item,index)" |
|
|
|
<div class="left_menu" @click="clickItem(item, index)" v-for="(item, index) in leftMenu" :key="item.id" |
|
|
|
:class="index == selectIndex ? 'active' : ''"> |
|
|
|
@mouseenter="mouseEnter(item, index)" :class="index == selectIndex ? 'active' : ''"> |
|
|
|
<div class="left_menu_item"> |
|
|
|
<div class="left_menu_item"> |
|
|
|
<i :class="item.source"></i> |
|
|
|
<i :class="item.source"></i> |
|
|
|
<span class="name_text">{{ item.name.substring(0, 4) }}</span> |
|
|
|
<span class="name_text">{{ item.name.substring(0, 4) }}</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div style="flex: 1;height: 100%;background: #fff;" v-show="leftMenu[selectIndex].children" @mouseleave="mouseleave(leftMenu[selectIndex])"> |
|
|
|
<div style="flex: 1;height: 100%;background: #fff;" v-show="leftMenu[selectIndex].children" |
|
|
|
|
|
|
|
@mouseleave="mouseleave(leftMenu[selectIndex])"> |
|
|
|
<div |
|
|
|
<div |
|
|
|
v-if="leftMenu && leftMenu.length != 0 && leftMenu[selectIndex].children && leftMenu[selectIndex].children.length != 0"> |
|
|
|
v-if="leftMenu && leftMenu.length != 0 && leftMenu[selectIndex].children && leftMenu[selectIndex].children.length != 0"> |
|
|
|
<div class="left_top">{{ leftMenu[selectIndex].name }} </div> |
|
|
|
<div class="left_top">{{ leftMenu[selectIndex].name }} </div> |
|
|
|
<div class="right_menu" v-for="item in leftMenu[selectIndex].children" :key="item.id" @mouseenter="mounseEnter(item)" @mouseleave="mounseLeave(leftMenu[selectIndex],item)"> |
|
|
|
<div class="right_menu" v-for="item in leftMenu[selectIndex].children" :key="item.id" |
|
|
|
|
|
|
|
@mouseenter="mounseEnter(item)" @mouseleave="mounseLeave(leftMenu[selectIndex], item)"> |
|
|
|
<div class="right_menu_item"> |
|
|
|
<div class="right_menu_item"> |
|
|
|
<el-popover placement="right-start" :show-arrow="false" :offset="0" :hide-after='0' |
|
|
|
<el-popover placement="right-start" :show-arrow="false" :offset="0" :hide-after='0' |
|
|
|
popper-class="log-popover" |
|
|
|
popper-class="log-popover" |
|
|
|
@ -42,16 +46,20 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
<template #default> |
|
|
|
<template #default> |
|
|
|
<div class="third_box" v-if="item.children && item.children.length != 0 && !item.children.find(item1 => item1.children)"> |
|
|
|
<div class="third_box" |
|
|
|
<div class="third_box_item" v-for="third in item.children" :key="third.id" @click="handleClick(third)"> |
|
|
|
v-if="item.children && item.children.length != 0 && !item.children.find(item1 => item1.children)"> |
|
|
|
|
|
|
|
<div class="third_box_item" v-for="third in item.children" :key="third.id" |
|
|
|
|
|
|
|
@click="handleClick(third)"> |
|
|
|
{{ third.name }} |
|
|
|
{{ third.name }} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="four_box" v-if="item.children && item.children.length != 0 && item.children.find(item1 => item1.children)"> |
|
|
|
<div class="four_box" |
|
|
|
|
|
|
|
v-if="item.children && item.children.length != 0 && item.children.find(item1 => item1.children)"> |
|
|
|
<div class="four_box_item" v-for="third in item.children" :key="third.id"> |
|
|
|
<div class="four_box_item" v-for="third in item.children" :key="third.id"> |
|
|
|
<div class="third_name" @click="handleClick(third)"><span></span>{{ third.name }}</div> |
|
|
|
<div class="third_name" @click="handleClick(third)"><span></span>{{ third.name }}</div> |
|
|
|
<div class="four_con_box" v-if="third.children"> |
|
|
|
<div class="four_con_box" v-if="third.children"> |
|
|
|
<div class="four_con_item" v-for="four in third.children" :key="four.id" @click="handleClick(four)"> |
|
|
|
<div class="four_con_item" v-for="four in third.children" :key="four.id" |
|
|
|
|
|
|
|
@click="handleClick(four)"> |
|
|
|
{{ four.name }} |
|
|
|
{{ four.name }} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -66,16 +74,17 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div v-if="setting.styleRadio == '6'" class="left_menu_box six"> |
|
|
|
<div v-if="setting.styleRadio == '6'" class="left_menu_box six"> |
|
|
|
<div class="left_menu six_menu"> |
|
|
|
<div class="left_menu six_menu"> |
|
|
|
<div class="left_menu_item" v-for="(item,index) in menu" :key="item.id" @click="clickMenu(item,index)" :class="activeIndex == index ? 'hover' : ''"> |
|
|
|
<div class="left_menu_item" v-for="(item, index) in menu" :key="item.id" @click="clickMenu(item, index)" |
|
|
|
|
|
|
|
:class="activeIndex == index ? 'hover' : ''"> |
|
|
|
<i :class="item.source" style="font-size: 20px;"></i> |
|
|
|
<i :class="item.source" style="font-size: 20px;"></i> |
|
|
|
<span class="name_text">{{ item.name.substring(0, 2) }}</span> |
|
|
|
<span class="name_text">{{ item.name.substring(0, 2) }}</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div style="flex: 1;height: 100%;" v-show="menu[activeIndex].children" @mouseleave="mouseleave(menu[activeIndex])"> |
|
|
|
<div style="flex: 1;height: 100%;" v-show="menu[activeIndex].children" @mouseleave="mouseleave(menu[activeIndex])"> |
|
|
|
<div |
|
|
|
<div v-if="menu && menu.length != 0 && menu[activeIndex].children && menu[activeIndex].children.length != 0"> |
|
|
|
v-if="menu && menu.length != 0 && menu[activeIndex].children && menu[activeIndex].children.length != 0"> |
|
|
|
|
|
|
|
<div class="left_top">{{ menu[activeIndex].name }} </div> |
|
|
|
<div class="left_top">{{ menu[activeIndex].name }} </div> |
|
|
|
<div class="right_menu" v-for="item in menu[activeIndex].children" :key="item.id" @mouseenter="mounseEnter(item)" @mouseleave="mounseLeave(menu[activeIndex],item)"> |
|
|
|
<div class="right_menu" v-for="item in menu[activeIndex].children" :key="item.id" |
|
|
|
|
|
|
|
@mouseenter="mounseEnter(item)" @mouseleave="mounseLeave(menu[activeIndex], item)"> |
|
|
|
<div class="right_menu_item"> |
|
|
|
<div class="right_menu_item"> |
|
|
|
<el-popover placement="right-start" :show-arrow="false" :offset="0" :hide-after='0' |
|
|
|
<el-popover placement="right-start" :show-arrow="false" :offset="0" :hide-after='0' |
|
|
|
popper-class="log-popover" |
|
|
|
popper-class="log-popover" |
|
|
|
@ -90,16 +99,20 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
<template #default> |
|
|
|
<template #default> |
|
|
|
<div class="third_box" v-if="item.children && item.children.length != 0 && !item.children.find(item1 => item1.children)"> |
|
|
|
<div class="third_box" |
|
|
|
<div class="third_box_item" v-for="third in item.children" :key="third.id" @click="handleClick(third)"> |
|
|
|
v-if="item.children && item.children.length != 0 && !item.children.find(item1 => item1.children)"> |
|
|
|
|
|
|
|
<div class="third_box_item" v-for="third in item.children" :key="third.id" |
|
|
|
|
|
|
|
@click="handleClick(third)"> |
|
|
|
{{ third.name }} |
|
|
|
{{ third.name }} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="four_box" v-if="item.children && item.children.length != 0 && item.children.find(item1 => item1.children)"> |
|
|
|
<div class="four_box" |
|
|
|
|
|
|
|
v-if="item.children && item.children.length != 0 && item.children.find(item1 => item1.children)"> |
|
|
|
<div class="four_box_item" v-for="third in item.children" :key="third.id"> |
|
|
|
<div class="four_box_item" v-for="third in item.children" :key="third.id"> |
|
|
|
<div class="third_name" @click="handleClick(third)"><span></span>{{ third.name }}</div> |
|
|
|
<div class="third_name" @click="handleClick(third)"><span></span>{{ third.name }}</div> |
|
|
|
<div class="four_con_box" v-if="third.children"> |
|
|
|
<div class="four_con_box" v-if="third.children"> |
|
|
|
<div class="four_con_item" v-for="four in third.children" :key="four.id" @click="handleClick(four)"> |
|
|
|
<div class="four_con_item" v-for="four in third.children" :key="four.id" |
|
|
|
|
|
|
|
@click="handleClick(four)"> |
|
|
|
{{ four.name }} |
|
|
|
{{ four.name }} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -129,6 +142,7 @@ export default { |
|
|
|
isCollapse: false, |
|
|
|
isCollapse: false, |
|
|
|
showRight: false, |
|
|
|
showRight: false, |
|
|
|
activeIndex: 0, |
|
|
|
activeIndex: 0, |
|
|
|
|
|
|
|
input1: '', |
|
|
|
// selectIndex:0 |
|
|
|
// selectIndex:0 |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
@ -143,9 +157,12 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
return path; |
|
|
|
return path; |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
filteredMenu(){ |
|
|
|
|
|
|
|
return this.input1 ? this.searchMenu(this.menu, this.input1) : this.menu; // 如果搜索文本为空,则返回原始数据;否则返回过滤后的数据。 |
|
|
|
|
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
mounted() { |
|
|
|
mounted() { |
|
|
|
console.log('left--------------------------',this.leftMenu) |
|
|
|
|
|
|
|
console.log('menu--------------------------', this.menu) |
|
|
|
console.log('menu--------------------------', this.menu) |
|
|
|
console.log('selectIndex--------------------------', this.selectIndex) |
|
|
|
console.log('selectIndex--------------------------', this.selectIndex) |
|
|
|
if (this.setting.styleRadio == '3') { |
|
|
|
if (this.setting.styleRadio == '3') { |
|
|
|
@ -155,6 +172,25 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
methods: { |
|
|
|
|
|
|
|
menuInput(value) { |
|
|
|
|
|
|
|
console.log(999, value) |
|
|
|
|
|
|
|
console.log('menu--------------------------', this.searchMenu(this.menu, value), this.menu) |
|
|
|
|
|
|
|
this.menu = this.searchMenu(this.menu, value) |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
searchMenu(items, searchText) { |
|
|
|
|
|
|
|
const result = []; |
|
|
|
|
|
|
|
items.forEach(item => { |
|
|
|
|
|
|
|
if (item.name.includes(searchText)) { |
|
|
|
|
|
|
|
result.push(item); // 直接匹配的项加入结果数组 |
|
|
|
|
|
|
|
} else if (item.children && item.children.length > 0) { // 递归查找子菜单项 |
|
|
|
|
|
|
|
const childrenResult = this.searchMenu(item.children, searchText); // 递归调用 |
|
|
|
|
|
|
|
if (childrenResult.length > 0) { // 如果子菜单中有匹配项,则合并到结果数组中 |
|
|
|
|
|
|
|
result.push({ ...item, children: childrenResult }); // 保留父节点并加入匹配的子节点 |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
return result; |
|
|
|
|
|
|
|
}, |
|
|
|
clickMenu(item, index) { |
|
|
|
clickMenu(item, index) { |
|
|
|
this.activeIndex = index |
|
|
|
this.activeIndex = index |
|
|
|
}, |
|
|
|
}, |
|
|
|
@ -242,9 +278,7 @@ export default { |
|
|
|
}; |
|
|
|
}; |
|
|
|
</script> |
|
|
|
</script> |
|
|
|
<style lang="scss" scoped> |
|
|
|
<style lang="scss" scoped> |
|
|
|
.left_menu_box_six{ |
|
|
|
.left_menu_box_six {} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.left_menu_box { |
|
|
|
.left_menu_box { |
|
|
|
width: 70px !important; |
|
|
|
width: 70px !important; |
|
|
|
@ -261,6 +295,7 @@ export default { |
|
|
|
height: 100%; |
|
|
|
height: 100%; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.no_child { |
|
|
|
.no_child { |
|
|
|
width: 70px; |
|
|
|
width: 70px; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -274,6 +309,7 @@ export default { |
|
|
|
box-shadow: 5px 5px 30px #afaeae; |
|
|
|
box-shadow: 5px 5px 30px #afaeae; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.top_title { |
|
|
|
.top_title { |
|
|
|
font-size: 14px; |
|
|
|
font-size: 14px; |
|
|
|
font-family: Microsoft YaHei-Bold, Microsoft YaHei; |
|
|
|
font-family: Microsoft YaHei-Bold, Microsoft YaHei; |
|
|
|
@ -452,7 +488,6 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
</style> |
|
|
|
</style> |
|
|
|
<style lang="scss"> |
|
|
|
<style lang="scss"> |
|
|
|
.third_box { |
|
|
|
.third_box { |
|
|
|
@ -516,6 +551,7 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.four_con_box { |
|
|
|
.four_con_box { |
|
|
|
display: flex; |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
flex-direction: column; |
|
|
|
|