每个机台的轴的左右进行了排序

master
huangjinysf 3 months ago
parent b4a0f2b908
commit e5a5990732

@ -3,7 +3,10 @@
<div class="equipment-grid"> <div class="equipment-grid">
<div v-for="equipment in sortedEquipmentData" :key="equipment.equipment_code" class="equipment-item"> <div v-for="equipment in sortedEquipmentData" :key="equipment.equipment_code" class="equipment-item">
<div class="equipment-header"> <div class="equipment-header">
{{ equipment.equipment_code }} <span class="equipment-name">{{ equipment.equipment_code }}</span>
<span class="equipment-health" v-if="equipment.status_records && equipment.status_records.length > 0">
健康度: {{ equipment.status_records[0].health_score }}%
</span>
</div> </div>
<div class="equipment-body"> <div class="equipment-body">
<div class="axle-container"> <div class="axle-container">
@ -70,20 +73,55 @@ const sortedEquipmentData = computed(() => {
const getLeftAxles = (equipment) => { const getLeftAxles = (equipment) => {
if (!equipment.status_records || equipment.status_records.length === 0) return []; if (!equipment.status_records || equipment.status_records.length === 0) return [];
return equipment.status_records.filter(record => { //
const leftAxles = equipment.status_records.filter(record => {
const axle = record.axle_number; const axle = record.axle_number;
return axle.includes('左') || axle.includes('left'); return axle.includes('左') || axle.includes('left');
}); });
// 1, 2, 3...
return leftAxles.sort((a, b) => {
// "1"1
const aNum = extractAxleNumber(a.axle_number);
const bNum = extractAxleNumber(b.axle_number);
return aNum - bNum;
});
}; };
// //
const getRightAxles = (equipment) => { const getRightAxles = (equipment) => {
if (!equipment.status_records || equipment.status_records.length === 0) return []; if (!equipment.status_records || equipment.status_records.length === 0) return [];
return equipment.status_records.filter(record => { //
const rightAxles = equipment.status_records.filter(record => {
const axle = record.axle_number; const axle = record.axle_number;
return axle.includes('右') || axle.includes('right'); return axle.includes('右') || axle.includes('right');
}); });
// 1, 2, 3...
return rightAxles.sort((a, b) => {
// "1"1
const aNum = extractAxleNumber(a.axle_number);
const bNum = extractAxleNumber(b.axle_number);
return aNum - bNum;
});
};
//
const extractAxleNumber = (axleStr) => {
if (!axleStr) return Infinity;
// 使"1"1
const match = axleStr.match(/(\d+)/);
if (match) {
return parseInt(match[0], 10);
}
// """"使
if (axleStr.includes('左') || axleStr.includes('left')) return 0;
if (axleStr.includes('右') || axleStr.includes('right')) return 0;
return Infinity;
}; };
// CSS // CSS
@ -117,10 +155,20 @@ const getCompletionClass = (degree) => {
.equipment-header { .equipment-header {
background-color: #f5f7fa; background-color: #f5f7fa;
padding: 10px 15px; padding: 10px 15px;
font-weight: bold;
font-size: 16px; font-size: 16px;
text-align: center;
border-bottom: 1px solid #dcdfe6; border-bottom: 1px solid #dcdfe6;
display: flex;
justify-content: space-between;
align-items: center;
}
.equipment-name {
font-weight: bold;
}
.equipment-health {
font-size: 14px;
color: #67c23a;
} }
.equipment-body { .equipment-body {
@ -235,6 +283,8 @@ const getCompletionClass = (degree) => {
font-weight: bold; font-weight: bold;
} }
.no-records { .no-records {
text-align: center; text-align: center;
color: #909399; color: #909399;

Loading…
Cancel
Save