一、思路步骤:

  1. 根据后台传输的数据进行格式转化;
  2. 索引为多少的时候进行跨行;
        <table id="table">
<thead>
<tr>
<th class="field">领域</th>
<th class="task">任务目标</th>
<th class="shorttask">短期目标</th>
<th class="standard">成功标准</th>
<th class="remask">教学情景</th>
<th class="remask">开始时间</th>
<th class="remask">结束时间</th>
</tr>
</thead>
<tbody>
<tr v-for="(item,index) in datafilter(fieldlist) " :key="index">
<td v-if="getfieldRow(index).flag" :rowspan="getfieldRow(index).value">{{ item.field }}</td>
<td v-if="gettaskRow(index).flag" :rowspan="gettaskRow(index).value">{{ item.task }}</td>
<td>{{ item.shortgoal_item }}</td>
<td>{{ item.standard }}</td>
<td v-if="getfieldRow(index).flag" :rowspan="getfieldRow(index).value">单训课、家庭康复指导</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>

二、后台json数据格式:

"fieldlist": [
            {
                "field": "A领域",
                "tasklist": [
                    {
                        "task": "任务目标A1",
                        "shortgoal": [
                            {
                                "shortgoal_item": "短期目标1",
                                "standard": "成功标准"
                            },
                            {
                                "shortgoal_item": "短期目标2",
                                "standard": "成功标准"
                            }
                        ]
                    },
                      {
                        "task": "任务目标A2",
                        "shortgoal": [
                            {
                                "shortgoal_item": "短期目标1",
                                "standard": "成功标准"
                            },
                            {
                                "shortgoal_item": "短期目标2",
                                "standard": "成功标准"
                            },
                              {
                                "shortgoal_item": "短期目标3",
                                "standard": "成功标准"
                            }
                        ]
                    }
                ]
            }
      
        ]
三、方法
  1. datafilter方法对后台数据进行转化成一个数组装所有的内容对象;
  2. getallRow方法得到表格总共有多少行;
  3. gettaskRow、getfieldRow方法进行计算某一列中的哪一行需要跨行(rowspan)
    datafilter(fieldlist) {
let arr = []
for (let item of fieldlist) {
for (let i of item.tasklist) {
for (let j of i.shortgoal) {
arr.push({
field: item.field,
task: i.task,
shortgoal_item: j.shortgoal_item,
standard: j.standard
})
}
} }
console.log(arr)
console.log(arr.length)
return arr
},
getallRow() { let allnumbers = 0
for (let item of this.fieldlist) {
for (let i of item.tasklist) {
allnumbers = allnumbers + i.shortgoal.length
}
}
return allnumbers
},
gettaskRow(inx) {
let index = 0
let dict = {}
let dictfliter = {}
for (let item of this.fieldlist) {
for (let i = -1; i < item.tasklist.length - 1; i++) {
index = index + item.tasklist[i + 1].shortgoal.length
dict[index] = item.tasklist[i + 1].shortgoal.length
}
}
for (let item = 0; item < Object.keys(dict).length; item++) {
if (item == 0) {
dictfliter["0"] = Number(Object.keys(dict)[item])
dictfliter[Object.keys(dict)[item]] = Object.values(dict)[item + 1]
} else {
dictfliter[Object.keys(dict)[item]] = Object.values(dict)[item + 1]
}
}
// console.log(dictfliter)
return {flag: dictfliter.hasOwnProperty(inx), value: dictfliter[inx]}
},
getfieldRow(inx) {
let count = 0
let dict = {}
for (let item of this.fieldlist) {
let index = 0
for (let i of item.tasklist) {
index = index + i.shortgoal.length //计算某个领域对应的所有短期目标的条目
}
dict[count] = index
count = count + index
}
// console.log(dict)
return {flag: dict.hasOwnProperty(inx), value: dict[inx]}
},

博主,暂时没有想到更好的方法进行跨行跨列动态表格的生成,若有大家更好的建议,欢迎大家留言~

