|  | @@ -0,0 +1,230 @@
 | 
	
		
			
				|  |  | +<template>
 | 
	
		
			
				|  |  | +    <div class="affairbackward-all">
 | 
	
		
			
				|  |  | +        <el-table :data="tableDatass" :span-method="objectSpanMethod" border style="width: 100%; margin-top: 20px">
 | 
	
		
			
				|  |  | +            <el-table-column prop="title" label="项目">
 | 
	
		
			
				|  |  | +            </el-table-column>
 | 
	
		
			
				|  |  | +            <el-table-column prop="date" label="时间">
 | 
	
		
			
				|  |  | +            </el-table-column>
 | 
	
		
			
				|  |  | +            <el-table-column prop="content" label="内容">
 | 
	
		
			
				|  |  | +            </el-table-column>
 | 
	
		
			
				|  |  | +            <el-table-column prop="remark" label="备注">
 | 
	
		
			
				|  |  | +            </el-table-column>
 | 
	
		
			
				|  |  | +        </el-table>
 | 
	
		
			
				|  |  | +    </div>
 | 
	
		
			
				|  |  | +</template>
 | 
	
		
			
				|  |  | +<script>
 | 
	
		
			
				|  |  | +export default {
 | 
	
		
			
				|  |  | +    data() {
 | 
	
		
			
				|  |  | +        return {
 | 
	
		
			
				|  |  | +            tableData: [
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    title:'嘉宾邀约',
 | 
	
		
			
				|  |  | +                    Childdate:[
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                    ],
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    title:'服务方案',
 | 
	
		
			
				|  |  | +                    Childdate:[
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                    ],
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    title:'场地协调',
 | 
	
		
			
				|  |  | +                    Childdate:[
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                    ],
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    title:'视觉呈现',
 | 
	
		
			
				|  |  | +                    Childdate:[
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                    ],
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    title:'物料制作',
 | 
	
		
			
				|  |  | +                    Childdate:[
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                        {date:'提前45天',content:'初筛邀请对象,结合客户需求,梳理邀请名单',Remark:'实际根据项目启动时间,倒推时间是否足够'},
 | 
	
		
			
				|  |  | +                    ],
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +            ],
 | 
	
		
			
				|  |  | +            tableDatas:[
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    title:'1',
 | 
	
		
			
				|  |  | +                    date:'提前45天',
 | 
	
		
			
				|  |  | +                    content:'初筛邀请对象,结合客户需求,梳理邀请名单',
 | 
	
		
			
				|  |  | +                    Remark:'实际根据项目启动时间,倒推时间是否足够'
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    title:'1',
 | 
	
		
			
				|  |  | +                    date:'提前45天',
 | 
	
		
			
				|  |  | +                    content:'初筛邀请对象,结合客户需求,梳理邀请名单',
 | 
	
		
			
				|  |  | +                    Remark:'实际根据项目启动时间,倒推时间是否足够'
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    title:'2',
 | 
	
		
			
				|  |  | +                    date:'提前45天',
 | 
	
		
			
				|  |  | +                    content:'初筛邀请对象,结合客户需求,梳理邀请名单',
 | 
	
		
			
				|  |  | +                    Remark:'实际根据项目启动时间,倒推时间是否足够'
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    title:'2',
 | 
	
		
			
				|  |  | +                    date:'提前45天',
 | 
	
		
			
				|  |  | +                    content:'初筛邀请对象,结合客户需求,梳理邀请名单',
 | 
	
		
			
				|  |  | +                    Remark:'实际根据项目启动时间,倒推时间是否足够'
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    title:'2',
 | 
	
		
			
				|  |  | +                    date:'提前45天',
 | 
	
		
			
				|  |  | +                    content:'初筛邀请对象,结合客户需求,梳理邀请名单',
 | 
	
		
			
				|  |  | +                    Remark:'实际根据项目启动时间,倒推时间是否足够'
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    title:'3',
 | 
	
		
			
				|  |  | +                    date:'提前45天',
 | 
	
		
			
				|  |  | +                    content:'初筛邀请对象,结合客户需求,梳理邀请名单',
 | 
	
		
			
				|  |  | +                    Remark:'实际根据项目启动时间,倒推时间是否足够'
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    title:'3',
 | 
	
		
			
				|  |  | +                    date:'提前45天',
 | 
	
		
			
				|  |  | +                    content:'初筛邀请对象,结合客户需求,梳理邀请名单',
 | 
	
		
			
				|  |  | +                    Remark:'实际根据项目启动时间,倒推时间是否足够'
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    title:'3',
 | 
	
		
			
				|  |  | +                    date:'提前45天',
 | 
	
		
			
				|  |  | +                    content:'初筛邀请对象,结合客户需求,梳理邀请名单',
 | 
	
		
			
				|  |  | +                    Remark:'实际根据项目启动时间,倒推时间是否足够'
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    title:'3',
 | 
	
		
			
				|  |  | +                    date:'提前45天',
 | 
	
		
			
				|  |  | +                    content:'初筛邀请对象,结合客户需求,梳理邀请名单',
 | 
	
		
			
				|  |  | +                    Remark:'实际根据项目启动时间,倒推时间是否足够'
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    title:'4',
 | 
	
		
			
				|  |  | +                    date:'提前45天',
 | 
	
		
			
				|  |  | +                    content:'初筛邀请对象,结合客户需求,梳理邀请名单',
 | 
	
		
			
				|  |  | +                    Remark:'实际根据项目启动时间,倒推时间是否足够'
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +            ],
 | 
	
		
			
				|  |  | +            tableDatass:[],
 | 
	
		
			
				|  |  | +            rowarr:[],
 | 
	
		
			
				|  |  | +            spanArr: [], // 存储每个项目对应的行数
 | 
	
		
			
				|  |  | +            position: 0   // 存储spanArr的索引位置
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    created() {
 | 
	
		
			
				|  |  | +        this.getSpanArr();
 | 
	
		
			
				|  |  | +        this.flattenData();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    methods:{
 | 
	
		
			
				|  |  | +        // 将嵌套的数据结构转换为扁平结构
 | 
	
		
			
				|  |  | +        flattenData() {
 | 
	
		
			
				|  |  | +            this.tableDatass = [];
 | 
	
		
			
				|  |  | +            this.tableData.forEach(item => {
 | 
	
		
			
				|  |  | +                item.Childdate.forEach(child => {
 | 
	
		
			
				|  |  | +                    this.tableDatass.push({
 | 
	
		
			
				|  |  | +                        title: item.title,
 | 
	
		
			
				|  |  | +                        date: child.date,
 | 
	
		
			
				|  |  | +                        content: child.content,
 | 
	
		
			
				|  |  | +                        remark: child.Remark
 | 
	
		
			
				|  |  | +                    });
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +            console.log(this.tableDatass);
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        // 计算每个项目对应的行数
 | 
	
		
			
				|  |  | +        getSpanArr() {
 | 
	
		
			
				|  |  | +            this.spanArr = [];
 | 
	
		
			
				|  |  | +            this.position = 0;
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  | +            this.tableData.forEach(item => {
 | 
	
		
			
				|  |  | +                this.spanArr.push(item.Childdate.length);
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        objectSpanMethod({ row, column, rowIndex, columnIndex }) {
 | 
	
		
			
				|  |  | +            if (columnIndex === 0) {
 | 
	
		
			
				|  |  | +                let currentRowTitle = row.title;
 | 
	
		
			
				|  |  | +                let spanCount = 0;
 | 
	
		
			
				|  |  | +                let pos = 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // 找到当前项目在spanArr中的位置
 | 
	
		
			
				|  |  | +                for (let i = 0; i < this.tableData.length; i++) {
 | 
	
		
			
				|  |  | +                    if (this.tableData[i].title === currentRowTitle) {
 | 
	
		
			
				|  |  | +                        spanCount = this.spanArr[i];
 | 
	
		
			
				|  |  | +                        break;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    pos += this.spanArr[i];
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // 如果是当前项目的第一个行,返回合并行数
 | 
	
		
			
				|  |  | +                if (rowIndex === pos) {
 | 
	
		
			
				|  |  | +                    return {
 | 
	
		
			
				|  |  | +                        rowspan: spanCount,
 | 
	
		
			
				|  |  | +                        colspan: 1
 | 
	
		
			
				|  |  | +                    };
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    return {
 | 
	
		
			
				|  |  | +                        rowspan: 0,
 | 
	
		
			
				|  |  | +                        colspan: 0
 | 
	
		
			
				|  |  | +                    };
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                // if (rowIndex % 2 === 0) {
 | 
	
		
			
				|  |  | +                //     return {
 | 
	
		
			
				|  |  | +                //         rowspan: 2,
 | 
	
		
			
				|  |  | +                //         colspan: 1
 | 
	
		
			
				|  |  | +                //     };
 | 
	
		
			
				|  |  | +                // } else {
 | 
	
		
			
				|  |  | +                //     return {
 | 
	
		
			
				|  |  | +                //         rowspan: 0,
 | 
	
		
			
				|  |  | +                        // colspan: 0
 | 
	
		
			
				|  |  | +                //     };
 | 
	
		
			
				|  |  | +                // }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +</script>
 | 
	
		
			
				|  |  | +<style>
 | 
	
		
			
				|  |  | +    .affairbackward-all {
 | 
	
		
			
				|  |  | +    background-color: #fff;
 | 
	
		
			
				|  |  | +    padding: 10px;
 | 
	
		
			
				|  |  | +    box-shadow: 0 0 5px #0005;
 | 
	
		
			
				|  |  | +    border-radius: 10px;
 | 
	
		
			
				|  |  | +    min-height: 830px;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +</style>
 |