Table类型的表单

形如下面的图片
在这里插入图片描述
1 label与prop属性

const columns=[{label: "文件名",prop: "fileName",scopedSlots: "fileName",},{ label: "删除时间",prop: "recoveryTime",width: "200",},{ label: "大小",prop: "fileSize",scopedSlots: "fileSize",width: "200",},
];
const tableData = ref({});
const tableOptions = {extHeight: 20,
};

**label:**表示列的标题,即表头的内容。
**prop:**表示列对应的数据字段,指定从 tableData 中获取哪一列的数据来显示。

2 scopedSlots(作用域插槽名称)属性

A Table(子组件)组件中

<template><div><el-tableref="dataTable":data="dataSource.list || []":height="tableHeight":stripe="options.stripe":border="options.border"header-row-class-name="table-header-row"highlight-current-row@row-click="handleRowClick"@selection-change="handleSelectionChange"><!-- :stripe="options.stripe" 斑马纹 --><!--selection选择框--><el-table-columnv-if="options.selectType && options.selectType == 'checkbox'"type="selection"width="50"align="center"></el-table-column><!--序号--><el-table-columnv-if="options.showIndex"label="序号"type="index"width="60"align="center"></el-table-column><!--数据列--><template v-for="(column, index) in columns"><template v-if="column.scopedSlots"><el-table-column:key="index":prop="column.prop":label="column.label":align="column.align || 'left'":width="column.width"><template #default="scope"><slot:name="column.scopedSlots":index="scope.$index":row="scope.row"></slot></template></el-table-column></template><template v-else><el-table-column:key="index":prop="column.prop":label="column.label":align="column.align || 'left'":width="column.width":fixed="column.fixed"></el-table-column></template></template></el-table><!-- 分页 --><divclass="pagination"v-if="showPagination"><el-paginationv-if="dataSource.totalCount"background:total="dataSource.totalCount":page-sizes="[15, 30, 50, 100]":page-size="dataSource.pageSize":current-page.sync="dataSource.pageNo":layout="layout"@size-change="handlePageSizeChange"@current-change="handlePageNoChange"style="text-align: right"></el-pagination></div></div>
</template>
<script setup>
import { ref, computed } from "vue";const emit = defineEmits(["rowSelected", "rowClick"]);
const props = defineProps({dataSource: Object,showPagination: {type: Boolean,default: true,},showPageSize: {type: Boolean,default: true,},options: {type: Object,default: {extHeight: 0,showIndex: false,},},columns: Array,fetch: Function, // 获取数据的函数initFetch: {type: Boolean,default: true,},
});const layout = computed(() => {return `total, ${props.showPageSize ? "sizes" : ""}, prev, pager, next, jumper`;
});
//顶部 60 , 内容区域距离顶部 20, 内容上下内间距 15*2  分页区域高度 46
const topHeight = 60 + 20 + 30 + 46;const tableHeight = ref(props.options.tableHeight? props.options.tableHeight: window.innerHeight - topHeight - props.options.extHeight
);//初始化
const init = () => {if (props.initFetch && props.fetch) {props.fetch();}
};
init();const dataTable = ref();
//清除选中
const clearSelection = () => {dataTable.value.clearSelection();
};//设置行选中
const setCurrentRow = (rowKey, rowValue) => {let row = props.dataSource.list.find((item) => {return item[rowKey] === rowValue;});dataTable.value.setCurrentRow(row);
};
//将子组件暴露出去,否则父组件无法调用,这两个方法在改项目中没有用到
defineExpose({ setCurrentRow, clearSelection });//行点击,点击行的任意位置,都可以选中
const handleRowClick = (row) => {dataTable.value?.toggleRowSelection(row);emit("rowClick", row);
};//多选
const handleSelectionChange = (row) => {emit("rowSelected", row);
};//切换每页大小
const handlePageSizeChange = (size) => {props.dataSource.pageSize = size;props.dataSource.pageNo = 1;props.fetch();
};
// 切换页码
const handlePageNoChange = (pageNo) => {props.dataSource.pageNo = pageNo;props.fetch();
};
</script>
<style lang="scss" scoped>
.pagination {padding-top: 10px;padding-right: 10px;
}
.el-pagination {justify-content: right;
}:deep(.el-table__cell) {padding: 4px 0px;
}
</style>

B 父组件中引用Table组件

