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;