修复求和数据统计的问题
This commit is contained in:
@@ -34,7 +34,8 @@ function renderSumDataList(rawList) {
|
||||
});
|
||||
|
||||
// 排序:峰平谷按顺序
|
||||
const fieldOrder = ['sharp_electricity', 'peak_electricity', 'flat_electricity', 'valley_electricity'];
|
||||
const fieldOrder = ['sharp_electricity', 'peak_electricity', 'flat_electricity', 'valley_electricity',
|
||||
'peak_degree', 'peak_time_degree', 'normal_time_degree', 'valley_time_degree'];
|
||||
sumDataDynamicFields = Object.keys(fieldMap).sort((a, b) => {
|
||||
const idxA = fieldOrder.indexOf(a);
|
||||
const idxB = fieldOrder.indexOf(b);
|
||||
@@ -188,15 +189,15 @@ async function loadSumData(page = 1) {
|
||||
}
|
||||
|
||||
const params = new URLSearchParams();
|
||||
params.append('page', '1');
|
||||
params.append('page_size', '5000');
|
||||
params.append('page', page);
|
||||
params.append('page_size', '50');
|
||||
if (startDate) params.append('start_date', startDate);
|
||||
if (endDate) params.append('end_date', endDate);
|
||||
if (configName) params.append('config_name', configName);
|
||||
if (dataSource) params.append('data_source', dataSource);
|
||||
|
||||
try {
|
||||
const response = await fetch(`/api/sum-data?${params.toString()}`);
|
||||
const response = await fetch(`/api/sum-data?${params.toString()}&_t=${Date.now()}`);
|
||||
const result = await response.json();
|
||||
if (result.success) {
|
||||
renderSumDataList(result.data.list || []);
|
||||
@@ -266,9 +267,11 @@ function showAddSumDataModal() {
|
||||
document.getElementById('sum-data-split-type-input').value = 'company_id';
|
||||
document.getElementById('sum-data-split-value-input').value = '';
|
||||
document.getElementById('sum-data-split-name-input').value = '';
|
||||
document.getElementById('sum-data-field-key-input').value = '';
|
||||
document.getElementById('sum-data-field-name-input').value = '';
|
||||
document.getElementById('sum-data-value-input').value = '';
|
||||
document.getElementById('sum-data-charge-degree-input').value = '';
|
||||
document.getElementById('sum-data-peak-degree-input').value = '';
|
||||
document.getElementById('sum-data-peak-time-input').value = '';
|
||||
document.getElementById('sum-data-normal-time-input').value = '';
|
||||
document.getElementById('sum-data-valley-time-input').value = '';
|
||||
document.getElementById('sum-data-total-orders-input').value = 0;
|
||||
document.getElementById('sum-data-remark-input').value = '';
|
||||
document.getElementById('sum-data-modal').classList.add('active');
|
||||
@@ -280,8 +283,11 @@ let editingGroupData = null;
|
||||
|
||||
async function showEditSumDataGroup(ids) {
|
||||
try {
|
||||
// 获取所有选中的记录详情
|
||||
const response = await fetch(`/api/sum-data?page=1&page_size=5000`);
|
||||
const response = await fetch('/api/sum-data/batch-query', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ ids: ids })
|
||||
});
|
||||
const result = await response.json();
|
||||
|
||||
if (!result.success) {
|
||||
@@ -289,8 +295,7 @@ async function showEditSumDataGroup(ids) {
|
||||
return;
|
||||
}
|
||||
|
||||
const allList = result.data.list || [];
|
||||
const groupItems = allList.filter(item => ids.includes(item.id));
|
||||
const groupItems = result.data || [];
|
||||
|
||||
if (groupItems.length === 0) {
|
||||
alert('未找到该记录');
|
||||
@@ -300,7 +305,6 @@ async function showEditSumDataGroup(ids) {
|
||||
editingGroupIds = ids;
|
||||
editingGroupData = groupItems;
|
||||
|
||||
// 找到充电电量那条作为主记录
|
||||
const chargeItem = groupItems.find(i => i.sum_field_key === 'charge_degree') || groupItems[0];
|
||||
|
||||
document.getElementById('sum-data-modal-title').textContent = '编辑求和数据';
|
||||
@@ -311,11 +315,10 @@ async function showEditSumDataGroup(ids) {
|
||||
document.getElementById('sum-data-split-value-input').value = chargeItem.split_value || '';
|
||||
document.getElementById('sum-data-split-name-input').value = chargeItem.split_name || '';
|
||||
|
||||
// 动态生成字段输入区域
|
||||
renderEditGroupFields(groupItems);
|
||||
|
||||
document.getElementById('sum-data-total-orders-input').value = chargeItem.total_orders || 0;
|
||||
document.getElementById('sum-data-remark-input').value = '';
|
||||
document.getElementById('sum-data-remark-input').value = chargeItem.remark || '';
|
||||
document.getElementById('sum-data-modal').classList.add('active');
|
||||
} catch (error) {
|
||||
alert('加载详情失败: ' + error.message);
|
||||
@@ -324,9 +327,11 @@ async function showEditSumDataGroup(ids) {
|
||||
|
||||
// 渲染编辑分组时的动态字段输入
|
||||
function renderEditGroupFields(items) {
|
||||
const fieldKeyInput = document.getElementById('sum-data-field-key-input');
|
||||
const fieldNameInput = document.getElementById('sum-data-field-name-input');
|
||||
const valueInput = document.getElementById('sum-data-value-input');
|
||||
// 隐藏静态字段输入区域(整个求和字段值区域)
|
||||
const chargeDegreeInput = document.getElementById('sum-data-charge-degree-input');
|
||||
if (chargeDegreeInput) {
|
||||
chargeDegreeInput.parentElement.parentElement.parentElement.style.display = 'none';
|
||||
}
|
||||
|
||||
// 先构造动态字段区域
|
||||
let fieldsHtml = '<div style="margin-bottom: 15px;"><label style="display: block; margin-bottom: 8px; font-weight: 600;">求和字段值:</label>';
|
||||
@@ -363,11 +368,6 @@ function renderEditGroupFields(items) {
|
||||
|
||||
fieldsHtml += '</div></div>';
|
||||
|
||||
// 替换掉原来的单字段输入
|
||||
fieldKeyInput.parentElement.style.display = 'none';
|
||||
fieldNameInput.parentElement.style.display = 'none';
|
||||
valueInput.parentElement.style.display = 'none';
|
||||
|
||||
// 插入到订单数前面
|
||||
const totalOrdersGroup = document.getElementById('sum-data-total-orders-input').parentElement;
|
||||
|
||||
@@ -404,6 +404,8 @@ async function saveSumData() {
|
||||
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' },
|
||||
@@ -414,6 +416,7 @@ async function saveSumData() {
|
||||
})
|
||||
});
|
||||
const result = await response.json();
|
||||
console.log(`更新结果: ${JSON.stringify(result)}`);
|
||||
if (result.success) successCount++;
|
||||
}
|
||||
|
||||
@@ -427,34 +430,73 @@ async function saveSumData() {
|
||||
return;
|
||||
}
|
||||
|
||||
// 单条新增模式
|
||||
// 单条新增模式(批量添加多个字段)
|
||||
const fieldsData = [];
|
||||
|
||||
const chargeDegree = document.getElementById('sum-data-charge-degree-input').value;
|
||||
const peakDegree = document.getElementById('sum-data-peak-degree-input').value;
|
||||
const peakTime = document.getElementById('sum-data-peak-time-input').value;
|
||||
const normalTime = document.getElementById('sum-data-normal-time-input').value;
|
||||
const valleyTime = document.getElementById('sum-data-valley-time-input').value;
|
||||
|
||||
if (!chargeDegree && !peakDegree && !peakTime && !normalTime && !valleyTime) {
|
||||
alert('请至少输入一个求和字段值');
|
||||
return;
|
||||
}
|
||||
|
||||
if (chargeDegree) {
|
||||
fieldsData.push({
|
||||
sum_field_key: 'charge_degree',
|
||||
sum_field_name: '充电电量(kWh)',
|
||||
sum_value: chargeDegree
|
||||
});
|
||||
}
|
||||
if (peakDegree) {
|
||||
fieldsData.push({
|
||||
sum_field_key: 'peak_degree',
|
||||
sum_field_name: '尖时电量(kWh)',
|
||||
sum_value: peakDegree
|
||||
});
|
||||
}
|
||||
if (peakTime) {
|
||||
fieldsData.push({
|
||||
sum_field_key: 'peak_time_degree',
|
||||
sum_field_name: '峰时电量(kWh)',
|
||||
sum_value: peakTime
|
||||
});
|
||||
}
|
||||
if (normalTime) {
|
||||
fieldsData.push({
|
||||
sum_field_key: 'normal_time_degree',
|
||||
sum_field_name: '平时电量(kWh)',
|
||||
sum_value: normalTime
|
||||
});
|
||||
}
|
||||
if (valleyTime) {
|
||||
fieldsData.push({
|
||||
sum_field_key: 'valley_time_degree',
|
||||
sum_field_name: '谷时电量(kWh)',
|
||||
sum_value: valleyTime
|
||||
});
|
||||
}
|
||||
|
||||
const data = {
|
||||
report_date: document.getElementById('sum-data-report-date-input').value,
|
||||
config_name: document.getElementById('sum-data-config-name-input').value,
|
||||
split_type: document.getElementById('sum-data-split-type-input').value,
|
||||
split_value: document.getElementById('sum-data-split-value-input').value,
|
||||
split_name: document.getElementById('sum-data-split-name-input').value,
|
||||
sum_field_key: document.getElementById('sum-data-field-key-input').value,
|
||||
sum_field_name: document.getElementById('sum-data-field-name-input').value,
|
||||
sum_value: document.getElementById('sum-data-value-input').value,
|
||||
total_orders: totalOrders,
|
||||
remark: remark
|
||||
remark: remark,
|
||||
fields: fieldsData
|
||||
};
|
||||
|
||||
if (!data.report_date) {
|
||||
alert('请选择报表日期');
|
||||
return;
|
||||
}
|
||||
if (!data.sum_field_key) {
|
||||
alert('请输入求和字段键名');
|
||||
return;
|
||||
}
|
||||
if (data.sum_value === '' || data.sum_value === null) {
|
||||
alert('请输入求和值');
|
||||
return;
|
||||
}
|
||||
|
||||
const response = await fetch('/api/sum-data', {
|
||||
const response = await fetch('/api/sum-data/batch-add', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(data)
|
||||
@@ -478,12 +520,22 @@ function closeSumDataModal() {
|
||||
document.getElementById('sum-data-modal').classList.remove('active');
|
||||
editingGroupIds = [];
|
||||
editingGroupData = null;
|
||||
// 恢复单字段输入的显示
|
||||
document.querySelector('#sum-data-field-key-input').parentElement.style.display = '';
|
||||
document.querySelector('#sum-data-field-name-input').parentElement.style.display = '';
|
||||
document.querySelector('#sum-data-value-input').parentElement.style.display = '';
|
||||
// 清空新增字段输入
|
||||
document.getElementById('sum-data-charge-degree-input').value = '';
|
||||
document.getElementById('sum-data-peak-degree-input').value = '';
|
||||
document.getElementById('sum-data-peak-time-input').value = '';
|
||||
document.getElementById('sum-data-normal-time-input').value = '';
|
||||
document.getElementById('sum-data-valley-time-input').value = '';
|
||||
// 恢复静态字段区域显示
|
||||
const chargeDegreeInput = document.getElementById('sum-data-charge-degree-input');
|
||||
if (chargeDegreeInput) {
|
||||
chargeDegreeInput.parentElement.parentElement.parentElement.style.display = '';
|
||||
}
|
||||
// 清理动态区域
|
||||
const dynamicArea = document.getElementById('sum-data-dynamic-fields');
|
||||
if (dynamicArea) dynamicArea.innerHTML = '';
|
||||
if (dynamicArea) {
|
||||
dynamicArea.remove();
|
||||
}
|
||||
}
|
||||
|
||||
// 删除单条(分组)
|
||||
|
||||
Reference in New Issue
Block a user