修改自动采集数据的修改逻辑

This commit is contained in:
2026-07-30 10:00:28 +08:00
parent c332e4eb1c
commit 4e20d7edac

View File

@@ -424,11 +424,13 @@ async function saveSumData() {
try {
// 分组编辑模式
if (editingGroupIds && editingGroupIds.length > 0) {
let needCreateNew = false; // 是否需要创建新记录(删除了自动采集记录时)
// 先获取分组信息,确定需要删除的自动采集记录
if (editingGroupData && editingGroupData.length > 0) {
const chargeItem = editingGroupData.find(i => i.sum_field_key === 'charge_degree') || editingGroupData[0];
// 查询该分组下所有字段的ID用于删除重复的自动采集记录
// 查询该分组下所有自动采集记录
const deleteResponse = await fetch('/api/sum-data/batch-query', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
@@ -444,20 +446,61 @@ async function saveSumData() {
});
const deleteResult = await deleteResponse.json();
// 删除所有自动采集的记录(避免重复)
// 如果有自动采集记录,删除它们并标记需要创建新记录
if (deleteResult.success && deleteResult.data && deleteResult.data.length > 0) {
const autoIds = deleteResult.data.map(d => d.id);
for (const autoId of autoIds) {
await fetch(`/api/sum-data/${autoId}`, { method: 'DELETE' });
}
console.log(`已删除 ${autoIds.length} 条自动采集记录`);
needCreateNew = true;
}
}
// 读取动态字段值(这些是手动编辑后的记录)
// 读取动态字段值
const fieldInputs = document.querySelectorAll('#sum-data-dynamic-fields input[data-field-key]');
let successCount = 0;
if (needCreateNew) {
// 自动采集记录已删除,需要创建新的手动记录
if (editingGroupData && editingGroupData.length > 0) {
const chargeItem = editingGroupData.find(i => i.sum_field_key === 'charge_degree') || editingGroupData[0];
// 收集所有字段
const fieldsData = [];
for (const input of fieldInputs) {
fieldsData.push({
sum_field_key: input.getAttribute('data-field-key'),
sum_field_name: input.getAttribute('data-field-name') || input.getAttribute('data-field-key'),
sum_value: parseFloat(input.value) || 0
});
}
// 批量新增手动记录
const response = await fetch('/api/sum-data/batch-add', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
report_date: chargeItem.report_date,
config_id: chargeItem.config_id,
config_name: chargeItem.config_name,
split_type: chargeItem.split_type,
split_value: chargeItem.split_value,
split_name: chargeItem.split_name,
total_orders: parseInt(totalOrders) || 0,
data_source: 'manual',
remark: remark,
fields: fieldsData
})
});
const result = await response.json();
if (result.success) {
successCount = fieldsData.length;
}
console.log(`新增手动记录结果: ${JSON.stringify(result)}`);
}
} else {
// 原记录是手动的,直接更新
for (const input of fieldInputs) {
const fieldId = input.getAttribute('data-field-id');
const fieldValue = input.value;
@@ -478,6 +521,7 @@ async function saveSumData() {
console.log(`更新结果: ${JSON.stringify(result)}`);
if (result.success) successCount++;
}
}
if (successCount > 0) {
alert(`更新成功(${successCount} 个字段)`);