el-table树形数据序号展示

el-table树形数据序号展示

最终效果图:
在这里插入图片描述

  1. el-table中通过设置 row-key="id" :tree-props="{children: 'subList'}" :default-expand-all="true"实现树状展示数据。
 <el-table
     :data="list"
     row-key="id"
     :tree-props="{children: 'subList'}"
     :default-expand-all="true"
   >
     <el-table-column
       prop="parentIndex" 
       label="序号"
       width="300"
       align="left">
     </el-table-column>
     <el-table-column
       prop="name"
       label="评价指标"
       width="300"
       align="left"
       show-overflow-tooltip
     />
</table>

data(){
	return {
	    // 表格数据
		list:[
			{
				name:undefined,
				parentIndex: undefined,
				subList: [
					name:undefined,
					parentIndex: undefined,
					subList: null
				]
			},
			{
				name:undefined,
				parentIndex: undefined,
				subList: [
					name:undefined,
					parentIndex: undefined,
					subList: null
				]
			},
		]
	}
}
  1. 序号列绑定自定义的字段prop="parentIndex" ,控制数据序号的展示;
    实现方式: 通过接口获取数据时调用setParentIndex方法,并将接口返回的列表数据传入,重新处理数据,为每项数据增加parentIndex字段。
    setParentIndex(list){
      list.forEach((item, index) => {
          item.parentIndex = index + 1 + ''
          if(item.subsetList && item.subsetList.length > 0){
              this._setParentIndex(item, item.parentIndex)
          }
      });
    },
    _setParentIndex(item, oldIndex){
      if (item.subsetList && item.subsetList.length > 0) {
          item.subsetList.forEach((subItem, i) => {
            subItem.parentIndex = oldIndex + '.' + (i + 1);
            this._setParentIndex(subItem, subItem.parentIndex);
          });
      }else {
        return
      }
  },
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用 el-table 实现树形数据的简单示例: ```html <template> <el-table :data="tableData" :row-key="getRowKey" style="width: 100%"> <el-table-column type="expand"> <template slot-scope="props"> <el-table :data="props.row.children"> <el-table-column prop="name" label="名称"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> </el-table> </template> </el-table-column> <el-table-column prop="name" label="名称"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [ { name: "父节点1", age: 30, children: [ { name: "子节点1", age: 20 }, { name: "子节点2", age: 25 } ] }, { name: "父节点2", age: 35, children: [ { name: "子节点3", age: 28 }, { name: "子节点4", age: 32, children: [ { name: "孙子节点1", age: 5 }, { name: "孙子节点2", age: 3 } ] } ] } ] }; }, methods: { getRowKey(row) { return row.name; // 使用每一行的名称作为唯一标识符 } } }; </script> ``` 上面的示例中,我们使用嵌套的 el-table 组件来展示树形数据。在父节点的行上,我们使用了 `type="expand"` 的 el-table-column 组件,并在其 slot 中渲染了另一个 el-table 组件,用来展示该父节点的子节点数据。 在子节点的行上,由于没有子节点,因此不会再次渲染 el-table 组件。我们可以通过在 `getRowKey` 方法中指定一个唯一标识符来确保每一行都有一个唯一的 key 值,这样可以帮助 Vue 在渲染时更加高效。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值