当前位置: 首页 > news >正文

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;
});

相关文章:

  • 【网络编程】TCP/IP四层模型、MAC和IP
  • npm init、换源问题踩坑
  • 杰理-安卓通过map获取时间的时候,部分手机切换sbc和aac时候单耳无声音
  • redis+lua+固定窗口实现分布式限流
  • AcWing 885:求组合数 I ← 杨辉三角
  • seaborn数据统计可视化-介绍
  • 业绩回暖、股价承压,三只松鼠赴港上市能否重构价值锚点?
  • 道可云人工智能每日资讯|“人工智能科技体验展”在中国科学技术馆举行
  • GTC2025全球流量大会:领驭科技以AI云端之力,助力中国企业出海破浪前行
  • SECS-I vs HSMS-SS vs HSMS-GS 通信控制对比明细表
  • 可编程控制器应用
  • 《Go 语言高并发爬虫开发:淘宝商品 API 实时采集与 ETL 数据处理管道》
  • jenkins容器提示磁盘空间过低
  • 记一次pdf转Word的技术经历
  • pdf.js移动端预览PDF文件时,支持双指缩放
  • EasyCVR视频汇聚平台助力大型生产监控项目摄像机选型与应用
  • 多模态大型模型,实现以人为中心的精细视频理解
  • Golang|分布式索引架构
  • Go 语言入门:(一) 环境安装
  • uniapp 微信小程序遇到的坑
  • 华侨城A:一季度营收53.63亿元,净利润亏损14.19亿元
  • 上海出台灵活就业人员公积金新政:不限户籍、提取自由,6月起施行
  • 暴涨96%!一季度“中国游中国购”持续升温,还有更多利好
  • 党旗下的青春|83岁仍在“下生活”,他说生活是创作的源泉
  • 106岁东江纵队老战士、四川省侨联名誉主席邱林逝世
  • 湖南小伙“朱雀玄武敕令”提交申请改名为“朱咸宁”