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 @@
-
+
-
+