Vue3:封装Table 表格组件

  组件官网 elementPlus : 点击跳转

封装组件 

创建新的组件文件: Table.vue

<!-- 
 PropTableS : 父组件传递过来的数据 (对象)
 PropTableS.tables : 父组件传递的对象中 存放表格每行显示的数据
 PropTableS.keyS : 父组件传递过来的对象,里面就是表头的列数据显示
-->
 <el-table
        class="singleTableRef"
        ref="singleTableRef"
        :data="PropTableS.tables"
         border
         highlight-current-row
         @selection-change="handleSelectionChange"
         row-key="id"
        :header-cell-style="{background:'#f0f2f7'}"
        :scrollbar-always-on="true"
        :default-sort="{ prop: 'date', order: 'descending' }"
         max-height="644"
      > 
      
        <template v-for="(child,key) in PropTableS.keyS">
          <el-table-column  :prop="key" :type="child.type" :label="child.title" :sortable="child.sortable"  :width="child.width" :show-overflow-tooltip="child.show_overflow_tooltip" >
            //是否点击跳转
            <template v-if="child.link" v-slot="scope" >
              <el-link  type="primary"  @click="Selectuser(scope.row)">
                {{scope.row.order_sn}}
              </el-link>
            </template>
          </el-table-column>
        </template>
        <el-table-column label="操作" fixed="right"  width="180">
          <template #default="scope">
            <el-button size="small" @click="handleEdit(scope.$index, scope.row)">
              Edit
            </el-button>
            <el-button
              size="small"
              type="danger"
              @click="handleDelete(scope.$index, scope.row)"
            >
              Delete
            </el-button>
          </template>
        </el-table-column>
      </el-table>

2.接收父组件传递过来的数据

<script setup lang="ts">
  import {defineProps,onMounted,ref} from 'vue'
  //接收父组件传递的数据  
  const props = defineProps({
          PropTableS:{
            type:Object,
          }
  })

  onMounted(()=>{
     //props.PropTableS.tableStyle f父组件传递过来的表格css样式
     let TabDom = document.querySelector('.singleTableRef')
     for (const item in props.PropTableS.tableStyle) {
        TabDom.style[item] = props.PropTableS.tableStyle[item]
     }
  })
</script>

3.父组件代码

<template>
    <!-- v-if 控制组件显示,如果不控制会导致组件  :PropTableS(子组件接收的名称)="PropTableS(这是我传递的值)" -->
    <Table v-if="ShiwTable"  :PropTableS="PropTableS"  ></Table>
</template>


//引入组件
import {Table} from "@/components";


let PropTableS = ref(null)



//点击查询按钮
function Receive_Data(params:any) {
 console.log('表单传递过来的查询参数',params);
  GetTabList(params.value).then(result =>{
      PropTableS.value = result
    }).catch(error=>{
  })
}


function GetTabList(params:boject) {  
  //调用团购接口测试数据
 return new Promise((resolve,reject)=>{
  let pageParams = {
      page_size:20,
      page:1
    }
    axios.GetGoodsList(params||pageParams).then(res=>{
      //自己定义的表头信息
      let data = {
        selection:{
          type:'selection',
          width:50,
          custom:true // 是否标识自定义
        },
        index:{
          type:'index',
          title:'ID',
          width:50,
          custom:true // 是否标识自定义
        },
        goods_name:{
          title:'商品名称',
        },
        sku:{
          title:'商品SKU',
        },
        goods_sn:{
          title:'商品货号',
        },
        store_name:{
          title:'店铺',
        },
        goods_img:{
          title:'商品图片',
        },
        color_name:{
          title:'颜色',
        },
        size_name:{
          title:'尺码',
        },
        goods_stock:{
          title:'库存',
        },
        goods_status_text:{
          title:'商品状态',
        },
      }
      let list = {}
      list.keyS = data
      //后端返回的表格显示数据
      list.tables = res.list
      //表格的样式
      list.tableStyle = {
          width : '99%',
          margin : 'auto',
          height : '645px',
      }
       resolve(list); 
    }).catch(error => {
       reject(error);
    });
 })
}



  GetTabList().then(result =>{
    PropTableS.value = result 
    if(PropTableS.value){
      ShiwTable.value = true
    }
    }).catch(error=>{
    console.error('获取表格数据失败:', error);
  })

