fatherclose(data) { this.totalData = [] let olddatalist = JSON.parse(JSON.stringify(this.dataList)) data.map((item) => { let ishave = false olddatalist.map((ele) => { if (ele.billNo == item.billNo) { ishave = true } }) if (!ishave) { this.dataList.push(item) } }) let fobj = {} this.totalFields.map((item) => { fobj[item] = this.getsum(item, this.dataList) }) let totalFields = [ 'totalBoxcount', 'totalCount', 'totalCubage', 'totalWeight', ] let footer = fobj this.footer = footer for (let key in footer) { this['totalData'].push({ key: key, value: footer[key], }) } this.pageOptions.pageTotal = this.dataList.length this.calcPageData() this.showaddDialog = false },
时间: 2024-02-14 15:28:36 浏览: 31
这段代码定义了一个名为 `fatherclose(data)` 的函数。让我逐步解释一下代码的逻辑:
1. 首先,将 `this.totalData` 数组置为空数组,用来存储计算后的总计数据。
2. 创建一个名为 `olddatalist` 的变量,通过深拷贝 `this.dataList` 数组的副本来初始化。
3. 使用 `.map((item) => { ... })` 方法遍历传入的 `data` 数组。
4. 在遍历过程中,使用一个布尔变量 `ishave` 来判断 `data` 中的元素在 `olddatalist` 中是否已存在。
5. 遍历 `olddatalist` 数组,并在每次迭代中检查当前元素的 `billNo` 属性是否与 `item` 的 `billNo` 属性相等。如果相等,则将 `ishave` 设置为 `true`。
6. 如果 `ishave` 为 `false`,表示 `item` 在 `olddatalist` 中不存在,则将 `item` 添加到 `this.dataList` 中。
7. 创建一个空对象 `fobj`,用来存储计算后的字段总和。
8. 使用 `.map((item) => { ... })` 方法遍历 `this.totalFields` 数组。
9. 在遍历过程中,将每个字段作为键,调用 `this.getsum(item, this.dataList)` 方法计算对应字段在 `this.dataList` 中的总和,并将结果存储在 `fobj[item]` 中。
10. 定义一个名为 `totalFields` 的数组,包含需要计算总和的字段名。
11. 将 `fobj` 赋值给 `this.footer`,用来更新表格的底部合计行。
12. 使用 `for...in` 循环遍历 `footer` 对象的键,并将键值对以 `{ key: key, value: footer[key] }` 的形式添加到 `this['totalData']` 数组中。
13. 更新分页组件的总记录数为 `this.dataList.length`,并重新计算分页数据。
14. 将 `this.showaddDialog` 设置为 `false`,关闭弹出框。
这段代码的主要作用是,将传入的数据添加到 `this.dataList` 中,并计算更新表格的底部合计行和分页数据。最后关闭弹出框。