记录一下VUE中怎么简单实现树状表格的效果

先准备data数据

data: {
        enumList: [{
            title: '用户身份',
            built: 1,
            touse: 1,
            status: 1,
            createName: '张三',
            createTime: '2024.05.20  12:32:42',
            editName: '李四',
            editTime: '2024.05.20  13:21:25',
            sort: '',
            expanded: false,
            children: [{
                title: '游客',
                built: 1,
                touse: 0,
                status: 1,
                createName: '张三1',
                createTime: '2024.05.20  12:32:42',
                editName: '李四1',
                editTime: '2024.05.20  13:21:25',
                sort: '',
                expanded: false,
            }, {
                title: '评委',
                built: 1,
                touse: 0,
                status: 1,
                createName: '张三1',
                createTime: '2024.05.20  12:32:42',
                editName: '李四1',
                editTime: '2024.05.20  13:21:25',
                sort: '',
                expanded: false,
            }, {
                title: '创作者',
                built: 1,
                touse: 0,
                status: 1,
                createName: '张三1',
                createTime: '2024.05.20  12:32:42',
                editName: '李四1',
                editTime: '2024.05.20  13:21:25',
                sort: '',
                expanded: false,
            }, {
                title: '平台运营人员',
                built: 1,
                touse: 0,
                status: 1,
                createName: '张三1',
                createTime: '2024.05.20  12:32:42',
                editName: '李四1',
                editTime: '2024.05.20  13:21:25',
                sort: '',
                expanded: false,
            }, {
                title: '运营管理员',
                built: 1,
                touse: 0,
                status: 1,
                createName: '张三1',
                createTime: '2024.05.20  12:32:42',
                editName: '李四1',
                editTime: '2024.05.20  13:21:25',
                sort: '',
                expanded: false,
            }, ],
        }, {
            title: '评委等级',
            built: 1,
            touse: 1,
            status: 1,
            createName: '张三',
            createTime: '2024.05.20  12:32:42',
            editName: '李四',
            editTime: '2024.05.20  13:21:25',
            sort: '',
            expanded: false,
            children: [{
                title: '黑铁',
                built: 1,
                touse: 0,
                status: 1,
                createName: '张三1',
                createTime: '2024.05.20  12:32:42',
                editName: '李四1',
                editTime: '2024.05.20  13:21:25',
                sort: '',
                expanded: false,
            }, {
                title: '黄金',
                built: 1,
                touse: 0,
                status: 1,
                createName: '张三1',
                createTime: '2024.05.20  12:32:42',
                editName: '李四1',
                editTime: '2024.05.20  13:21:25',
                sort: '',
                expanded: false,
            }, {
                title: '白银',
                built: 1,
                touse: 0,
                status: 1,
                createName: '张三1',
                createTime: '2024.05.20  12:32:42',
                editName: '李四1',
                editTime: '2024.05.20  13:21:25',
                sort: '',
                expanded: false,
            }, {
                title: '铂金',
                built: 1,
                touse: 0,
                status: 1,
                createName: '张三1',
                createTime: '2024.05.20  12:32:42',
                editName: '李四1',
                editTime: '2024.05.20  13:21:25',
                sort: '',
                expanded: false,
            }, {
                title: '钻石',
                built: 1,
                touse: 0,
                status: 1,
                createName: '张三1',
                createTime: '2024.05.20  12:32:42',
                editName: '李四1',
                editTime: '2024.05.20  13:21:25',
                sort: '',
                expanded: false,
            }, ],
        }, {
            title: '赛区划分',
            built: 1,
            touse: 1,
            status: 1,
            createName: '张三',
            createTime: '2024.05.20  12:32:42',
            editName: '李四',
            editTime: '2024.05.20  13:21:25',
            sort: '',
            expanded: false,
            children: [{
                title: '北京市',
                built: 1,
                touse: 0,
                status: 1,
                createName: '张三1',
                createTime: '2024.05.20  12:32:42',
                editName: '李四1',
                editTime: '2024.05.20  13:21:25',
                sort: '',
                expanded: false,
                children: [{
                    title: '东城区',
                    built: 1,
                    touse: 0,
                    status: 1,
                    createName: '西城区',
                    createTime: '2024.05.20  12:32:42',
                    editName: '李四1',
                    editTime: '2024.05.20  13:21:25',
                    sort: '',
                    expanded: false,
                }, {
                    title: '西城区',
                    built: 1,
                    touse: 0,
                    status: 1,
                    createName: '张三1',
                    createTime: '2024.05.20  12:32:42',
                    editName: '李四1',
                    editTime: '2024.05.20  13:21:25',
                    sort: '',
                    expanded: false,
                }, {
                    title: '朝阳区',
                    built: 1,
                    touse: 0,
                    status: 1,
                    createName: '张三1',
                    createTime: '2024.05.20  12:32:42',
                    editName: '李四1',
                    editTime: '2024.05.20  13:21:25',
                    sort: '',
                    expanded: false,
                }, ],
            }, {
                title: '广东省',
                built: 1,
                touse: 0,
                status: 1,
                createName: '张三1',
                createTime: '2024.05.20  12:32:42',
                editName: '李四1',
                editTime: '2024.05.20  13:21:25',
                sort: '',
                expanded: false,
                children: [{
                    title: '广州',
                    built: 1,
                    touse: 0,
                    status: 1,
                    createName: '西城区',
                    createTime: '2024.05.20  12:32:42',
                    editName: '李四1',
                    editTime: '2024.05.20  13:21:25',
                    sort: '',
                    expanded: false,
                }, {
                    title: '深圳',
                    built: 1,
                    touse: 0,
                    status: 1,
                    createName: '张三1',
                    createTime: '2024.05.20  12:32:42',
                    editName: '李四1',
                    editTime: '2024.05.20  13:21:25',
                    sort: '',
                    expanded: false,
                }, {
                    title: '佛山',
                    built: 1,
                    touse: 0,
                    status: 1,
                    createName: '张三1',
                    createTime: '2024.05.20  12:32:42',
                    editName: '李四1',
                    editTime: '2024.05.20  13:21:25',
                    sort: '',
                    expanded: false,
                }, ],
            }, ],
        }, ],
    },

