From 4e20d7edacdfde79dfd8ef9ef05d4e2ffc404e06 Mon Sep 17 00:00:00 2001 From: haoslm <6083297@qq.com> Date: Thu, 30 Jul 2026 10:00:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=87=AA=E5=8A=A8=E9=87=87?= =?UTF-8?q?=E9=9B=86=E6=95=B0=E6=8D=AE=E7=9A=84=E4=BF=AE=E6=94=B9=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/static/js/sum_data.js | 88 +++++++++++++++++++++++++++--------- 1 file changed, 66 insertions(+), 22 deletions(-) diff --git a/public/static/js/sum_data.js b/public/static/js/sum_data.js index e730aea..dacba11 100644 --- a/public/static/js/sum_data.js +++ b/public/static/js/sum_data.js @@ -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,39 +446,81 @@ 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; - 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 (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; + + 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) {