|
|
|
|
@ -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('::');
|
|
|
|
|
|
|
|
|
|
// 从列属性中提取当前单元格的model和wire_disc
|
|
|
|
|
const hasWireDisc = columnProp.includes('::');
|
|
|
|
|
let currentModel, currentWireDisc;
|
|
|
|
|
|
|
|
|
|
if (hasWireDisc) {
|
|
|
|
|
[currentModel, currentWireDisc] = columnProp.split('::');
|
|
|
|
|
} else {
|
|
|
|
|
currentModel = columnProp;
|
|
|
|
|
currentWireDisc = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 如果当前单元格的model和wire_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
|
|
|
|
|
|