From 49cd27c22169b02d23946891f21cf6a47c6a1ffb Mon Sep 17 00:00:00 2001 From: chenhao Date: Mon, 15 Dec 2025 14:59:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(finance):=20=E4=BC=98=E5=8C=96=E4=BB=98?= =?UTF-8?q?=E6=AC=BE=E5=8D=95=E6=96=B0=E5=A2=9E=E5=8A=9F=E8=83=BD=E5=8F=8A?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E4=BA=A4=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除预付单类型切换时的冗余处理逻辑 - 修复付款状态字典引用错误,统一使用 dict.type.payment_status - 预付订单列表增加选择控制,限制只能选中一个订单 - 表格组件添加 ref 引用以便手动清除选中状态 - 新增预计付款时间必填校验规则 - 提交数据结构调整,明确区分应付单与预付单字段 - 增加含税总价大于0的前置校验 - 日志提示优化,增强用户操作引导信息 - 接口调用分离,针对不同付款类型调用对应后端接口 - 回执单组件默认值调整,避免空对象异常 --- oms_web/oms_vue/src/api/finance/payment.js | 10 ++- .../finance/payment/components/AddForm.vue | 71 ++++++++++++++----- .../payment/components/ReceiptDialog.vue | 2 +- .../src/views/finance/payment/index.vue | 32 ++++++--- .../controller/OmsPaymentBillController.java | 3 +- 5 files changed, 89 insertions(+), 29 deletions(-) diff --git a/oms_web/oms_vue/src/api/finance/payment.js b/oms_web/oms_vue/src/api/finance/payment.js index 4929ea54..6003c94d 100644 --- a/oms_web/oms_vue/src/api/finance/payment.js +++ b/oms_web/oms_vue/src/api/finance/payment.js @@ -51,7 +51,7 @@ export function returnPayment(id) { } // 新增付款单 -export function addPayment(data) { +export function addPaymentFromPayable(data) { return request({ url: '/finance/payable/mergeAndInitiatePayment', method: 'post', @@ -59,6 +59,14 @@ export function addPayment(data) { needLoading: true }) } +export function addPayment(data) { + return request({ + url: '/finance/payment/add', + method: 'post', + data: data, + needLoading: true + }) +} // 申请付款 export function applyPaymentApi(data) { diff --git a/oms_web/oms_vue/src/views/finance/payment/components/AddForm.vue b/oms_web/oms_vue/src/views/finance/payment/components/AddForm.vue index b8f2dd21..e80318e0 100644 --- a/oms_web/oms_vue/src/views/finance/payment/components/AddForm.vue +++ b/oms_web/oms_vue/src/views/finance/payment/components/AddForm.vue @@ -33,7 +33,7 @@ - + @@ -54,6 +54,7 @@

应付单列表

@@ -105,12 +106,15 @@

订单列表

@@ -138,11 +142,11 @@ @@ -202,6 +206,7 @@ export default { }, rules: { vendorCode: [{required: true, message: "制造商名称不能为空", trigger: "change"}], + estimatedPaymentTime: [{required: true, message: "预计付款时间不能为空", trigger: "change"}], paymentBillType: [{required: true, message: "请选择是否预付", trigger: "change"}], totalPriceWithTax: [{required: false, message: "预付金额不能为空", trigger: "blur"}] }, @@ -263,11 +268,6 @@ export default { this.selectedRows = []; this.loadTableData(); }, - handleTypeChange() { - this.queryParams.pageNum = 1; - this.selectedRows = []; // Clear selection when switching type - this.loadTableData(); - }, loadTableData() { if (!this.form.vendorCode) return; @@ -277,7 +277,6 @@ export default { const query = { vendorCode: this.form.vendorCode, - orderStatus:'2', pageNum: this.queryParams.pageNum, pageSize: this.queryParams.pageSize }; @@ -305,11 +304,35 @@ export default { this.total = res.total; }); } else if (this.form.paymentBillType === 'PRE_PAYMENT') { + query.orderStatus = '2'; listOrders(query).then(res => { this.orderList = res.rows || []; this.total = res.total; }); } + this.$nextTick(() => { + if (this.$refs.payableTable) { + this.$refs.payableTable.clearSelection() + } + if (this.$refs.orderTable) { + this.$refs.orderTable.clearSelection() + } + }) + }, + handleSelect(selection, row) { + if (this.form.paymentBillType === 'PRE_PAYMENT') { + this.$refs.orderTable.clearSelection(); + const isSelected = selection.some(item => item.orderCode === row.orderCode); + if (isSelected) { + this.$refs.orderTable.toggleRowSelection(row, true); + } + } + }, + handleSelectAll(selection) { + if (this.form.paymentBillType === 'PRE_PAYMENT') { + this.$refs.orderTable.clearSelection(); + this.$modal.msgWarning("预付单只能选择一个订单"); + } }, handleSelectionChange(selection) { this.selectedRows = selection; @@ -396,10 +419,26 @@ export default { } else { // Prepayment logic + console.log(this.selectedRows) + if (this.selectedRows.length > 1) { + this.$modal.msgWarning("只能选择一笔订单"); + return; + } + if ((this.form.totalPriceWithTax ||0) <= 0) { + this.$message.warning("含税总价需要大于0"); + return; + } + let order = this.selectedRows[0] ?? {}; const submitData = { - ...this.form, - details: this.selectedRows + paymentBillType: 'PRE_PAYMENT', + orderCode: order.orderCode, + vendorCode: this.form.vendorCode, + projectCode:order.projectCode, + projectName:order.projectName, + paymentTime: this.form.estimatedPaymentTime, + totalPriceWithTax:this.form.totalPriceWithTax }; + console.log(submitData) this.$emit("submit", submitData); } } diff --git a/oms_web/oms_vue/src/views/finance/payment/components/ReceiptDialog.vue b/oms_web/oms_vue/src/views/finance/payment/components/ReceiptDialog.vue index fcee29b0..e64a5707 100644 --- a/oms_web/oms_vue/src/views/finance/payment/components/ReceiptDialog.vue +++ b/oms_web/oms_vue/src/views/finance/payment/components/ReceiptDialog.vue @@ -174,7 +174,7 @@ export default { }, paymentData: { type: Object, - default: () => null, + default: () => {}, }, dicts: { type: Object, diff --git a/oms_web/oms_vue/src/views/finance/payment/index.vue b/oms_web/oms_vue/src/views/finance/payment/index.vue index 2306c928..a5e57670 100644 --- a/oms_web/oms_vue/src/views/finance/payment/index.vue +++ b/oms_web/oms_vue/src/views/finance/payment/index.vue @@ -256,7 +256,7 @@