--
2.52.0
From c07371450f920b1451882b707bcc23eccc7fb0c5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com>
Date: Mon, 2 Nov 2026 18:38:18 +0800
Subject: [PATCH 14/21] =?UTF-8?q?feat:=20=E5=8F=91=E7=A5=A8=E7=99=BB?=
=?UTF-8?q?=E8=AE=B0=E5=BC=B9=E7=AA=97=E5=8C=B9=E9=85=8D=E7=BB=93=E7=AE=97?=
=?UTF-8?q?=E5=8D=95=E9=87=91=E9=A2=9D=E6=94=AF=E6=8C=81=E6=89=8B=E5=8A=A8?=
=?UTF-8?q?=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/settlement/formal-settlement.vue | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/src/views/settlement/formal-settlement.vue b/src/views/settlement/formal-settlement.vue
index e1eb661..0d12ec2 100644
--- a/src/views/settlement/formal-settlement.vue
+++ b/src/views/settlement/formal-settlement.vue
@@ -172,8 +172,19 @@
{{ formatMoney(row.invoiceAmount) }}
-
- {{ formatMoney(row.invoiceAmount) }}
+
+
+
+
+ {{ formatMoney(row.matchedAmount || row.invoiceAmount) }}
+
@@ -756,7 +767,7 @@ export default {
invoiceType: row.invoiceType || '',
taxRate: row.taxRate ?? null,
availableInvoiceAmount: Number(row.invoiceAmount || 0),
- matchedAmount: Number(row.invoiceAmount || 0),
+ matchedAmount: Number(row.matchedAmount || row.invoiceAmount || 0),
}));
try {
// 先确认后保存:确定才认领并推送指定应付,取消不保存任何数据
--
2.52.0
From 4ba18acd258e68c87f7bd075693b39678e8d4e3d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com>
Date: Mon, 2 Nov 2026 18:38:18 +0800
Subject: [PATCH 15/21] =?UTF-8?q?feat:=20=E6=9F=A5=E7=9C=8B=E9=A1=B5?=
=?UTF-8?q?=E9=87=8D=E6=8E=A8=E8=AE=A4=E9=A2=86=E6=94=B6=E7=A5=A8=E5=8D=95?=
=?UTF-8?q?=E5=B9=B6=E6=94=BE=E5=BC=80=E4=BB=98=E6=AC=BE=E5=8C=B9=E9=85=8D?=
=?UTF-8?q?=E9=87=91=E9=A2=9D=E7=BC=96=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/settlement/formalSettlement.js | 8 +++
.../components/formal-settlement-editor.vue | 67 +++++++++++++++++--
2 files changed, 70 insertions(+), 5 deletions(-)
diff --git a/src/api/settlement/formalSettlement.js b/src/api/settlement/formalSettlement.js
index 032e253..a84ad9a 100644
--- a/src/api/settlement/formalSettlement.js
+++ b/src/api/settlement/formalSettlement.js
@@ -66,5 +66,13 @@ export const invoiceAssignKingdee = id =>
timeout: 30000,
params: { id },
});
+// 先票后款:查看页重推认领收票单(收票单A303-2+指定应付A302-6 一步式),涉及多次金蝶远程调用,覆盖全局超时
+export const repushClaimedInvoice = (id, invoiceNo) =>
+ request({
+ url: `${baseUrl}/repush-claimed-invoice`,
+ method: 'post',
+ timeout: 30000,
+ params: { id, invoiceNo },
+ });
export const queryInvoicePool = params =>
request({ url: `${baseUrl}/invoice-pool`, method: 'get', params });
diff --git a/src/views/settlement/components/formal-settlement-editor.vue b/src/views/settlement/components/formal-settlement-editor.vue
index 55cce5e..09b7012 100644
--- a/src/views/settlement/components/formal-settlement-editor.vue
+++ b/src/views/settlement/components/formal-settlement-editor.vue
@@ -482,9 +482,9 @@
align="center"
>
-
+
-
- {{ row.kingdeePushStatus === 'assigned' ? '已指定应付' : '未指定' }}
-
+
+
+ {{
+ { assigned: '已指定应付', failed: '指定失败' }[row.kingdeePushStatus] ||
+ '未指定'
+ }}
+
+
@@ -516,6 +530,14 @@
@click="downloadInvoiceAttachment(row)"
>下载
+
+ 重新推送
删除
@@ -1068,6 +1090,7 @@ import {
getNextNo,
getReceiptClaims,
claimInvoices as claimInvoicesApi,
+ repushClaimedInvoice,
queryInvoicePool,
save,
syncKingdee,
@@ -1166,6 +1189,8 @@ export default {
attachments: [],
selectedAttachmentRows: [],
invoices: [],
+ // 查看页认领收票单重推进行中(行级操作守卫)
+ repushing: false,
// 开票申请经金蝶回写的发票结果(只读展示,含板式文件/数电PDF下载地址)
issuedInvoices: [],
// 金蝶侧发票附件查看/下载进行中(行组级 loading 守卫)
@@ -2676,6 +2701,38 @@ export default {
openInvoiceReceiptDialog() {
this.invoiceReceiptDialog.visible = true;
},
+ // 查看页重推入口展示条件:只读 + 付款结算单 + 审批通过 + 金蝶应付单已同步 + 该票未指定应付(failed/pushed)
+ canRepushInvoice(row) {
+ return (
+ !this.editable &&
+ this.form.settlementType !== 'receivable' &&
+ this.form.approvalStatus === 'approved' &&
+ this.form.kingdeeSyncStatus === 'synced' &&
+ ['failed', 'pushed'].includes(row.kingdeePushStatus || '')
+ );
+ },
+ // 重推 = 收票单A303-2 + 指定应付A302-6 一步式,服务端返回结果描述;完成后重载详情刷新状态
+ async repushInvoice(row) {
+ try {
+ await this.$confirm(`确认重新推送发票${row.invoiceNo || ''}到金蝶并指定应付?`, '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning',
+ });
+ } catch {
+ return;
+ }
+ this.repushing = true;
+ try {
+ const data = this.unwrapData(
+ await repushClaimedInvoice(this.form.id, row.invoiceNo)
+ );
+ this.$message.success(data || '重新推送成功');
+ await this.loadFormalDetail(this.form.id);
+ } finally {
+ this.repushing = false;
+ }
+ },
async handleInvoiceReceiptConfirm(rows) {
// 收票单行 → 结算单发票行:匹配金额固定=发票金额(全额认领),附件契约归一为单数 attachmentJson
const invoices = rows.map(row => ({
--
2.52.0
From 6705763951e42321614b0d818ae18fe046fc7433 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com>
Date: Mon, 2 Nov 2026 19:16:41 +0800
Subject: [PATCH 16/21] =?UTF-8?q?feat:=20=E6=9F=A5=E7=9C=8B=E9=A1=B5?=
=?UTF-8?q?=E6=8C=87=E5=AE=9A=E5=A4=B1=E8=B4=A5=E8=A1=8C=E6=94=AF=E6=8C=81?=
=?UTF-8?q?=E7=BC=96=E8=BE=91=E5=8C=B9=E9=85=8D=E9=87=91=E9=A2=9D=E9=9A=8F?=
=?UTF-8?q?=E9=87=8D=E6=8E=A8=E7=94=9F=E6=95=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/settlement/formalSettlement.js | 4 ++--
.../components/formal-settlement-editor.vue | 18 ++++++++++++++----
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/src/api/settlement/formalSettlement.js b/src/api/settlement/formalSettlement.js
index a84ad9a..8769744 100644
--- a/src/api/settlement/formalSettlement.js
+++ b/src/api/settlement/formalSettlement.js
@@ -67,12 +67,12 @@ export const invoiceAssignKingdee = id =>
params: { id },
});
// 先票后款:查看页重推认领收票单(收票单A303-2+指定应付A302-6 一步式),涉及多次金蝶远程调用,覆盖全局超时
-export const repushClaimedInvoice = (id, invoiceNo) =>
+export const repushClaimedInvoice = (id, invoiceNo, matchedAmount) =>
request({
url: `${baseUrl}/repush-claimed-invoice`,
method: 'post',
timeout: 30000,
- params: { id, invoiceNo },
+ params: { id, invoiceNo, matchedAmount },
});
export const queryInvoicePool = params =>
request({ url: `${baseUrl}/invoice-pool`, method: 'get', params });
diff --git a/src/views/settlement/components/formal-settlement-editor.vue b/src/views/settlement/components/formal-settlement-editor.vue
index 09b7012..bf65b0c 100644
--- a/src/views/settlement/components/formal-settlement-editor.vue
+++ b/src/views/settlement/components/formal-settlement-editor.vue
@@ -482,12 +482,12 @@
align="center"
>