为了账号安全,请及时绑定邮箱和手机立即绑定

element 表格组件自适应 思路

项目涉及大量表格 很多时候会采用估算和手动调试的方式来设置 column 宽度不太恰当,所以尝试实现自适应。 核心是对数据层进行修改,代码提供参考。

        let column = [
            {label:"用户id",prop:"userId"},
            {label:"用户姓名",prop:"userName"},
            {label:"创建日期",prop:"createData"},
        ]
        let data = [
            {
                userId:1,
                userName:"张三",
                createData:'2020-05-26 12:10:56'
            },
            {
                userId:2,
                userName:"李狗蛋",
                createData:'2020-05-26 12:10:56'
            }
        ]
        let resolveColumn = _cmptWidth(column,data) 
        console.log(resolveColumn)
        // [
        //   {label:"用户id",prop:"userId",width:"120px"},
        //   {label:"用户姓名",prop:"userName",width:"120px"},
        //   {label:"创建日期",prop:"createData",width:"120px"},
        // ]
        _cmptWidth(min=30,column,data){
            // 字段长度容器
            let temp={};

            // 根据第一行数据 初始化 字段长度容器
            Object.keys(data[0]).forEach(key=>{
                temp[key]=[]
            })

            // 将每一行数据的 字段长度 存入 字段长度容器 中文算做2个字符,英文1个
            data.map(i=>{
                Object.keys(i).forEach(key=>{
                    let str = i[key] && i[key].toString();
                    let cn = str && str.match(/[\u4e00-\u9fa5]/g)&&str.match(/[\u4e00-\u9fa5]/g).length||0
                    let en = str && str.match(/[A-Za-z0-9]/g)&&str.match(/[A-Za-z0-9]/g).length||0
                    let len =Math.max( en + cn*2 + ,10) ;
                    temp[key].push(Math.min(len,min))
                })
            })

            // 返回 添加列宽度属性的 column
            return column.map(i=>{
                let width = Math.ceil(temp[i.prop].reduce((a,b)=>a+b)/rows.length)
                return {
                    ...i,
                    width:width*12+'px'
                }
            })
        }
点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消