效果:

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

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

相关文章

Navicat 连接 OceanBase 快速入门 | 社区版

Navicat Premium&#xff08;16.1.9或更高版本&#xff09;正式支持 OceanBase全线数据库产品。OceanBase为现代数据架构打造的开源分布式数据库。兼容 MySQL 的单机分布式一体化国产开源数据库&#xff0c;具有原生分布式架构&#xff0c;支持金融级高可用、透明水平扩展、分布…

MySQL索引和视图

MySQL索引和视图是关系型数据库MySQL中的两个重要概念。索引用于优化数据库的查询性能&#xff0c;而视图用于提供一个逻辑上的表结构&#xff0c;方便用户查询和操作数据。 索引是一种数据结构&#xff0c;可以加速对数据库表中的数据进行查询的速度。通过创建索引&#xff0…

安卓绕过限制直接使用Android/data无需授权,支持安卓14(部分)

大家都知道&#xff0c;安卓每次更新都会给权限划分的更细、收的更紧。   早在安卓11的时候还可以直接通过授权Android/data来实现操作其他软件的目录&#xff0c;没有之前安卓11授权的图了&#xff0c;反正都长一个样&#xff0c;就直接贴新图了。   后面到了安卓12~13的…

软件测试人必看,定位问题小技巧

当你在上班期间&#xff0c;听到不远处传来这样的声音“你会不会提BUG&#xff0c;责任人都指派错了&#xff0c;这也太菜了吧”。 作为一名测试人员&#xff0c;提BUG&#xff0c;要有一定的专业性、严谨性。 一 定位bug的重要性 1、找到bug原因后&#xff0c;可以明确地指…

Docker-Android安卓模拟器本地部署并实现远程开发测试

文章目录 1. 虚拟化环境检查2. Android 模拟器部署3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问小结 6. 固定Cpolar公网地址7. 固定地址访问 本文主要介绍如何在Ubuntu系统使用Docker部署docker-android安卓模拟器&#xff0c;并结合cpolar内网穿透工具实现公网远程访问本地…

技术前沿 |【自回归视觉模型ImageGPT】

自回归视觉模型ImageGPT 引言一、ImageGPT的基本原理与创新之处二、ImageGPT在图像生成、理解等视觉任务上的应用三、ImageGPT对后续视觉Transformer模型发展的影响四、ImageGPT的深入应用 引言 在人工智能的飞速发展中&#xff0c;视觉模型作为其中一个重要的分支&#xff0c…

xlrd.biffh.XLRDError: Excel xlsx file; not supported报错原因

xlrd库读取xlsx文件时报错 xlrd.biffh.XLRDError: Excel xlsx file; not supported报错原因&#xff1a; xlrd版本为2.1版本&#xff0c;需要读取xlsx文件需要安装xlrd低一些版本1.2.0版本&#xff0c;重新安装重试即可 更换xlrd版本 重新运行

微软开发者大会,Copilot Agents发布,掀起新一轮生产力革命!

把AI融入生产力工具的未来会是什么样&#xff1f;微软今天给出了蓝图。 今天凌晨&#xff0c;微软召开了Microsoft Build 2024 开发者大会&#xff0c;同前两天的Google I/O开发者大会一样&#xff0c;本次大会的核心词还是“AI”&#xff0c;其中最主要的内容是最新的Copilot…

shell 脚本笔记2

3.env与set区别 env用于查看系统环境变量 set用于查看系统环境变量自定义变量函数 4.常用环境变量 变量名称含义PATH命令搜索的目录路径, 与windows的环境变量PATH功能一样LANG查询系统的字符集HISTFILE查询当前用户执行命令的历史列表 Shell变量&#xff1a;自定义变量 目标…

37. 解数独 - 力扣(LeetCode)

基础知识要求&#xff1a; Java&#xff1a; 方法、for循环、if else语句、数组 Python&#xff1a; 方法、for循环、if else语句、列表 题目&#xff1a; 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行…

