From 1099af2f5bf9ac2720592ab895b3709a179d1a78 Mon Sep 17 00:00:00 2001 From: zhaoxiao Date: Wed, 15 Dec 2021 19:20:58 +0800 Subject: [PATCH] =?UTF-8?q?[update]=20=E5=88=B0=E8=B4=A6=E5=BC=80=E7=A5=A8?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E8=BE=93=E5=85=A5=E8=B4=9F=E5=80=BC=EF=BC=9B?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=AE=8C=E5=85=A8=E6=9D=A5=E6=AC=BE/?= =?UTF-8?q?=E5=AE=8C=E5=85=A8=E5=BC=80=E7=A5=A8=E4=B8=8D=E5=BE=97=E6=9D=A5?= =?UTF-8?q?=E6=AC=BE/=E5=BC=80=E7=A5=A8=E7=9A=84=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ArriveAndInvoivingList.vue | 6 +- .../modules/ArriveModule.vue | 13 +- .../modules/InvoicingModule.vue | 9 +- .../packManagement/PackProjectMaintenance.vue | 15 ++- .../modules/BatchIncomePaymentModule.vue | 117 +++++++++++------ .../modules/BatchInvoicingModule.vue | 120 ++++++++++++++---- .../modules/PackCompanyModule.vue | 2 +- 7 files changed, 194 insertions(+), 88 deletions(-) diff --git a/src/views/financialManagement/arriveAndInvoicing/ArriveAndInvoivingList.vue b/src/views/financialManagement/arriveAndInvoicing/ArriveAndInvoivingList.vue index a082d26..4018c21 100644 --- a/src/views/financialManagement/arriveAndInvoicing/ArriveAndInvoivingList.vue +++ b/src/views/financialManagement/arriveAndInvoicing/ArriveAndInvoivingList.vue @@ -365,9 +365,9 @@ export default { } // 是否存在已完成开票的项目 - if (arr.some(item => item.makeInvoice === 1)) { - reject('存在已完成开票的项目!') - } + // if (arr.some(item => item.makeInvoice === 1)) { + // reject('存在已完成开票的项目!') + // } // 是否选中了标协会员项目,标协会员项目只能到账一次、开票一次,前端进行是否完全到账的限制 if (arr.some(item => item.projectType === 5)) { diff --git a/src/views/financialManagement/arriveAndInvoicing/modules/ArriveModule.vue b/src/views/financialManagement/arriveAndInvoicing/modules/ArriveModule.vue index 7cd5b41..9281ee9 100644 --- a/src/views/financialManagement/arriveAndInvoicing/modules/ArriveModule.vue +++ b/src/views/financialManagement/arriveAndInvoicing/modules/ArriveModule.vue @@ -16,7 +16,7 @@ v-decorator="['amountReceived',validatorRules.amountReceived]" :maxLength='50' @blur="addZero" - @change="e => e.target.value = (e.target.value.replace(/[^0-9.]/g, '')).trim()"> + @change="e => e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"> 0) { - callback() - } else { - callback('到账金额不能小于或等于0') - } - return + callback() } - callback('请输入合法的金额数字,最多2位小数,10位正数') + callback('请输入合法的金额数字,最多2位小数,10位整数') } callback('请输入到账金额') } diff --git a/src/views/financialManagement/arriveAndInvoicing/modules/InvoicingModule.vue b/src/views/financialManagement/arriveAndInvoicing/modules/InvoicingModule.vue index f6034f8..58f8cea 100644 --- a/src/views/financialManagement/arriveAndInvoicing/modules/InvoicingModule.vue +++ b/src/views/financialManagement/arriveAndInvoicing/modules/InvoicingModule.vue @@ -16,7 +16,7 @@ v-decorator="['invoiceAmount',validatorRules.invoiceAmount]" :maxLength='50' @blur="addZero" - @change="e => e.target.value = (e.target.value.replace(/[^0-9.]/g, '')).trim()"> + @change="e => e.target.value = (e.target.value.replace(/[^0-9.-]/g, '')).trim()"> { + getContactsById({ id: this.mailContactsId }).then(res => { this.postalCode = res.result.postalCode this.contactAddress = res.result.contactAddress }) @@ -208,9 +208,8 @@ export default { if (value) { if (money(value)) { callback() - return } - callback('请输入合法的金额数字,最多2位小数,10位正数') + callback('请输入合法的金额数字,最多2位小数,10位整数') } callback('请输入到账金额') } diff --git a/src/views/packManagement/PackProjectMaintenance.vue b/src/views/packManagement/PackProjectMaintenance.vue index c622097..b3d6206 100644 --- a/src/views/packManagement/PackProjectMaintenance.vue +++ b/src/views/packManagement/PackProjectMaintenance.vue @@ -368,6 +368,9 @@ export default { * 获取企业信息 */ loadCompanyDetail() { + if (!this.$route.query.packCompanyId) { + return + } let param = { id: this.$route.query.packCompanyId } @@ -530,9 +533,9 @@ export default { if (arr.some(item => item.needInvoice === 0 || Number(item.receivableAmount) === 0)) { reject('存在不需要发票的项目!') } - if (arr.some(item => item.makeInvoice === 1)) { - reject('存在已完成开票的项目!') - } + // if (arr.some(item => item.makeInvoice === 1)) { + // reject('存在已完成开票的项目!') + // } // 是否选中了标协会员项目,标协会员项目只能到账一次、开票一次,前端进行是否完全到账的限制 if (arr.some(item => item.projectType === 5)) { // 标协会员项目是否完全到账 @@ -547,9 +550,9 @@ export default { if (arr.some(item => Number(item.receivableAmount) === 0)) { reject('存在应收金额为0的项目!') } - if (arr.some(item => item.inAccount === 1)) { - reject('不可选择已付全款的项目!') - } + // if (arr.some(item => item.inAccount === 1)) { + // reject('不可选择已付全款的项目!') + // } } resolve(arr) }) diff --git a/src/views/packManagement/modules/BatchIncomePaymentModule.vue b/src/views/packManagement/modules/BatchIncomePaymentModule.vue index 17efcc9..787eeaa 100644 --- a/src/views/packManagement/modules/BatchIncomePaymentModule.vue +++ b/src/views/packManagement/modules/BatchIncomePaymentModule.vue @@ -16,7 +16,7 @@ @@ -168,7 +168,10 @@ export default { remarkList: [], // 备注列表 inputIncomingAmount: null, // 输入的来款金额 disableMixinCreated: true, - sumAmountOwed: 0 // 总欠款金额 + sumAmountOwed: 0, // 总欠款金额 + sumIncomingAmount: 0, // 总来款金额 + // 用于提交的表格数据 + submitDataSource: [] } }, methods: { @@ -188,6 +191,7 @@ export default { let amountOwed = Number(item.receivableAmount) - Number(item.paidAmount) item.amountOwed = this.getAddZero(amountOwed) this.sumAmountOwed += Number(item.amountOwed) + this.sumIncomingAmount += Number(item.paidAmount) }) this.$forceUpdate() }, @@ -196,6 +200,10 @@ export default { this.$message.warn('来款金额大于当前欠款金额,输入有误!') return } + if (this.inputIncomingAmount < 0 && this.sumIncomingAmount === 0) { + this.$message.warn('当前总来款金额为0,不可输入小于0的来款金额') + return + } if (this.confirmLoading) { return } @@ -203,19 +211,16 @@ export default { this.form.validateFields((err, values) => { if (!err) { let formData = [] - this.dataSource.forEach((item, index) => { - if (Number(item.thisIncomingAmount) > 0) { - let obj = { - amountReceived: item.thisIncomingAmount, - paymentDate: values.paymentDate, - projectId: item.id, - projectType: item.projectType, - remark: this.remarkList[index] - } - formData.push(obj) + this.submitDataSource.forEach((item, index) => { + let obj = { + amountReceived: item.thisIncomingAmount, + paymentDate: values.paymentDate, + projectId: item.id, + projectType: item.projectType, + remark: this.remarkList[index] } + formData.push(obj) }) - console.log(formData) addPaymentPhase(formData).then(res => { if (res.success) { this.$message.success(res.message) @@ -256,7 +261,7 @@ export default { */ incomingAmountBlur(e) { this.addZero(e) - e.target.value = (e.target.value.replace(/[^0-9.]/g, '')).trim() + e.target.value = (e.target.value.replace(/[^0-9.-]/g, '')).trim() this.inputIncomingAmount = Number(e.target.value) this.clearThisTimeAmount() this.calculateThisTimeAmount() @@ -274,31 +279,70 @@ export default { * 计算此次来款信息 */ calculateThisTimeAmount() { - if (this.inputIncomingAmount <= 0) { - this.$message.warn('请输入大于0的来款金额') - return - } + // if (this.inputIncomingAmount === 0) { + // this.$message.warn('来款金额不得为0') + // return + // } if (this.inputIncomingAmount > this.sumAmountOwed) { this.$message.warn('来款金额大于当前欠款金额,输入有误!') return } - this.dataSource.forEach((item, index) => { - // 当前项目欠款是否 >0 - if (Number(item.amountOwed) > 0) { - // 输入的来款金额是否 >= 当前项目欠款 - if (this.inputIncomingAmount >= Number(item.amountOwed)) { - item.thisIncomingAmount = this.getAddZero(Number(item.amountOwed)) - this.inputIncomingAmount -= Number(item.amountOwed) - } else { - // 输入的来款金额小于当前项目欠款且剩余的输入来款金额大于0,则将剩余全部来款算入当前项目的此次来款 - if (this.inputIncomingAmount > 0) { - item.thisIncomingAmount = this.getAddZero(this.inputIncomingAmount) - this.inputIncomingAmount = 0 - } - } + if (this.inputIncomingAmount < 0 && this.sumIncomingAmount === 0) { + this.$message.warn('当前总来款金额为0,不可输入小于0的来款金额') + return + } + // 用于计算的数据 + let changeInputAmount = this.inputIncomingAmount + // 清除要提交的数据 + this.submitDataSource = [] + for (let i = 0; i < this.dataSource.length; i++) { + let item = this.dataSource[i] + //输入来款金额为0,给选中的项目添加来款阶段,来款金额为0 + if (this.inputIncomingAmount === 0) { + item.thisIncomingAmount = this.getAddZero(this.inputIncomingAmount) + this.$set(this.dataSource, i, item) + this.$set(this.submitDataSource, i, item) + continue } - this.$set(this.dataSource, index, item) - }) + // 输入的来款金额>0 + if (this.inputIncomingAmount > 0) { + // 分配剩下的>0才能继续走分配 + if (changeInputAmount > 0) { + // 输入的来款金额是否 >= 当前项目欠款 + if (changeInputAmount >= Number(item.amountOwed)) { + item.thisIncomingAmount = this.getAddZero(Number(item.amountOwed)) + changeInputAmount -= Number(item.amountOwed) + } else { + // 输入的来款金额小于当前项目欠款且剩余的输入来款金额大于0,则将剩余全部来款算入当前项目的此次来款 + item.thisIncomingAmount = this.getAddZero(changeInputAmount) + changeInputAmount = 0 + } + this.$set(this.submitDataSource, i, item) + } else { + item.thisIncomingAmount = this.getAddZero(0) + } + this.$set(this.dataSource, i, item) + continue + } + // 输入的来款金额<0 + if (this.inputIncomingAmount < 0) { + // 分配剩下的<0 && 已收金额 > 0才能继续走分配 + if (changeInputAmount < 0 && Number(item.paidAmount) > 0) { + // 若当前项目的实收 + 分配剩余 > 0,将当前全部分配给这个项目且将剩余清0 + if (Number(item.paidAmount) + changeInputAmount >= 0) { + item.thisIncomingAmount = this.getAddZero(changeInputAmount) + changeInputAmount = 0 + } else { + item.thisIncomingAmount = this.getAddZero(-Number(item.paidAmount)) + changeInputAmount += Number(item.paidAmount) + } + this.$set(this.submitDataSource, i, item) + } else { + item.thisIncomingAmount = this.getAddZero(0) + } + this.$set(this.dataSource, i, item) + } + } } , /** @@ -309,14 +353,11 @@ export default { */ checkMoney(rules, value, callback) { if (value) { - if (Number(value) <= 0) { - callback('来款金额不能小于或等于0') - } if (money(value)) { callback() return } - callback('请输入合法的金额数字,最多2位小数,10位正数') + callback('请输入合法的金额数字,最多2位小数,10位整数') } callback('请输入来款金额') } diff --git a/src/views/packManagement/modules/BatchInvoicingModule.vue b/src/views/packManagement/modules/BatchInvoicingModule.vue index e2905b1..8df21c2 100644 --- a/src/views/packManagement/modules/BatchInvoicingModule.vue +++ b/src/views/packManagement/modules/BatchInvoicingModule.vue @@ -17,7 +17,7 @@ v-decorator="['invoiceAmount',validatorRules.invoiceAmount]" :maxLength='50' @blur="invoicingAmountBlur" - @change="(e) => {e.target.value = (e.target.value.replace(/[^0-9.]/g,'')).trim()}"> + @change="(e) => {e.target.value = (e.target.value.replace(/[^0-9.-]/g,'')).trim()}"> @@ -238,7 +238,10 @@ export default { }, inputInvoicingAmount: null, // 输入的开票金额 sumAmountOwed: 0, // 总未开票金额, + sumInvoiceAmount: 0, // 总已开票金额 packContact: {}, // 邮寄联系人信息 + // 用于提交的表格数据 + submitDataSource: [] } }, methods: { @@ -264,6 +267,7 @@ export default { item.amountOwed = this.getAddZero(amountOwed) item.thisInvoicingAmount = 0 this.sumAmountOwed += Number(item.amountOwed) + this.sumInvoiceAmount += Number(item.invoiceAmount) }) this.$forceUpdate() }, @@ -272,7 +276,7 @@ export default { */ invoicingAmountBlur(e) { this.addZero(e) - e.target.value = (e.target.value.replace(/[^0-9.]/g, '')).trim() + e.target.value = (e.target.value.replace(/[^0-9.-]/g, '')).trim() this.inputInvoicingAmount = Number(e.target.value) this.clearThisTimeAmount() this.calculateThisTimeAmount() @@ -319,37 +323,102 @@ export default { * 计算此次开票信息 */ calculateThisTimeAmount() { - if (this.inputInvoicingAmount <= 0) { - this.$message.warn('请输入大于0的开票金额') - return - } + // if (this.inputInvoicingAmount === null) { + // this.$message.warn('开票金额不得为0') + // return + // } if (this.inputInvoicingAmount > this.sumAmountOwed) { this.$message.warn('开票金额大于当前未开票金额,输入有误!') return } - this.dataSource.forEach((item, index) => { - // 当前项目欠款是否 >0 - if (Number(item.amountOwed) > 0) { - // 输入的开票金额是否 >= 当前项目欠款 - if (this.inputInvoicingAmount >= Number(item.amountOwed)) { - item.thisInvoicingAmount = this.getAddZero(Number(item.amountOwed)) - this.inputInvoicingAmount -= Number(item.amountOwed) - } else { - // 输入的开票金额小于当前项目欠款且剩余的输入开票金额大于0,则将剩余全部开票算入当前项目的此次开票 - if (this.inputInvoicingAmount > 0) { - item.thisInvoicingAmount = this.getAddZero(this.inputInvoicingAmount) - this.inputInvoicingAmount = 0 - } - } + if (this.inputInvoicingAmount < 0 && this.sumInvoiceAmount === 0) { + this.$message.warn('当前总开票金额为0,不可输入小于0的开票金额') + return + } + // 用于计算的数据 + let changeInputAmount = this.inputInvoicingAmount + // 清除要提交的数据 + this.submitDataSource = [] + for (let i = 0; i < this.dataSource.length; i++) { + let item = this.dataSource[i] + //输入来款金额为0,给选中的项目添加来款阶段,来款金额为0 + if (this.inputInvoicingAmount === 0) { + item.thisInvoicingAmount = this.getAddZero(this.inputInvoicingAmount) + this.$set(this.dataSource, i, item) + this.$set(this.submitDataSource, i, item) + continue } - this.$set(this.dataSource, index, item) - }) + // 输入的来款金额>0 + if (this.inputInvoicingAmount > 0) { + // 分配剩下的>0才能继续走分配 + if (changeInputAmount > 0) { + // 输入的来款金额是否 >= 当前项目欠款 + if (changeInputAmount >= Number(item.amountOwed)) { + item.thisInvoicingAmount = this.getAddZero(Number(item.amountOwed)) + changeInputAmount -= Number(item.amountOwed) + } else { + // 输入的来款金额小于当前项目欠款且剩余的输入来款金额大于0,则将剩余全部来款算入当前项目的此次来款 + item.thisInvoicingAmount = this.getAddZero(changeInputAmount) + changeInputAmount = 0 + } + this.$set(this.submitDataSource, i, item) + } else { + item.thisInvoicingAmount = this.getAddZero(0) + } + this.$set(this.dataSource, i, item) + continue + } + // 输入的来款金额<0 + if (this.inputInvoicingAmount < 0) { + // 分配剩下的<0 && 已收金额 > 0才能继续走分配 + if (changeInputAmount < 0 && Number(item.invoiceAmount) > 0) { + // 若当前项目的实收 + 分配剩余 > 0,将当前全部分配给这个项目且将剩余清0 + if (Number(item.invoiceAmount) + changeInputAmount >= 0) { + item.thisInvoicingAmount = this.getAddZero(changeInputAmount) + changeInputAmount = 0 + } else { + item.thisInvoicingAmount = this.getAddZero(-Number(item.invoiceAmount)) + changeInputAmount += Number(item.invoiceAmount) + } + this.$set(this.submitDataSource, i, item) + } else { + item.thisInvoicingAmount = this.getAddZero(0) + } + this.$set(this.dataSource, i, item) + } + } + // this.dataSource.forEach((item, index) => { + // // 当前项目欠款是否 >0 + // if (Number(item.amountOwed) > 0 && Number(item.amountOwed) !== Number(item.invoiceAmount)) { + // if (this.inputInvoicingAmount > 0) { + // // 输入的开票金额是否 >= 当前项目欠款 + // if (this.inputInvoicingAmount >= Number(item.amountOwed)) { + // item.thisInvoicingAmount = this.getAddZero(Number(item.amountOwed)) + // this.inputInvoicingAmount -= Number(item.amountOwed) + // } else { + // // 输入的开票金额小于当前项目欠款且剩余的输入开票金额大于0,则将剩余全部开票算入当前项目的此次开票 + // if (this.inputInvoicingAmount > 0) { + // item.thisInvoicingAmount = this.getAddZero(this.inputInvoicingAmount) + // this.inputInvoicingAmount = 0 + // } + // } + // } else { + // item.thisInvoicingAmount = this.getAddZero(this.inputInvoicingAmount) + // this.inputInvoicingAmount = 0 + // } + // } + // this.$set(this.dataSource, index, item) + // }) }, handleOk() { if (this.inputInvoicingAmount > this.sumAmountOwed) { this.$message.warn('开票金额大于当前未开票金额,输入有误!') return } + if (this.inputInvoicingAmount < 0 && this.sumInvoiceAmount === 0) { + this.$message.warn('当前总开票金额为0,不可输入小于0的开票金额') + return + } if (this.confirmLoading) { return } @@ -357,8 +426,8 @@ export default { this.form.validateFields((err, values) => { if (!err) { let bmpList = [] - let data = this.dataSource.filter(tt => tt.thisInvoicingAmount !== 0 && tt.thisInvoicingAmount) - data.forEach((item, index) => { + // let data = this.dataSource.filter(tt => tt.thisInvoicingAmount !== 0 && tt.thisInvoicingAmount) + this.submitDataSource.forEach((item, index) => { let obj = { invoiceAmount: item.thisInvoicingAmount, projectId: item.id, @@ -417,9 +486,8 @@ export default { if (value) { if (money(value)) { callback() - return } - callback('请输入合法的金额数字,最多2位小数,10位正数') + callback('请输入合法的金额数字,最多2位小数,10位整数') } callback('请输入开票金额') } diff --git a/src/views/packManagement/modules/PackCompanyModule.vue b/src/views/packManagement/modules/PackCompanyModule.vue index 659bcc3..db0fa3e 100644 --- a/src/views/packManagement/modules/PackCompanyModule.vue +++ b/src/views/packManagement/modules/PackCompanyModule.vue @@ -274,7 +274,7 @@ export default { callback() return } - callback('请输入合法的金额数字,最多2位小数,10位正数') + callback('请输入合法的金额数字,最多2位小数,10位整数') } callback('请输入打包费用总计') },