From 6a98bb0cfa045ff556e2d55ba5bcd44f57166dae Mon Sep 17 00:00:00 2001 From: user9994793890 <3722323274763196-user9994793890@noreply.coze.cn> Date: Mon, 13 Jul 2026 16:10:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20JS=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=AF=AD=E6=B3=95=E9=94=99=E8=AF=AF=E5=92=8C=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E7=BC=BA=E5=A4=B1=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Coze-Commit-Type: user Coze-User-ID: 3722323274763196 Coze-Conversation-ID: 9894087 --- assets/image_20260713160840329.png | Bin 0 -> 46263 bytes public/static/js/common.js | 344 +++++++++++++++++++++++++++++ public/static/js/history.js | 1 - 3 files changed, 344 insertions(+), 1 deletion(-) create mode 100644 assets/image_20260713160840329.png diff --git a/assets/image_20260713160840329.png b/assets/image_20260713160840329.png new file mode 100644 index 0000000000000000000000000000000000000000..d19b963e1538235b2bb421730b67874a89ca97f3 GIT binary patch literal 46263 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 LM-qi%PrUyJ { + const isSelected = selectedFields.includes(field.key); + const isRequired = field.key === 'charge_degree'; // 充电量为必选字段 + return ` +
+ + +
+ `; + }).join(''); + + // 初始化求和字段列表(只显示已选字段中的可求和字段) + refreshSumFieldsList(selectedFields, sumFields); +} + +// 点击 checkbox-item 容器时切换选中状态 +function toggleCheckboxItem(item) { + const cb = item.querySelector('input[type="checkbox"]'); + if (event.target === cb) return; // 如果点击的就是 checkbox 本身,不重复触发 + cb.checked = !cb.checked; + item.classList.toggle('checked', cb.checked); + onFieldCheckboxChange(cb); +} + +// 字段 checkbox 变化时更新求和字段列表和已选字段顺序 +function onFieldCheckboxChange(cb) { + // 防止取消选择必选字段(充电量) + if (cb.value === 'charge_degree' && !cb.checked) { + cb.checked = true; + return; + } + + const item = cb.closest('.checkbox-item'); + if (item) item.classList.toggle('checked', cb.checked); + + const fieldsList = document.getElementById('fields-list'); + const checkedFields = Array.from(fieldsList.querySelectorAll('input:checked')).map(c => c.value); + + // 保留当前求和字段的选择状态 + const sumFieldsList = document.getElementById('sum-fields-list'); + const currentSumFields = sumFieldsList ? Array.from(sumFieldsList.querySelectorAll('input:checked')).map(c => c.value) : []; + + refreshSumFieldsList(checkedFields, currentSumFields); + refreshSelectedFieldsOrder(checkedFields); +} + +// 字段自定义名头存储 +let fieldCustomNames = {}; + +// 刷新已选字段顺序列表 +function refreshSelectedFieldsOrder(selectedFields, customNames = null) { + const orderGroup = document.getElementById('selected-fields-order-group'); + const orderList = document.getElementById('selected-fields-order'); + if (!orderList) return; + + // 如果传入了自定义名头,更新全局变量 + if (customNames !== null) { + fieldCustomNames = {...customNames}; + } + + // 根据是否有已选字段,显示/隐藏字段顺序区域 + if (orderGroup) { + orderGroup.style.display = selectedFields.length > 0 ? 'block' : 'none'; + } + + if (selectedFields.length === 0) { + orderList.innerHTML = '请先在上方勾选字段'; + } else { + orderList.innerHTML = selectedFields.map((fieldKey, index) => { + const field = allFields.find(f => f.key === fieldKey); + const displayName = field ? field.display : fieldKey; + const customName = fieldCustomNames[fieldKey] || ''; + const isFirst = index === 0; + const isLast = index === selectedFields.length - 1; + return ` +
+ #${index + 1} + ${displayName} + +
+ + +
+
+ `; + }).join(''); + } +} + +// 更新字段自定义名头 +function updateFieldCustomName(fieldKey, customName) { + if (customName && customName.trim()) { + fieldCustomNames[fieldKey] = customName.trim(); + } else { + delete fieldCustomNames[fieldKey]; + } +} + +// 获取字段自定义名头 +function getFieldCustomNames() { + return {...fieldCustomNames}; +} + +// 字段上移 +function moveFieldUp(index) { + if (index <= 0) return; + const orderList = document.getElementById('selected-fields-order'); + const items = Array.from(orderList.querySelectorAll('.selected-field-item')); + const item = items[index]; + const prevItem = items[index - 1]; + orderList.insertBefore(item, prevItem); + updateFieldIndexes(); +} + +// 字段下移 +function moveFieldDown(index) { + const orderList = document.getElementById('selected-fields-order'); + const items = Array.from(orderList.querySelectorAll('.selected-field-item')); + if (index >= items.length - 1) return; + const item = items[index]; + const nextItem = items[index + 1]; + orderList.insertBefore(nextItem, item); + updateFieldIndexes(); +} + +// 更新字段序号 +function updateFieldIndexes() { + const orderList = document.getElementById('selected-fields-order'); + const items = orderList.querySelectorAll('.selected-field-item'); + items.forEach((item, index) => { + const indexSpan = item.querySelector('.field-index'); + if (indexSpan) indexSpan.textContent = `#${index + 1}`; + + // 更新按钮状态 + const upBtn = item.querySelector('.btn-move[title="上移"]'); + const downBtn = item.querySelector('.btn-move[title="下移"]'); + if (upBtn) upBtn.disabled = index === 0; + if (downBtn) downBtn.disabled = index === items.length - 1; + }); +} + +// 获取当前字段顺序 +function getSelectedFieldsOrder() { + const orderList = document.getElementById('selected-fields-order'); + if (!orderList) return []; + const items = orderList.querySelectorAll('.selected-field-item'); + return Array.from(items).map(item => item.dataset.field); +} + +// 刷新求和字段列表(仅显示已选字段中的数值类型字段) +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 = '请先在上方勾选数值类型的字段'; + } else { + sumFieldsList.innerHTML = availableSumFields.map(field => ` +
+ + +
+ `).join(''); + } +} + +// 切换特来电车量自编号输入框显示 +function toggleTelecomVehicleNo() { + const mergeTelecom = document.getElementById('merge-telecom').checked; + const vehicleNoGroup = document.getElementById('telecom-vehicle-no-group'); + if (vehicleNoGroup) { + vehicleNoGroup.style.display = mergeTelecom ? 'block' : 'none'; + } +} + +// 更新已选实体计数 +function updateSelectedCount() { + const select = document.getElementById('split-value'); + const countEl = document.getElementById('selected-entity-count'); + const count = select.selectedOptions.length; + if (count > 0) { + countEl.textContent = '已选 ' + count + ' 项'; + countEl.style.display = 'inline'; + } else { + countEl.style.display = 'none'; + } +} + +// ========== 时段编辑器 ========== +const TIME_PERIODS = [ + { key: 'sharp', label: '尖', color: '#e74c3c' }, + { key: 'peak', label: '峰', color: '#f39c12' }, + { key: 'flat', label: '平', color: '#27ae60' }, + { key: 'valley', label: '谷', color: '#3498db' } +]; + +// 时段配置: { sharp: [11,12], peak: [9,10], flat: [7,8], valley: [0,1,2,3] } +let timePeriodConfig = { sharp: [], peak: [], flat: [], valley: [] }; +let currentTpTool = 'select'; // 'select' or period key + +// 初始化时段编辑器 +function initTimePeriodEditor() { + const hoursRow = document.getElementById('tp-hours-row'); + const periodRows = document.getElementById('tp-period-rows'); + + // 渲染小时标题行 + let hoursHtml = ''; + for (let h = 0; h < 24; h++) { + hoursHtml += `
${h}
`; + } + hoursRow.innerHTML = hoursHtml; + + // 渲染时段行 + let rowsHtml = ''; + TIME_PERIODS.forEach(period => { + rowsHtml += ` +
+
${period.label}时
+
+ ${Array.from({length: 24}, (_, h) => + `
` + ).join('')} +
+
+ `; + }); + periodRows.innerHTML = rowsHtml; + + updateTimePeriodSummary(); +} + +// 切换时段格子 +function toggleTimePeriodCell(hour, periodKey) { + console.log('toggleTimePeriodCell called:', hour, periodKey); + // 检查该小时是否已被其他时段占用 + const occupiedBy = Object.entries(timePeriodConfig).find(([k, v]) => k !== periodKey && v.includes(hour)); + + if (occupiedBy) { + // 已被其他时段占用,移除占用并分配给当前时段 + const [otherKey] = occupiedBy; + timePeriodConfig[otherKey] = timePeriodConfig[otherKey].filter(h => h !== hour); + updateCellDisplay(hour, otherKey); + } + + // 切换当前时段 + if (timePeriodConfig[periodKey].includes(hour)) { + timePeriodConfig[periodKey] = timePeriodConfig[periodKey].filter(h => h !== hour); + } else { + timePeriodConfig[periodKey].push(hour); + timePeriodConfig[periodKey].sort((a, b) => a - b); + } + + updateCellDisplay(hour, periodKey); + updateTimePeriodSummary(); +} + +// 更新格子显示 +function updateCellDisplay(hour, periodKey) { + // 清除所有时段中该小时的样式 + TIME_PERIODS.forEach(p => { + const cell = document.querySelector(`.tp-cell[data-hour="${hour}"][data-period="${p.key}"]`); + if (cell) { + cell.className = 'tp-cell'; + cell.textContent = ''; + } + }); + + // 检查该小时属于哪个时段,并设置对应的样式 + for (const p of TIME_PERIODS) { + if (timePeriodConfig[p.key].includes(hour)) { + const cell = document.querySelector(`.tp-cell[data-hour="${hour}"][data-period="${p.key}"]`); + if (cell) { + cell.classList.add(p.key); + cell.textContent = '✓'; + } + break; // 每个小时只能属于一个时段 + } + } +} + +// 更新时段摘要 +function updateTimePeriodSummary() { + const summaryEl = document.getElementById('tp-summary'); + const parts = TIME_PERIODS.map(p => { + const hours = timePeriodConfig[p.key]; + const count = hours.length; + const hoursStr = count > 0 ? hours.map(h => `${h}时`).join(',') : '未设置'; + return `${p.label}时: ${count}个 (${hoursStr})`; + }); + summaryEl.innerHTML = parts.join(''); +} + +// 设置时段配置(编辑时加载) diff --git a/public/static/js/history.js b/public/static/js/history.js index df867a7..899316f 100644 --- a/public/static/js/history.js +++ b/public/static/js/history.js @@ -222,4 +222,3 @@ async function loadHistoryWithDate(page, startDate, endDate) { // 初始化 loadConfigs(); loadFields(); -