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.pswp.cn/diannao/79369.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79369.shtml
英文地址,請注明出處:http://en.pswp.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…