oncheck() { const me = this if (!me.selectedRows.length) { me.warn('请先选择记录!') return } this.confirm('确认添加所选择的记录?').then((pass) => { var newArr = [] me.selectedRows.map(function (value) { if (value.containerId) { value.containerId.map((item) => { newArr.push(item) }) } }) this.containerList = Array.from(new Set(newArr)) this.paramsIn = { where: { 't.entrepotNo': this.$bus.tmsEntrepotNo, 'd.containerId_in': '', }, } this.paramsIn.where['d.containerId_in'] = this.containerList.join(',') this.paramsIn.where=JSON.stringify(this.paramsIn.where) this.$httpPost(this.ajax.getList, this.paramsIn,false).then((res) => { if (res.flag.retCode != '0') { me.error(res.flag.retMsg) } else { let list = this.selectedRows.concat(res.rows) let keys = {} let listA = list.reduce((accumulator, currentValue) => { !keys[currentValue['billNo']] ? (keys[currentValue['billNo']] = true && accumulator.push(currentValue)) : null return accumulator }, []) this.$emit('fatherclose', listA) } }) }) },
时间: 2024-02-14 19:27:37 浏览: 72
这段代码是一个名为 `oncheck()` 的函数,包含了一些逻辑处理和异步操作。让我解释一下:
1. 首先,函数通过 `this.selectedRows.length` 来检查是否有选择的记录。如果没有,会调用 `me.warn('请先选择记录!')` 提示用户先选择记录,并返回。
2. 如果有选择的记录,会弹出一个确认框,询问用户是否确认添加所选择的记录。确认框返回的结果通过 `.then((pass) => { ... })` 来处理。
3. 在确认框返回的回调函数中,定义了一个空数组 `newArr`。
4. 接下来,通过遍历 `selectedRows` 数组,将 `containerId` 数组中的元素添加到 `newArr` 中。
5. 然后,使用 `Array.from(new Set(newArr))` 对 `newArr` 去重,并将结果赋值给 `this.containerList`。
6. 接着,构造了一个 `paramsIn` 对象,其中的 `where` 属性是一个包含筛选条件的对象。
- 筛选条件包括 `'t.entrepotNo': this.$bus.tmsEntrepotNo` 和 `'d.containerId_in': ''`。
- `'d.containerId_in'` 的值在下一步中会被赋值为 `this.containerList` 数组的字符串形式。
- 最后,将 `where` 对象转换为字符串形式,并重新赋值给 `paramsIn.where`。
7. 最后,通过调用 `$httpPost` 方法发送一个 POST 请求,传递了 `this.ajax.getList` 和 `this.paramsIn` 作为参数。请求返回的结果通过 `.then((res) => { ... })` 处理。
8. 在返回结果的回调函数中,首先判断 `res.flag.retCode` 是否为 `'0'`,如果不是,则调用 `me.error(res.flag.retMsg)` 提示用户错误信息。
9. 如果 `res.flag.retCode` 是 `'0'`,则将 `res.rows` 数组与 `selectedRows` 数组拼接成一个新的数组 `list`。
10. 接着,使用 `reduce()` 方法和一个空对象 `keys` 来遍历 `list` 数组,并根据 `billNo` 属性将唯一的元素添加到 `listA` 中。
11. 最后,通过 `$emit('fatherclose', listA)` 触发一个名为 `'fatherclose'` 的事件,并将 `listA` 作为参数传递出去。
这段代码的主要作用是,在用户选择了记录后,确认是否添加这些记录,并进行相应的后续处理。
阅读全文