fix: 修复字段和求和字段复选框回显问题,优化求和字段逻辑

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
This commit is contained in:
user9994793890
2026-07-10 14:30:45 +08:00
parent 96e58202be
commit a8dbd881ee

View File

@@ -616,6 +616,18 @@
}
}
// 可求和的数值类型字段
const SUMMABLE_FIELD_KEYS = [
'charge_degree', 'charge_ah', 'charge_begin_soc', 'charge_end_soc',
'receivable_electric_fee', 'receivable_service_fee', 'receivable_total_fee',
'charge_elecfee_amount', 'charge_elecfee_cost_amount', 'charge_service_amount',
'charging_amt', 'actual_pay_amount', 'pay_amount',
'settle_electric_fee', 'settle_service_fee', 'settle_fee',
'coupon_amount', 'coupon_total_amount', 'elecfee_coupon_amount', 'servicefee_coupon_amount',
'invoice_fee', 'activity_electric_fee', 'activity_service_fee', 'activity_total_fee',
'total_money'
];
// 渲染字段列表
function renderFields(selectedFields = [], sumFields = []) {
const fieldsList = document.getElementById('fields-list');
@@ -623,19 +635,40 @@
fieldsList.innerHTML = allFields.map(field => `
<label class="checkbox-item">
<input type="checkbox" value="${field.field}"
${selectedFields.includes(field.field) ? 'checked' : ''}>
<input type="checkbox" value="${field.key}"
${selectedFields.includes(field.key) ? 'checked' : ''}>
${field.display}
</label>
`).join('');
sumFieldsList.innerHTML = allFields.map(field => `
<label class="checkbox-item">
<input type="checkbox" value="${field.field}"
${sumFields.includes(field.field) ? 'checked' : ''}>
${field.display}
</label>
`).join('');
// 为字段列表添加 change 事件监听,动态更新求和字段
fieldsList.addEventListener('change', function() {
const checkedFields = Array.from(fieldsList.querySelectorAll('input:checked')).map(cb => cb.value);
refreshSumFieldsList(checkedFields, []);
});
// 初始化求和字段列表(只显示已选字段中的可求和字段)
refreshSumFieldsList(selectedFields, sumFields);
}
// 刷新求和字段列表(仅显示已选字段中的数值类型字段)
function refreshSumFieldsList(selectedFields, currentSumFields) {
const sumFieldsList = document.getElementById('sum-fields-list');
const availableSumFields = allFields.filter(f =>
selectedFields.includes(f.key) && SUMMABLE_FIELD_KEYS.includes(f.key)
);
if (availableSumFields.length === 0) {
sumFieldsList.innerHTML = '<small class="text-muted">请先在上方选择数值类型的字段</small>';
} else {
sumFieldsList.innerHTML = availableSumFields.map(field => `
<label class="checkbox-item">
<input type="checkbox" value="${field.key}"
${currentSumFields.includes(field.key) ? 'checked' : ''}>
${field.display}
</label>
`).join('');
}
}
// 当前实体加载状态