vue跨行跨列动态表格生成的更多相关文章

  1. latex制作表格-跨行跨列

    1.列的合并,使用 \multicolumn{跨几列}{格式}{填充内容} \documentclass[UTF8]{ctexart} \begin{document} 三囚犯问题进行300次实验后\ ...

  2. vue:使用element-ui制作动态表格

    参考; https://github.com/PanJiaChen/vue-element-admin/blob/master/src/views/table/dynamic-table/compon ...

  3. javascript 将 table 导出 Excel ,可跨行跨列

    <script language="JavaScript" type="text/javascript"> //jQuery HTML导出Excel ...

  4. vue+element项目中动态表格合并

    需求:elementui里的table虽然有合并函数(:span-method),单基本都是设置固定值合并.现在有一个树型结构的数据,要求我们将里面的某个list和其他属性一起展开展示,并且list中 ...

  5. Excel中复杂跨行跨列数据

    XSSFWorkbook wb = new XSSFWorkbook(); // 工作表 XSSFSheet sheet = wb.createSheet("车辆使用情况统计"); ...

  6. Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)

    Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成) 动态表单生成 ElementUI官网引导 Element表单生成 Element动态增减表单,在线代码 关键配置 templa ...

  7. vue原生表格怎样实现动态列及表格数据下载

    最近项目经常用到带有合并效果以及动态列的表格,而翻阅iview和element-ui官网没有找到合适的(也有可能自己的水平有限,不会改写),所以只好自己用原生表格写了一个,具体效果如下: 这个表格右侧 ...

  8. Latex 表格(跨行、跨列、背景加灰)new

    一. 效果如图 二.代码如下 1. 首部增加宏包: \usepackage{multirow} 2. 正文部分增加: \begin{table} \centering \caption{Suspici ...

  9. HTML表格跨行、跨列操作(rowspan、colspan)

    转自:https://blog.csdn.net/u012724595/article/details/79401401 一般使用<td>元素的colspan属性来实现单元格跨列操作,使用 ...

  10. colspan是跨列,rowspan是跨行

    colspan是跨列,rowspan是跨行,可以看作是网页设计表格中的列和行的一个属性.跨列相当于把两列或者多列合并成一个单元格:跨行同理是把两行或者多行合并成一行:colspan和rowspan分别 ...

随机推荐

  1. 如何用 30s 给面试官讲清楚什么是 Token

    引言 前文介绍了 Session-Cookie 的认证过程,简单回顾下基本步骤: 客户端(浏览器)向服务器发送用户名和密码 服务器验证通过后,创建 Session 对象,在 Session 中保存该用 ...

  2. 安装pytorch-gpu的经验与教训

    首先说明 本文并不是安装教程,网上有很多,这里只是自己遇到的一些问题 我是以前安装的tensorflow-gpu的,但是发现现在的学术论文大部分都是用pytorch复现的,因此才去安装的pytorch ...

  3. Mac上离线安装rvm

    上github下载rvm,https://github.com/rvm/rvm.git. 双击打开/bin/rvm-installer .../Users/ccy/.rvm/ is complete. ...

  4. linux环境编程(1): 实现一个单元测试框架

    写在前面 在开发的过程中,大多数人都需要对代码进行测试.目前对于c/c++项目,可以采用google的gtest框架,除此之外在github上搜索之后可以发现很多其他类似功能的项目.但把别人的轮子直接 ...

  5. Tomcat 解决一些基本配置问题。

    解决Tomcat进入manger管理界面需要账号密码问题 第一步,打开Tomcat的conf文件夹 进入tomcat-users.xml文件 在 标签里面复制以下内容 <role rolenam ...

  6. SpringBoot学习笔记 - 构建、简化原理、快速启动、配置文件与多环境配置、技术整合案例

    [前置内容]Spring 学习笔记全系列传送门: Spring学习笔记 - 第一章 - IoC(控制反转).IoC容器.Bean的实例化与生命周期.DI(依赖注入) Spring学习笔记 - 第二章 ...

  7. Nginx13 openresty使用lua-resty-template

    1 简介 https://github.com/bungle/lua-resty-template 如果学习过JavaEE中的servlet和JSP的话,应该知道JSP模板最终会被翻译成Servlet ...

  8. linux08-进程管理

    1.任务调度 2.进程 3.服务 4.进程.网络监控 1.任务调度crond 1.1基本说明 任务调度:是指系统在某个时间执行的特定的命令或程序. 任务调度分类: 1.系统工作:有些重要的工作必须周而 ...

  9. 2211-11Flask入门教程

    本篇记录来自Flask入门教程 准备工作 在通过这本书学习 Flask 开发前,我假设你已经了解了 Python 和 HTML 的基础知识.如果还没有,那么可以先从下面这些在线资源入手: <使用 ...

  10. 云端智创 | 批量化生产,如何利用Timeline快速合成短视频?

    本文内容整理自「智能媒体生产」系列课程第三讲:开发者实战,由阿里云智能视频云技术专家分享云剪辑Timeline的功能及使用方法.云剪辑OpenAPI的使用流程.短视频批量生产的基本原理以及使用Time ...