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" > @@ -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 => ({