线材table导出为ecel功能之处理数据

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
1:需求是把表格导出ecel表,插件只支持一行导入项目,然后一列排列:因为数据是多层,此次用到三层数据,第一层是第一个表格,第二层数据是表格内子table,第三层是第二个子table。(和第二层非嵌套关系)
所以只能自己做支持导出 表格的一层数据:
2:在遍历第一层后遍历第二层的数据lj_detail 数组,数组内因为设计第三个表格所以把第三层的数据要合并到第二层表格数据同一级别内
3:在做到第二层时候遇到的坑是表单数据动态添加成功,但是只有最后一个数组有数据。后来打印深入检查才发现初始化数组为空的那行写在了第二层循环遍历内,所以每次导入数据都先清空数组再导入,写在循环外即可
4:解决完第二层在第三层的时候又遇到了一个坑:三层数据合并到第二层来总是只合并最后一项的子数据。
5:后来重复循环解决了,既把之前的三层循环逻辑拿出来专门再循环一次其它内部同样的代码没任何改变
6:原因是利用索引创建的数组会有占位符,后面再二次循环导入按照会出问题,第一次循环完后把数组内数据依此导入进去,当第二次循环后this.excelData[i].lj_detail[j] = {...}方式导入的值
会覆盖第一次导入的值,所以才会出现少值而且顺序乱掉的错觉。事实上是值把前面循环的值覆盖了再之后循环还会把当次循环的覆盖
7:改成push好了<br>
代码:
    fnInitEcelTable(){
        this.excelData = this.data //你要导出的数据list。
        this.data.forEach((v,i)=>{
            console.log(i,v)
            this.excelData[i]= {
                ProdtQtyFROM:v.ProdtQtyFROM,
                date:v.date,
                pd_id:v.pd_id,
                pd_name:v.pd_name,
                series:v.series,
                zl_no:v.zl_no
            }
                this.excelData[i].lj_detail =[
                ]
            v.lj_detail.forEach((val,j)=>{
                // console.log(val,j)
                this.excelData[i].lj_detail[j] = {
                    name:val[0],
                    danweiYongliang:val[1],
                    // yongliang:val[2],
                    danwei:val[3],
                    guige:val[4],
                    beizhu:val[5],
                    dagou:val[8],
                    timer:val[9]
                }
                //sanceng --这边创建后会有问题 --只有最后一项lj_detail内的数据依此导入进去
                // val[2].forEach((value,k)=>{
                //  this.excelData[i].lj_detail[j+k+1]={
                //      name:value[2] + value[0],
                //      danweiYongliang:value[1],
                //      // yongliang:val[2],
                //      danwei:value[3],
                //      guige:value[4],
                //      beizhu:value[5],
                //      dagou:value[8],
                //      timer:value[9]
                //  }
                // })
            })
//应该放在这一层再次循环一次才不会出现只导入最后一列数据
            v.lj_detail.forEach((val,j)=>{
                val[2].forEach((value,k)=>{
                    this.excelData[i].lj_detail.push({
                        name:value[2] + value[0],
                        danweiYongliang:value[1],
                        // yongliang:val[2],
                        danwei:value[3],
                        guige:value[4],
                        beizhu:value[5],
                        dagou:value[8],
                        timer:value[9]
                    })
                })
            })
        })
    }, 
 
解决完后后来改了需求,就是一次按顺序 排列的同一层数据,导入的原本是第三层数据要放在原本父级数据的后面紧随排列。
简化下说明:
之前:data = 【a,b,c】a=[1,2,3] b=[4,5,6] c=[7,8,9]
之后  data = [a,b,c,1,2,3,4,5,6,7,8,9]
现在要做:data = [a,1,2,3,b,4,5,6,c,7,8,9]
解决方案是:
改在一层循环遍历内然后都用push()
代码:
            v.lj_detail.forEach((val,j)=>{
                // console.log(val,j)
                this.excelData[i].lj_detail.push({//不能用键值对出现大于等于二层遍历的情况会被覆盖
                    name:val[0],
                    danweiYongliang:val[1],
                    // yongliang:val[2],
                    danwei:val[3],
                    guige:val[4],
                    beizhu:val[5],
                    dagou:val[8],
                    timer:val[9]
                })
                 
                val[2].forEach((value,k)=>{
                    this.excelData[i].lj_detail.push({//不能用键值对会被覆盖
                        name:value[2] + value[0],
                        danweiYongliang:value[1],
                        // yongliang:val[2],
                        danwei:value[3],
                        guige:value[4],
                        beizhu:value[5],
                        dagou:value[8],
                        timer:value[9]
                    })
                })
            })
 
挂出两个lj_detail数据
 
