vue2 el-table 行按钮过多,按钮超出指定个数,显示为下拉菜单(简单的自定义组件)01

vue2 el-table 行按钮过多,按钮超出指定个数,显示为下拉菜单(简单的自定义组件01)

  1. 上图

  2. 优化前 按钮太多不美观
    在这里插入图片描述

  3. 优化后 默认展示三个按钮 超出显示下拉菜单
    在这里插入图片描述

  4. 上代码 封装按钮组件 OperateBtn.vue


// OperateBtn.vue<template><div v-if="items"><div v-if="items.length > maxLength" class="btn-box"><el-tooltipeffect="dark":content="el.name"placement="right"v-for="(el, i) in showBtn":key="i"><el-buttontype="text"size="small":disabled="el.disabled"@click="routeEvent(operateItem, el.name)"><span> {{ el.name }}</span></el-button></el-tooltip><el-dropdown trigger="click" @command="handleCommand"><span class="el-dropdown-link"><em class="el-icon-more" style="color: #409eff"></em></span><el-dropdown-menu slot="dropdown" class="table-opetation-more-dropdown"><el-dropdown-itemv-for="(item, index) in dropData":key="index":command="beforeHandleCommand(operateItem, item.name, item.code)"class="link-text"><el-button type="text" size="small">{{ item.name }}</el-button></el-dropdown-item></el-dropdown-menu></el-dropdown></div><div v-else style="display: flex"><div v-for="(item, index) in items" :key="index" class="btn-box"><el-tooltip effect="dark" placement="right" :content="item.name"><el-buttontype="text"size="small":disabled="item.disabled"@click="routeEvent(operateItem, item.name)"><span> {{ item.name }}</span></el-button></el-tooltip></div></div></div>
</template><script>
export default {comments: {},props: {// 按钮集合items: {type: Array,default: () => {return [];},},// 按钮行数据operateItem: {type: Object,default: () => {},},// 默认超过2个按钮显示隐藏下拉,否则平铺maxLength: {type: Number,default: () => 2,},},data() {return {dropData: [], // 下拉的按钮组showBtn: [], // 不隐藏的按钮};},mounted() {if (this.items.length > this.maxLength) {this.showBtn = this.items.slice(0, this.maxLength);this.dropData = this.items.slice(this.maxLength);}},methods: {// 正常按钮点击事件routeEvent(data, name) {this.$emit("routeEvent", data, name);},beforeHandleCommand(data, name, code) {return {data: data,name: name,code: code,};},// 下拉菜单点击事件handleCommand(command) {this.routeEvent(command.data, command.code);},},
};
</script>
<style lang="scss" scoped>
.link-text .el-button {width: 100%;text-align: left;
}
.btn-box {.el-button {min-width: 0px;margin-right: 12px;}
}
.el-dropdown-link {vertical-align: text-top;
}
.el-dropdown {vertical-align: middle;
}
</style>
  1. 组件使用
<template><el-table :data="tableData" border style="width: 100%"><el-table-column fixed prop="date" label="日期"> </el-table-column><el-table-column prop="name" label="姓名"> </el-table-column><el-table-column prop="province" label="省份"> </el-table-column><el-table-column prop="city" label="市区"> </el-table-column><el-table-column prop="zip" label="邮编"> </el-table-column><el-table-column fixed="right" label="操作"><template slot-scope="scope"><!-- 使用按钮组件 --><OperateBtn:items="operateBtnStatus.Draft"@routeEvent="operateEvent":operateItem="scope.row":maxLength="2"></OperateBtn></template></el-table-column></el-table>
</template><script>
import OperateBtn from "@/components/OperateBtn.vue"; //引入组件
export default {components: { OperateBtn }, //按钮组件methods: {// 所有的按钮点击事件 可在此处更具按钮code 进行判断,做对应的逻辑处理operateEvent(data, name) {console.log(data, name, 999999999);},},data() {return {// 按钮集合operateBtnStatus: [{name: "Edit",code: "Edit1",},{name: "Delete",disabled: true, // 可设置按钮禁用code: "Delete1",},{name: "view1",code: "view1",},{name: "view2",code: "view2",},{name: "view3",code: "view3",},{name: "view4",code: "view4",},{name: "view5",code: "view5",},{name: "view6",code: "view6",},],tableData: [{date: "2016-05-02",name: "王小虎",province: "上海",city: "普陀区",address: "上海市普陀区金沙江路 1518 弄",zip: 200333,},],};},
};
</script>
  1. 以上代码仅用作日常记录,方便需要时可节约时间,直接复用!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/288178.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跨境卖家必看!TikTok带货经验分享,TikTok直播带货怎么做?

如今直播带货正发展得如火如荼&#xff0c;不少跨境人也纷纷做起了带货&#xff0c;其中TikTok带货的力量不容小觑&#xff0c;也已经成为了跨境电商运营非常火爆的营销方式&#xff0c;有很多朋友问龙哥TikTok带货怎么做&#xff0c;其实以龙哥这么多年的经验来看&#xff0c;…

智能物联网汽车3d虚拟漫游展示增强消费者对品牌的认同感和归属感

汽车3D虚拟展示系统是一种基于web3D开发建模和VR虚拟现实技术制作的360度立体化三维汽车全景展示。它通过计算机1:1模拟真实的汽车外观、内饰和驾驶体验&#xff0c;让消费者在购车前就能够更加深入地了解车辆的性能、特点和设计风格。 华锐视点云展平台是一个专业的三维虚拟展…

自己的测试技术烂, 不学几招怎么能快速提升自己!

很多小伙伴在成功入职后, 进入测试开发发展后, 都会进入一个瓶颈过渡期, 当然能够自己意识到这个问题说明还来得及&#xff01; 那么作为测试开发人员, 如何走出舒适区, 需要学习和掌握那些内容, 从而实现自己的最终目标呢?今天我们就来说一说, 在职场中如何不断的提升自己. …

Jmeter的接口测试详细步骤并实现业务闭环

一、首先是了解Jmeter接口测试用到的组件 1、测试计划&#xff1a;Jmeter的起点和容器2、线程组&#xff1a;代表一定的虚拟用户3、取样器&#xff1a;发送请求的最小单元4、逻辑控制器&#xff1a;控制组件的执行顺序5、前置处理器&#xff1a;在请求之前的操作6、后置处理器…

从零开始的Docker Desktop使用,Docker快速上手,Docker介绍和基础使用

目录 1 Docker简介和安装和基础配置1.1 Docker简介1.2 安装Docker Desktop1.3 换源1.4 Docker基础使用1.5 对Docker操作1.5.1 获取当时所有镜像(docker images)1.5.2 拉镜像(docker pull)1.5.3 删除镜像(docker rmi)1.5.4加载镜像(docker run) 1.6 使用交互式容器1.6.1 查看容器…

智能优化算法应用:基于寄生捕食算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于寄生捕食算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于寄生捕食算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.寄生捕食算法4.实验参数设定5.算法结果6.…

CW32单片机在智能马桶的应用介绍

智能科技的迅速发展使得我们的日常生活变得更加便捷和舒适。智能马桶作为其中一种智能家居产品&#xff0c;通过单片机接受和处理来自传感器的数据&#xff0c;然后通过控制模块对智能马桶的各项功能进行控制&#xff0c;实现对智能马桶的全面控制和调节。本文将介绍CW32单片机…

路由跳转传递参数注意事项,查询字符串传参,params传参需要注意的地方,菜单内容的二级内容 vue3

路由跳转和传参(vue3)_vue3路由传参-CSDN博客 注意&#xff1a; import {useRouter} from "vue-router"const routeruseRouter()1.查询字符串传参&#xff0c;传一个对象&#xff0c;对象里面可以写path字段 router.push({path:/item,query:{id:1}} ) 通过当前路由…

【STM32工具篇】使用CLion开发STM32

本文主要记录使用CLion开发STM32&#xff0c;并调试相关功能 使用的CLion版本&#xff1a;2023.3.1 CLion嵌入式配置教程&#xff1a;STM32CubeMX项目 |CLion 文档 (jetbrains.com) OpenOCD官网下载&#xff1a;Download OpenOCD for Windows (gnutoolchains.com) GNU ARM工…

vue3项目引入电子签名(可横屏竖屏)

实现效果&#xff1a;&#xff08;左边横屏&#xff0c;右边竖屏&#xff09; 前言&#xff1a;【使用开源项目smooth-signature 实现签名的功能。Gitee 地址是 &#xff1a;GitHub - linjc/smooth-signature: H5带笔锋手写签名&#xff0c;支持PC端和移动端&#xff0c;任何前…

vscode 下一级文件和上个文件并行

在vscode找到Compact Folders 把对勾取消掉