【ElementUI】el-table对象数组嵌套对象数组

正常使用elementUI的el-table时,其绑定的数据是一个对象数组,如果这个数组中的对象又包含一层对象数组,直接去渲染则无法实现,比如这种数据:

 const staticData= [{
            "departmentName": "abc",
            "monthData": [{
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "1"
            }, {
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "2"
            }, 
            ...
            ]'=
      },    
      ....
}]

此时需要处理一下,可以在data中使用新的数组来作为label,使得内层数据可以同行显示。
代码如下,另外加一个columnIndex数组,用来存储数据里面的属性的key。

效果图:可以看到,monthData里面的数据也渲染到表格里面了
在这里插入图片描述
代码:

<template>
	<el-table :data="tableData" border>
     <el-table-column
        label="公司"
        prop="departmentName">
        </el-table-column>
                    <el-table-column 
                        key="年" 
                        label="每月达标率(%)">
                        <el-table-column v-for="(item,index) in months" :key="item" :label="item">
                            <template slot-scope="scope">
                                <span>{
    
    {
    
    scope.row.monthData[index].complianceRate}}</span>
                            </template>	
                        </el-table-column>
                    </el-table-column>
	</el-table>
</template>

<script>
export default {
    
    
    data(){
    
    
        const staticData= [{
    
    
            "departmentName": "abc",
            "monthData": [{
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "1"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "2"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "3"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "4"
            }, {
    
    
                "complianceRate": 82.71,
                "patrolLength": "62151.00",
                "actualPatrol": "51403.77",
                "monthOrWeekOrDay": "5"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "6"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "7"
            }, {
    
    
                "complianceRate": 33.0,
                "monthOrWeekOrDay": "8"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "9"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "10"
            }, {
    
    
                "complianceRate": 13.0,
                "monthOrWeekOrDay": "11"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "12"
            }],
        }, {
    
    
            "departmentName": "bcd",
            "monthData": [{
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "1"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "2"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "3"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "4"
            }, {
    
    
                "complianceRate": 69.68,
                "patrolLength": "55661.00",
                "actualPatrol": "38784.54",
                "monthOrWeekOrDay": "5"
            }, {
    
    
                "complianceRate": 88.0,
                "monthOrWeekOrDay": "6"
            }, {
    
    
                "complianceRate": 77.0,
                "monthOrWeekOrDay": "7"
            }, {
    
    
                "complianceRate": 66.0,
                "monthOrWeekOrDay": "8"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "9"
            }, {
    
    
                "complianceRate": 44.0,
                "monthOrWeekOrDay": "10"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "11"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "12"
            }],
        }, {
    
    
            "departmentName": "efg",
            "monthData": [{
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "1"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "2"
            }, {
    
    
                "complianceRate": 43.0,
                "monthOrWeekOrDay": "3"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "4"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "5"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "6"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "7"
            }, {
    
    
                "complianceRate": 0.0,
                "monthOrWeekOrDay": "8"
            }, {
    
    
                "complianceRate": 4.0,
                "monthOrWeekOrDay": "9"
            }, {
    
    
                "complianceRate": 88.0,
                "monthOrWeekOrDay": "10"
            }, {
    
    
                "complianceRate": 6.0,
                "monthOrWeekOrDay": "11"
            }, {
    
    
                "complianceRate": 77.0,
                "monthOrWeekOrDay": "12"
            }],
        }]
        return{
    
    
            // 有两层数据,渲染表格
            months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],
            tableData:staticData,
        }
    }

}
</script>

<style>

</style>




おすすめ

転載: blog.csdn.net/qq_38987146/article/details/117254535