先准备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>
效果就有了,样式自定义