一、思路步骤:

  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. [OpenCV实战]40 计算机视觉工具对比

    文章目录 1 简介 2 适用于计算机视觉的MATLAB 2.1 为什么要使用MATLAB进行计算机视觉:优点 2.2 为什么不应该将MATLAB用于计算机视觉:缺点 3 适用于计算机视觉的OpenCV ...

  2. 学习.NET MAUI Blazor(四)、路由

    Web应用程序的可以通过URL将多个页面串联起来,并且可以互相跳转.Web应用主要是使用a标签或者是服务端redirect来跳转.而现在流行的单页应用程序 (SPA) ,则通过路由(Router)来实 ...

  3. BST查找结构与折半查找方法的实现与实验比较

    简介 作业:查找结构与排序方法 作业题目: BST 查找结构与折半查找方法的实现与实验比较 要求编写程序实现 BST 存储结构的建立(插入).删除.查找和排序算法: 实现折半查找算法:比较 BST 查 ...

  4. [Leetcode]旋转链表

    题目 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * Li ...

  5. 简述HashSet的扩容机制以及我们在重写equals()的时候为何会重写hashcode()

    简述HashSet的扩容机制以及我们在重写equals()的时候为何会重写hashcode()   摘要:在背面试知识点的时候存在这样一条著名的面试题:我们重写equals()的时候为什么要重写has ...

  6. 【问题解决】Tomcat启动服务时提示Filter初始化或销毁出现java.lang.AbstractMethodError错误

    问题背景 最近在开发项目接口,基于SpringBoot 2.6.8,最终部署到外置Tomcat 8.5.85 下,开发过程中写了一个CookieFilter,实现javax.servlet.Filte ...

  7. oracle创建全文索引(oracle text)

    drop table test.QQ_MsgRecord; CREATE TABLE test.QQ_MsgRecord ( msg_group VARCHAR2(200), msg_object V ...

  8. angular--连接服务获取数据并展示到页面加载结束禁用按钮-分页加载-管道使用

  9. 鸿蒙系统应用开发之基于API6的蓝牙开发

    写在前面 由题意得,我今天讲的是基于鸿蒙系统的兼容JS的类Web开发范式的软件应用开发之蓝牙开发,它是基于API6的,至于为什么是基于API6,请你花几分钟看一下我之前写的这个系列教程的第四篇&quo ...

  10. Java 进阶P-1.3+P-1.4

    成员变量和成员函数 成员变量 类定义了对象中所具有的变量,这些变量称作成员变量 每个对象都有自己的变量,和同一个类的其他对象是分开的 成员方法 在 Java 语言中使用成员方法对应于类对象的行为.以 ...