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

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