feat(RealTimeInventory): 添加转移概率数据显示功能

在实时库存表格中显示转移概率数据,包括概率值和来源信息。新增方法检查目标规格单元格、获取转移概率数据并设置显示颜色,提升用户对生产流程转移情况的直观理解。
master
huangjinysf 2 months ago
parent 6e34b17b81
commit 5ca05cceab

@ -88,6 +88,22 @@
}"
></span>
</span>
<!-- 转移概率数据显示 -->
<div
v-if="getCellTransitionProbabilityData(scope.row.specification, column.prop)"
class="transition-probability-data"
style="margin-top: 4px; padding: 4px; background-color: rgba(255,255,255,0.1); border-radius: 3px; font-size: 11px;"
>
<div
:style="{
color: getProbabilityColorForDisplay(getCellTransitionProbabilityData(scope.row.specification, column.prop).probability, scope.row.specification, column.prop),
fontWeight: 'bold'
}"
>
{{ getCellTransitionProbabilityData(scope.row.specification, column.prop).displayText }}
</div>
</div>
</div>
</template>
<template #header>
@ -714,6 +730,92 @@ const getTransitionProbabilityTooltip = (specification, columnProp) => {
return tooltip.trim();
};
//
const isTargetSpecificationCell = (specification, columnProp) => {
const keyWithSpec = `${columnProp}::${specification}`;
//
for (const [sourceKey, sourceData] of transitionProbabilitiesMap.value.entries()) {
if (!activeCells.value.has(sourceKey)) continue;
const transitionData = sourceData;
if (!transitionData || !transitionData.current_specification_transitions) continue;
//
if (transitionData.current_specification_transitions.hasOwnProperty(specification)) {
return true;
}
}
return false;
};
//
const getCellTransitionProbabilityData = (specification, columnProp) => {
const keyWithSpec = `${columnProp}::${specification}`;
//
for (const [sourceKey, sourceData] of transitionProbabilitiesMap.value.entries()) {
if (!activeCells.value.has(sourceKey)) continue;
const transitionData = sourceData;
if (!transitionData || !transitionData.current_specification_transitions) continue;
//
if (transitionData.current_specification_transitions.hasOwnProperty(specification)) {
const targetData = transitionData.current_specification_transitions[specification];
const [sourceModel, sourceWireDisc] = sourceKey.split('::');
// modelwire_disc
const hasWireDisc = columnProp.includes('::');
let currentModel, currentWireDisc;
if (hasWireDisc) {
[currentModel, currentWireDisc] = columnProp.split('::');
} else {
currentModel = columnProp;
currentWireDisc = null;
}
// modelwire_disc
if (currentModel === sourceModel && currentWireDisc === sourceWireDisc) {
return {
...targetData,
displayText: `${sourceModel}${sourceWireDisc ? '-' + formatWireDisc(sourceWireDisc) : ''}: ${(targetData.probability * 100).toFixed(1)}%`
};
}
}
}
return null;
};
//
const getProbabilityColorForDisplay = (probability, specification, columnProp) => {
//
let baseColor = null;
for (const [sourceKey, sourceData] of transitionProbabilitiesMap.value.entries()) {
if (!activeCells.value.has(sourceKey)) continue;
const transitionData = sourceData;
if (!transitionData || !transitionData.current_specification_transitions) continue;
if (transitionData.current_specification_transitions.hasOwnProperty(specification)) {
// 使
if (uidProductionStatusMap.value.has(sourceKey)) {
const status = uidProductionStatusMap.value.get(sourceKey);
baseColor = status.equipment_color;
break;
}
}
}
// 使 getProbabilityColor
const intensity = probability; // probability 0-1
return getProbabilityColor(intensity, baseColor);
};
//
const getCellTooltip = (specification, columnProp) => {
// key

Loading…
Cancel
Save