From d958c073419d97858596e114f27bfeb83e1745b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A3=E5=9C=A3=E5=8D=8E?= <752718920@qq.com> Date: Sat, 9 Oct 2021 00:35:51 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=99=E6=89=80=E6=9C=89=E5=8D=95=E6=8D=AE?= =?UTF-8?q?=E9=83=BD=E5=A2=9E=E5=8A=A0=E6=89=AB=E7=A0=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jshERP-web/src/utils/JEditableTableUtil.js | 63 +++++++++++ .../src/views/bill/mixins/BillModalMixin.js | 102 +++++++++++++++++- .../views/bill/modules/AllocationOutModal.vue | 16 ++- .../src/views/bill/modules/AssembleModal.vue | 16 ++- .../views/bill/modules/DisassembleModal.vue | 16 ++- .../src/views/bill/modules/OtherInModal.vue | 16 ++- .../src/views/bill/modules/OtherOutModal.vue | 16 ++- .../views/bill/modules/PurchaseBackModal.vue | 16 ++- .../views/bill/modules/PurchaseOrderModal.vue | 16 ++- .../views/bill/modules/RetailBackModal.vue | 16 ++- .../src/views/bill/modules/RetailOutModal.vue | 16 ++- .../src/views/bill/modules/SaleBackModal.vue | 16 ++- .../src/views/bill/modules/SaleOrderModal.vue | 16 ++- .../src/views/bill/modules/SaleOutModal.vue | 16 ++- 14 files changed, 343 insertions(+), 14 deletions(-) diff --git a/jshERP-web/src/utils/JEditableTableUtil.js b/jshERP-web/src/utils/JEditableTableUtil.js index 8ff2c5ad..f1e132da 100644 --- a/jshERP-web/src/utils/JEditableTableUtil.js +++ b/jshERP-web/src/utils/JEditableTableUtil.js @@ -110,4 +110,67 @@ export function validateTables(cases, deleteTempId) { }) })() }) +} + +/** + * 一次性验证主表单和所有的次表单-只校验单号 + * @param form 主表单 form 对象 + * @param cases 接收一个数组,每项都是一个JEditableTable实例 + * @returns {Promise} + * @author sunjianlei + */ +export function getListData(form, cases) { + let options = {} + return new Promise((resolve, reject) => { + // 验证主表表单 + form.validateFields(['number'],(err, values) => { + err ? reject({ error: VALIDATE_NO_PASSED }) : resolve(values) + }) + }).then(values => { + Object.assign(options, { formValue: values }) + // 验证所有子表的表单 + return getListTables(cases) + }).then(all => { + Object.assign(options, { tablesValue: all }) + return Promise.resolve(options) + }).catch(error => { + return Promise.reject(error) + }) +} + +/** + * 不验证直接获取一个或多个表格的所有值 + * @param cases 接收一个数组,每项都是一个JEditableTable实例 + * @param deleteTempId 是否删除临时ID,如果设为true,行编辑就不返回新增行的ID,ID需要后台生成 + * @author sunjianlei + */ +export function getListTables(cases, deleteTempId) { + if (!(cases instanceof Array)) { + throw `'validateTables'函数的'cases'参数需要的是一个数组,而传入的却是${typeof cases}` + } + return new Promise((resolve, reject) => { + let tables = [] + let index = 0; + if(!cases || cases.length==0){ + resolve() + } + (function next() { + let vm = cases[index] + vm.getAll(false, deleteTempId).then(all => { + tables[index] = all + // 判断校验是否全部完成,完成返回成功,否则继续进行下一步校验 + if (++index === cases.length) { + resolve(tables) + } else ( + next() + ) + }, error => { + // 出现未验证通过的表单,不再进行下一步校验,直接返回失败并跳转到该表格 + if (error === VALIDATE_NO_PASSED) { + reject({ error: VALIDATE_NO_PASSED, index }) + } + reject(error) + }) + })() + }) } \ No newline at end of file diff --git a/jshERP-web/src/views/bill/mixins/BillModalMixin.js b/jshERP-web/src/views/bill/mixins/BillModalMixin.js index 9bc519be..66382b5e 100644 --- a/jshERP-web/src/views/bill/mixins/BillModalMixin.js +++ b/jshERP-web/src/views/bill/mixins/BillModalMixin.js @@ -1,4 +1,4 @@ -import { FormTypes } from '@/utils/JEditableTableUtil' +import { FormTypes, getListData } from '@/utils/JEditableTableUtil' import {findBySelectSup,findBySelectCus,findBySelectRetail,getMaterialByBarCode,findStockByDepotAndBarCode,getAccount, getPersonByNumType, getBatchNumberList} from '@/api/api' import { getAction,putAction } from '@/api/manage' @@ -511,8 +511,106 @@ export const BillModalMixin = { scanEnter() { this.scanStatus = false }, + //扫码之后回车 scanPressEnter() { - console.log(this.scanBarCode) + if(this.scanBarCode) { + this.getAllTable().then(tables => { + return getListData(this.form, tables) + }).then(allValues => { + let param = { + barCode: this.scanBarCode, + mpList: getMpListShort(Vue.ls.get('materialPropertyList')), //扩展属性 + prefixNo: this.prefixNo + } + getMaterialByBarCode(param).then((res) => { + if (res && res.code === 200) { + let hasFinished = false + let allTaxLastMoney = 0 + //获取单据明细列表信息 + let detailArr = allValues.tablesValue[0].values + //构造新的列表数组,用于存放单据明细信息 + let newDetailArr = [] + for(let detail of detailArr){ + if(detail.barCode) { + //如果条码重复,就在给原来的数量加1 + if(detail.barCode === this.scanBarCode) { + detail.operNumber = (detail.operNumber-0)+1 + //由于改变了商品数量,需要同时更新相关金额和价税合计 + let taxRate = detail.taxRate-0 //税率 + let unitPrice = detail.unitPrice-0 //单价 + detail.allPrice = (unitPrice*detail.operNumber).toFixed(2)-0 + detail.taxMoney = ((taxRate*0.01)*detail.allPrice).toFixed(2)-0 + detail.taxLastMoney = (detail.allPrice + detail.taxMoney).toFixed(2)-0 + hasFinished = true + } + newDetailArr.push(detail) + } + } + if(!hasFinished) { + //将扫码的条码对应的商品加入列表 + let item = {} + item.barCode = this.scanBarCode + let mList = res.data + if(mList && mList.length>0) { + let mInfo = mList[0] + if(mInfo.sku) { + this.changeFormTypes(this.materialTable.columns, 'sku', 1) + } + if(mInfo.enableSerialNumber === "1") { + this.changeFormTypes(this.materialTable.columns, 'snList', 1) + } + if(mInfo.enableBatchNumber === "1") { + this.changeFormTypes(this.materialTable.columns, 'batchNumber', 1) + this.changeFormTypes(this.materialTable.columns, 'expirationDate', 1) + } + item.depotId = mInfo.depotId + item.name = mInfo.name + item.standard = mInfo.standard + item.model = mInfo.model + item.materialOther = mInfo.materialOther + item.stock = mInfo.stock + item.unit = mInfo.commodityUnit + item.sku = mInfo.sku + item.operNumber = 1 + item.unitPrice = mInfo.billPrice + item.taxUnitPrice = mInfo.billPrice + item.allPrice = mInfo.billPrice + item.taxRate = 0 + item.taxMoney = 0 + item.taxLastMoney = mInfo.billPrice + newDetailArr.push(item) + } else { + this.$message.warning('抱歉,此条码不存在商品信息!'); + } + } + //组合和拆分单据给商品类型进行重新赋值 + for(let i=0; i< newDetailArr.length; i++) { + if(i===0) { + newDetailArr[0].mType = '组合件' + } else { + newDetailArr[i].mType = '普通子件' + } + } + this.materialTable.dataSource = newDetailArr + //更新优惠后金额、本次付款等信息 + for(let newDetail of newDetailArr){ + allTaxLastMoney = allTaxLastMoney + (newDetail.taxLastMoney-0) + } + let discount = this.form.getFieldValue('discount')-0 + let otherMoney = this.form.getFieldValue('otherMoney')-0 + let discountMoney = (discount*0.01*allTaxLastMoney).toFixed(2)-0 + let discountLastMoney = (allTaxLastMoney-discountMoney).toFixed(2)-0 + let changeAmountNew = (discountLastMoney + otherMoney).toFixed(2)-0 + this.$nextTick(() => { + this.form.setFieldsValue({'discount':discount,'discountMoney':discountMoney,'discountLastMoney':discountLastMoney, + 'changeAmount':changeAmountNew,'debt':0}) + }); + //置空扫码的内容 + this.scanBarCode = '' + } + }) + }) + } }, stopScan() { this.scanStatus = true diff --git a/jshERP-web/src/views/bill/modules/AllocationOutModal.vue b/jshERP-web/src/views/bill/modules/AllocationOutModal.vue index f5d1b2ee..6224c535 100644 --- a/jshERP-web/src/views/bill/modules/AllocationOutModal.vue +++ b/jshERP-web/src/views/bill/modules/AllocationOutModal.vue @@ -39,7 +39,21 @@ :actionButton="true" @valueChange="onValueChange" @added="onAdded" - @deleted="onDeleted" /> + @deleted="onDeleted"> + + diff --git a/jshERP-web/src/views/bill/modules/AssembleModal.vue b/jshERP-web/src/views/bill/modules/AssembleModal.vue index 0de284c4..a5730bb9 100644 --- a/jshERP-web/src/views/bill/modules/AssembleModal.vue +++ b/jshERP-web/src/views/bill/modules/AssembleModal.vue @@ -39,7 +39,21 @@ :actionButton="true" @valueChange="onValueChange" @added="onAdded" - @deleted="onDeleted" /> + @deleted="onDeleted"> + + diff --git a/jshERP-web/src/views/bill/modules/DisassembleModal.vue b/jshERP-web/src/views/bill/modules/DisassembleModal.vue index a4f29292..a58d8d25 100644 --- a/jshERP-web/src/views/bill/modules/DisassembleModal.vue +++ b/jshERP-web/src/views/bill/modules/DisassembleModal.vue @@ -39,7 +39,21 @@ :actionButton="true" @valueChange="onValueChange" @added="onAdded" - @deleted="onDeleted" /> + @deleted="onDeleted"> + + diff --git a/jshERP-web/src/views/bill/modules/OtherInModal.vue b/jshERP-web/src/views/bill/modules/OtherInModal.vue index 5e89b77c..158bef66 100644 --- a/jshERP-web/src/views/bill/modules/OtherInModal.vue +++ b/jshERP-web/src/views/bill/modules/OtherInModal.vue @@ -48,7 +48,21 @@ :actionButton="true" @valueChange="onValueChange" @added="onAdded" - @deleted="onDeleted" /> + @deleted="onDeleted"> + + diff --git a/jshERP-web/src/views/bill/modules/OtherOutModal.vue b/jshERP-web/src/views/bill/modules/OtherOutModal.vue index 774c5b76..c8e4f801 100644 --- a/jshERP-web/src/views/bill/modules/OtherOutModal.vue +++ b/jshERP-web/src/views/bill/modules/OtherOutModal.vue @@ -48,7 +48,21 @@ :actionButton="true" @valueChange="onValueChange" @added="onAdded" - @deleted="onDeleted" /> + @deleted="onDeleted"> + + diff --git a/jshERP-web/src/views/bill/modules/PurchaseBackModal.vue b/jshERP-web/src/views/bill/modules/PurchaseBackModal.vue index 2ee3c5a2..7ae39764 100644 --- a/jshERP-web/src/views/bill/modules/PurchaseBackModal.vue +++ b/jshERP-web/src/views/bill/modules/PurchaseBackModal.vue @@ -52,7 +52,21 @@ :actionButton="true" @valueChange="onValueChange" @added="onAdded" - @deleted="onDeleted" /> + @deleted="onDeleted"> + + diff --git a/jshERP-web/src/views/bill/modules/PurchaseOrderModal.vue b/jshERP-web/src/views/bill/modules/PurchaseOrderModal.vue index 84eb797f..87c72c3b 100644 --- a/jshERP-web/src/views/bill/modules/PurchaseOrderModal.vue +++ b/jshERP-web/src/views/bill/modules/PurchaseOrderModal.vue @@ -47,7 +47,21 @@ :rowSelection="true" :actionButton="true" @valueChange="onValueChange" - @deleted="onDeleted" /> + @deleted="onDeleted"> + + diff --git a/jshERP-web/src/views/bill/modules/RetailBackModal.vue b/jshERP-web/src/views/bill/modules/RetailBackModal.vue index 61258fb8..585f65e5 100644 --- a/jshERP-web/src/views/bill/modules/RetailBackModal.vue +++ b/jshERP-web/src/views/bill/modules/RetailBackModal.vue @@ -55,7 +55,21 @@ :actionButton="true" @valueChange="onValueChange" @added="onAdded" - @deleted="onDeleted" /> + @deleted="onDeleted"> + + diff --git a/jshERP-web/src/views/bill/modules/RetailOutModal.vue b/jshERP-web/src/views/bill/modules/RetailOutModal.vue index 353ee8a3..de93ff9c 100644 --- a/jshERP-web/src/views/bill/modules/RetailOutModal.vue +++ b/jshERP-web/src/views/bill/modules/RetailOutModal.vue @@ -59,7 +59,21 @@ :actionButton="true" @valueChange="onValueChange" @added="onAdded" - @deleted="onDeleted" /> + @deleted="onDeleted"> + + diff --git a/jshERP-web/src/views/bill/modules/SaleBackModal.vue b/jshERP-web/src/views/bill/modules/SaleBackModal.vue index d8087c88..e5053c6e 100644 --- a/jshERP-web/src/views/bill/modules/SaleBackModal.vue +++ b/jshERP-web/src/views/bill/modules/SaleBackModal.vue @@ -52,7 +52,21 @@ :actionButton="true" @valueChange="onValueChange" @added="onAdded" - @deleted="onDeleted" /> + @deleted="onDeleted"> + + diff --git a/jshERP-web/src/views/bill/modules/SaleOrderModal.vue b/jshERP-web/src/views/bill/modules/SaleOrderModal.vue index 99013eee..db937113 100644 --- a/jshERP-web/src/views/bill/modules/SaleOrderModal.vue +++ b/jshERP-web/src/views/bill/modules/SaleOrderModal.vue @@ -51,7 +51,21 @@ :rowSelection="true" :actionButton="true" @valueChange="onValueChange" - @deleted="onDeleted" /> + @deleted="onDeleted"> + + diff --git a/jshERP-web/src/views/bill/modules/SaleOutModal.vue b/jshERP-web/src/views/bill/modules/SaleOutModal.vue index a3fefa8b..97a4ff30 100644 --- a/jshERP-web/src/views/bill/modules/SaleOutModal.vue +++ b/jshERP-web/src/views/bill/modules/SaleOutModal.vue @@ -52,7 +52,21 @@ :actionButton="true" @valueChange="onValueChange" @added="onAdded" - @deleted="onDeleted" /> + @deleted="onDeleted"> + +