vue3 封裝一个常用固定按钮组件(添加、上传、下载、删除)

本文主要是介绍vue3 封裝一个常用固定按钮组件(添加、上传、下载、删除),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

效果图

这个组件只有四个按钮,添加,上传、下载、删除,其中删除按钮的颜色默认是灰色,当表格有数据选中时再变成红色

实现 

组件代码

<script lang="ts" setup>
import { Icon } from '@/components/Icon/index'
import { useI18n } from '@/hooks/web/useI18n'const { t } = useI18n()defineProps({addBtnShow: {type: Boolean,default: false},selAddColor: {type: Boolean,default: false},importBtnShow: {type: Boolean,default: false},emportBtnShow: {type: Boolean,default: false},deleteBtnShow: {type: Boolean,default: false},selDelColor: {type: Boolean,default: false}
})
const emit = defineEmits(['click:add', 'click:import', 'click:emport', 'click:delete'])
</script>
<template><div class="flex"><v-btnv-if="addBtnShow"class="addBtn btn"size="28"variant="flat"color="primary"rounded:disabled="selAddColor"@click="emit('click:add')"><template #prepend><Icon icon="svg-icon:v2-myWidget-add" :size="20" color="#fff" cursor="pointer" /></template></v-btn><v-btnv-if="importBtnShow"class="importBtn btn"rounded="xl"color="#3DC676"width="82px"height="30px"variant="tonal"@click="emit('click:import')"><template #default><Icon icon="svg-icon:v2-arrow_upload" :size="20" color="#24A677" cursor="pointer" /><span style="font-size: 12px">{{ t('common.import') }}</span></template></v-btn><v-btnv-if="emportBtnShow"class="emportBtn btn"rounded="xl"color="#079DAA"width="82px"height="30px"variant="tonal"@click="emit('click:emport')"><template #default><Icon icon="svg-icon:v2-arrow_download" :size="20" color="#079DAA" cursor="pointer" /><span style="font-size: 12px">{{ t('common.export') }}</span></template></v-btn><v-btnv-if="deleteBtnShow"class="deleteBtn btn"size="28"variant="flat":color="selDelColor ? '#da4c4b' : '#c6c8cd'"rounded@click="emit('click:delete')"><template #prepend><Icon icon="svg-icon:v2-delete_line" :size="20" color="#fff" cursor="pointer" /></template></v-btn></div>
</template>
<style scoped lang="less">
.btn {margin-right: 20px;:deep(.v-btn__prepend) {.el-icon {margin-right: 0 !important;}}
}
</style>

使用方法

      <TableBtn:add-btn-show="hasManagePerm"@click:add="contactAction(null, 'add')":import-btn-show="hasManagePerm"@click:import="openImport":emport-btn-show="tableObject.total > 0"@click:emport="exportContactList":delete-btn-show="hasManagePerm":sel-delColor="selDelColor"@click:delete="contactDelete(null, true)"/>

这篇关于vue3 封裝一个常用固定按钮组件(添加、上传、下载、删除)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/587506

相关文章

MySQL中删除重复数据SQL的三种写法

《MySQL中删除重复数据SQL的三种写法》:本文主要介绍MySQL中删除重复数据SQL的三种写法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录方法一:使用 left join + 子查询删除重复数据(推荐)方法二:创建临时表(需分多步执行,逻辑清晰,但会

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

Java 枚举的常用技巧汇总

《Java枚举的常用技巧汇总》在Java中,枚举类型是一种特殊的数据类型,允许定义一组固定的常量,默认情况下,toString方法返回枚举常量的名称,本文提供了一个完整的代码示例,展示了如何在Jav... 目录一、枚举的基本概念1. 什么是枚举?2. 基本枚举示例3. 枚举的优势二、枚举的高级用法1. 枚举

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

IDEA常用插件之代码扫描SonarLint详解

《IDEA常用插件之代码扫描SonarLint详解》SonarLint是一款用于代码扫描的插件,可以帮助查找隐藏的bug,下载并安装插件后,右键点击项目并选择“Analyze”、“Analyzewit... 目录SonajavascriptrLint 查找隐藏的bug下载安装插件扫描代码查看结果总结Sona

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

Python按条件批量删除TXT文件行工具

《Python按条件批量删除TXT文件行工具》这篇文章主要为大家详细介绍了Python如何实现按条件批量删除TXT文件中行的工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.简介2.运行效果3.相关源码1.简介一个由python编写android的可根据TXT文件按条件批

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义