优化设备状态显示,添加不在运行轴的处理和样式

master
huangjinysf 3 months ago
parent 82b9087677
commit 5329a212a2

@ -11,15 +11,15 @@
<div class="equipment-body"> <div class="equipment-body">
<div class="axle-container"> <div class="axle-container">
<div class="axle-side left"> <div class="axle-side left">
<div v-for="record in getLeftAxles(equipment)" :key="`${record.axle_number}-${record.update_time}`" <div v-for="record in getLeftAxles(equipment)" :key="`${record.axle_number}-${record.update_time || 'no-data'}`"
class="axle-item" class="axle-item"
:class="getCompletionClass(record.degree_of_completion)"> :class="[getCompletionClass(record.degree_of_completion), { 'not-running': !record.update_time }]">
<div class="axle-number">{{ record.axle_number }}</div> <div class="axle-number">{{ record.axle_number }} <span v-if="!record.update_time" class="not-running-label">()</span></div>
<div class="axle-spec">{{ record.specification }}</div> <div class="axle-spec" v-if="record.update_time">{{ record.specification }}</div>
<div class="axle-model">{{ record.model }}</div> <div class="axle-model" v-if="record.update_time">{{ record.model }}</div>
<div class="axle-disc">线盘: {{ record.raw_wire_disc || '无' }}</div> <div class="axle-disc" v-if="record.update_time">线: {{ record.raw_wire_disc || '' }}</div>
<div class="axle-progress">完成度: {{ (record.degree_of_completion * 100).toFixed(0) }}%</div> <div class="axle-progress" v-if="record.update_time">: {{ (record.degree_of_completion * 100).toFixed(0) }}%</div>
<div class="axle-stock" v-if="record.total_number || record.total_net_weight || record.total_gross_weight"> <div class="axle-stock" v-if="record.update_time && (record.total_number || record.total_net_weight || record.total_gross_weight)">
<div class="stock-item" v-if="record.total_number">: {{ record.total_number }}</div> <div class="stock-item" v-if="record.total_number">: {{ record.total_number }}</div>
<div class="stock-item" v-if="record.total_net_weight">: {{ record.total_net_weight }}kg</div> <div class="stock-item" v-if="record.total_net_weight">: {{ record.total_net_weight }}kg</div>
<div class="stock-item" v-if="record.total_gross_weight">: {{ record.total_gross_weight }}kg</div> <div class="stock-item" v-if="record.total_gross_weight">: {{ record.total_gross_weight }}kg</div>
@ -27,15 +27,15 @@
</div> </div>
</div> </div>
<div class="axle-side right"> <div class="axle-side right">
<div v-for="record in getRightAxles(equipment)" :key="`${record.axle_number}-${record.update_time}`" <div v-for="record in getRightAxles(equipment)" :key="`${record.axle_number}-${record.update_time || 'no-data'}`"
class="axle-item" class="axle-item"
:class="getCompletionClass(record.degree_of_completion)"> :class="[getCompletionClass(record.degree_of_completion), { 'not-running': !record.update_time }]">
<div class="axle-number">{{ record.axle_number }}</div> <div class="axle-number">{{ record.axle_number }} <span v-if="!record.update_time" class="not-running-label">()</span></div>
<div class="axle-spec">{{ record.specification }}</div> <div class="axle-spec" v-if="record.update_time">{{ record.specification }}</div>
<div class="axle-model">{{ record.model }}</div> <div class="axle-model" v-if="record.update_time">{{ record.model }}</div>
<div class="axle-disc">线盘: {{ record.raw_wire_disc || '无' }}</div> <div class="axle-disc" v-if="record.update_time">线: {{ record.raw_wire_disc || '' }}</div>
<div class="axle-progress">完成度: {{ (record.degree_of_completion * 100).toFixed(0) }}%</div> <div class="axle-progress" v-if="record.update_time">: {{ (record.degree_of_completion * 100).toFixed(0) }}%</div>
<div class="axle-stock" v-if="record.total_number || record.total_net_weight || record.total_gross_weight"> <div class="axle-stock" v-if="record.update_time && (record.total_number || record.total_net_weight || record.total_gross_weight)">
<div class="stock-item" v-if="record.total_number">: {{ record.total_number }}</div> <div class="stock-item" v-if="record.total_number">: {{ record.total_number }}</div>
<div class="stock-item" v-if="record.total_net_weight">: {{ record.total_net_weight }}kg</div> <div class="stock-item" v-if="record.total_net_weight">: {{ record.total_net_weight }}kg</div>
<div class="stock-item" v-if="record.total_gross_weight">: {{ record.total_gross_weight }}kg</div> <div class="stock-item" v-if="record.total_gross_weight">: {{ record.total_gross_weight }}kg</div>
@ -43,7 +43,7 @@
</div> </div>
</div> </div>
</div> </div>
<div v-if="!equipment.status_records || equipment.status_records.length === 0" class="no-records"> <div v-if="!isEquipmentRunning(equipment)" class="no-records">
设备当前未运行 设备当前未运行
</div> </div>
</div> </div>
@ -62,15 +62,50 @@ const props = defineProps({
} }
}); });
//
const equipmentAxlesMap = {
'QB001': ['左边', '右边'],
'QB002': ['左边', '右边'],
'QB003': ['左边', '右边'],
'QB004': ['左1', '左2', '左3', '左4', '左5', '右1', '右2', '右3', '右4', '右5'],
'QB0042': ['左1', '左2', '左3', '左4', '左5', '右1', '右2', '右3', '右4', '右5'],
'QB005': ['左1', '左2', '左3', '左4', '左5', '左6', '右1', '右2', '右3', '右4', '右5', '右6'],
'QB007': ['左边', '右边'],
'QB008': ['左边', '右边'],
'QB009': ['左边', '右边'],
'QB010': ['左边', '右边'],
'QB011': ['左边', '右边'],
'QB012': ['左边', '右边'],
'QB013': ['左边', '右边'],
'QB014': ['左边', '右边'],
'QB015': ['左边', '右边'],
'QB016': ['左边', '右边'],
'QB017': ['左边', '右边'],
'QB018': ['左1', '左2', '右1', '右2'],
'QB019': ['左1', '左2', '右1', '右2'],
'QB020': ['左1', '左2', '右1', '右2'],
'QB024': ['左1', '左2', '左3', '左4', '右1', '右2', '右3', '右4'],
'QB025': ['左边', '右边'],
'QB026': ['左边', '右边'],
'QB027': ['左边', '右边'],
'QB028': ['左1', '左2', '右1', '右2'],
'QB029': ['左边', '右边'],
'QB030': ['左边', '右边'],
'QB031': ['左边', '右边'],
'QB032': ['左边', '右边'],
'QB033': ['左边', '右边'],
'QB034': ['左边', '右边']
};
// //
const sortedEquipmentData = computed(() => { const sortedEquipmentData = computed(() => {
// //
const equipmentCopy = [...props.equipmentData]; const equipmentCopy = [...props.equipmentData];
return equipmentCopy.sort((a, b) => { return equipmentCopy.sort((a, b) => {
// status_records // 使
const aIsRunning = a.status_records && a.status_records.length > 0; const aIsRunning = isEquipmentRunning(a);
const bIsRunning = b.status_records && b.status_records.length > 0; const bIsRunning = isEquipmentRunning(b);
// aba // aba
if (aIsRunning && !bIsRunning) return -1; if (aIsRunning && !bIsRunning) return -1;
@ -83,42 +118,155 @@ 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) {
//
const validAxles = equipmentAxlesMap[equipment.equipment_code] || [];
return validAxles.filter(axle => axle.includes('左') || axle.includes('left')).map(axleNumber => ({
axle_number: axleNumber,
specification: '',
model: '',
raw_wire_disc: '',
degree_of_completion: 0,
total_number: null,
total_net_weight: null,
total_gross_weight: null,
isRunning: false
}));
}
// //
const leftAxles = equipment.status_records.filter(record => { const validAxles = equipmentAxlesMap[equipment.equipment_code] || [];
const axle = record.axle_number; const validLeftAxles = validAxles.filter(axle =>
return axle.includes('左') || axle.includes('left'); axle.includes('左') || axle.includes('left')
}); );
//
const processedAxles = new Set();
const resultAxles = [];
//
for (const record of equipment.status_records) {
if (!record.axle_number) continue;
//
for (const axleNumber of validLeftAxles) {
if (record.axle_number.includes(axleNumber) && !processedAxles.has(axleNumber)) {
processedAxles.add(axleNumber);
resultAxles.push({
...record,
axle_number: axleNumber // 使
});
}
}
}
//
for (const axleNumber of validLeftAxles) {
if (!processedAxles.has(axleNumber)) {
resultAxles.push({
axle_number: axleNumber,
specification: '',
model: '',
raw_wire_disc: '',
degree_of_completion: 0,
total_number: null,
total_net_weight: null,
total_gross_weight: null,
isRunning: false
});
}
}
// 1, 2, 3... //
return leftAxles.sort((a, b) => { return resultAxles.sort((a, b) => {
// "1"1 const aIndex = validLeftAxles.indexOf(a.axle_number);
const aNum = extractAxleNumber(a.axle_number); const bIndex = validLeftAxles.indexOf(b.axle_number);
const bNum = extractAxleNumber(b.axle_number); return aIndex - bIndex;
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) {
//
const validAxles = equipmentAxlesMap[equipment.equipment_code] || [];
return validAxles.filter(axle => axle.includes('右') || axle.includes('right')).map(axleNumber => ({
axle_number: axleNumber,
specification: '',
model: '',
raw_wire_disc: '',
degree_of_completion: 0,
total_number: null,
total_net_weight: null,
total_gross_weight: null,
isRunning: false
}));
}
// //
const rightAxles = equipment.status_records.filter(record => { const validAxles = equipmentAxlesMap[equipment.equipment_code] || [];
const axle = record.axle_number; const validRightAxles = validAxles.filter(axle =>
return axle.includes('右') || axle.includes('right'); axle.includes('右') || axle.includes('right')
}); );
//
const processedAxles = new Set();
const resultAxles = [];
//
for (const record of equipment.status_records) {
if (!record.axle_number) continue;
//
for (const axleNumber of validRightAxles) {
if (record.axle_number.includes(axleNumber) && !processedAxles.has(axleNumber)) {
processedAxles.add(axleNumber);
resultAxles.push({
...record,
axle_number: axleNumber // 使
});
}
}
}
//
for (const axleNumber of validRightAxles) {
if (!processedAxles.has(axleNumber)) {
resultAxles.push({
axle_number: axleNumber,
specification: '',
model: '',
raw_wire_disc: '',
degree_of_completion: 0,
total_number: null,
total_net_weight: null,
total_gross_weight: null,
isRunning: false
});
}
}
// 1, 2, 3... //
return rightAxles.sort((a, b) => { return resultAxles.sort((a, b) => {
// "1"1 const aIndex = validRightAxles.indexOf(a.axle_number);
const aNum = extractAxleNumber(a.axle_number); const bIndex = validRightAxles.indexOf(b.axle_number);
const bNum = extractAxleNumber(b.axle_number); return aIndex - bIndex;
return aNum - bNum;
}); });
}; };
//
const isEquipmentRunning = (equipment) => {
if (!equipment.status_records || equipment.status_records.length === 0) return false;
//
const validAxles = equipmentAxlesMap[equipment.equipment_code] || [];
// status_records
return equipment.status_records.some(record =>
record.axle_number && validAxles.some(axle => record.axle_number.includes(axle))
);
};
// //
const extractAxleNumber = (axleStr) => { const extractAxleNumber = (axleStr) => {
if (!axleStr) return Infinity; if (!axleStr) return Infinity;
@ -318,4 +466,21 @@ const getCompletionClass = (degree) => {
color: #909399; color: #909399;
padding: 20px 0; padding: 20px 0;
} }
/* 不在运行的轴样式 */
.axle-item.not-running {
background-color: #f5f7fa;
opacity: 0.7;
border-color: #c0c4cc;
}
.axle-item.not-running::before {
background-color: #c0c4cc;
}
.not-running-label {
font-size: 12px;
color: #f56c6c;
font-weight: normal;
}
</style> </style>
Loading…
Cancel
Save