【antd + vue】表格行合并,同時使用插槽

一、需求說明

表格中,如果一個學校有多個考試科目,則分行展示,其余列,則合并為一行展示,如圖所示

?

二、需求分析

1、表格行合并

相當于有4行,其中1、2行是同一個學校包含不同考試科目及對應人次的數據,所以除“考試科目、科目人次”列外,其余列數據相同,需要合并成一行;其中3、4行,同理;

ps:即上圖所示,分行展示的同一個學校中,“考試科目、科目人次”列如果有多個科目,則分行展示。

2、單元格內容自定義

“序號”列:根據合并行后的序號計算;

“完善性檢查”列:需要根據返回結果來判斷,單元格的內容及樣式;

“操作”列:需要自定義單元格內容;

?三、解決辦法

1、html 代碼

<a-table:rowKey="(record, index) => index":columns="dataList.columns":dataSource="dataList.dataSource":loading="dataList.loading":pagination="false"bordered
><!-- “序號”列 --><template v-slot:num="slotProps">{{(queryParm.pageIndex - 1) * queryParm.pageSize +dataList.mergeList.slice(0, slotProps.index).filter(res => {return res !== 0;}).length +1}}</template><!-- “完備性檢測”列 --><template #state="{ record }"><span v-if="record.state === '2'" class="safe-level-1">考生照異常</span><span v-else-if="record.state === '1'" class="safe-level-2">正常</span><span v-else class="safe-level-1">考生照片不全</span></template><!-- “操作”列 --><template #action="{ record }"><div class="inline look" @click.stop="getDetails(record)"><svg-icon icon-class="details" class="icon look"></svg-icon><span class="note">詳情</span></div></template>
</a-table>

?

2、數據 格式


const queryParm= reactive({pageIndex: 1,pageSize: 10
});const dataList= reactive({dataSource: [],columns: [{title: "序號",dataIndex: "num",key: "num",align: "center",width: 100,slots: { customRender: "num" },customCell: (record, rowIndex) => {return {style: {display: dataList.mergeList[rowIndex] === 0 ? "none" : undefined},rowSpan: dataList.mergeList[rowIndex]};}},{title: "學校名稱",dataIndex: "schoolName",key: "schoolName",ellipsis: true,customCell: (record, rowIndex) => {return {style: {display: dataList.mergeList[rowIndex] === 0 ? "none" : undefined},rowSpan: dataList.mergeList[rowIndex]};}},{title: "所屬區縣",dataIndex: "cityName",key: "cityName",ellipsis: true,customCell: (record, rowIndex) => {return {style: {display: dataList.mergeList[rowIndex] === 0 ? "none" : undefined},rowSpan: dataList.mergeList[rowIndex]};}},{title: "報名人數",dataIndex: "stuNum",key: "stuNum",ellipsis: true,customCell: (record, rowIndex) => {return {style: {display: dataList.mergeList[rowIndex] === 0 ? "none" : undefined},rowSpan: dataList.mergeList[rowIndex]};}},{title: "涉及考點",dataIndex: "siteName",key: "siteName",ellipsis: true,customCell: (record, rowIndex) => {return {style: {display: dataList.mergeList[rowIndex] === 0 ? "none" : undefined},rowSpan: dataList.mergeList[rowIndex]};}},{title: "考試科目",dataIndex: "subjectName",key: "subjectName",ellipsis: true},{title: "科目人次",dataIndex: "numberOfSubject",key: "numberOfSubject",ellipsis: true},{title: "上傳時間",dataIndex: "createTime",key: "createTime",ellipsis: true,customCell: (record, rowIndex) => {return {style: {display: dataList.mergeList[rowIndex] === 0 ? "none" : undefined},rowSpan: dataList.mergeList[rowIndex]};}},{title: "完備性檢測",dataIndex: "state",key: "state",ellipsis: true,slots: { customRender: "state" },customCell: (record, rowIndex) => {return {style: {display: dataList.mergeList[rowIndex] === 0 ? "none" : undefined},rowSpan: dataList.mergeList[rowIndex]};}},{title: "操作",dataIndex: "action",key: "action",width: 100,slots: { customRender: "action" },customCell: (record, rowIndex) => {return {style: {display: dataList.mergeList[rowIndex] === 0 ? "none" : undefined},rowSpan: dataList.mergeList[rowIndex]};}}],total: 0,loading: false,mergeList: []}
});

?

?注意事項


?PS:

1、使用?customCell 屬性合并行,則不會影響插槽及?customRender 屬性的使用;

2、customCell 單元格合并后,需要對被合并行進行樣式上的隱藏處理(如果沒有在樣式上隱藏被合并行,則被合并行會被擠到該行列尾);

3、rowSpan 屬性 支持行合并:

????????值為 0 時,該單元格不會渲染(即,被合并);

? ? ? ? 值為 1 時,該單元格正常顯示(即,1行);

????????值為 2 時,該單元格與下一行一起合并展示(即,原2行,現1行展示);

