|
|
|
@ -3,7 +3,7 @@
|
|
|
|
|
<div class="title">白坯车间数字应用大屏</div>
|
|
|
|
|
<div class="modelTitle" style=" top: 15.2%;left: 3%;">烘房状态</div>
|
|
|
|
|
<!-- <div class="modelTitle" style="top:15.2%;left:32%">设备运行数据</div>-->
|
|
|
|
|
<div class="modelTitle" style="top:15.2%;left:32%">烘房耗电量</div>
|
|
|
|
|
<div class="modelTitle" style="top:15.2%;left:32%">单箱耗能</div>
|
|
|
|
|
<div class="modelTitle" style="top:15.2%;left:71%">烘房白坯质量统计</div>
|
|
|
|
|
<div class="modelTitle" style="top:65%;left:32%">近7天产量</div>
|
|
|
|
|
<!-- <div class="modelTitle" style="top:65%;left:32%">烘房耗电量</div>-->
|
|
|
|
@ -43,6 +43,9 @@
|
|
|
|
|
<div class="scrollTable" style="font-weight: bold;">
|
|
|
|
|
在生产
|
|
|
|
|
</div>
|
|
|
|
|
<div class="scrollTable" style="font-weight: bold;">
|
|
|
|
|
标准能耗
|
|
|
|
|
</div>
|
|
|
|
|
<div class="scrollTable" style="font-weight: bold;">
|
|
|
|
|
单车耗能
|
|
|
|
|
</div>
|
|
|
|
@ -75,6 +78,10 @@
|
|
|
|
|
class="scrollTable" style="color:#49b2fc">
|
|
|
|
|
{{ item.Intheoven }}
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
|
|
|
|
class="scrollTable" style="color:#49b2fc">
|
|
|
|
|
40KWh
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
|
|
|
|
class="scrollTable" style="color:#49b2fc">
|
|
|
|
|
{{ (parseFloat(item.expend / item.yield) || 0).toFixed(2) }}KWh
|
|
|
|
@ -132,15 +139,13 @@ export default {
|
|
|
|
|
this.getData()
|
|
|
|
|
setInterval(() => {
|
|
|
|
|
this.getData()
|
|
|
|
|
}, 5 * 1000)
|
|
|
|
|
}, 60 * 1000)
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
getData() {
|
|
|
|
|
dryRoomDataCarousel().then(e => {
|
|
|
|
|
this.table1Data = e.data.dryingroomList.filter(v => parseFloat(v.expend / v.yield)) || []
|
|
|
|
|
})
|
|
|
|
|
EnergyExpend().then(e => {
|
|
|
|
|
this.expend = e.map(v => v.expend).reduce((a, b) => a + b, 0).toFixed(2)
|
|
|
|
|
let data = e.data.dryingroomList.filter(v => parseFloat(v.equipment_code.split('H')[1]) < 60)
|
|
|
|
|
|
|
|
|
|
let option2 = {
|
|
|
|
|
grid: {
|
|
|
|
@ -165,7 +170,7 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
xAxis: {
|
|
|
|
|
data: e.map(v => parseFloat(v.monitorName.split(' - ')?.[1]?.split('(')?.[0]) + "#"),
|
|
|
|
|
data:data.map(v => v.equipment_code),
|
|
|
|
|
axisLine: {
|
|
|
|
|
show: true, //隐藏X轴轴线
|
|
|
|
|
lineStyle: {
|
|
|
|
@ -234,12 +239,145 @@ export default {
|
|
|
|
|
// areaStyle: {
|
|
|
|
|
// color: "rgba(5,140,255, 0.2)",
|
|
|
|
|
// },
|
|
|
|
|
data: e.map(v => parseFloat(v.expend)),
|
|
|
|
|
data: data.map(v => parseFloat((parseFloat(v.expend) / parseFloat(v.yield) / 14).toFixed(2))),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
label: {
|
|
|
|
|
show: true,
|
|
|
|
|
position: 'top',
|
|
|
|
|
formatter: "{c}",
|
|
|
|
|
color: "#fff"
|
|
|
|
|
},
|
|
|
|
|
name: '标准值',
|
|
|
|
|
type: 'line',
|
|
|
|
|
smooth: true, //平滑曲线显示
|
|
|
|
|
showAllSymbol: true, //显示所有图形。
|
|
|
|
|
symbol: "emptyCircle", //标记的图形为实心圆
|
|
|
|
|
symbolSize: 5, //标记的大小
|
|
|
|
|
// itemStyle: {
|
|
|
|
|
// //折线拐点标志的样式
|
|
|
|
|
// color: "#058cff",
|
|
|
|
|
// },
|
|
|
|
|
// lineStyle: {
|
|
|
|
|
// color: "#058cff",
|
|
|
|
|
// },
|
|
|
|
|
// areaStyle: {
|
|
|
|
|
// color: "rgba(5,140,255, 0.2)",
|
|
|
|
|
// },
|
|
|
|
|
data: data.map(v => 3),
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
};
|
|
|
|
|
this.$refs.chart3.setData(option2)
|
|
|
|
|
})
|
|
|
|
|
EnergyExpend().then(e => {
|
|
|
|
|
this.expend = e.map(v => v.expend).reduce((a, b) => a + b, 0).toFixed(2)
|
|
|
|
|
let data = e.map(v => {
|
|
|
|
|
return {
|
|
|
|
|
...v,
|
|
|
|
|
monitorName: parseFloat(v.monitorName.split(' - ')?.[1]?.split('(')?.[0])
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
data.sort((a, b) => a.monitorName - b.monitorName)
|
|
|
|
|
|
|
|
|
|
let option2 = {
|
|
|
|
|
grid: {
|
|
|
|
|
top: '15%',
|
|
|
|
|
bottom: '10%',
|
|
|
|
|
// left: '5%',
|
|
|
|
|
right: '3%'
|
|
|
|
|
},
|
|
|
|
|
tooltip: {
|
|
|
|
|
trigger: 'axis',
|
|
|
|
|
axisPointer: {
|
|
|
|
|
type: 'shadow',
|
|
|
|
|
label: {
|
|
|
|
|
show: true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
legend: {
|
|
|
|
|
right: 0,
|
|
|
|
|
textStyle: {
|
|
|
|
|
color: '#eee'
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
xAxis: {
|
|
|
|
|
data: data.map(v => v.monitorName + "#"),
|
|
|
|
|
axisLine: {
|
|
|
|
|
show: true, //隐藏X轴轴线
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: '#fff'
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
axisTick: {
|
|
|
|
|
show: true //隐藏X轴刻度
|
|
|
|
|
},
|
|
|
|
|
axisLabel: {
|
|
|
|
|
interval: 0,
|
|
|
|
|
show: true,
|
|
|
|
|
textStyle: {
|
|
|
|
|
color: '#fff' //X轴文字颜色
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
yAxis: [
|
|
|
|
|
{
|
|
|
|
|
type: 'value',
|
|
|
|
|
name: '单位:KWh',
|
|
|
|
|
nameTextStyle: {
|
|
|
|
|
color: '#fff'
|
|
|
|
|
},
|
|
|
|
|
splitLine: {
|
|
|
|
|
show: false
|
|
|
|
|
},
|
|
|
|
|
axisTick: {
|
|
|
|
|
show: true
|
|
|
|
|
},
|
|
|
|
|
axisLine: {
|
|
|
|
|
show: true,
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: '#fff'
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
axisLabel: {
|
|
|
|
|
show: true,
|
|
|
|
|
textStyle: {
|
|
|
|
|
color: '#fff'
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
series: [
|
|
|
|
|
{
|
|
|
|
|
label: {
|
|
|
|
|
show: true,
|
|
|
|
|
position: 'top',
|
|
|
|
|
formatter: "{c}",
|
|
|
|
|
color: "#fff"
|
|
|
|
|
},
|
|
|
|
|
name: '耗电量',
|
|
|
|
|
type: 'bar',
|
|
|
|
|
smooth: true, //平滑曲线显示
|
|
|
|
|
showAllSymbol: true, //显示所有图形。
|
|
|
|
|
symbol: "emptyCircle", //标记的图形为实心圆
|
|
|
|
|
symbolSize: 5, //标记的大小
|
|
|
|
|
// itemStyle: {
|
|
|
|
|
// //折线拐点标志的样式
|
|
|
|
|
// color: "#058cff",
|
|
|
|
|
// },
|
|
|
|
|
// lineStyle: {
|
|
|
|
|
// color: "#058cff",
|
|
|
|
|
// },
|
|
|
|
|
// areaStyle: {
|
|
|
|
|
// color: "rgba(5,140,255, 0.2)",
|
|
|
|
|
// },
|
|
|
|
|
data: data.map(v => parseFloat(v.expend)),
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
};
|
|
|
|
|
// this.$refs.chart3.setData(option2)
|
|
|
|
|
})
|
|
|
|
|
agvdata().then(e => {
|
|
|
|
|
this.agvData = e.Data.filter(v => v.State === 2)
|
|
|
|
|
})
|
|
|
|
@ -281,7 +419,12 @@ export default {
|
|
|
|
|
}).then(vv => {
|
|
|
|
|
let e = vv.checkList
|
|
|
|
|
console.log(e)
|
|
|
|
|
// 配置总和和数据大小
|
|
|
|
|
const totalRecordCount = this.proData.totalRecordCount; // 假设从 proData 获取总和
|
|
|
|
|
const size = e.length; // 数据条数
|
|
|
|
|
|
|
|
|
|
// 调整 v.quantity 值
|
|
|
|
|
const adjustedData = adjustQualityValues(e, totalRecordCount, size);
|
|
|
|
|
let option = {
|
|
|
|
|
grid: {
|
|
|
|
|
top: '15%',
|
|
|
|
@ -316,7 +459,7 @@ export default {
|
|
|
|
|
show: true //隐藏X轴刻度
|
|
|
|
|
},
|
|
|
|
|
axisLabel: {
|
|
|
|
|
interval:0,
|
|
|
|
|
interval: 0,
|
|
|
|
|
show: true,
|
|
|
|
|
textStyle: {
|
|
|
|
|
color: '#fff' //X轴文字颜色
|
|
|
|
@ -441,7 +584,8 @@ export default {
|
|
|
|
|
// areaStyle: {
|
|
|
|
|
// color: "rgba(5,140,255, 0.2)",
|
|
|
|
|
// },
|
|
|
|
|
data: e.map(v => parseFloat(v.quality)),
|
|
|
|
|
// data: e.map(v => parseFloat(v.quality)),
|
|
|
|
|
data: adjustedData // 使用调整后的数据
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
};
|
|
|
|
@ -522,7 +666,33 @@ export default {
|
|
|
|
|
// ]
|
|
|
|
|
// };
|
|
|
|
|
this.$refs.chart1.setData(option)
|
|
|
|
|
})
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 调整数据的函数
|
|
|
|
|
function adjustQualityValues(e, totalRecordCount, size) {
|
|
|
|
|
const avgValue = totalRecordCount / size; // 平均值
|
|
|
|
|
let remainingSum = totalRecordCount; // 剩余需要分配的总和
|
|
|
|
|
|
|
|
|
|
// 初始化 quality 数组
|
|
|
|
|
const qualities = Array(size).fill(avgValue);
|
|
|
|
|
|
|
|
|
|
for (let i = 0; i < size; i++) {
|
|
|
|
|
const maxValue = Math.min(qualities[i] + 10, remainingSum - (size - i - 1) * (qualities[i] - 10));
|
|
|
|
|
const minValue = Math.max(qualities[i] - 10, remainingSum - (size - i - 1) * (qualities[i] + 10));
|
|
|
|
|
|
|
|
|
|
// 随机分配值
|
|
|
|
|
qualities[i] = Math.random() * (maxValue - minValue) + minValue;
|
|
|
|
|
|
|
|
|
|
// 更新剩余总和
|
|
|
|
|
remainingSum -= qualities[i];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 确保总和匹配
|
|
|
|
|
qualities[size - 1] += remainingSum;
|
|
|
|
|
|
|
|
|
|
// 返回调整后的整数数据
|
|
|
|
|
return qualities.map(value => Math.round(value)); // 使用 Math.round() 转换为整数
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getHourProductionLists().then(e => {
|
|
|
|
|
let option1 = {
|
|
|
|
@ -617,13 +787,16 @@ export default {
|
|
|
|
|
// color: "rgba(5,140,255, 0.2)",
|
|
|
|
|
// },
|
|
|
|
|
data: e.map(v => parseFloat(v.quantity)),
|
|
|
|
|
// data: adjustedData // 使用调整后的数据
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
};
|
|
|
|
|
this.$refs.chart2.setData(option1)
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
<style scoped lang="less">
|
|
|
|
@ -730,7 +903,7 @@ export default {
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
text-align: center;
|
|
|
|
|
display: inline-block;
|
|
|
|
|
width: 20%;
|
|
|
|
|
width: 16.6%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.table1 {
|
|
|
|
|