diff --git a/src/views/plan/RealTimeInventory.vue b/src/views/plan/RealTimeInventory.vue index 103b47d..4ac94aa 100644 --- a/src/views/plan/RealTimeInventory.vue +++ b/src/views/plan/RealTimeInventory.vue @@ -3,16 +3,36 @@

实时库存表

- - - - - +
+ 机台筛选: + + + + +
+
+ 库存增减: + + + + + +
{ - if (!records.value.length) { +const getFilteredRecords = (inputRecords = null) => { + const sourceRecords = inputRecords || records.value; + + if (!sourceRecords.length) { return []; } @@ -282,7 +308,7 @@ const getFilteredRecords = () => { .filter(diff => diff.difference > 0) .map(diff => `${diff.specification}-${diff.model}-${diff.wire_disc || ''}`) ); - return records.value.filter(record => { + return sourceRecords.filter(record => { const key = `${record.specification}-${record.model}-${record.wire_disc || ''}`; return increaseKeys.has(key); }); @@ -296,17 +322,23 @@ const getFilteredRecords = () => { .filter(diff => diff.difference < 0) .map(diff => `${diff.specification}-${diff.model}-${diff.wire_disc || ''}`) ); - return records.value.filter(record => { + return sourceRecords.filter(record => { const key = `${record.specification}-${record.model}-${record.wire_disc || ''}`; return decreaseKeys.has(key); }); case 'all': default: // 全部:返回所有记录 - return records.value; + return sourceRecords; } }; +// 方法:处理机台筛选条件变化 +const handleEquipmentFilterChange = () => { + console.log('机台筛选条件变化:', equipmentFilter.value); + // 这里可以直接在表格数据的计算属性中应用筛选逻辑 +}; + // 方法:处理筛选条件变化 const handleFilterChange = () => { console.log('筛选条件变化:', inventoryFilter.value); @@ -385,25 +417,37 @@ const dynamicColumns = computed(() => { // 计算属性:表格数据 const tableData = computed(() => { - console.log('计算表格数据, records.value:', records.value, 'inventoryFilter.value:', inventoryFilter.value); + console.log('计算表格数据, records.value:', records.value, 'inventoryFilter.value:', inventoryFilter.value, 'equipmentFilter.value:', equipmentFilter.value); + + // 应用机台筛选 + let filteredRecords = records.value; + if (equipmentFilter.value !== 'all') { + filteredRecords = filteredRecords.filter(record => { + // 检查该记录是否包含被筛选的机台 + const key = `${record.model}::${record.wire_disc || ''}::${record.specification}`; + return uidProductionStatusMap.value.has(key) && + uidProductionStatusMap.value.get(key).equipment_code === equipmentFilter.value; + }); + console.log('机台筛选后的记录数量:', filteredRecords.length); + } // 使用过滤后的记录 - const filteredRecords = getFilteredRecords(); - console.log('过滤后的记录数量:', filteredRecords.length); + const finalFilteredRecords = getFilteredRecords(filteredRecords); + console.log('最终过滤后的记录数量:', finalFilteredRecords.length); - if (!filteredRecords.length) { + if (!finalFilteredRecords.length) { console.log('过滤后的records为空,返回空数组'); return []; } // 获取所有唯一的规格并从小到大排序(可选数值排序) - const specifications = [...new Set(filteredRecords.map(item => item.specification))] + const specifications = [...new Set(finalFilteredRecords.map(item => item.specification))] .sort((a, b) => parseFloat(a) - parseFloat(b)); // 改为数值排序,避免 "0.800" 在前 console.log('获取到的规格列表:', specifications); // 获取所有唯一的 model::wire_disc 组合 - const combinations = [...new Set(filteredRecords.map(item => { + const combinations = [...new Set(finalFilteredRecords.map(item => { if (item.wire_disc && item.wire_disc.trim() !== '') { return `${item.model}::${item.wire_disc}`; } else { @@ -430,7 +474,7 @@ const tableData = computed(() => { } // 查找对应的记录 - const record = filteredRecords.find(r => { + const record = finalFilteredRecords.find(r => { const specMatch = r.specification === specification; const modelMatch = r.model === model; const wireDiscMatch = hasWireDisc @@ -536,6 +580,9 @@ const fetchUIDProductionStatus = async () => { const uniqueEquipmentCodes = [...new Set(uidProductionStatus.value.map(record => record.equipment_code))]; console.log('唯一设备代码:', uniqueEquipmentCodes); + // 更新机台筛选选项 + equipmentFilterOptions.value = uniqueEquipmentCodes.sort(); + // 为每个equipment_code分配颜色 uniqueEquipmentCodes.forEach((equipmentCode, index) => { equipmentColors.set(equipmentCode, generateLowSaturationColor(index));