- <template>
- <div>
- <el-table show-summary :summary-method="getSummaries" :span-method="objectSpanMethod" :data="tableData" row-key="id" ref="tableDom" border>
- <el-table-column label="序号" width="55" align="center">
- <template slot-scope="scope">{{ scope.$index + 1 }}</template>
- </el-table-column>
- <el-table-column prop="name" label="分类" align="center"></el-table-column>
- <el-table-column prop="num1" label="数量1" align="center"></el-table-column>
- <el-table-column prop="num2" label="数量2" align="center"></el-table-column>
- <el-table-column prop="num3" label="数量3" align="center"></el-table-column>
- <el-table-column prop="type" label="类型" align="center"></el-table-column>
- <el-table-column prop="num4" label="数量4" align="center"></el-table-column>
- <el-table-column prop="num5" label="数量5" align="center"></el-table-column>
- </el-table>
- </div>
- </template>
- <script>
- export default {
- name: '',
- components: {},
- props: {},
- data() {
- return {
- tableData: [{
- name: '名称1',
- num1: '2',
- num2: '3',
- num3: '4',
- num4: '连续',
- num5: '6',
- num6: '7',
- }, {
- name: '名称2',
- num1: '2',
- num2: '3',
- num3: '4',
- num4: '连续',
- num5: '6',
- num6: '7',
- }, {
- name: '名称2',
- num1: '2',
- num2: '3',
- num3: '4',
- num4: '连续',
- num5: '6',
- num6: '7',
- }, {
- name: '名称3',
- num1: '2',
- num2: '3',
- num3: '4',
- num4: '连续',
- num5: '6',
- num6: '7',
- }, {
- name: '名称4',
- num1: '2',
- num2: '3',
- num3: '4',
- num4: '连续',
- num5: '6',
- num6: '7',
- }, {
- name: '名称4',
- num1: '2',
- num2: '3',
- num3: '4',
- num4: '连续',
- num5: '6',
- num6: '7',
- }]
- }
- },
- filters: {},
- computed: {},
- watch: {},
- created() {},
- mounted() {},
- beforeDestroy() {},
- methods: {
- // 合计
- getSummaries (param) {
- const { columns, data } = param
- const sums = \[\]
- columns.forEach((column, index) => {
- if (index === 0) {
- sumsindex = '合计'
- } else if (index === 2 || index === 7) {
- const values = data.map(item => Number(itemcolumn.property))
- if (!values.every(value => isNaN(value))) {
- sumsindex = values.reduce((prev, curr) => {
- const value = Number(curr)
- if (!isNaN(value)) {
- return prev + curr
- } else {
- return prev
- }
- }, 0)
- } else {
- sumsindex = ''
- }
- } else {
- sumsindex = ''
- }
- })
- return sums
- },
- // table合并列
- objectSpanMethod({ row, column, rowIndex, columnIndex }) {
- let data = this.tableData; //拿到当前table中数据
- let cellValue = rowcolumn.property; //当前位置的值
- let noSortArr = 'num1', 'num2', 'num3', 'num4', 'num5', 'num6'; //不需要合并的字段(不进行合并行的prop)
- if (cellValue && !noSortArr.includes(column.property)) {
- let prevRow = datarowIndex - 1; //获取到上一条数据
- let nextRow = datarowIndex + 1; //下一条数据
- if (prevRow && prevRowcolumn.property === cellValue) { //当有上一条数据,并且和当前值相等时
- return { rowspan: 0, colspan: 0 };
- } else {
- let countRowspan = 1;
- while (nextRow && nextRowcolumn.property === cellValue) { //当有下一条数据并且和当前值相等时,获取新的下一条
- nextRow = data++countRowspan + rowIndex;
- }
- if (countRowspan > 1) {
- return { rowspan: countRowspan, colspan: 1 };
- }
- }
- }
- },
- }
- }
- </script>
- <style scoped lang="less">
- </style>

vue2的 element 表格单元格合并
luckycoke2023-07-22 16:02
相关推荐
漂流瓶jz10 分钟前
理解Webpack插件机制:从插件使用、各类编译对象、Tapable到自定义插件与钩子开发Jackson__12 小时前
为了拯救我的腰椎和颈椎,我做了款浏览器插件!林小帅13 小时前
NestJS v11 + Prisma v7 ESM 迁移配置解析Hilaku14 小时前
为什么你的大文件断点续传,一遇到弱网就崩溃?林恒smileZAZ15 小时前
`Array(100).map(() => 1)` 为什么全为空?濮水大叔16 小时前
在大型 Vue 项目中,如何有效管理复杂的状态?“散装版” vs “套装版”laowang35718 小时前
依赖故障时,日志体系需要埋哪些关键节点才能快速定位是安装失败、解析失败还是运行时缺失?༄沐࿆风࿆࿆19 小时前
JavaScript函数完全指南:从基础语法到闭包原理与应用实战finyouIT20 小时前
锚点实现了点击导航平滑滚动到页面指定位置的三种方法神奇的代码在哪里1 天前
AI编程时代,PPT已成为过去,单个HTML文件创造无限可能