vue3+element-plus封装表格

2023-11-09

1.封装表格 

封装的表格如何使用插槽可以到这参考

vue3封装element plus表格使用插槽_小了黑了兔~的博客-CSDN博客

<template>
  <div>
    <el-table
      v-loading="listLoading"
      :data="tableData"
      element-loading-text="Loading"
      fit
      show-header
      border
      highlight-current-row
      :max-height="maxHeight"
    >
      <!-- 表格头部 -->
      <el-table-column
        v-for="(item, index) in tableHeader"
        :key="index"
        :type="item.type"
        :prop="item.prop"
        align="center"
        :label="item.label"
        :min-width="item.minHeight"
      >
        <!-- 这里的template是否需要根据使用页面传过来的布尔值来判断 -->
        <template v-if="item.template" #default="scope">
          <!-- 插槽 -->
          <slot v-if="item.slot" :name="item.slot" :scopeData="scope"> </slot>
          <div v-if="item.btn">
            <!-- //操作栏的按钮判断 -->
            <el-button
              v-for="(k, index) in item.btn"
              :key="index"
              :type="tableBtns"
              :size="large"
              :style="k.btnStyle"
              @click="k.func(scope.$index, scope.row)"
            >
              {{ k.name }}</el-button
            >
          </div>
          <div v-if="item.switch">
            <el-switch
              v-model="scope.row.isDisabled"
              :active-text="item.switch.activeText"
              :inactive-text="item.switch.inactiveText"
              :active-value="item.switch.activeValue"
              :inactive-value="item.switch.inactiveValue"
              inline-prompt
              @change="item.switch.fn(scope.$index, scope.row)"
            />
          </div>
        </template>
      </el-table-column>
    </el-table>
    <div class="pageBox" />
    <!-- 分页 -->
    <el-pagination
      v-if="total > 10"
      background
      :current-page="currentpage"
      @size-change="handleSizeChange"
      @current-change="handlePageChange"
      :page-size="pagesize"
      :layout="layout"
      :total="total"
    >
    </el-pagination>
  </div>
</template>

<script>
import { Search, Delete, Edit } from "@element-plus/icons";

import { defineComponent, ref, reactive, toRefs, onMounted } from "vue";
export default defineComponent({
  name: "ikechen-table",
  components: { Search },
  props: {
    tableData: { type: Array, default: [] },
    tableHeader: Array,
    listLoading: Boolean,
    maxHeight: String,
    pagesize: { type: [Number, String], default: 10 }, //一页多少条
    currentpage: { type: [Number, String], default: 1 }, //当前页
    total: Number | String, //总页数
    options: Object, // 分页发生变化赋值给options
    render: Function, // render函数跳转触发请求  使用页面会根据render函数绑定要使用的方法
    layout: {
      type: String,
      default: "total,prev, pager, next",
    },
    tableBtns: {
      type: String,
      default: "text",
    },
    btnStyle: {
      type: String,
      default: " ",
    },
  },
  setup(props, { emit }) {
    const methods = {
      // 分页导航
      handlePageChange(val) {
        // 赋值页数
        emit("handlePageChange", val);
      },
      //切换分页条数
      handleSizeChange(value) {
        // 赋值条数
        emit("handleSizeChange", value);
      },
    };
    onMounted(() => {});
    return {
      ...methods,
    };
  },
});
</script>

<style scoped>
.pageBox {
  margin-top: 20px;
}
</style>

2.使用

<baseTable
      :model="modelSwitch"
      :tableData="tableData"
      :tableHeader="tableHeader"
      :listLoading="listLoading"
      :maxHeight="maxHeight"
      :total="tablePagination.pageTotal"
      :pagesize="tablePagination.PageSize"
      :currentpage="tablePagination.PageIndex"
      :layout="layout"
      :btnStyle="btnStyle"
      @switchChange="switchChange"
      @handlePageChange="handlePageChange"
    >

定义表头信息和表格里的方法使用

     // 表格
      tableHeader: [
        
        {
          prop: "name",
          label: "名称",
        },
        {
          prop: "type",
          label: "科室类型",
          slot: "ksType",//定义插槽名称可自定义
          template: true,//确认使用插槽时给布尔值
        },
        
        {
          prop: "isDisabled",
          label: "是否禁用",
          template: true,
          switch: {
            activeText: "是",
            inactiveText: "否",
            activeValue: 0,
            inactiveValue: 1,
            fn: (index, row) => methods.switchChange(index, row),
          },
        },
        {
          prop: "btn",
          label: "操作",
          template: true,
          btn: [
            {
              name: "编辑",
              func: (index, row) => {
                methods.handleEdit(index, row);
              },
            },
            {
              name: "删除",
              btnStyle: "color:red",
              func: (index, row) => {
                methods.handleDelet(index, row);
              },
            },
          ],
        },
      ],

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3+element-plus封装表格 的相关文章

