基于element UI el-dropdown打造表格操作列的“更多⌵”上下文关联菜单

html 复制代码
<template>
  <div :class="$options.name">
    <el-table :data="tableData">
      <el-table-column type="index" label="序号" width="60" />

      <!-- 主要列 BEGIN---------------------------------------- -->

      <el-table-column label="姓名">
        <template slot-scope="scope">
          <span>{{ scope.row.name }}</span>
        </template>
      </el-table-column>

      <!-- 主要列 END---------------------------------------- -->

      <el-table-column label="操作">
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="primary"
            @click.stop="edit(scope.row)"
            @dblclick.native.stop
            >修改</el-button
          >
          <el-button
            size="mini"
            type="danger"
            @click.stop="del(scope.row)"
            @dblclick.native.stop
            >删除</el-button
          >
          <!-- 更多操作 -->
          <el-dropdown
            style="margin-left: 10px"
            :show-timeout="0"
            :placement="`bottom-end`"
            @command="(c) => dropdownItems.find((v) => v.label == c).clickEvent(c, scope)"
          >
            <span style="cursor: default">更多<i class="el-icon-arrow-down" /></span>
            <el-dropdown-menu
              slot="dropdown"
              style="
                transition: none;
                overflow-y: auto;
                max-height: 400px;
                margin-top: 5px;
              "
            >
              <el-dropdown-item
                v-for="(d, i) in dropdownItems"
                :command="d.label"
                :key="i"
                :divided="d.divided"
                v-if="typeof d.hide === 'function' ? !d.hide(d, scope) : !d.hide"
                :disabled="
                  typeof d.disabled === 'function' ? d.disabled(d, scope) : d.disabled
                "
                :type="d.type"
              >
                <i :class="d.icon" v-if="d.icon" />{{ d.label }}
              </el-dropdown-item>
            </el-dropdown-menu>
          </el-dropdown>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>
<script>
export default {
  name: "moreDropdown",
  data() {
    return {
      dropdownItems: [
        {
          hide: true,
          label: "编辑",
          clickEvent: (c, scope) => {
            // this.edit(scope.row);
          },
        },
        {
          disabled: true,
          label: "重命名",
          icon: `el-icon-edit`,
          clickEvent: (c, scope) => {
            // this.edit_rename(scope.row);
          },
        },
        {
          label: "分享",
          icon: `el-icon-share`,
          clickEvent: (c, scope) => {
            console.log(c, scope.row);
            // this.share(scope.row);
          },
        },
        {
          label: "下载",
          type: "success",
          icon: `el-icon-download`,
          clickEvent: (c, scope) => {
            console.log(c, scope.row);
            // this.download(scope.row);
          },
        },
        {
          divided: true,
          label: "删除",
          icon: `el-icon-delete`,
          type: "danger",
          clickEvent: (c, scope) => {
            // this.del([scope.row]);
          },
        },
      ],

      tableData: [
        { name: "姓名1" },
        { name: "姓名2" },
        { name: "姓名3" },
        { name: "姓名4" },
        { name: "姓名5" },
      ],
    };
  },
};
</script>
<style lang="scss" scoped>
.moreDropDown {
  // 下拉选择菜单----------------------------------------
  .el-dropdown-menu__item {
    &[type="danger"] {
      color: #f56c6c;

      &:hover {
        color: #f56c6c;
        background-color: #f56c6c22;
      }
    }

    &[type="success"] {
      color: #67c23a;

      &:hover {
        color: #67c23a;
        background-color: #67c23a22;
      }
    }

    &[type="warning"] {
      color: #e6a23c;

      &:hover {
        color: #e6a23c;
        background-color: #e6a23c22;
      }
    }

    &[type="info"] {
      color: #909399;

      &:hover {
        color: #909399;
        background-color: #90939922;
      }
    }
  }
}
</style>

【sgs】自定义组件:简洁版搜索栏筛选框组件(点击筛选条件按钮才出现复杂的、可自定义的筛选组合条件;当页面宽度不足以显示所有操作按钮的时候,自动折叠为"更多操作⌵"上下文关联按钮)。_sorttype' => 'all-CSDN博客文章浏览阅读103次。【代码】【sgs】自定义组件:简洁版搜索栏筛选框组件(点击筛选条件按钮才出现复杂的、可自定义的筛选组合条件;当页面宽度不足以显示所有操作按钮的时候,自动折叠为"更多操作..."上下文关联按钮)。_sorttype' => 'allhttps://blog.csdn.net/qq_37860634/article/details/144657057

相关推荐
染指悲剧1 小时前
vue实现虚拟列表滚动
前端·javascript·vue.js
林涧泣1 小时前
【Uniapp-Vue3】navigator路由与页面跳转
前端·vue.js·uni-app
xiangxiongfly9152 小时前
Vue3 内置组件之KeepAlive
vue.js·keepalive
浩浩测试一下2 小时前
Web渗透测试之XSS跨站脚本之JS输出 以及 什么是闭合标签 一篇文章给你说明白
前端·javascript·安全·web安全·网络安全·html·系统安全
前端搬运工X4 小时前
Object.keys 的原生 JS 类型之困
javascript·typescript
肖老师xy4 小时前
h5使用better scroll实现左右列表联动
前端·javascript·html
一路向北North4 小时前
关于easyui select多选下拉框重置后多余显示了逗号
前端·javascript·easyui
Libby博仙4 小时前
.net core 为什么使用 null!
javascript·c#·asp.net·.netcore
一水鉴天4 小时前
为AI聊天工具添加一个知识系统 之26 资源存储库和资源管理器
前端·javascript·easyui
万物得其道者成4 小时前
在高德地图上加载3DTilesLayer图层模型/天地瓦片
前端·javascript·3d