el-table 自定義列、自定義數據

一、對象數組格式自定義拆分為N列

1-1、數據格式:

 const arrayList = ref([{"RACK_NO": "A-1-001"},{"RACK_NO": "A-1-002"},{ "RACK_NO": "A-1-003"},//省略多個{"RACK_NO": "A-1-100"}
])

1-2、自定義為3列: 數據 | 操作 | 數據 | 操作?| 數據 | 操作?

1-3、代碼

<template><div><el-table :data="tableList" border ref="table" :cell-style="{ 'text-align':             'center' }" :header-cell-style="{background: '#5f697d',color: '#fff',height: '10px','text-align': 'center'}" stripe v-loading="loading"><!-- 動態生成列 --><template v-for="(column, index) in columns" :key="index"><el-table-column :label="column.label" :width="column.width"><template #default="{ row }"><div v-if="column.type === 'number'" class="rack_style">{{ row[column.index]?.RACK_NO }}</div><el-button v-else-if="column.type === 'action'" type="primary"v-if="row[column.index]?.RACK_NO">{{ row[column.index]?.RACK_NO }}</el-button></template></el-table-column></template></el-table></div>
</templete><script setup>const columns = ref([{ label: '編號', type: 'number', index: 0, width: '150' },{ label: '操作', type: 'action', index: 0 },{ label: '編號', type: 'number', index: 1, width: '150' },{ label: '操作', type: 'action', index: 1 },{ label: '編號', type: 'number', index: 2, width: '150' },{ label: '操作', type: 'action', index: 2 }]);</script>
<script setup>
import { ref, onMounted } from 'vue'const RACK_NO_LIST = ref([])  // 得到的數據
const tableList = ref([])  // 處理后的數據// 截取處理數據
const chunkArray = (arr, size) => {const result = [];for (let i = 0; i < arr.length; i += size) {result.push(arr.slice(i, i + size));}return result;
}const getOneDetail = async (val) => {loading.value = truetry {userService.getTableList(val).then(res => {if (res.code === 200) {RACK_NO_LIST.value = res.data.RACK_NO_LISTtableData.value = chunkArray(RACK_NO_LIST.value, 3);} else {toast(res.msg, 'error');}})} finally {loading.value = false}
}onMounted(() => {const urlParams = new URLSearchParams(window.location.search)currentRackCode.value = urlParams.get('code')?.toString() || ''if (currentRackCode.value) {getOneDetail(currentRackCode.value)}
})

二、自定義表頭、列、數據

2-1、 數據格式:

const data = ref({"類型1": [{"WT": "1.0", "MNY": "1.00", "WT_NM": "kg", "GRADE_NO": "1"}], "類型2" : [{ "WT": "2.0", "MNY": "3.00", "WT_NM": "kg", "GRADE_NO": "1" }],"類型3" : [{ "WT": "2.0", "MNY": "3.00", "WT_NM": "kg", "GRADE_NO": "2" }]
})

2-2、需要的樣式

?2-3、代碼

