From 486d438d49327c9cd34275cb932c79fe031ef8cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Fri, 6 Nov 2026 17:29:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=AD=A3=E5=BC=8F=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E5=8D=95=E9=87=91=E9=A2=9D=E6=8C=89=E7=BB=93=E7=AE=97=E5=B8=81?= =?UTF-8?q?=E7=A7=8D=E6=98=BE=E7=A4=BA=EF=BC=8C=E8=BF=BD=E5=8A=A0=E9=A2=84?= =?UTF-8?q?=E7=BB=93=E7=AE=97=E6=9D=A5=E6=BA=90=E7=BB=93=E7=AE=97=E9=87=91?= =?UTF-8?q?=E9=A2=9D=E6=8C=89=E6=B1=87=E7=8E=87=E5=8F=8D=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 结算合计原金额/结算金额/合计行与表头结算金额按合同结算币种显示币种代码(人民币 RMB、外币如 USD),本位币合计固定 RMB - confirmCandidates 追加预结算来源时结算金额由来源本位币汇总按结算汇率反算,本位币合计保留本位币汇总,修复外币结算未换算 --- .../components/formal-settlement-editor.vue | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/views/settlement/components/formal-settlement-editor.vue b/src/views/settlement/components/formal-settlement-editor.vue index ecf348d..ba4e6aa 100644 --- a/src/views/settlement/components/formal-settlement-editor.vue +++ b/src/views/settlement/components/formal-settlement-editor.vue @@ -84,7 +84,12 @@ > {{ form.formalSettlementNo || (form.id ? '-' : '系统自动生成') }} - {{ formatMoney(form[field.prop]) }} + {{ + formatMoney( + form[field.prop], + field.prop === 'settlementAmount' ? settlementCurrencyCode : 'RMB' + ) + }} {{ formSelectLabel(field, form[field.prop]) }} @@ -180,7 +185,7 @@ 'formal-editor__negative-amount': isNegativeAdjustedAmount(row, column.prop), }" > - {{ formatMoney(row[column.prop]) }} + {{ formatMoney(row[column.prop], settlementCurrencyCode) }} {{ feeCategoryName(row.feeType) }} {{ displayValue(row[column.prop]) }} @@ -201,7 +206,7 @@ class="formal-editor__settle-summary" > - {{ formatMoney(form.settlementAmount) }} + {{ formatMoney(form.settlementAmount, settlementCurrencyCode) }} {{ formatMoney(settlePaidTotal) }} @@ -1373,6 +1378,10 @@ export default { isLocalCurrencySettlement() { return normalizeCurrencyCode(this.form.currency) === 'RMB'; }, + // 结算单据币种:本位币结算固定 RMB,外币结算取归一化后的合同结算币种 + settlementCurrencyCode() { + return this.isLocalCurrencySettlement ? 'RMB' : normalizeCurrencyCode(this.form.currency); + }, visibleFields() { if (!this.isLocalCurrencySettlement) return this.fields; return this.fields.filter(field => !LOCAL_CURRENCY_HIDDEN_FIELDS.includes(field.prop)); @@ -1945,12 +1954,13 @@ export default { }); this.refreshFormalSettlementNo(); } - this.form.settlementAmount = this.sources.reduce( + // 来源预结算金额为本位币;外币结算时结算金额按汇率反算,本位币合计保留本位币汇总 + const sourceTotal = this.sources.reduce( (sum, item) => sum + Number(item.settlementAmount || 0), 0 ); - this.form.localSettlementAmount = - this.form.settlementAmount * Number(this.form.exchangeRate || 1); + this.form.settlementAmount = this.convertLocalToSettlementAmount(sourceTotal); + this.form.localSettlementAmount = Number(sourceTotal).toFixed(2); this.candidate.visible = false; // 预结算转正式:带出来源预结算已保存的项目预付核销行(后端保存时转移源行,额度单份占用) const newIds = this.sources @@ -2100,7 +2110,7 @@ export default { if (index === 0) return '合计'; if (!sumProps.includes(column.property)) return ''; const total = data.reduce((sum, row) => sum + Number(row[column.property] || 0), 0); - const totalText = this.formatMoney(total); + const totalText = this.formatMoney(total, this.settlementCurrencyCode); if (column.property === 'settlementAmount' && hasNegativeAdjustment) { return h('span', { style: { color: 'var(--el-color-danger)' } }, totalText); } @@ -3167,8 +3177,8 @@ export default { const body = response?.data || response || {}; return body?.data || body; }, - formatMoney(value) { - return `${Number(value || 0).toFixed(2)} RMB`; + formatMoney(value, currency = 'RMB') { + return `${Number(value || 0).toFixed(2)} ${currency}`; }, formatDetailTransportQuantity(row) { const value = row.transportQuantity;