ant design vue table 合并并添加点击事件

效果图 (合并 + 点击事件)

<a-table :columns="columns" :rowKey="(record,index)=>{return index}" :pagination="false" :data-source="mapTableList()" bordered></a-table>

//columns数据
let columns = [{
            title: '#',
            dataIndex: 'weekName',
            customRender: (value, row, index) => {
                var child = this.createElementHtml(value, row)
                const obj = {
                    children: child,
                    attrs: {},
                };
                if (row.rowSpan) obj.attrs.rowSpan = row.rowSpan;
                else obj.attrs.rowSpan = 0;

                return obj;
            },
        },
        {
            title: '时段',
            dataIndex: 'timeInterval',
            // ellipsis: true,
            // with:'12%'
        },
        {
            title: '工作内容',
            dataIndex: 'jobContent',
        },
        {
            title: '参与人员',
            dataIndex: 'participants',
        },
        {
            title: '地点',
            dataIndex: 'place',
        },
        ]

//table 数据
tableList: [
                [{
                    weekName: '周一',
                    timeInterval: '09:30--11:00',
                    jobContent: '主任办公会',
                    participants: '程东、绿色技术发展处',
                    place: '601会议室'
                }],
                [{
                    weekName: '周二',
                    timeInterval: '09:30--11:00',
                    jobContent: '接待马士基集团',
                    participants: '程东、绿色技术发展处',
                    place: '601会议室'
                },
                {
                    weekName: '周二',
                    timeInterval: '13:00--17:00',
                    jobContent: '项目评审',
                    participants: '程东、绿色技术发展处',
                    place: '601会议室'
                },
                {
                    weekName: '周二',
                    timeInterval: '14:30--17:00',
                    jobContent: '市十二次党代表大会选举工作领导小组工作会',
                    participants: '程东、绿色技术发展处',
                    place: '601会议室'
                },
                {
                    weekName: '周二',
                    timeInterval: '15:30--17:00',
                    jobContent: '市十二次党代表大会选举工作领导小组工作会',
                    participants: '程东、绿色技术发展处',
                    place: '601会议室'
                }],
                [{
                    weekName: '周三',
                    timeInterval: '14:30--17:00',
                    jobContent: '市十二次党代表大会选举工作领导小组工作会3',
                    participants: '程东、绿色技术发展处',
                    place: '601会议室'
                },
                {
                    weekName: '周三',
                    timeInterval: '15:30--17:00',
                    jobContent: '市十二次党代表大会选举工作领导小组工作会3',
                    participants: '程东、绿色技术发展处',
                    place: '601会议室'
                }],
                [{
                    weekName: '周四',
                    timeInterval: '14:30--17:00',
                    jobContent: '市十二次党代表大会选举工作领导小组工作会4',
                    participants: '程东、绿色技术发展处',
                    place: '601会议室'
                }],
                [{
                    weekName: '周五',
                    timeInterval: '14:30--17:00',
                    jobContent: '市十二次党代表大会选举工作领导小组工作会5',
                    participants: '程东、绿色技术发展处',
                    place: '601会议室'
                }],
                [{
                    weekName: '周六',
                    timeInterval: '14:30--17:00',
                    jobContent: '市十二次党代表大会选举工作领导小组工作会6',
                    participants: '程东、绿色技术发展处',
                    place: '601会议室'
                }],
                [{
                    weekName: '周日',
                    timeInterval: '14:30--17:00',
                    jobContent: '市十二次党代表大会选举工作领导小组工作会7',
                    participants: '程东、绿色技术发展处',
                    place: '601会议室'
                }]
            ],

//methods 方法
methods: {
        mapTableList() {
            // 二维数组添加 rowspan  并扁平化处理
            let arr = this.tableList.map((item, index) => {
                item.map(val => item[0].rowSpan = item.length)
                return item
            }).flat(Infinity)
            return arr
        },
        clickHandler(val, row) {
            alert(val, row)
            console.log(val, row, 'val,row')
        },
        createElementHtml(value, record) {
            const h = this.$createElement;//重要
            let this_ = this
            return h('p', null, [
                h('span', null, value),
                h('a-icon', {
                    //a-icon
                    attrs: {
                        type: "plus-circle"
                    },
                    class: "anticon anticon-plus-circle addIcon_",
                    on: {
                        click: function () {
                            this_.clickHandler(value, record);
                        }
                    },
                    //相当于`v-bind:style`
                    style: {
                        fontSize: '18px',
                        marginTop: '2px'
                    },
                },
                )
            ])
        }
    },

 参考链接:https://blog.csdn.net/kuangniaokuang/article/details/104673167

posted on   嘘嘘乖乖  阅读(635)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示