el-table 中数据嵌套绑定

现有需求:前三列显示省份,城市,以及一个固定值,后边循环出十二个月份,每个月显示5个字段,

显示效果如下图

数据格式如下

{
    "Data":[
        {
            "provincename":"河北省",
            "cityname":"石家庄市",
            "baseamount":"0",
            "infolist":[
                {
                    "year":"2021",
                    "month":"01",
                    "amount1":"0",
                    "industryamount":"0",
                    "value1":"0",
                    "amount2":"0",
                    "amount3":"0.03"
                },
                {
                    "year":"2021",
                    "month":"02",
                    "amount1":"0",
                    "industryamount":"0",
                    "value1":"0",
                    "amount2":"0",
                    "amount3":"0.03"
                },
                {
                    "year":"2021",
                    "month":"03",
                    "amount1":"0",
                    "industryamount":"0",
                    "value1":"0",
                    "amount2":"0",
                    "amount3":"0.03"
                }
            ]
        }
    ]
    
}

获取data 数据赋值给tableData,然后data 中的infolist赋值给tableDataline

el-table  使用 :data 绑定 tableData 数据源

el-table-column绑定完三个字段后 使用v-for 在el-table-column循环绑定tableDataline

直接上代码

<el-table :data="tableData" border stripe v-loading="loading">
        
        <el-table-column align="center" label="省份">
          <template scope="scope">{{ scope.row.provincename }}</template>
        </el-table-column>
        <el-table-column align="center" label="城市">
          <template scope="scope">{{ scope.row.cityname }}</template>
        </el-table-column>
        <el-table-column align="center" label="2020年度基础">
          <template scope="scope">{{ scope.row.baseamount }}</template>
        </el-table-column>
        <el-table-column
          v-for="(item, index) in tableDataline"
          :label="item.new_year + item.new_month"
          v-bind:key="index"
        >
          <el-table-column
            align="center"
            label="数据1"
          >
            <template>{{ item.amount1 }}</template>
          </el-table-column>
          <el-table-column
            align="center"
            label="数据2"
          >
            <template>{{ item.industryamount }}</template>
          </el-table-column>
          <el-table-column
            align="center"
            label="数据3"
          >
            <template>{{ item.new_value1 }}</template>
          </el-table-column>
          <el-table-column
            align="center"
            label="数据4"
          >
            <template>{{ item.amount2 }}</template>
          </el-table-column>
          <el-table-column
            align="center"
            label="数据5"
          >
            <template>{{ item.amount3 }}</template>
          </el-table-column>
        </el-table-column>
      </el-table>

 

### 实现嵌套表头功能 在 Element UI 的 `el-table` 组件中,可以通过定义复杂的列结构来实现嵌套表头的功能。具体来说,可以利用 `columns` 属性的数组嵌套特性,通过子级字段指定更深层次的数据展示逻辑[^1]。 以下是具体的配置方式以及示例代码: #### 配置说明 - 使用 `el-table-column` 定义表格列。 - 如果某列为父列,则在其内部继续嵌套 `el-table-column` 子标签表示子列。 - 利用 `prop` 或者自定义渲染器(`scoped-slot`),绑定对应数据源中的字段路径。 #### 示例代码 以下是一个完整的嵌套表头实例代码: ```vue <template> <div> <el-table :data="tableData" border style="width: 100%"> <!-- 嵌套表头 --> <el-table-column label="基本信息"> <el-table-column prop="name" label="姓名" width="180"></el-table-column> <el-table-column prop="age" label="年龄" width="180"></el-table-column> </el-table-column> <el-table-column label="工作信息"> <el-table-column prop="jobTitle" label="职位" width="180"></el-table-column> <el-table-column prop="department" label="部门" width="180"></el-table-column> </el-table-column> <el-table-column label="联系方式"> <el-table-column prop="phone" label="电话号码" width="200"></el-table-column> <el-table-column prop="email" label="电子邮件地址" width="250"></el-table-column> </el-table-column> </el-table> </div> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 28, jobTitle: '软件工程师', department: '研发部', phone: '12345678901', email: 'zhangsan@example.com' }, { name: '李四', age: 32, jobTitle: '产品经理', department: '产品部', phone: '23456789012', email: 'lisi@example.com' } ] }; } }; </script> ``` 上述代码展示了如何创建多层嵌套的表头,并分别设置了不同的子列及其对应的属性值。 如果遇到动态调整布局的情况,比如隐藏/显示某些部分或者窗口大小改变时,记得调用 `this.$refs['tableRef'].doLayout()` 方法以确保表格重新计算并正确呈现。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值