From 4247533bf1df3315a57cd5d39ffa1d30ee3bce20 Mon Sep 17 00:00:00 2001 From: huangjinysf Date: Wed, 24 Dec 2025 16:02:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=94=80=E9=87=8F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=9B=BE=E8=A1=A8=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=98=BE=E7=A4=BA=E7=AE=B1=E6=95=B0=E5=92=8C=E9=87=8D?= =?UTF-8?q?=E9=87=8F=E5=8F=98=E5=8C=96=E8=B6=8B=E5=8A=BF=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=95=B0=E6=8D=AE=E5=8A=A0=E8=BD=BD=E5=92=8C=E7=A9=BA?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/plan/EquipmentStatus.vue | 196 ++++++++++++++++++++++++----- 1 file changed, 162 insertions(+), 34 deletions(-) diff --git a/src/views/plan/EquipmentStatus.vue b/src/views/plan/EquipmentStatus.vue index 27d04a5..7cc2235 100644 --- a/src/views/plan/EquipmentStatus.vue +++ b/src/views/plan/EquipmentStatus.vue @@ -902,6 +902,28 @@ const updateCharts = () => { const totalNumberData = historyData.value.map(item => item.total_number); + // 准备销量数据,按日期聚合 + let salesBoxCountData = []; + if (salesData.value && salesData.value.length > 0) { + // 创建一个映射,键为日期,值为当天总箱数 + const salesBoxCountMap = {}; + salesData.value.forEach(item => { + const date = new Date(item.date); + const dateStr = `${date.getMonth() + 1}/${date.getDate()}`; + if (!salesBoxCountMap[dateStr]) { + salesBoxCountMap[dateStr] = 0; + } + salesBoxCountMap[dateStr] += item.box_count; + }); + + // 将销量数据映射到时间轴上 + salesBoxCountData = timeData.map(timeStr => { + // 从时间字符串中提取日期部分(去掉时间部分) + const dateStr = timeStr.split(' ')[0]; + return salesBoxCountMap[dateStr] || 0; + }); + } + const totalNumberOption = { title: { text: '总箱数变化趋势', @@ -911,12 +933,24 @@ const updateCharts = () => { } }, tooltip: { - trigger: 'axis' + trigger: 'axis', + formatter: function(params) { + let result = params[0].name + '
'; + params.forEach(param => { + result += `${param.seriesName}: ${param.value} 箱
`; + }); + return result; + } + }, + legend: { + data: ['生产箱数', '销量箱数'], + top: 30 }, grid: { left: '3%', right: '4%', bottom: '3%', + top: 60, containLabel: true }, xAxis: { @@ -930,17 +964,29 @@ const updateCharts = () => { type: 'value', name: '箱数' }, - series: [{ - data: totalNumberData, - type: 'line', - smooth: true, - itemStyle: { - color: '#409EFF' + series: [ + { + name: '生产箱数', + data: totalNumberData, + type: 'line', + smooth: true, + itemStyle: { + color: '#409EFF' + }, + areaStyle: { + opacity: 0.3 + } }, - areaStyle: { - opacity: 0.3 + { + name: '销量箱数', + data: salesBoxCountData, + type: 'line', + smooth: true, + itemStyle: { + color: '#E6A23C' + } } - }] + ] }; totalNumberChart.setOption(totalNumberOption, true); // true表示不合并选项 } @@ -954,6 +1000,28 @@ const updateCharts = () => { const totalNetWeightData = historyData.value.map(item => item.total_net_weight); + // 准备销量数据,按日期聚合 + let salesWeightData = []; + if (salesData.value && salesData.value.length > 0) { + // 创建一个映射,键为日期,值为当天总重量 + const salesWeightMap = {}; + salesData.value.forEach(item => { + const date = new Date(item.date); + const dateStr = `${date.getMonth() + 1}/${date.getDate()}`; + if (!salesWeightMap[dateStr]) { + salesWeightMap[dateStr] = 0; + } + salesWeightMap[dateStr] += item.weight; + }); + + // 将销量数据映射到时间轴上 + salesWeightData = timeData.map(timeStr => { + // 从时间字符串中提取日期部分(去掉时间部分) + const dateStr = timeStr.split(' ')[0]; + return salesWeightMap[dateStr] || 0; + }); + } + const totalNetWeightOption = { title: { text: '总净重变化趋势', @@ -965,14 +1033,22 @@ const updateCharts = () => { tooltip: { trigger: 'axis', formatter: function(params) { - return params[0].name + '
' + - params[0].seriesName + ': ' + params[0].value + 'kg'; + let result = params[0].name + '
'; + params.forEach(param => { + result += `${param.seriesName}: ${param.value} kg
`; + }); + return result; } }, + legend: { + data: ['生产净重', '销量净重'], + top: 30 + }, grid: { left: '3%', right: '4%', bottom: '3%', + top: 60, containLabel: true }, xAxis: { @@ -986,18 +1062,29 @@ const updateCharts = () => { type: 'value', name: '重量(kg)' }, - series: [{ - name: '总净重', - data: totalNetWeightData, - type: 'line', - smooth: true, - itemStyle: { - color: '#67C23A' + series: [ + { + name: '生产净重', + data: totalNetWeightData, + type: 'line', + smooth: true, + itemStyle: { + color: '#67C23A' + }, + areaStyle: { + opacity: 0.3 + } }, - areaStyle: { - opacity: 0.3 + { + name: '销量净重', + data: salesWeightData, + type: 'line', + smooth: true, + itemStyle: { + color: '#F56C6C' + } } - }] + ] }; totalNetWeightChart.setOption(totalNetWeightOption, true); // true表示不合并选项 } @@ -1011,6 +1098,28 @@ const updateCharts = () => { const totalGrossWeightData = historyData.value.map(item => item.total_gross_weight); + // 准备销量数据,按日期聚合 + let salesWeightData = []; + if (salesData.value && salesData.value.length > 0) { + // 创建一个映射,键为日期,值为当天总重量 + const salesWeightMap = {}; + salesData.value.forEach(item => { + const date = new Date(item.date); + const dateStr = `${date.getMonth() + 1}/${date.getDate()}`; + if (!salesWeightMap[dateStr]) { + salesWeightMap[dateStr] = 0; + } + salesWeightMap[dateStr] += item.weight; + }); + + // 将销量数据映射到时间轴上 + salesWeightData = timeData.map(timeStr => { + // 从时间字符串中提取日期部分(去掉时间部分) + const dateStr = timeStr.split(' ')[0]; + return salesWeightMap[dateStr] || 0; + }); + } + const totalGrossWeightOption = { title: { text: '总毛重变化趋势', @@ -1022,14 +1131,22 @@ const updateCharts = () => { tooltip: { trigger: 'axis', formatter: function(params) { - return params[0].name + '
' + - params[0].seriesName + ': ' + params[0].value + 'kg'; + let result = params[0].name + '
'; + params.forEach(param => { + result += `${param.seriesName}: ${param.value} kg
`; + }); + return result; } }, + legend: { + data: ['生产毛重', '销量重量'], + top: 30 + }, grid: { left: '3%', right: '4%', bottom: '3%', + top: 60, containLabel: true }, xAxis: { @@ -1043,18 +1160,29 @@ const updateCharts = () => { type: 'value', name: '重量(kg)' }, - series: [{ - name: '总毛重', - data: totalGrossWeightData, - type: 'line', - smooth: true, - itemStyle: { - color: '#E6A23C' + series: [ + { + name: '生产毛重', + data: totalGrossWeightData, + type: 'line', + smooth: true, + itemStyle: { + color: '#E6A23C' + }, + areaStyle: { + opacity: 0.3 + } }, - areaStyle: { - opacity: 0.3 + { + name: '销量重量', + data: salesWeightData, + type: 'line', + smooth: true, + itemStyle: { + color: '#F56C6C' + } } - }] + ] }; totalGrossWeightChart.setOption(totalGrossWeightOption, true); // true表示不合并选项 }