添加机台筛选功能,支持按设备代码过滤显示,优化筛选器布局为水平排列并增加间距

master
huangjinysf 2 months ago
parent 5675a2385a
commit 3d81bf16ee

@ -1,6 +1,7 @@
<template> <template>
<div class="equipment-status-container"> <div class="equipment-status-container">
<!-- 完成度筛选器 --> <!-- 筛选器容器 -->
<div class="filters-row">
<div class="filter-container"> <div class="filter-container">
<span class="filter-label">完成度筛选:</span> <span class="filter-label">完成度筛选:</span>
<el-select v-model="selectedCompletionLevel" @change="onCompletionLevelChange" placeholder="请选择完成度" style="width: 150px"> <el-select v-model="selectedCompletionLevel" @change="onCompletionLevelChange" placeholder="请选择完成度" style="width: 150px">
@ -12,6 +13,20 @@
</el-select> </el-select>
</div> </div>
<div class="filter-container">
<span class="filter-label">机台筛选:</span>
<el-select v-model="selectedEquipment" @change="onEquipmentChange" placeholder="请选择机台" style="width: 200px">
<el-option label="全部机台" value="all" />
<el-option
v-for="equipment in equipmentList"
:key="equipment.equipment_code"
:label="equipment.equipment_code"
:value="equipment.equipment_code"
/>
</el-select>
</div>
</div>
<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">
@ -260,10 +275,45 @@ const equipmentAxlesMap = {
'QB034': ['左边', '右边'] 'QB034': ['左边', '右边']
}; };
//
const selectedEquipment = ref('all');
//
const equipmentList = computed(() => {
//
const filteredEquipment = props.equipmentData.filter(equipment => {
//
if (!isEquipmentRunning(equipment)) return false;
//
if (selectedCompletionLevel.value === 'all') {
return true; //
}
//
const leftAxles = getLeftAxles(equipment);
const rightAxles = getRightAxles(equipment);
const allAxles = [...leftAxles, ...rightAxles];
//
return allAxles.some(axle => shouldShowAxle(axle.degree_of_completion));
});
//
return filteredEquipment.map(equipment => ({
equipment_code: equipment.equipment_code
}));
});
// //
const sortedEquipmentData = computed(() => { const sortedEquipmentData = computed(() => {
// //
const equipmentCopy = [...props.equipmentData]; let equipmentCopy = [...props.equipmentData];
//
if (selectedEquipment.value !== 'all') {
equipmentCopy = equipmentCopy.filter(equipment => equipment.equipment_code === selectedEquipment.value);
}
return equipmentCopy.sort((a, b) => { return equipmentCopy.sort((a, b) => {
// 使 // 使
@ -908,6 +958,11 @@ const onCompletionLevelChange = () => {
// shouldShowAxle // shouldShowAxle
}; };
//
const onEquipmentChange = () => {
// sortedEquipmentData
};
// //
const shouldShowAxle = (degree) => { const shouldShowAxle = (degree) => {
if (!degree) return false; if (!degree) return false;
@ -1575,9 +1630,17 @@ const updateCharts = () => {
font-weight: normal; font-weight: normal;
} }
/* 筛选器行样式 */
.filters-row {
display: flex;
gap: 20px;
margin-bottom: 20px;
align-items: center;
flex-wrap: wrap;
}
/* 筛选器样式 */ /* 筛选器样式 */
.filter-container { .filter-container {
margin-bottom: 20px;
display: flex; display: flex;
align-items: center; align-items: center;
} }

Loading…
Cancel
Save