1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Ant design vue 表格合并 合并行 合并列

Ant design vue 表格合并 合并行 合并列

时间:2022-06-28 14:03:50

相关推荐

Ant design vue 表格合并 合并行 合并列

合并单元格

合并效果一、合并行二、合并列合并列注意点

合并效果

主要是使用官方文档上的 customRender 函数

表格的数据是打平后的数组结构

ant design vue 官方文档上面有详细的介绍,当前我使用的版本是 2.2.8,支持 vue3

ant design vue

实现效果效果如下

一、合并行

合并列核心代码

setRowSpan 方法是为了对比 重复项 给重复的设置合并行数

注意: 后台返回的数据结构 必须是一类都紧凑的在一起的

data 是表格数据field 是判断的字段(要合并的字段)const setRowSpan = (data: any[], field: string) => {let count = 0 // 开始的第一项let indexCount = 1 // 对比的另外一项while (indexCount < data.length) {const item = data[count]// 初始化赋值if (!item.rowSpan) {item.rowSpan = 1}// 判断当前项 和 后一项 的这个字段是否一致 一致则 合并的行数 +1 // 给对比的 后面的这一项的 这个单元格设置为 0 if (item[field] === data[indexCount][field]) {item.rowSpan++data[indexCount].rowSpan = 0} else {// 那说明 不相同 重新来过count = indexCount}// 对比完后 进入下一项indexCount++}}// 只需要关注 最里面那层的 customRender 函数const columns = ref<any>([{title: '收银日报表',children: [{title: childrenTitle.value,children: [{title: '游客类型',dataIndex: 'touristTypeName',key: 'touristTypeName',// @ts-ignorecustomRender: ({text, record, index }) => {const obj = {children: text,props: {} as any}// record 是当前行的数据obj.props.rowSpan = record.rowSpanreturn obj}}]}]}])

二、合并列

只需要 加上 obj.props.colSpan = 3因为这个合并列数 是死的 只会合并那么多 表格的格式是固定的if (record.productName === '小计') {obj.props.colSpan = 3}if (text === '汇总') {obj.props.colSpan = 4}

合并列注意点

合并之后 被他合并后的 那一列应该是没有dom 节点的 ,所以要

obj.props.colSpan = 0

// 注意点{title: '游客类型',dataIndex: 'touristTypeName',key: 'touristTypeName',// @ts-ignorecustomRender: ({text, record, index }) => {const obj = {children: text,props: {} as any}obj.props.rowSpan = record.rowSpanif (record.productName === '小计') {obj.props.colSpan = 3}if (text === '汇总') {obj.props.colSpan = 4}return obj}},{title: '门票名称',dataIndex: 'productName',key: 'productName',// @ts-ignorecustomRender: ({text, record, index }) => {const obj = {children: text,props: {} as any}obj.props.rowSpan = record.rowSpanif (record.productName === '小计') {obj.props.colSpan = 3} else if (record.touristTypeName === '汇总') {obj.props.colSpan = 0}return obj}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。