使用Tabs 标签页的label插槽,嵌入Dropdown 下拉菜单,实现Tabs 标签页增加下拉切换功能
Tabs 标签页
@tab-click="事件"(这个事件当中到拥有下拉框的tab里时,可以存一下Dropdown 第一个菜单的id,实现点击到拥有下拉框的tab时执行Dropdown 菜单值的查询)
Dropdown 下拉菜单
@command="事件"(这个事件里点击时,直接将Tabs 绑定的v-model值设置为拥有下拉框的tab ID,实现点击Dropdown 菜单时,切换到指定的Tab页)
可以考虑不使用 Dropdown 菜单 手搓一个类似功能的dom,这样方便增加下拉时,下拉菜单是选中,目前我是把选中的下拉菜单名,放入的tab中进行展示,实现区分在哪个下拉菜单中
代码(vue2、vue3同一个思路)
//简易版
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
<el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
<el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
<el-tab-pane label="下拉菜单" name="fourth">
<el-dropdown placement="bottom" @command="handleAllExamList">
<span class="el-dropdown-link">
下拉菜单<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>黄金糕</el-dropdown-item>
<el-dropdown-item>狮子头</el-dropdown-item>
<el-dropdown-item>螺蛳粉</el-dropdown-item>
<el-dropdown-item disabled>双皮奶</el-dropdown-item>
<el-dropdown-item divided>蚵仔煎</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-tab-pane>
</el-tabs>
//循环版
<el-tabs v-model="activeOne" @tab-click="tabsClick">
<el-tab-pane :name="tab.value" v-for="(tab, index) in tabList":key="index">
<span slot="label" v-if="tab.name == '下拉菜单'">
<el-dropdown placement="bottom" @command="handleAllExamList">
<label class="zsk-css">
{
{ tab.name }}
<span v-if="dropdownDX">({
{ dropdownDX.name }})</span>
<i class="el-icon-arrow-down el-icon--right"></i>
</label>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="menu in dropdownMenu"
:key="menu.value":command="menu.value">
{
{ menu.name }}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</span>
<span slot="label" v-else>
{
{ tab.name }}
</span>
</el-tab-pane>
</el-tabs>