<Table:columns="columns":showPagination="true":dataSource="tableData":fetch="loadDataList":initFetch="false":options="tableOptions"@rowSelected="rowSelected"@rowClick="rowClick">
</Table>
<script setup>
//列表
const tableData = ref({});
const tableOptions = {extHeight: 50,selectType: "checkbox",
};//多选 批量选择
const selectFileIdList = ref([]);
const rowSelected = (rows) => {selectFileIdList.value = [];rows.forEach((item) => {selectFileIdList.value.push(item.userId + "_" + item.fileId);});
};
</script>

如果columns数组对象中有scopedSlots(作用域插槽名称)属性,用来指定插槽名称,则可以在父组件中自定义一个插槽代替如下部分,若无,就按照Table组件中的方式去渲染

<template #插槽名字="{index,row}">
</template>

比如说在分享页面中,自定义一个fileName插槽代替如上部分

<template #fileName="{index,row} ">
</template>
<script setup>
const columns = [{label: "文件名",prop: "fileName",scopedSlots: "fileName",},]</script>

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

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

相关文章

Cesium 加载 本地 b3dm 格式文件 并且 获取鼠标点击处经纬度 (亲测可用)

很奇怪cesium 里面只支持 相对路径 不支持绝对路径 我把 模型放在 /***/Cesium-1.128/Apps/SampleData/Cesium3DTiles/Tilesets 下面 "../../SampleData/Cesium3DTiles/Tilesets/terra_b3dms/tileset.json",所有源码 const viewer new Cesium.Viewer("cesiu…

Spring AI核心之“ChatClient”-来自DeepSeek

在 Spring AI 生态中&#xff0c;ChatClient 是一个面向开发者设计的高层抽象接口&#xff0c;它简化了与大型语言模型&#xff08;LLMs&#xff09;的交互流程&#xff0c;尤其适用于需要快速构建端到端 AI 应用&#xff08;如聊天机器人、RAG 问答系统等&#xff09;的场景。…

购买电脑时,主要需要关注以下核心配置,它们直接影响性能、使用体验和价格。根据需求(办公、游戏、设计、编程等),侧重点会有所不同。看看Deepseek的建议

1. 处理器&#xff08;CPU&#xff09; 作用&#xff1a;电脑的“大脑”&#xff0c;影响整体运算速度和多任务处理能力。关键参数&#xff1a; 品牌与型号&#xff1a;Intel&#xff08;酷睿i3/i5/i7/i9&#xff09;或 AMD&#xff08;锐龙R3/R5/R7/R9&#xff09;。核心/线程…

408数据结构绪论刷题001

答案&#xff1a;D 解析&#xff1a; • A选项&#xff1a;数据元素是组成数据对象的基本单位 &#xff0c;它只是数据的基本个体&#xff0c;不能完整定义数据结构&#xff0c;所以A选项错误。 • B选项&#xff1a;数据对象是性质相同的数据元素的集合&#xff0c;仅仅描述…

c++STL——vector的使用和模拟实现

文章目录 vector的使用和模拟实现vector的使用vector介绍重点接口的讲解迭代器部分默认成员函数空间操作增删查改操作迭代器失效问题(重要)调整迭代器 vector的模拟实现实现的版本模拟实现结构预先处理的函数尾插函数push_backswap函数赋值重载size函数reserve函数 迭代器默认成…

Java深入

String相关的类 1.String不可变的类 源码&#xff1a; public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence {/** The value is used for character storage. */private final char value[];/** Cache the hash code for th…

【Java编程】【计算机视觉】一种简单的图片加/解密算法

by Li y.c. 一、内容简介 本文介绍一种简单的图片加/解密算法&#xff0c;算法的基本原理十分简单&#xff0c;即逐个&#xff08;逐行、逐列&#xff09;地获取图片的像素点颜色值&#xff0c;对其进行一些简单的算数运算操作进行加密&#xff0c;解密过程则相应地为加密运算…

从GPT到Gemini 大模型进化史

从GPT到Gemini&#xff1a;大模型进化史 在过去的几年里&#xff0c;人工智能领域经历了翻天覆地的变化&#xff0c;其中最引人注目的莫过于大规模语言模型的发展。从最初的GPT系列到最近的Gemini&#xff0c;这些模型不仅在技术上取得了重大突破&#xff0c;还在实际应用中展…

【AI提示词】中国历史与世界发展对比器

提示说明 输入特定年份&#xff0c;输出该时期中国与世界的发展状况。 提示词 # Role 中国历史与世界发展对比器## Profile - author: xxx - version: 1.0 - description: 输入特定年份&#xff0c;输出该时期中国与世界的发展状况。## Attention 请深入挖掘历史资料&#x…

阿里云OSS应对DDoS攻击策略

阿里云对象存储服务&#xff08;OSS&#xff09;若遭遇DDoS攻击&#xff0c;可结合阿里云提供的安全服务与自身配置优化进行综合防御。以下是具体的解决方案及步骤&#xff1a; 1. 启用阿里云DDoS防护服务 防护服务类型&#xff1a;阿里云提供基础DDoS防护&#xff08;默认免费…

MyCat 分库分表

介绍 问题分析 随着互联网及移动互联网的发展&#xff0c;应用系统的数据量也是成指数式增长&#xff0c;若采用单数据库进行数据存 储&#xff0c;存在以下性能瓶颈&#xff1a; 1. IO瓶颈&#xff1a;热点数据太多&#xff0c;数据库缓存不足&#xff0c;产生大量磁盘IO&a…

C++笔记-list

list即是我们之前学的链表&#xff0c;这篇主要还是讲解list的底层实现&#xff0c;前面会讲一些list区别于前面string和vector的一些接口以及它们的注意事项。 一.list的基本使用 和之前的string&#xff0c;vector一样&#xff0c;有很多之前见过的一些接口&#xff0c;经过…

unityTEngine学习记录2

上一篇了解了下载项目与外部调用的接口&#xff0c;接下来就继续学习根据这个框架来加载场景首先打开te官网&#xff0c;进入教程。 了解框架目录以及功能 首先要了解的就是这个框架的文件结构目录&#xff0c;知道他都是干啥的&#xff0c;在官网的目录结构中介绍了其中重要…

逻辑过期怎么设计

设计“逻辑过期”通常用于缓存、令牌管理、数据有效性验证等场景&#xff0c;其核心是通过业务逻辑判断数据是否过期&#xff08;而非单纯依赖物理时间&#xff09;。以下是设计逻辑过期的关键思路和实现方案&#xff1a; 1. 核心思想 物理过期&#xff1a;基于固定的时间&…

DAY 47 leetcode 232--栈与队列.用栈实现队列

题号232 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; class MyQueue {Stack<Integer> stackIn;Stack<Integer> stackOut;/** Initialize your data structure here. */pu…

逻辑回归 (Logistic Regression)

文章目录 逻辑回归 (Logistic Regression)问题的引出Sigmoid function逻辑回归的解释决策边界 (Decision boundary)逻辑回归的代价函数机器学习中代价函数的设计1. 代价函数的来源&#xff08;1&#xff09;从概率模型推导而来&#xff08;统计学习视角&#xff09;&#xff08…

关于C语言的模拟物理模型

声明&#xff1a;本文全部代码效果基于C语言easyx图形界面库。 引言 关于很多游戏和模型的开发&#xff0c;都需要模拟真实的物理模型 比如&#xff1a;基本矢量运动模型&#xff08;位移&#xff0c;速度&#xff0c;加速度&#xff09;&#xff0c;重力模型&#xff0c;碰撞…

C++编译与链接:从源码到可执行文件的魔法之旅(Visual Studio实践)

文章目录 **C++编译与链接:从源码到可执行文件的魔法之旅(Visual Studio实践)****一、C++编译器的工作流程****二、Visual Studio环境配置实战****三、示例项目:Hello World全流程解析****四、高级技巧与工具链****五、总结与参考资料**C++编译与链接:从源码到可执行文件的…

现代C++的范式演进与工程实践深度解析(本文序号不知道怎么整的,有点问题)

引言:C++的复兴时代 在经历了"已死语言"的质疑后,现代C++正迎来前所未有的复兴。据2024年TIOBE指数显示,C++以8.33%的占比稳居第三,较2020年上升2.1个百分点。这种复兴并非偶然——随着C++20标准的全面落地和C++23特性的逐步实现,这门已有40年历史的语言正在系…

通过gird布局实现div的响应式分布排列

目标&#xff1a;实现对于固定宽度的div盒子在页面中自适应排布&#xff0c;并且最后一行的div盒子可以与前面的盒子对齐。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" con…