feat(实时库存): 添加库存变化筛选功能

在实时库存表中增加筛选功能,支持按全部、库存增加或库存减少三种条件筛选记录。当选择非全部选项时,会自动获取差值数据用于筛选,提升用户查看特定库存变化的效率。
master
huangjinysf 2 months ago
parent 24268d7d2b
commit e0896c336a

@ -3,6 +3,16 @@
<div class="table-header"> <div class="table-header">
<h3>实时库存表</h3> <h3>实时库存表</h3>
<div class="table-actions"> <div class="table-actions">
<el-select
v-model="inventoryFilter"
placeholder="选择筛选条件"
style="width: 120px; margin-right: 15px;"
@change="handleFilterChange"
>
<el-option label="全部" value="all" />
<el-option label="库存增加" value="increase" />
<el-option label="库存减少" value="decrease" />
</el-select>
<el-switch <el-switch
v-model="showDifference" v-model="showDifference"
active-text="显示库存变化" active-text="显示库存变化"
@ -199,6 +209,62 @@ const activeCells = ref(new Set()) // 存储当前激活的单元格键值
let clickTimeoutId = null; // let clickTimeoutId = null; //
const DBL_CLICK_DELAY = 250; // const DBL_CLICK_DELAY = 250; //
//
const inventoryFilter = ref('all'); // all-increase-decrease-
//
const getFilteredRecords = () => {
if (!records.value.length) {
return [];
}
switch (inventoryFilter.value) {
case 'increase':
//
if (!differenceRecords.value.length) {
return [];
}
const increaseKeys = new Set(
differenceRecords.value
.filter(diff => diff.difference > 0)
.map(diff => `${diff.specification}-${diff.model}-${diff.wire_disc || ''}`)
);
return records.value.filter(record => {
const key = `${record.specification}-${record.model}-${record.wire_disc || ''}`;
return increaseKeys.has(key);
});
case 'decrease':
//
if (!differenceRecords.value.length) {
return [];
}
const decreaseKeys = new Set(
differenceRecords.value
.filter(diff => diff.difference < 0)
.map(diff => `${diff.specification}-${diff.model}-${diff.wire_disc || ''}`)
);
return records.value.filter(record => {
const key = `${record.specification}-${record.model}-${record.wire_disc || ''}`;
return decreaseKeys.has(key);
});
case 'all':
default:
//
return records.value;
}
};
//
const handleFilterChange = () => {
console.log('筛选条件变化:', inventoryFilter.value);
// ""
if (inventoryFilter.value !== 'all' && !differenceRecords.value.length) {
console.log('需要获取差值数据以进行筛选');
fetchDifferenceData();
}
};
// WMS // WMS
const wmsDialogVisible = ref(false) const wmsDialogVisible = ref(false)
const currentWmsModel = ref('') const currentWmsModel = ref('')
@ -248,21 +314,25 @@ const dynamicColumns = computed(() => {
// //
const tableData = computed(() => { const tableData = computed(() => {
console.log('计算表格数据, records.value:', records.value); console.log('计算表格数据, records.value:', records.value, 'inventoryFilter.value:', inventoryFilter.value);
if (!records.value.length) { // 使
console.log('records为空返回空数组'); const filteredRecords = getFilteredRecords();
console.log('过滤后的记录数量:', filteredRecords.length);
if (!filteredRecords.length) {
console.log('过滤后的records为空返回空数组');
return []; return [];
} }
// //
const specifications = [...new Set(records.value.map(item => item.specification))] const specifications = [...new Set(filteredRecords.map(item => item.specification))]
.sort((a, b) => parseFloat(a) - parseFloat(b)); // "0.800" .sort((a, b) => parseFloat(a) - parseFloat(b)); // "0.800"
console.log('获取到的规格列表:', specifications); console.log('获取到的规格列表:', specifications);
// model::wire_disc // model::wire_disc
const combinations = [...new Set(records.value.map(item => { const combinations = [...new Set(filteredRecords.map(item => {
if (item.wire_disc && item.wire_disc.trim() !== '') { if (item.wire_disc && item.wire_disc.trim() !== '') {
return `${item.model}::${item.wire_disc}`; return `${item.model}::${item.wire_disc}`;
} else { } else {
@ -289,7 +359,7 @@ const tableData = computed(() => {
} }
// //
const record = records.value.find(r => { const record = filteredRecords.find(r => {
const specMatch = r.specification === specification; const specMatch = r.specification === specification;
const modelMatch = r.model === model; const modelMatch = r.model === model;
const wireDiscMatch = hasWireDisc const wireDiscMatch = hasWireDisc

Loading…
Cancel
Save