<template><div><el-table :data="tableListShow" border ref="table":cell-style="{ 'text-align': 'center' }" :header-cell-style="{background: '#5f697d',color: '#fff',height: '10px','text-align': 'center'}" stripe v-loading="loading"><el-table-column v-for="(column, index) in tableColumns" :key="index"         :label="column.label":prop="column.prop"><template #default="scope">{{ scope.row[column.prop] }}</template></el-table-column></el-table></div>
</template>
<script setup>const tableList = ref([]) // 返回的數據
const tableListShow = ref([])  // 表格實際顯示的數據onMounted(() => {tableList.value = {"類型1": [{"WT": "1.0", "MNY": "1.00", "WT_NM": "kg"}], "類型2" : [{ "WT": "2.0", "MNY": "3.00", "WT_NM": "kg"}],"類型3" : [{ "WT": "2.0", "MNY": "3.00", "WT_NM": "kg"}]}
});// 自定義表頭
const tableColumns = computed(() => {const columns = [];for (const key in tableList.value) {const firstItem = tableList.value[key][0];if (firstItem) {const gradeNoLabel = key  // 類型1 類型2 類型3columns.push({ label: '重量', prop: `${key}_WT_WTNM` });columns.push({ label: gradeNoLabel , prop: `${key}_MNY` });}}return columns;
});// 處理顯示的數據
const tableListShow = computed(() => {const result = [];let maxLength = 0;for (const key in tableList.value) {maxLength = Math.max(maxLength, tableList.value[key].length);}for (let i = 0; i < maxLength; i++) {const row = {};for (const key in tableList.value) {const item = tableList.value[key][i];if (item) {row[`${key}_WT_WTNM`] = `${item.WT} ${item.WT_NM}`;row[`${key}_MNY`] = `₩${fitem.MNY}`;} else {row[`${key}_WT_WTNM`] = "-";row[`${key}_MNY`] = "-";}}result.push(row);}return result;
});

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

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

相關文章

JVM 如何使用性能分析工具定位代碼中的性能問題?

核心思想&#xff1a; 通過工具觀察程序在特定負載下的運行狀態&#xff0c;識別消耗資源最多的代碼段&#xff08;熱點代碼&#xff09;、異常的內存分配模式或線程阻塞情況&#xff0c;然后針對性的優化代碼。 通用步驟&#xff1a; 確定問題&#xff1a; 首先明確遇到了什…

Python虛假新聞檢測識別

程序示例精選 Python虛假新聞檢測識別 如需安裝運行環境或遠程調試&#xff0c;見文章底部個人QQ名片&#xff0c;由專業技術人員遠程協助&#xff01; 前言 這篇博客針對《Python虛假新聞檢測識別》編寫代碼&#xff0c;代碼整潔&#xff0c;規則&#xff0c;易讀。 學習與應…

網絡原理 - 12(HTTP/HTTPS - 3 - 響應)

目錄 認識“狀態碼”&#xff08;status code&#xff09; 200 OK 404 Not Found 403 Forbidden 405 Method Not Allowed 500 Internal Server Error 504 Gateway Timeout 302 Move temporarily 301 Moved Permanently 418 I am a teaport 狀態碼小結&#xff1a; …

Spring Boot中集成Guava Cache或者Caffeine

一、在Spring Boot(1.x版本)中集成Guava Cache 注意&#xff1a; Spring Boot 2.x用戶&#xff1a;優先使用Caffeine&#xff0c;性能更優且維護活躍。 1. 添加依賴 在pom.xml中添加Guava依賴&#xff1a; <dependency><groupId>com.google.guava</groupId&…

Linux工作臺文件操作命令全流程解析

全文目錄 1 確認當前工作路徑2 導航與目錄管理2.1 關鍵命令2.2 邏輯銜接 3 文件基礎操作3.1 創建 → 備份 → 重命名 → 清理3.2 文件查看和編輯3.3 文件鏈接3.4 文件diff 4 文件權限與所有權管理5 文件打包與歸檔6 參考文獻 寫在前面 shell是一種命令解釋器&#xff0c;它提供…

LeetCode第183題_從不訂購的客戶

LeetCode 第183題&#xff1a;從不訂購的客戶 題目描述 表: Customers ---------------------- | Column Name | Type | ---------------------- | id | int | | name | varchar | ---------------------- id 是該表的主鍵。 該表包含消費者的 id 和…

c語言的常用關鍵字

c語言的常用關鍵字 c語言的關鍵字表示數據類型的關鍵字autocharfloatdoubleintlongshortvoidsignedstruct、enum、unionunsigned 表示分支語句的關鍵字ifelseswitchbreakcasecontinuedefault 表示循環語句的關鍵字whiledoforgoto 用于修飾變量或函數的關鍵字constconst修飾變量…

MCU通用輸入輸出端口(GPIO)設計指南

在嵌入式系統開發中&#xff0c;MCU的GPIO接口是一個基礎但非常實用的功能模塊。GPIO全稱是通用輸入輸出端口&#xff0c;它讓MCU可以靈活地與外部設備進行交互。 GPIO的主要特點包括&#xff1a; 多功能性&#xff1a;每個引腳都可以單獨配置為輸入或輸出 可編程性&#xff…

STM32完整內存地址空間分配詳解

在STM32這類基于ARM Cortex-M的32位微控制器中&#xff0c;整個4GB的地址空間(從0x00000000到0xFFFFFFFF)有著非常系統化的分配方案&#xff0c;每個區域都有其特定的用途。下面我將詳細介紹這些地址區域的分配及其功能&#xff1a; STM32完整內存地址空間分配詳解(0x00000000…

實現水平垂直居中的多種方法

在前端開發中&#xff0c;元素的居中是一個常見但又經常讓人頭疼的問題。本文將全面總結各種CSS居中方法&#xff0c;特別是如何實現一個div的水平垂直居中。 為什么居中這么重要&#xff1f; 居中布局是現代網頁設計中最基礎也最重要的布局方式之一。無論是導航菜單、登錄框…

如何實現服務的自動擴縮容(Auto Scaling)

在云計算和分布式系統的時代,系統的彈性和適應性已成為企業構建高效IT基礎設施的核心需求。自動擴縮容(Auto Scaling)作為一種關鍵技術,旨在根據實時負載變化動態調整計算資源,以確保系統性能穩定,同時優化資源利用效率。簡單來說,自動擴縮容是指系統能夠根據預設規則或…

uniapp+vue3+ts 使用canvas實現安卓端、ios端及微信小程序端二維碼生成及下載

加粗樣式uniapp多端生成帶二維碼海報并保存至相冊的實現 在微信小程序開發中&#xff0c;我們常常會遇到生成帶有二維碼的海報并保存到手機相冊的需求&#xff0c;比如分享活動海報、產品宣傳海報等。今天就來和大家分享一下如何通過代碼實現這一功能。 準備工作 在開始之前&am…

架構師面試(三十八):注冊中心架構模式

題目 在微服務系統中&#xff0c;當服務達到一定數量時&#xff0c;通常需要引入【注冊中心】組件&#xff0c;以方便服務發現。 大家有沒有思考過&#xff0c;注冊中心存在的最根本的原因是什么呢&#xff1f;注冊中心在企業中的最佳實踐是怎樣的&#xff1f;注冊中心的服務…

Day.js和Moment.js對比,日期時間庫怎么選?

在JavaScript的日期處理庫中&#xff0c;Moment.js 和 Day.js 是兩個非常流行的選擇。本文將基于從npmtrends的數據&#xff0c;對這兩個庫進行詳細的對比分析。 Moment.js的重度使用者。凡是遇到時間和日期的操作&#xff0c;就把Moment.js引用上。 直到有天我發現加載的mome…

羅默如何用木星衛星“宇宙鐘表”測量光速?

一、17世紀的“宇宙級實驗” 1676年&#xff0c;丹麥天文學家奧勒羅默&#xff08;Ole Rmer&#xff09;在巴黎天文臺做出驚人發現&#xff1a; 木星衛星的“遲到早退”現象&#xff0c;竟能揭示光速的秘密&#xff01; 通過觀察木衛一&#xff08;Io&#xff09;的軌道周期變…

deepseek 技巧整理

1、導出word 和excel 功能&#xff0c;在使用以下提示詞。 請幫我列出減肥期間可以吃的水果&#xff0c;并分析該水果含有的營養元素&#xff0c;以表格的形式星現。1.要以html的方式輸出 2.要可以直接運行 3.頁面要提供可以直接下載word和excel功能

思考軟件框架

數據庫是達夢數據庫 假定里面有40張表&#xff0c;軟件的業務邏輯比較復雜。 當然&#xff0c;依然是對數據庫中數據的增&#xff0c;刪&#xff0c;改&#xff0c;查&#xff0c;組合&#xff0c;顯示。 但是也涉及到多種軟件&#xff0c;多臺設備之間的通信。 我們可以使用…

探索 Disruptor:高性能并發框架的奧秘

在當今的軟件開發領域&#xff0c;處理高并發場景是一項極具挑戰性的任務。傳統的并發解決方案&#xff0c;如基于鎖的隊列&#xff0c;往往在高負載下表現出性能瓶頸。而 Disruptor 作為一個高性能的并發框架&#xff0c;憑借其獨特的設計和先進的技術&#xff0c;在處理海量數…

前端面經-VUE3篇--vue3基礎知識(一)插值表達式、ref、reactive

一、計算屬性(computed) 計算屬性&#xff08;Computed Properties&#xff09;是 Vue 中一種特殊的響應式數據&#xff0c;它能基于已有的響應式數據動態計算出新的數據。 計算屬性有以下特性&#xff1a; 自動緩存&#xff1a;只有當它依賴的響應式數據發生變化時&#xff…

數據結構6 · BinaryTree二叉樹模板

代碼函數功能順序如下&#xff1a; 1&#xff1a;destroy&#xff1a;遞歸刪除樹 2&#xff1a;copy&#xff1a;復制二叉樹 3&#xff1a;preOrder&#xff1a;遞歸前序遍歷 4&#xff1a;inOrder&#xff1a;遞歸中序遍歷 5&#xff1a;postOrder&#xff1a;遞歸后續遍…