vue.js iview组件tab用checkbox 多选功能,并且能够实现全选

先上效果图:

打印的数据:

代码如下:

<div class="listfile stationInfos">
     <Table border ref="selection" :columns="stationInfoColumns" :height="350" :data="page_Data3" @on-select-all='selectTable' @on-select='selectTable' @on-select-cancel='selectTable'></Table>
</div>

js:

page_Data3: [
                {
                    "line":{ "lineId":"01","lineName":"1号线"},
                    "stationInfo":[{ "tccStationId":"0101","stationSname":"预留"},{"tccStationId":"0102","stationSname":"预留"},{"tccStationId":"0103","stationSname":"苹果园",}],
                    "checked": [{ "tccStationId":"0101","stationSname":"预留"}], 
                    "checkedAll":false },
                {"line":{ "lineId":"02","lineName":"2号线"},"stationInfo":[{ "tccStationId":"0201","stationSname":"西直门"},{"tccStationId":"0202","stationSname":"车公庄"},{"tccStationId":"0203","stationSname":"阜成门"}],"checked": [], "checkedAll":false }
],
 stationInfoColumns:[
               {type: 'selection', width: 50,align: 'left'},
               {title: '线路',key: 'line', width: 80,align: 'center',
                    render: (h,params)=> {
                        return h('div',params.row.line.lineName)
                    }
               },
               {title: '车站',key: 'stationInfo',
                    render:(h,params)=> {
                        return h('div',[
                            h('Checkbox',{
                                props: {
                                    value: params.row.checkedAll,
                                    
                                    },
                                on:{
                                    "on-change": (event) => {
                                        if (event) {
                                            console.log("event",event);
                                            for(let i= 0; i<params.row.stationInfo.length; i++ ){
                                                params.row.checked.push(params.row.stationInfo[i].tccStationId);
                                            }
                                            console.log("1",params.row.checked);
                                            // console.log("2",params.row.stationInfo)
                                        } else {
                                            params.row.checked = [];
                                        }
                                    }
                                }
                            }, '全选'), 
                            h('CheckboxGroup',
                            {   props: {value: params.row.checked},
                                on:{
                                    "on-change":(val)=>{
                                        params.row.checked = val;
                                        params.row.checkedAll = params.row.checked.length === params.row.stationInfo.length ? true:false;
                                        console.log("checks",val);
                                    }
                                }
                            
                            },
                            (params.row.stationInfo || []).map(v=> {
                                return h('Checkbox', {
                                    props: { 
                                        label: v.tccStationId,
                                        }
                                    }, v.stationSname)
                            } )
                        )])
                    }
               },]

 

最后为了方便大家的沟通与交流请加QQ群: 625787746

请进QQ群交流:【IT博客技术分享群①】:https://jq.qq.com/?_wv=1027&k=DceI0140

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT博客技术分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值