然后在方法里实现点击展开收缩的效果

toggleExpanded(item) {
            item.expanded = !item.expanded
        },

最后是获取动态数据最终结果为

methods: {
        toggleExpanded(item) {
            item.expanded = !item.expanded
        },
        renderData() {
            let result = []
            const recursive = (items, lev = 1) => {
                items.forEach(item => {
                    result.push(item)
                    if (item.children && item.children.length > 0) {
                        item.expanded && recursive(item.children)
                    }
                });
            }
            recursive(this.enumList)
            return result
        }
    },

将数据和方法绑定到html代码中

<table class="panel-table">
            <thead>
                <tr>
                    <td>序号</td>
                    <td>枚举项名称</td>
                    <td>是否平台内置</td>
                    <td>状态</td>
                    <td>创建人</td>
                    <td>创建时间</td>
                    <td>修改人</td>
                    <td>修改时间</td>
                    <td>操作</td>
                </tr>
            </thead>
            <tbody>
                <tr v-for="(item, index) in renderData()">
                    <td>{{index + 1}}</td>
                    <td><span :class="{panel:item.children && item.children.length > 0}" @click="toggleExpanded(item)">{{item.title}}</span></td>
                    <td>{{item.built == 1 ? '是' : '否'}}</td>
                    <td>{{item.touse == 1 ? '有效' : '禁用'}}</td>
                    <td>{{item.createName}}</td>
                    <td>{{item.createTime}}</td>
                    <td>{{item.editName}}</td>
                    <td>{{item.editTime}}</td>
                    <td>{{item.level}}</td>
                </tr>
            </tbody>
        </table>

效果就有了,样式自定义

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值