二级表格展示

//第一版所有数据通过后端反馈
<template>
<el-table v-loading="loading" :data="tableData" border style="width: 100%" row-key="id">
<el-table-column align="center" fixed type="index" label="序号" width="50" />
<el-table-column align="center" fixed prop="lineCode" label="产线编号" width="100" />
<el-table-column align="center" fixed prop="lineName" label="产线名称" width="100" />
<el-table-column
v-for="(planItem, index) in planList"
:key="index"
align="center"
:label="`${planItem.weekName}(${planItem.startTime}/${planItem.endTime})`"
>
<el-table-column
v-for="(stageItem, indexChild) in planItem.stageList"
:key="index + '-' + indexChild"
align="center"
:label="stageItem.stageLable"
width="150"
>
<template slot-scope="scope">
<span>{{ scope.row.planList[index].stageList[indexChild].value }}</span>
</template>
</el-table-column>
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
loading: false,
// 表格组件 列表数据对象
tableData: [],
planList: []
}
},
created() {
this.initData()
},
methods: {
initData() {
this.getList()
},
getList() {
const list = [
{
id: '123',
lineCode: 'CX000001',
lineName: '产线1',
planList: [
{
weekName: '第一周',
startTime: '2021-01-01',
endTime: '2021-01-02',
stageList: [
{ stageLable: '计划数量(万片)', value: '100' },
{ stageLable: '完成数量(万片)', value: '200' },
{ stageLable: '差异数量(万片)', value: '300' },
{ stageLable: '完成率(%)', value: '400' }
]
},
{
weekName: '第二周',
startTime: '2021-01-03',
endTime: '2021-01-09',
stageList: [
{ stageLable: '计划数量(万片)', value: '10' },
{ stageLable: '完成数量(万片)', value: '20' },
{ stageLable: '差异数量(万片)', value: '30' },
{ stageLable: '完成率(%)', value: '40' }
]
},
{
weekName: '第三周',
startTime: '2021-01-10',
endTime: '2021-01-16',
stageList: [
{ stageLable: '计划数量(万片)', value: '1000' },
{ stageLable: '完成数量(万片)', value: '2000' },
{ stageLable: '差异数量(万片)', value: '3000' },
{ stageLable: '完成率(%)', value: '4000' }
]
}
]
},
{
id: '456',
lineCode: 'CX000002',
lineName: '产线2',
planList: [
{
weekName: '第一周',
startTime: '2021-01-01',
endTime: '2021-01-02',
stageList: [
{ stageLable: '计划数量(万片)', value: '1001' },
{ stageLable: '完成数量(万片)', value: '2001' },
{ stageLable: '差异数量(万片)', value: '3001' },
{ stageLable: '完成率(%)', value: '4001' }
]
},
{
weekName: '第二周',
startTime: '2021-01-03',
endTime: '2021-01-09',
stageList: [
{ stageLable: '计划数量(万片)', value: '101' },
{ stageLable: '完成数量(万片)', value: '201' },
{ stageLable: '差异数量(万片)', value: '301' },
{ stageLable: '完成率(%)', value: '401' }
]
},
{
weekName: '第三周',
startTime: '2021-01-10',
endTime: '2021-01-16',
stageList: [
{ stageLable: '计划数量(万片)', value: '10' },
{ stageLable: '完成数量(万片)', value: '200' },
{ stageLable: '差异数量(万片)', value: '300' },
{ stageLable: '完成率(%)', value: '400' }
]
}
]
}
]
// 拿到列表数据
this.tableData = list
this.planList = (list[0] && list[0]['planList']) || []
}
}
}
</script>
第二版 将二级表头固定,通过<template slot-scope='{row}'> row.planList[index]渲染对应的值
<template>
<el-table v-loading="loading" :data="tableData" border style="width: 100%" row-key="id">
<el-table-column align="center" fixed type="index" label="序号" width="50" />
<el-table-column align="center" fixed prop="lineCode" label="产线编号" width="100" />
<el-table-column align="center" fixed prop="lineName" label="产线名称" width="100" />
<el-table-column
v-for="(planItem, index) in planList"
:key="index"
align="center"
:label="`${planItem.weekName}(${planItem.startTime}/${planItem.endTime})`"
>
<el-table-column label="计划数量(万片)" min-width="160">
<template slot-scope="{ row }">
<span>{{ row.planList[index].planNums }}</span>
</template>
</el-table-column>
<el-table-column label="完成数量(万片)" min-width="160">
<template slot-scope="{ row }">
<span>{{ row.planList[index].completeNums }}</span>
</template>
</el-table-column>
<el-table-column label="差异数量(万片)" min-width="160">
<template slot-scope="{ row }">
<span>{{ row.planList[index].differenceNums }}</span>
</template>
</el-table-column>
<el-table-column label="完成率(%)" min-width="160">
<template slot-scope="{ row }">
<span>{{ row.planList[index].percentageComplete }}</span>
</template>
</el-table-column>
<!-- <el-table-column
v-for="(item, el) in planItem.stageList"
:key="index + '-' + el"
align="center"
:label="item.stageLable"
width="150"
>
<template slot-scope="scope">
<span>{{ scope.row.planList[index].stageList[el].value }}</span>
</template>
</el-table-column> -->
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
loading: false,
// 表格组件 列表数据对象
tableData: [],
planList: []
}
},
created() {
this.initData()
},
methods: {
initData() {
this.getList()
},
getList() {
const list = [
{
id: '123',
lineCode: 'CX000001',
lineName: '产线1',
planList: [
{
weekName: '第一周',
startTime: '2021-01-01',
endTime: '2021-01-02',
planNums: 20,
completeNums: 30,
differenceNums: 10,
percentageComplete: 130
// stageList: [
// { stageLable: '计划数量(万片)', value: '100' },
// { stageLable: '完成数量(万片)', value: '200' },
// { stageLable: '差异数量(万片)', value: '300' },
// { stageLable: '完成率(%)', value: '400' }
// ]
},
{
weekName: '第二周',
startTime: '2021-01-03',
endTime: '2021-01-09',
planNums: 20,
completeNums: 30,
differenceNums: 10,
percentageComplete: 130
// stageList: [
// { stageLable: '计划数量(万片)', value: '10' },
// { stageLable: '完成数量(万片)', value: '20' },
// { stageLable: '差异数量(万片)', value: '30' },
// { stageLable: '完成率(%)', value: '40' }
// ]
},
{
weekName: '第三周',
startTime: '2021-01-10',
endTime: '2021-01-16',
planNums: 20,
completeNums: 30,
differenceNums: 10,
percentageComplete: 130
// stageList: [
// { stageLable: '计划数量(万片)', value: '1000' },
// { stageLable: '完成数量(万片)', value: '2000' },
// { stageLable: '差异数量(万片)', value: '3000' },
// { stageLable: '完成率(%)', value: '4000' }
// ]
}
]
},
{
id: '456',
lineCode: 'CX000002',
lineName: '产线2',
planList: [
{
weekName: '第一周',
startTime: '2021-01-01',
endTime: '2021-01-02',
planNums: 20,
completeNums: 30,
differenceNums: 10,
percentageComplete: 130
// stageList: [
// { stageLable: '计划数量(万片)', value: '1001' },
// { stageLable: '完成数量(万片)', value: '2001' },
// { stageLable: '差异数量(万片)', value: '3001' },
// { stageLable: '完成率(%)', value: '4001' }
// ]
},
{
weekName: '第二周',
startTime: '2021-01-03',
endTime: '2021-01-09',
planNums: 20,
completeNums: 30,
differenceNums: 10,
percentageComplete: 130
// stageList: [
// { stageLable: '计划数量(万片)', value: '101' },
// { stageLable: '完成数量(万片)', value: '201' },
// { stageLable: '差异数量(万片)', value: '301' },
// { stageLable: '完成率(%)', value: '401' }
// ]
},
{
weekName: '第三周',
startTime: '2021-01-10',
endTime: '2021-01-16',
planNums: 20,
completeNums: 30,
differenceNums: 10,
percentageComplete: 130
// stageList: [
// { stageLable: '计划数量(万片)', value: '10' },
// { stageLable: '完成数量(万片)', value: '200' },
// { stageLable: '差异数量(万片)', value: '300' },
// { stageLable: '完成率(%)', value: '400' }
// ]
}
]
}
]
// 拿到列表数据
this.tableData = list
this.planList = (list[0] && list[0]['planList']) || []
}
}
}
</script>
301

被折叠的 条评论
为什么被折叠?