一:
lj_detail: [ [ "20703000036", 2, [ [ "40101000011", 0.03, "--", "WJ20060292070300003640101000011", "M", "1平方 单根白色硅胶连接线 ( 卷材)1芯/规格一12/1芯/白/硅胶/白色/YF01-LL-1.0-1P-SI/W", "1平方 单根白色硅胶连接线30mm", 2.4 ] ], "WJ20060299000000017020703000036", "PCS", "1平方 单根白色硅胶连接线30mm 单芯线材虚设件 1平方 单根白色硅胶连接线30mm", "", 80, "打钩了", "2020-06-05 13:20:57" ], [ "20702000075", 1, [ [ "40101000013", 0.6, "--", "WJ20060292070200007540101000013", "M", "2*1平方 红黑两芯电源线 带黑色丁晴橡胶护套 ¢6mm (卷材)2芯/规格一12/2芯/红黑/丁氰橡胶/黑色/6/YF01-LL-1.0-2P-DY/B-XJ", "电源连接线一端O型电缆线组件另一端裸线", 24 ], [ "31102000061", 1, "--", "WJ20060292070200007531102000061", "PCS", "O型电缆线组件", "", 40 ], [ "40201000006", 0.003, "----", "WJ20060293110200006140201000006", "KG", "组件粒子PVC/黑色/硬度45PA/YF01-P-PVC/45PA-B", "", 0.12 ], [ "40201000004", 0.003, "----", "WJ20060293110200006140201000004", "KG", "组件粒子PVC/黑色/硬度35PA/YF01-P-PVC/35PA-B", "", 0.12 ] ], "WJ20060299000000017020702000075", "PCS", "(虚设件)电源连接线一端O型电缆线组件另一端裸线 线长600mm 带组件线材虚设件 线径6mm黑色护套含2芯12红黑线芯 线长600mm", "", 40 ] ]
二:
lj_detail: [ [ "20703000028", 1, [ [ "40101000065", 0.03, "--", "WJ20060322070300002840101000065", "M", "20AWG 单根白色硅胶连接线1芯/规格一20AWG/1芯/白/硅胶/白色/YF01-LL-20A-1P-SI/W", "20AWG单根白色硅胶连接线 线长30mm", 0.48 ] ], "WJ20060329000000018020703000028", "PCS", "(虚设件)20AWG单根白色硅胶连接线 线长30mm 单芯线材虚设件 20AWG单根白色硅胶连接线 线长30mm", "", 16, "打钩了", "2020-06-03 16:31:16" ], [ "20703000035", 1, [ [ "40101000063", 0.03, "--", "WJ20060322070300003540101000063", "M", "20AWG 单根灰色硅胶连接线1芯/规格一20AWG/1芯/灰/硅胶/灰色/YF01-LL-20A-1P-SI/G", "(虚设件)20AWG单根灰色硅胶连接线 线长30mm", 0.48 ] ], "WJ20060329000000018020703000035", "PCS", "(虚设件)20AWG单根灰色硅胶连接线 线长30mm", "", 16, "打钩了", "2020-06-03 16:32:31" ], [ "20702000096", 1, [ [ "31107000799", 1, "--", "WJ20060322070200009631107000799", "PCS", "Q系列 2芯扁平快插式快锁类黑色防水接头公头端丁晴橡胶/黑色/Q系列/公头/2PIN/2芯/18AWG/2芯/红黑/14剥皮2镀锡/250mm/YF01-LG-Q-DY/2P/B/250-14/2-XJ", "X3组件带Q系列防水接头公头2芯扁线 黑色,线长250mm", 16 ], [ "31102000065", 1, "--", "WJ20060322070200009631102000065", "", "X3 出线组件 电缆线固定件[31102] L15/W7.8/H11/PVC/黑色", "", 16 ], [ "40201000008", 0.0025, "----", "WJ20060323110200006540201000008", "KG", "组件粒子PVC/黑色/硬度60PA/YF01-P-PVC/60PA-B", "", 0.04 ] ], "WJ20060329000000018020702000096", "pcs", "X3组件带Q系列防水接头公头2芯扁线 黑色,线长250mm", "", 16, "打钩了", "2020-06-03 16:32:36" ], [ "20702000097", 1, [ [ "31107000469", 1, "--", "WJ20060322070200009731107000469", "PCS", "Q系列 防水接头母头端 2芯扁平排线丁晴橡胶/黑色/Q系列/母头/2PIN/2芯/18AWG/2芯/红黑/14剥皮2镀锡/250mm/YF01-LM-Q-DY/2P/B/250-14/2-XJ", "X3组件带Q系列防水接头母头2芯扁线 黑色,线长250mm", 16 ], [ "31102000065", 1, "--", "WJ20060322070200009731102000065", "", "X3 出线组件 电缆线固定件[31102] L15/W7.8/H11/PVC/黑色", "", 16 ], [ "40201000008", 0.0025, "----", "WJ20060323110200006540201000008", "KG", "组件粒子PVC/黑色/硬度60PA/YF01-P-PVC/60PA-B", "", 0.04 ] ], "WJ20060329000000018020702000097", "pcs", "X3组件带Q系列防水接头母头2芯扁线 黑色,线长250mm", "", 16, "打钩了", "2020-06-03 16:32:39" ] ]

  

 

posted @   少哨兵  阅读(274)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示