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-btn
      v-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-btn
      v-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-btn
      v-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-btn
      v-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)"
      />

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PCL 格网法计算点云的占地面积

目录 一、算法原理二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 一、算法原理 该方法主要用于粗略统计机载点云的占地面积。方法原理是将点云沿 X O Y XOY

Rust 常用集合(上)

目录 1、使用 Vector 储存列表 1.1 新建 vector 1.2 更新 vector 1.3 读取 vector 的元素 1.4 遍历 vector 中的元素 1.5 使用枚举来储存多种类型 1.6 丢弃 vector 时也会丢弃其所有元素 2、使用字符串储存 UTF-8 编码的文本 2.1 什么是字符串&#xff1f; 2.2 新建字…

tiktok云手机有用吗?用哪个好?

很多做独立站的跨境卖家都会搭配一些社媒平台给自己引流带货&#xff0c;比如说目前很火的TikTok&#xff0c;这也是目前比较有效的一种引流方式。本文将介绍tiktok运营方法以及如何用tiktok云手机规避运营风险。 TikTok是个不错的风口&#xff0c;不过我们在国内想要运营好Tik…

如何在CentOS安装SQL Server数据库并通过内网穿透工具实现公网访问

文章目录 前言1. 安装sql server2. 局域网测试连接3. 安装cpolar内网穿透4. 将sqlserver映射到公网5. 公网远程连接6.固定连接公网地址7.使用固定公网地址连接 前言 简单几步实现在Linux centos环境下安装部署sql server数据库&#xff0c;并结合cpolar内网穿透工具&#xff0…

第19课 在Android环境中使用FFmpeg和openCV进行开发的一般步骤

在上节课&#xff0c;根据模板文件我们对在Android环境中使用FFmpeg和openCV进行开发有了一个初步的体验&#xff0c;这节课&#xff0c;我们来具体看一下其工作流程。 1.程序的入口 与VS2013程序开发类似&#xff0c;Android程序开发也有一个入口&#xff0c;在这个模板中&a…

哈希-力扣202快乐数

题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&…

lm358充电器应用电路

什么是LM358 LM358是双运算放大器。内部包括有两个独立的、高增益、内部频率补偿的运算放大器&#xff0c;适合于电源电压范围很宽的单电源使用&#xff0c;也适用于双电源工作模式&#xff0c;在推荐的工作条件下&#xff0c;电源电流与电源电压无关。它的使用范围包括传感放…

「PyMuPDF 专栏 」PyMuPDF创建PDF、拆分PDF

文章目录 一、本章前言二、使用PyMuPDF创建PDF文档1、实例代码2、过程详解①. 安装PyMuPDF②. 导入PyMuPDF模块③. 创建一个新的PDF文档④. 添加页面和内容⑤. 保存文档 三、使用PyMuPDF拆分PDF文档1、实例代码2、过程解析①. 导入模块②. 定义函数③. 打开源PDF文件④. 遍历页…

数字后端设计实现之自动化useful skew技术(Concurrent Clock Data)

在数字IC后端设计实现过程中&#xff0c;我们一直强调做时钟树综合要把clock skew做到最小。原因是clock skew的存在对整体设计的timing是不利的。 但是具体到某些timing path&#xff0c;可能它的local clock skew对timing是有帮助的&#xff0c;比如如下图所示。 第一级FF到第…

C++面试宝典第16题:盛最多水的容器

题目 给定n个非负整数a1、a2、…、an,每个数代表坐标中的一个点(i, ai)。画n条垂直线,使得第i条垂直线的两个端点分别为(i, ai)和(i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:不能倾斜容器,且n的取值至少为2。 在下图中,垂直线代表的输…

C++——冒泡排序

作用&#xff1a;最常用的排序算法&#xff0c;对数组内元素进行排序 1&#xff0c;比较相邻的元素&#xff0c;如果第一个比第二个大&#xff0c;就交换他们两个。 2&#xff0c;对每一对相邻元素做同样的工作&#xff0c;执行完毕后&#xff0c;找到第一个最大值。 3&…

RHCE9学习指南 第16章 访问NFS存储及自动挂载

16.1 访问NFS存储 前面介绍了使用本地存储&#xff0c;本章介绍使用网络上的存储设备。NFS全称是网络文件系统&#xff0c;所实现的是Linux和Linux之间的共享。 下面的练习我们将会在server上创建一个文件夹/share&#xff0c;然后通过NFS把它共享&#xff0c;然后在server2上…

LUT预设.cube格式PR/达芬奇/FCP/剪映等视频电影调色预设LUTs

对于将标准镜头转换为让人想起高端电影的视觉冲击场景至关重要。这些LUT经过专业设计&#xff0c;以模仿电影行业中的电影质量、深度和情感&#xff0c;使其成为电影制作人、摄像师和内容创作者的理想选择&#xff0c;希望为你的作品带来专业的电影色彩。 电影LUT的类别&#…

鸿蒙系统应用开发之开发准备

今天我们来聊一聊鸿蒙系统应用开发之前&#xff0c;要做什么准备工作&#xff0c;如下图所示&#xff0c;我们要做的就是安装DevEco Studio&#xff0c;然后配置开发环境。 老规矩&#xff0c;拍拍手&#x1f44f;&#xff0c;上菜。 安装DevEco Studio 首先我们打开链接HUAWEI…

学习笔记 | Activiti7

什么是工作流&#xff1f; 业务流程。 举个例子: 假设有一个在线博客平台&#xff0c;我们要让一篇新的文章从作者的头脑里发表出来。整个过程可以分为以下几个步骤&#xff1a; 创建文章草稿 &#xff1a;作者登录博客平台&#xff0c;点击“写新文章”的按钮&#xff0c…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)HttpResponse的定义和初始化 以及组织 HttpResponse 响应消息

一、HttpResponse的定义 1.定义状态码枚举 // 定义状态码枚举 enum HttpStatusCode {Unknown 0,OK 200,MovedPermanently 301,MovedTemporarily 302,BadRequest 400,NotFound 404 }; 2.HTTP 响应报文格式 这个数据块主要是分为四部分 第一部分是状态行第二部分是响应…

docker swarm 常用命令简介以及使用案例

docker swarm Docker Swarm 是Docker官⽅的跨节点的容器编排⼯具。⽤户只需要在单⼀的管理节点上操作&#xff0c;即可管理集群下的所有节点和容器 解决的问题 解决docker server的集群化管理和部署Swarm通过对Docker宿主机上添加的标签信息来将宿主机资源进⾏细粒度分区&am…

vue-cli项目优化gzip实践

背景&#xff1a;某天测试小妹气冲冲跑过来说你的网站首次打开平均16秒&#xff0c;慢得不行啊&#xff0c;空白时间太久&#xff0c;这样客户是不收货的&#xff0c;必须优化。谁叫我们是以测试驱动开发的&#xff0c;测试妹子的话等同与老板的命令。 空白是吧&#xff0c;我…

[Kubernetes]4. 借助腾讯云TKE快速创建Pod、Deployment、Service部署k8s项目

前面讲解了通过命令行方式来部署k8s项目,下面来讲讲通过腾讯云TKE来快速创建Pod、Deployment、Service部署k8s项目,云平台搭建Kubernetes可参考[Kubernetes]1.Kubernetes(K8S)介绍,基于腾讯云的K8S环境搭建集群以及裸机搭建K8S集群 一.通过腾讯云TKE创建集群 1.创建集群 参考上…

群辉安装gitea

群辉安装gitea 安装giteagitea容器配置 安装gitea gitea容器配置