随机推荐

  • Qt d指针与q指针详解

    在讲解d q指针之前 我们先了解一下什么是Pimpl 这样更有助于我们理解Qt这么做的目的 Pimpl Pointer to Implementation 简介 该技术是一种减少代码依赖和编译时间的C 编程技巧 Pimpl的基本思想是将类的
  • MFC工程对话框资源合并

    创建了一个工程Test 对其进行一次复制 复制后的工程依然为Test 为了区分方便 称之为修改Test 现在要将修改Test中修改的内容合并到原Test中 在原Test上的解决方案上点右键 选Add 添加一个解决方案文件夹 在文件夹上点右键
  • 分布式-解决请求重放问题

    请求重放 什么是请求重放 可能导致的问题 常见的业务场景 常见的解决方案 基于redis实现的一种解决方案 时间戳 nonce原理 源码分享 什么是请求重放 由于网路原因或未知异常导致的客户端不断向服务端重试同一个请求的行为可以叫做请求重放
  • 2023华为OD机试真题【跳房子游戏】

    题目内容 跳房子 也叫跳飞机 是一种世界性的儿童游戏游戏参与者需要分多个回合按顺序跳到第1格直到房子的最后一格 然后获得一次选房子的机会 直到所有房子被选完 房子最多的人获胜 跳房子的过程中 如果有踩线等违规行为会结束当前回合 甚至可能倒退
  • 985毕业,半路出家28岁进军Python,坚持奋斗了三年现如今年薪36W+

    简介 背景 26岁985研究生毕业 学的土木工程相关的专业 工作半年 存款3000 半年后调到深圳总部 公司央企 工作一年差不多也就几万存款 感觉生活无望 就直接决定转行 说实在的 转行就是奔着挣钱去的 最开始想到的是金融 入坑了后 发现原
  • crontab极简教程

    toc crontab简介 Linux crontab是用来定期执行程序的命令 当安装完成操作系统之后 默认便会启动此任务调度命令 crontab常用命令 crontab e 打开vi编辑器 编写一个定时任务 退出vi后 若vi内容不为空
  • 旋转编码器简介

    旋转编码器如图 编码器具有左旋 右旋 按下三个功能 4 5脚是中间按下去的开关接线 1 2 3脚一般中间2脚接地 1 3脚上拉电阻后 当左转 右转旋纽时 在1 3脚就有脉冲信号输出了 输出1为高电平时 输出2出现一个高电平 这时开关就是向顺
  • RocektMQ社区"每周直播分享第8期"如约而至

    各位同学 RocektMQ社区 每周直播分享第8期 如约而至 分享题目 RocketMQ消息的过滤和重试实现原理详解 直播方式 钉钉群直播方式 群号 21791227 分享时间 2019 01 24 20 00 21 30 本周四 分享讲师
  • Apache WEB 服务器企业实战

    万维网 WORLD WIDE WEB WWW 服务器 也称之为 WEB 服务器 主要功能 是提供网上信息浏览服务 WWW 是 Internet 的多媒体信息查询工具 是 Internet 上 飞快发展的服务 也是目前用的最广泛的服务 正是因
  • kafka查看topic中的数据_实战!Kafka Manager能统计出Topic中的记录条数吗?

    问题描述 今天现场实施同事说Kafka Manager上显示有3500w条记录 但使用我们的平台落地后 一统计发现只有2200w条记录 这是不是说明我们的平台存在丢数据的可能 经了解 对接方是通过如下界面来判断topic中的记录条数的 上图
  • 常见Redis使用问题

    一 lettuce使用问题 1 问题描述 Redis Cluster集群 当master宕机 主从切换 客户端报错 timed out 2 原因 SpringBoot2 X版本开始Redis默认的连接池都是采用的Lettuce 当节点发生改
  • 原理图转换PCB网络丢失常见错误:PCB封装焊盘与原理图管脚号不一致

    小白在画PCB时 当把原理图画好后 生成PCB是有时会发现丢失部分网络 明明原理图和封装没错误怎么还会没网络 明明在原理图U1 16个管脚都有电气网络 怎么到PCB怎么没有了 这时候很有可能是PCB的焊盘封装与原理图的管脚号不一致导致 原理
  • Unable to negotiate with 10.11.81 port 8235: no matching host key type found. Their offer: ssh-rsa

    mac电脑重装系统 去官网下载了最新的git安装 一路next下来 打开bash按老路子设置 生成公钥 git config global user name yourname git config global user email yo
  • 微信小程序Day2笔记

    1 WXML模板语法 1 数据绑定 数据绑定的基本原则 在data中定义数据 在WXML中使用数据 2 在data中定义页面的数据 在页面对应的 js文件中 把数据定义到data对象中 3 Mustache语法的格式 把data中的数据绑定
  • 网络协议介绍

    网络层的功能 定义了基于IP协议的逻辑地址 连接不同的媒介类型 选择数据通过网络的最佳路径 IP数据包格式 协议字段 ICMP协议 Internet控制报文协议 1 ICMP是一个 错误侦测与回馈机制 2 通过IP数据包封装的 3 用来发送
  • vue中安装和使用Dplayer视频播放器

    1 下载 npm下载 npm install dplayer s npm i hls js s yarn下载 yarn add dplayer yarn add hls js 2 使用
  • cpolar如何配置固定TCP地址

    通常 每次启动 TCP 隧道时都会随机分配远程TCP地址和端口 它会在24小时后随机变化 对于生产环境的服务或经常访问的TCP地址 很不方便 您通常需要一个稳定的 固定端口的远程TCP地址 为此 让我们来配置一个永久固定的公网TCP地址 首
  • Visual Studio 2022 版本 17.5 预览版 正式上线,有你期待的功能吗?

    目录 此次发布的 Visual Studio 2022 版本 17 5 预览版中的新增功能摘要 C 代码搜索和导航 Git 工具 Markdown 调试和诊断 一元搜索汇报 集成终端中的 ASP NET 输出 按正则表达式着色制表符 编辑
  • 高数--猴博士爱讲课

    重点章节 导数 微分 积分 梯度 泰勒展开公式 第一课 求极限 求极限 函数 例一 试求 l i m x
  • vue3+element-plus封装表格

    1 封装表格 封装的表格如何使用插槽可以到这参考 vue3封装element plus表格使用插槽 小了黑了兔 的博客 CSDN博客