fix(RealTimeInventory): 添加单元格点击事件防抖处理

防止快速双击时同时触发单击和双击事件,通过设置延时器和清除机制来区分单击和双击操作
master
huangjinysf 2 months ago
parent 8d1c853226
commit 24268d7d2b

@ -195,6 +195,10 @@ const transitionProbabilitiesMap = ref(new Map()) // 存储转移概率数据
const transitionColorsMap = ref(new Map()) //
const activeCells = ref(new Set()) //
//
let clickTimeoutId = null; //
const DBL_CLICK_DELAY = 250; //
// WMS
const wmsDialogVisible = ref(false)
const currentWmsModel = ref('')
@ -892,129 +896,145 @@ const getDifferenceClass = (difference) => {
};
// -
// -
const handleCellClick = async (row, column, cell, event) => {
const cellValue = row[column.property];
//
if (!cellValue || cellValue === '-' || cellValue === null || cellValue === undefined) {
return;
}
//
if (column.property === 'specification' || column.property === 'total') {
return;
}
// modelwire_disc
const columnKey = column.property;
const hasWireDisc = columnKey.includes('::');
let model, wire_disc;
if (hasWireDisc) {
[model, wire_disc] = columnKey.split('::');
} else {
model = columnKey;
wire_disc = null;
//
if (clickTimeoutId) {
clearTimeout(clickTimeoutId);
clickTimeoutId = null;
}
//
const keyWithSpec = `${columnKey}::${row.specification}`;
//
clickTimeoutId = setTimeout(async () => {
const cellValue = row[column.property];
console.log('单击事件参数:', {
columnKey,
model,
wire_disc,
specification: row.specification,
keyWithSpec
});
//
if (!cellValue || cellValue === '-' || cellValue === null || cellValue === undefined) {
return;
}
//
if (activeCells.value.has(keyWithSpec)) {
//
activeCells.value.delete(keyWithSpec);
console.log(`单元格 ${keyWithSpec} 已取消激活,恢复原始颜色`);
ElMessage.info('已取消概率颜色显示');
return;
}
//
if (column.property === 'specification' || column.property === 'total') {
return;
}
//
if (activeCells.value.size > 0) {
console.log('取消所有之前激活的单元格:', Array.from(activeCells.value));
activeCells.value.clear();
}
// modelwire_disc
const columnKey = column.property;
const hasWireDisc = columnKey.includes('::');
let model, wire_disc;
//
let equipmentCode = 'QB002'; //
let axleNumber = '左边'; //
if (hasWireDisc) {
[model, wire_disc] = columnKey.split('::');
} else {
model = columnKey;
wire_disc = null;
}
if (uidProductionStatusMap.value.has(keyWithSpec)) {
const status = uidProductionStatusMap.value.get(keyWithSpec);
equipmentCode = status.equipment_code || 'QB002';
axleNumber = status.axle_number || '左边';
}
//
const keyWithSpec = `${columnKey}::${row.specification}`;
console.log('获取转移概率参数:', {
equipmentCode,
axleNumber,
model,
specification: row.specification,
wireDisc: formatWireDisc(wire_disc || '')
});
console.log('单击事件参数:', {
columnKey,
model,
wire_disc,
specification: row.specification,
keyWithSpec
});
//
if (transitionProbabilitiesMap.value.has(keyWithSpec)) {
console.log('该单元格的转移概率数据已存在,直接激活显示');
activeCells.value.add(keyWithSpec);
ElMessage.success('转移概率数据已显示');
return;
}
//
if (activeCells.value.has(keyWithSpec)) {
//
activeCells.value.delete(keyWithSpec);
console.log(`单元格 ${keyWithSpec} 已取消激活,恢复原始颜色`);
ElMessage.info('已取消概率颜色显示');
return;
}
//
const transitionData = await fetchTransitionProbabilities(
equipmentCode,
axleNumber,
model,
row.specification,
formatWireDisc(wire_disc || '')
);
//
if (activeCells.value.size > 0) {
console.log('取消所有之前激活的单元格:', Array.from(activeCells.value));
activeCells.value.clear();
}
if (transitionData && transitionData.current_specification_transitions) {
//
const transitionsKey = `${columnKey}::${row.specification}`;
transitionProbabilitiesMap.value.set(transitionsKey, transitionData);
//
let equipmentCode = 'QB002'; //
let axleNumber = '左边'; //
//
const probabilities = transitionData.current_specification_transitions;
const maxProbability = Math.max(...Object.values(probabilities).map(p => p.probability));
if (uidProductionStatusMap.value.has(keyWithSpec)) {
const status = uidProductionStatusMap.value.get(keyWithSpec);
equipmentCode = status.equipment_code || 'QB002';
axleNumber = status.axle_number || '左边';
}
Object.entries(probabilities).forEach(([targetSpec, data]) => {
const colorKey = `${transitionsKey}::${targetSpec}`;
const intensity = data.probability / maxProbability; // 0-1
console.log('获取转移概率参数:', {
equipmentCode,
axleNumber,
model,
specification: row.specification,
wireDisc: formatWireDisc(wire_disc || '')
});
//
const keyWithSpec = `${columnKey}::${row.specification}`;
let baseColor = null;
//
if (transitionProbabilitiesMap.value.has(keyWithSpec)) {
console.log('该单元格的转移概率数据已存在,直接激活显示');
activeCells.value.add(keyWithSpec);
ElMessage.success('转移概率数据已显示');
return;
}
if (uidProductionStatusMap.value.has(keyWithSpec)) {
const status = uidProductionStatusMap.value.get(keyWithSpec);
baseColor = status.equipment_color;
}
//
const transitionData = await fetchTransitionProbabilities(
equipmentCode,
axleNumber,
model,
row.specification,
formatWireDisc(wire_disc || '')
);
if (transitionData && transitionData.current_specification_transitions) {
//
const transitionsKey = `${columnKey}::${row.specification}`;
transitionProbabilitiesMap.value.set(transitionsKey, transitionData);
//
const probabilities = transitionData.current_specification_transitions;
const maxProbability = Math.max(...Object.values(probabilities).map(p => p.probability));
Object.entries(probabilities).forEach(([targetSpec, data]) => {
const colorKey = `${transitionsKey}::${targetSpec}`;
const intensity = data.probability / maxProbability; // 0-1
//
const keyWithSpec = `${columnKey}::${row.specification}`;
let baseColor = null;
if (uidProductionStatusMap.value.has(keyWithSpec)) {
const status = uidProductionStatusMap.value.get(keyWithSpec);
baseColor = status.equipment_color;
}
const color = getProbabilityColor(intensity, baseColor);
transitionColorsMap.value.set(colorKey, color);
});
const color = getProbabilityColor(intensity, baseColor);
transitionColorsMap.value.set(colorKey, color);
});
console.log('转移概率数据已存储:', transitionProbabilitiesMap.value);
console.log('概率颜色映射:', transitionColorsMap.value);
console.log('转移概率数据已存储:', transitionProbabilitiesMap.value);
console.log('概率颜色映射:', transitionColorsMap.value);
//
activeCells.value.add(keyWithSpec);
ElMessage.success('转移概率数据已加载并显示');
}
//
activeCells.value.add(keyWithSpec);
ElMessage.success('转移概率数据已加载并显示');
}
}, DBL_CLICK_DELAY);
};
// - WMS
const handleCellDblClick = (row, column, cell, event) => {
//
if (clickTimeoutId) {
clearTimeout(clickTimeoutId);
clickTimeoutId = null;
console.log('双击事件已清除单击延时器');
}
const cellValue = row[column.property];
//

Loading…
Cancel
Save