Ubuntu 20/22 安装 Jenkins

1. 使用 apt 命令安装 Java Jenkins 作为一个 Java 应用程序&#xff0c;要求 Java 8 及更高版本&#xff0c;检查系统上是否安装了 Java。 sudo apt install -y openjdk-17-jre-headless安装完成后&#xff0c;再次验证 Java 是否已安装 java --version2. 通过官方存储库安…

Linux多线程系列2: 模拟封装简易语言级线程库,线程互斥和锁,线程同步和条件变量,线程其他知识点

Linux多线程系列2: 模拟封装简易语言级线程库,线程互斥和互斥锁,线程同步和条件变量,线程其他知识点 1.前言 一.模拟C11线程库自己封装简易语言级线程库1.实现框架2.迅速把构造等等函数写完3.start和work1.尝试一2.尝试二3.最终版本4.给出代码 二.模拟实现多线程(为编写线程池做…

Llama 3超级课堂作业笔记

文章目录 基础作业完成 Llama 3 Web Demo 部署环境配置下载模型Web Demo 部署对话截图 使用 XTuner 完成小助手认知微调Web Demo 部署自我认知训练数据集准备训练模型推理验证 使用 LMDeploy 成功部署 Llama 3 模型环境&#xff0c;模型准备LMDeploy CLI chatLMDeploy模型量化(…

php 连接sqlserver步骤

1.首先要确定使用的是sqlserver的哪个版本&#xff0c;比如sqlserver2012 2.确定服务器是64位还是32位的 3.确认一下使用php的哪个版本&#xff0c;比如php7.1 SQL Server 的 Microsoft PHP 驱动程序 Microsoft Drivers for PHP 支持矩阵 - PHP drivers for SQL Server | Mi…

【传知代码】从零开始搭建图像去雾神经网络-论文复现

文章目录 概述原理介绍网络结构 核心逻辑迁移学习子网数据拟合子网 环境配置训练本次复现代码所用数据集测试本次复现代码所用的评价指标 结果展示在O-Haze数据集上的结果在I-Haze数据集上的结果 小结 本文涉及的源码可从从零开始搭建图像去雾神经网络该文章下方附件获取 本文复…

SAP Credit Management-Reconcile Documented Credit Decisions

ECC 升级S4后&#xff0c;经过事后迁移后&#xff0c;出现如下报错 找到了这里的配置路径&#xff1a; DCD settings – to maintain/complete Create Profile for Case Search -> no entry UKM_CASE – DCD search -> no search fields BC set UKM_DCD_CUST not activa…

open drain 与 push pull

Open drain: open drain 输出&#xff1a;输出端相当于三极管的集电极&#xff0c;要得到高电平需要上拉电阻才行。 栅极输入为0时&#xff0c;NMOS 的漏极和源极导通&#xff0c;输出为0。即Uce 0 V。 栅极输入为1时&#xff0c;NMOS不导通&#xff0c;漏极高祖&#xff0…

Element组件 el-select设置滚动条+滚动加载(两种写法: 原生Js和自定义指令)

系列文章目录 提示&#xff1a;下面是简单的功能实现(时间紧迫,大晚上赶工) el-select滚动条相关功能 系列文章目录背景与展望一、使用原生的js实现触底加载1.效果图如下&#xff1a;2.HTML如下3.JS代码如下 二、使用自定义指令解决问题(已补全-2024-05-19)1.效果图如下:2.新增…

如何提交网站到谷歌网站收录?

其实就那么几个步骤&#xff0c;要做谷歌那肯定是需要一个谷歌账号的&#xff0c;然后找到Google Search Console这个谷歌的官方平台&#xff0c;这是最权威的可以统计来自谷歌流量的平台了&#xff0c;毕竟是谷歌自家的&#xff0c;肯定也不可能作假&#xff0c;然后就是跟着平…

使用DockerFile 编写 指令来构建镜像

文章目录 前言使用DockerFile 编写 指令来构建镜像1. 构建2. 验证 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话&#x…