????????值為 3 時,該單元格與下兩個行一起合并展示(即,原3行,現1行展示);

? ? ? ? 以此類推

?

?3、合并行計算

數據處理代碼如下:

/*** @description 獲取合并單元格rowSpan集合* @param {Array} dataScroce 數據源* @param {String} filed 需要合并的字段* @returns {Array} 該字段下單元格rowSpan集合*/
const getRowspan = (dataScroce, filed) => {let spanArr = [];let position = 0;dataScroce.forEach((item, index) => {if (index === 0) {spanArr.push(1);position = 0;} else {//需要合并的地方判斷if (dataScroce[index][filed] === dataScroce[index - 1][filed]) {spanArr[position] += 1;spanArr.push(0);} else {spanArr.push(1);position = index;}}});return spanArr;
};

得到每行是否需要合并的結果:

dataList.mergeList = getRowspan(dataList.dataSource, "schoolName");

?

四、參考鏈接

antd的a-table表格中合并且使用插槽(使用customRender合并出現問題解決方案)_a-table customrender-CSDN博客文章瀏覽閱讀1.5w次,點贊30次,收藏44次。antd的a-table表格中合并且使用插槽1. customRender合并單元格在antd官方文檔中,是由使用customRender方式將單元格合并的方法data() { const columns = [ { title: 'Name', dataIndex: 'name', customRender: (text, row, index) => { if (index < 4) { _a-table customrenderhttps://blog.csdn.net/chenyuhang_henry/article/details/118187249?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-4-118187249-blog-124870111.235^v43^pc_blog_bottom_relevance_base9&spm=1001.2101.3001.4242.3&utm_relevant_index=7

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/39332.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39332.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39332.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

判斷磁盤是SSD或HDD盤

1. 判斷磁盤是SSD或HDD盤 1、沒有使用raid方案 lsblk -d -o name,rota命令&#xff0c;0表示SSD&#xff0c;1表示HDD # lsblk -d -o name,rota NAME ROTA sda 0 sdb 1 sdc 12、使用raid方案 下載工具 wget https://raw.githubusercontent.com/eLvErDe/hwraid…

Java_多線程:實現多線程

Java中實現多線程的常用方式&#xff1a; 繼承Thread類實現Runnable接口實現Callable接口(JDK>1.5)線程池方式創建 實現Runnable接口與Callable接口的區別 Callable規定&#xff08;重寫&#xff09;的方法是call()&#xff0c;Runnable規定&#xff08;重寫&#xff09;的…

Java的全局異常處理代碼

第一步&#xff1a;先寫一個異常管理類: package com.example.firefighting.exceptions;import com.example.firefighting.utils.Result; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerA…

手機數據恢復篇:如何在恢復出廠設置后的 iPhone 恢復短信

您可能會認為&#xff0c;在恢復出廠設置iPhone后恢復短信時&#xff0c;一切都會丟失&#xff0c;但是仍然有一些方法可以檢索您的重要對話。截至 2024 年&#xff0c;數據恢復技術的進步使得從備份甚至直接從設備內存中搶救消息變得更加容易。無論是通過 iCloud、iTunes 還是…

LeetCode Hard|124.二叉樹中的最大路徑和

力扣題目鏈接 題目解讀&#xff1a; 二叉樹路徑的定義即從1.任意節點出發&#xff0c;到達任意節點&#xff1b;2.該路徑至少包含一個節點&#xff0c;且不一定經過跟節點&#xff1b;3.求所有可能路徑和的最大值。 也就是說路徑途徑一個節點只能選擇來去兩個方向 考慮一個二叉…

mongoose的個性化提取(字段篩選,數據據排序,數據截斷)

1.字段篩選 let BookModel mongoose.model(books,BookSchema);BookModel.find().select({name:1,author:1}).then((err,data) > {//回調返回數據if(err){console.log(err);return;}console.log(data);})//值為1表示顯示數據&#xff0c;為0表示不顯示數據 數據排序 BookMod…

2025年U.S.News世界大學排名前200榜單

近日&#xff0c;U.S. News公布了2025全球最佳院校排名&#xff0c;作為公認的四大世界高校排行榜&#xff0c;該排名主要圍繞著學術聲譽、學術成果等&#xff0c;因此備受訪問學者、聯合培養博士生及博士后申請者們青睞&#xff0c;知識人網小編特作介紹并發布排名前200的榜單…

使用Go語言實現高效的數據挖掘

隨著數據量的不斷增加以及各種數據類型的不斷涌現&#xff0c;數據挖掘技術變得越來越重要。在現代數據科學領域中&#xff0c;使用大量數據進行機器學習和其他挖掘任務已經成為常態。然而&#xff0c;在完成這些任務時&#xff0c;使用的編程語言對效率和結果都有著重要的影響…

我與C++的愛戀:list的使用

? ? &#x1f525;個人主頁&#xff1a;guoguoqiang. &#x1f525;專欄&#xff1a;我與C的愛戀 一、list介紹 1.list是可以在常數范圍內在任意位置進行插入和刪除的序列式容器&#xff0c;并且該容器可以前后雙向迭代 2.list的底層是雙向鏈表結構&#xff0c;雙向鏈表中…

華為OCR 騰訊OCR 百度OCR 三家各分秋色 第一當屬華為

當提及華為OCR的應用場景時&#xff0c;這些是常見的使用案例&#xff1a; 金融行業&#xff1a;在銀行和金融機構中&#xff0c;華為OCR技術廣泛用于身份證件識別、銀行卡識別和票據識別。這些功能可以用于客戶身份驗證、快速開戶以及自動化的支付處理。 政府服務&#xff1a…

淺析Estimator、model_fn與EstimatorSpec

參考閱讀&#xff1a;https://zhuanlan.zhihu.com/p/74857888 文章目錄 綜合對比Estimatormodel_fnEstimatorSpec關系總結 Estimator主要功能構造函數參數示例用法小結 model_fnEstimatorSpec字段解釋解釋代碼用途 綜合對比 Estimator、model_fn 和 EstimatorSpec 是 TensorF…

西電811考研、140分專業課及811/821經驗

被擬錄取了&#xff0c;說一說自己考研經驗&#xff0c;本人跟的研夢考研全程班&#xff0c;胖覃學長很負責任&#xff0c;貌似已經直博西電了&#xff0c;但也很負責。 1、通信工程學院分為學碩與專碩&#xff0c;學碩包含信息與通信工程、交通運輸工程、軍隊指揮學&#xff…

Perl語言中的排序藝術:深入探討內置排序函數

Perl是一種功能強大的腳本語言&#xff0c;以其靈活的文本處理能力而聞名。在Perl中&#xff0c;排序是一項常見的任務&#xff0c;無論是對數組元素進行排序&#xff0c;還是對復雜數據結構進行排序&#xff0c;Perl都提供了多種內置的排序函數&#xff0c;以滿足不同的需求。…

深入掌握Symfony與Composer:PHP依賴管理的藝術

引言 Composer是PHP的依賴管理工具&#xff0c;廣泛用于Symfony等現代PHP應用程序中。它允許開發者聲明依賴項&#xff0c;自動處理依賴的安裝和更新&#xff0c;確保應用程序的依賴項得到有效管理。本文將詳細介紹Composer的使用方法&#xff0c;包括基本命令、依賴管理、自動…

Linux環境安裝配置nginx服務流程

Linux環境的Centos、麒麟、統信操作系統安裝配置nginx服務流程操作&#xff1a; 1、官網下載 下載地址 或者通過命令下載 wget http://nginx.org/download/nginx-1.20.2.tar.gz 2、上傳到指定的服務器并解壓 tar -zxvf nginx-1.20.1.tar.gzcd nginx-1.20.1 3、編譯并安裝到…

條件過濾檢索

背景介紹 在大多數業務場景中&#xff0c;單純使用向量進行相似性檢索并無法滿足業務需求&#xff0c;通常需要在滿足特定過濾條件、或者特定的“標簽”的前提下&#xff0c;再進行相似性檢索。 向量檢索服務DashVector支持條件過濾和向量相似性檢索相結合&#xff0c;在精確滿…

數字化供應鏈:背景特點

?背景 1、外部環境 近年來&#xff0c;供應鏈脆弱性凸顯&#xff0c;企業供應鏈壓力難以緩解。 美國媒體針對美國零售聯合會、美國服裝和鞋類協會、美國供應鏈管理專業委員會等主體進行的一項供應鏈調查顯示&#xff1a; 61%的供應鏈經理預計&#xff0c;供應鏈紊亂問題至少…

C++(第一天-----命名空間和引用)

一、C/C的區別 1、與C相比   c語言面向過程&#xff0c;c面向對象。   c能夠對函數進行重載&#xff0c;可使同名的函數功能變得更加強大。   c引入了名字空間&#xff0c;可以使定義的變量名更多。   c可以使用引用傳參&#xff0c;引用傳參比起指針傳參更加快&#…

企業化運維(5)_mysql數據庫

###1.源碼編譯mysql### 對壓縮包進行解壓&#xff0c;并對mysql進行源碼編譯&#xff0c;其中需要下載依賴才能編譯成功。 官網&#xff1a; www.mysql.com解壓并進入目錄 [rootserver1 ~]# tar xf mysql-boost-5.7.40.tar.gz [rootserver1 ~]# cd mysql-5.7.40/安裝依賴性…

初識Java(復習版)

一. 什么是Java Java是一種面向對象的編程語言&#xff0c;和C語言有所不同&#xff0c;C語言是一門面向過程的語言。偏底層實現&#xff0c;比較注重底層的邏輯實現。不能一味的說某一種語言特別好&#xff0c;每一種語言都是在特定的情況下有自己的優勢。 二.Java語言發展史…