From 0cd2e3b28f27f26f585813f753558fd9af4af40d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Tue, 10 Nov 2026 12:19:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=BC=80=E7=A5=A8=E4=BB=98=E6=AC=BE?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E5=8F=91=E7=A5=A8=E5=86=B2=E9=94=80=E6=94=B9?= =?UTF-8?q?=E5=BA=95=E9=83=A8=E5=BC=B9=E7=AA=97=E5=B1=95=E7=A4=BA=E5=B9=B6?= =?UTF-8?q?=E9=80=89=E7=BB=93=E7=AE=97=E5=8D=95=E5=B8=A6=E5=87=BA=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=88=A9=E6=B6=A6=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/bottom-detail-panel/main.vue | 123 ++++++++++++++++++ .../invoice-write-off-table/main.vue | 10 -- .../payment/invoice-application-form.vue | 33 ++++- .../payment/payment-application-form.vue | 12 +- 4 files changed, 162 insertions(+), 16 deletions(-) create mode 100644 src/components/bottom-detail-panel/main.vue diff --git a/src/components/bottom-detail-panel/main.vue b/src/components/bottom-detail-panel/main.vue new file mode 100644 index 0000000..cf7e1af --- /dev/null +++ b/src/components/bottom-detail-panel/main.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/src/components/invoice-write-off-table/main.vue b/src/components/invoice-write-off-table/main.vue index 4da42c0..f229f45 100644 --- a/src/components/invoice-write-off-table/main.vue +++ b/src/components/invoice-write-off-table/main.vue @@ -43,7 +43,6 @@ -
暂无冲销明细
@@ -134,12 +133,3 @@ export default { }, }; - - diff --git a/src/views/payment/invoice-application-form.vue b/src/views/payment/invoice-application-form.vue index 83b8138..954f466 100644 --- a/src/views/payment/invoice-application-form.vue +++ b/src/views/payment/invoice-application-form.vue @@ -91,7 +91,7 @@ @@ -363,6 +363,11 @@ + - + - + @@ -519,10 +524,12 @@ import * as api from '@/api/payment/invoiceApplication'; import { getAll as getInvoiceItems } from '@/api/base/invoice-item'; import { getList as getWaybillList } from '@/api/business/waybill-manage'; import { getList as getReceivablePayableDetailList } from '@/api/settlement/receivable-payable-detail'; +import { getDetail as getProjectApplyDetail } from '@/api/business/project-apply'; import { getDictionary } from '@/api/system/dictbiz'; import { invoiceApplicationDetailColumns } from '@/option/payment/invoiceApplication'; import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue'; import InvoiceWriteOffTable from '@/components/invoice-write-off-table/main.vue'; +import BottomDetailPanel from '@/components/bottom-detail-panel/main.vue'; import { getMkPublicDetail } from '@/api/mk-process'; import { loadMkEnabled, submitMkApprovalFlow } from '@/utils/mk-approval'; @@ -579,12 +586,14 @@ export default { components: { VehicleAttachmentTable, InvoiceWriteOffTable, + BottomDetailPanel, }, data() { return { form: emptyForm(), detailRows: [], selectedDetailIds: [], + writeOffPanelVisible: false, receiverInvoiceOptions: [], contactOptions: [], departmentEmailOptions: [], @@ -978,11 +987,27 @@ export default { allocatedInvoiceAmount: 0, })); this.form.projectName = first.projectName; + this.form.projectId = first.projectId; this.form.deptName = first.deptName; this.form.issuerName = first.issuerName; this.form.undertakingDeptName = first.deptName; this.settlementDialog.visible = false; - await Promise.all([this.loadSettlementDetails(), this.loadReceiverInformation()]); + await Promise.all([ + this.loadSettlementDetails(), + this.loadReceiverInformation(), + this.loadProjectProfitRate(), + ]); + }, + // 项目利润率:选结算单后带出项目立项利润率(百分数转小数存 form),已手填时不覆盖 + async loadProjectProfitRate() { + if (!this.form.projectId || Number(this.form.profitRate) > 0) return; + try { + const data = this.unwrapData(await getProjectApplyDetail(this.form.projectId)); + const rate = Number(data?.profitRate); + if (Number.isFinite(rate) && rate > 0) this.form.profitRate = rate / 100; + } catch { + // 带出失败不阻断选单,保存时后端仍会兜底取项目立项利润率 + } }, async loadSettlementDetails(resetSelection = true) { this.detailRows = diff --git a/src/views/payment/payment-application-form.vue b/src/views/payment/payment-application-form.vue index 1cecfd0..5a1b6cc 100644 --- a/src/views/payment/payment-application-form.vue +++ b/src/views/payment/payment-application-form.vue @@ -290,6 +290,11 @@ + @@ -350,9 +355,9 @@ - + - +