el-table合并列實例

想要實現效果:

目前接口返回數據

data:[{companyCode: "NXKYS",companyName:'1123',costContractId:'1123',costContractName:'1123',createBy:'1123',details:[{brand:'1123',contractItemName:'1123',modelSpec:'1123',projectItemId:'1123',requestQty:'1123',transactionZone:'1123'},{brand:'1123',contractItemName:'1123',modelSpec:'1123',projectItemId:'1123',requestQty:'1123',transactionZone:'1123'},]},{companyCode: "NXKYS",companyName:'1123',costContractId:'1123',costContractName:'1123',createBy:'1123',details:[{brand:'1123',contractItemName:'1123',modelSpec:'1123',projectItemId:'1123',requestQty:'1123',transactionZone:'1123'},{brand:'1123',contractItemName:'1123',modelSpec:'1123',projectItemId:'1123',requestQty:'1123',transactionZone:'1123'},]}];

其中要根據details這個字段去進行展示圖中標記的列。并將其他列進行合并。

首先要重新修改數據格式,方便進行合并以及列表渲染的展示。

接口返回的數據在tableData.value中

計算需要處理子表的數據

const flattenedData = computed(() => {const result = [];const data = tableData.value;if (!data || !Array.isArray(data)) {return result;}data.forEach((mainItem, mainIndex) => {if (mainItem?.details && Array.isArray(mainItem.details) && mainItem.details.length > 0) {mainItem.details.forEach((detail, detailIndex) => {result.push({...mainItem,...detail,_mainIndex: mainIndex,_detailIndex: detailIndex});});} else {result.push({...mainItem,_mainIndex: mainIndex, _detailIndex: 0 // 這是 details 為空時的唯一一行});}});return result;});

el-table中添加span-method方法

<el-table

? ? ? ? ? ref="tableRef"

? ? ? ? ? v-loading="tableLoading"

? ? ? ? ? :data="flattenedData"

? ? ? ? ? :height="tableHeight"

? ? ? ? ? :header-cell-style="{ backgroundColor: '#F6F8FC' }"

? ? ? ? ? highlight-current-row

? ? ? ? ? :border="props.border"

? ? ? ? ? v-bind="$attrs"

? ? ? ? ? @current-change="handleSelectionChange"

? ? ? ? ? @header-dragend="headerDragend"

? ? ? ? ? :scrollbar-always-on="true"

? ? ? ? ? :span-method="objectSpanMethod"

? ? ? ? >

const objectSpanMethod = ({ row, column, rowIndex, columnIndex }) => {const mergeColumns = ['documentCode','costContractId','costContractName','supplierName','handlerDepartmentDesc','projectId','projectName','whName','whCategoryDesc','workflowStateDesc','xz','xh','cz',];const prop = column.property;if (!row) {console.warn('Row is undefined in objectSpanMethod');return { rowspan: 1, colspan: 1 };}if (row._mainIndex === undefined || row._mainIndex === null) {console.warn(`_mainIndex is ${row._mainIndex} for row at index ${rowIndex}`);return { rowspan: 1, colspan: 1 };}if (mergeColumns.includes(prop)) {const mainItemIndex = row._mainIndex;if (!tableData.value || mainItemIndex < 0 ||mainItemIndex >= tableData.value.length ) {console.error('Invalid mainItemIndex or tableData');return { rowspan: 1, colspan: 1 };}const mainItem = tableData.value[mainItemIndex]; if (!mainItem) {console.error(`mainItem is missing for index ${mainItemIndex}`);return { rowspan: 1, colspan: 1 };}const details = mainItem.details || [];const detailCount = details.length;const effectiveRowspan = detailCount > 0 ? detailCount : 1;if (row._detailIndex === 0) {return {rowspan: effectiveRowspan,colspan: 1,};} else {return {rowspan: 0,colspan: 0,};}}return {rowspan: 1,colspan: 1,};
};

mergeColumns定義的是需要進行合并的列的props;

列表渲染就正常展示就可以

如:

?<el-table-column

? ? ? ? prop="transactionZone"

? ? ? ? label="入庫分區"

? ? ? ? :show-overflow-tooltip="true"

? ? ? ? width="150"

? ? ? >

? ? ? </el-table-column>

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

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

相關文章

虛假 TradingView Facebook 廣告在全球傳播 Android 間諜軟件

一項快速發展的惡意廣告活動最初通過 Meta 的廣告網絡針對 Windows 用戶&#xff0c;現已將其范圍擴展到 Android 設備&#xff0c;推廣偽裝成合法交易應用程序的 Brokewell 惡意軟件的高級版本。 Bitdefender Labs 警告稱&#xff0c;此次移動攻擊活動目前已在全球范圍內展開…

Android系統框架知識系列(十九):Android安全架構深度剖析 - 從內核到應用的全棧防護

?關鍵詞?&#xff1a;安全啟動鏈、應用沙箱、SELinux、硬件安全模塊、權限控制、零信任架構一、Android安全架構的基本概念與背景1. 移動安全環境的特殊性Android作為全球最大的移動操作系統&#xff0c;面臨著獨特的安全挑戰&#xff1a;?移動設備的安全威脅維度?&#xf…

智能消防栓悶蓋終端:讓城市消防管理更智慧高效

然而您是否知道&#xff0c;這些傳統的消防栓常常面臨非法開啟、人為破壞、水壓不足等管理難題&#xff1f;當火災真正發生時&#xff0c;它們能否可靠地提供"救命水"&#xff1f;如今&#xff0c;隨著智能消防栓悶蓋終端的出現&#xff0c;這一切正在悄然改變。 智…

【系統架構設計(一)】系統工程與信息系統基礎上:系統工程基礎概念

文章目錄一、系統工程的基本概念二、系統工程方法論1、霍爾三維結構&#xff1a;硬科學2、切克蘭德方法&#xff1a;軟科學思維3、其他三、系統工程生命周期管理1、生命周期階段劃分2、生命周期方法論系統工程與信息系統基礎為復雜系統設計提供從思維方法到具體技術的全方位指導…

[p2p-Magnet] 隊列與處理器 | DHT路由表

第6章&#xff1a;隊列與處理器 在第5章&#xff1a;分類器中&#xff0c;我們了解了系統如何分析原始種子數據。但當系統突然發現數百萬新種子時&#xff0c;如何高效處理這些海量任務&#xff1f;這就是隊列與處理器系統的職責所在。 核心概念 任務隊列 功能定位&#xf…

Spring JDBC 源碼初探:異常處理體系

一、Spring JDBC 異常體系簡介 當我們使用 Spring JDBC 進行數據訪問時&#xff0c;大多數人關注的是 JdbcTemplate 如何簡化數據庫操作&#xff0c;卻很少有人去深入理解異常體系。事實上&#xff0c;異常不僅僅是錯誤提示&#xff0c;它是系統健壯性、可維護性的重要一環。JD…

如何提高微型導軌的生產效率?

在精密機械制造領域&#xff0c;每一個細微的元件都可能成為決定產品性能和品質的關鍵因素。而微型導軌正是體型小、高精度優勢&#xff0c;在精密制造領域得到廣泛應用&#xff0c;它高效支撐著現代工業的生產方式和效率。那么&#xff0c;如何提高微型導軌的生產效率呢&#…

輕量xlsx讀取庫xlsx_drone的編譯與測試

這個庫是在看其他網頁時&#xff0c;作為和功能豐富的xlsxio庫的對比來的&#xff0c;按照xlsx_drone github頁面介紹&#xff0c; 特征 不使用任何外部應用程序來解析它們。注重速度而不是功能。簡單的接口。UTF-8 支持。 安裝 直接將 src 和 ext 文件夾復制并粘貼到項目根文…

Linux/UNIX系統編程手冊筆記:文件I/O、進程和內存分配

文件 I/O 深度解析&#xff1a;掌握通用 I/O 模型的核心邏輯 在 Linux 系統編程中&#xff0c;文件 I/O 是程序與外部設備&#xff08;文件、設備等 &#xff09;交互的基礎。從打開文件到讀寫數據&#xff0c;再到關閉資源&#xff0c;一系列系統調用構成了通用 I/O 模型的核心…

C++轉置正方形矩陣

C轉置正方形矩陣&#xff0c;就是正方形矩陣的a[i][j]a[j][i]。輸入31 2 34 5 6 7 8 9輸出1 4 72 5 83 6 9#include<bits/stdc.h> using namespace std; int main(){int n;cin>>n;int arr[n5][n5];for(int i0;i<n;i){for(int j0;j<n;j){cin>>arr[i][j]…

Ztero文獻管理工具插件設置——親測有效

一、Zotero簡介與安裝 Zotero是一款開源文獻管理軟件&#xff0c;能夠幫助我們方便地收集、整理、引用和導出文獻。它作為一個"在你的網頁瀏覽器中工作的個人研究助手"&#xff0c;可以捕獲網頁內容并自動添加引用信息。 安裝步驟&#xff1a; 訪問Zotero官網&…

【gflags】安裝與使用

gflags1. 介紹2. 安裝3. 使用3.1 頭文件3.2 定義參數3.3 訪問參數3.4 不同文件訪問參數3.5 初始化所有參數3.6 運行參數設置3.7 配置文件的使用3.8 特殊參數標識1. 介紹 gflags 是 Google 開發的一個開源庫&#xff0c;用于 C 應用程序中命令行參數的聲明、定義和解析。gflags…

基于MATLAB的三維TDOA定位算法仿真實現

一、算法原理與仿真框架 三維TDOA&#xff08;Time Difference of Arrival&#xff09;定位通過測量信號到達多個基站的時間差&#xff0c;結合幾何關系反演目標位置。其核心步驟包括&#xff1a;幾何建模&#xff1a;建立目標與基站間的距離差方程&#xff0c;形如下式&#x…

Linux-搭建DNS服務器

Linux-搭建DNS服務器1. 安裝軟件bind2.修改配置文件3. 在其他機器上測試DNS服務器4. 配置本地域名解析5. 優化后的zone1. 安裝軟件bind bind是歷史非常悠久&#xff0c;而且性能非常好的dns域名系統的軟件 [rootdns-server ~]# yum install bind bind-utils -y 啟動named服務 …

從全棧開發視角看Java與前端技術融合實踐

從全棧開發視角看Java與前端技術融合實踐 面試場景記錄&#xff1a;一次真實的面試對話 面試官&#xff1a;你好&#xff0c;很高興見到你。我是這次面試的負責人&#xff0c;可以簡單介紹一下你自己嗎&#xff1f; 應聘者&#xff1a;您好&#xff0c;我叫李明&#xff0c;今年…

第二階段WinForm-11:自定義控件

1_繼承鏈 &#xff08;1&#xff09;Form1的繼承鏈&#xff1a;Form1>Form>ContainerControl>ScrollableControl>Control &#xff08;2&#xff09;Button的繼承鏈&#xff1a;Button>ButtonBase>Control>Component 2_自定義控件 &#xff08;1&…

【2025 完美解決】Failed connect to github.com:443; Connection timed out

文章目錄前言1. 生成并上傳 SSH Key2. 寫 SSH 配置&#xff0c;強制走 ssh.github.com:4433. 連通性自檢&#xff08;看是否能握手成功&#xff09;4. 克隆5. 驗證前言 今天和往常一樣&#xff0c;寫完代碼&#xff0c;準備 push 到 github 倉庫中&#xff0c;結果發現一直卡在…

C++基礎(③反轉字符串(字符串 + 雙指針))

題目描述&#xff1a;編寫一個函數&#xff0c;將輸入的字符串反轉過來&#xff08;要求原地修改字符串&#xff0c;不使用額外空間&#xff09;。 示例&#xff1a;輸入 s ["h","e","l","l","o"] → 輸出 ["o",…

vue的動態組件keep-alive實現組件緩存和狀態保留

在 Vue.js 中&#xff0c;動態組件結合 keep-alive 是實現組件緩存和狀態保留的重要技術方案。以下是詳細解析&#xff1a;一、動態組件基礎 通過 <component :is> 實現組件動態切換&#xff1a; <component :is"currentComponent"></component>cu…

安裝Docker Desktop報錯WSL needs updating

&#xff08;1&#xff09;首先觀察下面是否勾選&#xff08;2&#xff09;說明已經啟動了&#xff0c;但是需要更新&#xff0c;cmd運行下面代碼&#xff0c;記得需要開一下代理&#xff0c;可能會有點慢上面就算好了&#xff08;3&#xff09;點擊restart這樣就代表成功了