Compare commits

...

10 Commits

Author SHA1 Message Date
huangjinysf b38301a62a fix(表格): 修复表格交互问题并优化显示
修复RealTimeInventory表格双击事件中单元格值检查过于严格的问题,允许空字符串和'-'触发对话框。同时优化表格显示:
- 为RepairSummary表格的最近维修时间列添加排序功能
- 设置RealTimeInventory表格固定高度和最大高度
- 改进表头样式,使其固定并添加底部边框
- 添加调试日志帮助排查双击事件问题
- 将获取转移概率失败的错误提示改为警告级别
2 months ago
huangjinysf 3d986df030 feat(RealTimeInventory): 添加机台筛选功能并优化过滤逻辑
- 新增机台筛选下拉框及相关状态管理
- 修改过滤逻辑以支持机台和库存变化的组合筛选
- 从生产状态数据中提取机台选项并排序
2 months ago
huangjinysf c9c926e1cd refactor(RealTimeInventory): 调整库存历史图表和转移概率表格的显示顺序
调整组件内部结构,将转移概率表格移到库存历史图表之前,以优化页面布局和用户体验
2 months ago
huangjinysf 462ec6b97c feat(RealTimeInventory): 添加规格转移概率分析表格功能
在实时库存对话框中新增转移概率分析表格,展示当前规格转移到其他规格的概率数据
2 months ago
huangjinysf e0896c336a feat(实时库存): 添加库存变化筛选功能
在实时库存表中增加筛选功能,支持按全部、库存增加或库存减少三种条件筛选记录。当选择非全部选项时,会自动获取差值数据用于筛选,提升用户查看特定库存变化的效率。
2 months ago
huangjinysf 24268d7d2b fix(RealTimeInventory): 添加单元格点击事件防抖处理
防止快速双击时同时触发单击和双击事件,通过设置延时器和清除机制来区分单击和双击操作
2 months ago
huangjinysf 8d1c853226 feat(RealTimeInventory): 优化转移概率显示样式和颜色计算
添加新的背景颜色计算方法,将颜色样式从文字移动到容器,提高可读性
2 months ago
huangjinysf 5ca05cceab feat(RealTimeInventory): 添加转移概率数据显示功能
在实时库存表格中显示转移概率数据,包括概率值和来源信息。新增方法检查目标规格单元格、获取转移概率数据并设置显示颜色,提升用户对生产流程转移情况的直观理解。
2 months ago
huangjinysf 6e34b17b81 fix(RealTimeInventory): 修复单元格点击时未清除之前激活状态的问题
在单选模式下点击新单元格时,先清除所有之前激活的单元格状态
2 months ago
huangjinysf e6cfd5075e feat(RealTimeInventory): 添加单元格激活状态和概率颜色增强
- 引入activeCells状态管理激活单元格
- 增强getProbabilityColor方法支持基于基础颜色的概率着色
- 添加hexToRgb和rgbToHsl辅助函数
- 修改handleCellClick实现单元格激活/取消激活功能
2 months ago

@ -30,7 +30,7 @@
<el-table-column prop="equipment_name" label="设备名称" align="center" min-width="200" />
<el-table-column prop="record_count" label="维修次数" align="center" width="100" />
<el-table-column prop="first_apply_time" label="首次维修时间" align="center" min-width="180" />
<el-table-column prop="last_apply_time" label="最近维修时间" align="center" min-width="180" />
<el-table-column prop="last_apply_time" label="最近维修时间" align="center" min-width="180" sortable/>
<el-table-column label="距离上次维修天数" align="center" width="150">
<template #default="scope">
<el-tag

@ -3,6 +3,36 @@
<div class="table-header">
<h3>实时库存表</h3>
<div class="table-actions">
<div style="display: flex; align-items: center; margin-right: 15px;">
<span style="margin-right: 5px;">机台筛选:</span>
<el-select
v-model="equipmentFilter"
placeholder="选择机台"
style="width: 150px;"
@change="handleEquipmentFilterChange"
>
<el-option label="全部机台" value="all" />
<el-option
v-for="equipment in equipmentFilterOptions"
:key="equipment"
:label="equipment"
:value="equipment"
/>
</el-select>
</div>
<div style="display: flex; align-items: center; margin-right: 15px;">
<span style="margin-right: 5px;">库存增减:</span>
<el-select
v-model="inventoryFilter"
placeholder="选择筛选条件"
style="width: 120px;"
@change="handleFilterChange"
>
<el-option label="全部" value="all" />
<el-option label="库存增加" value="increase" />
<el-option label="库存减少" value="decrease" />
</el-select>
</div>
<el-switch
v-model="showDifference"
active-text="显示库存变化"
@ -27,6 +57,8 @@
:header-cell-style="{ backgroundColor: '#f5f7fa', color: '#606266' }"
empty-text="暂无数据"
:scrollbar-always-on="true"
height="1000"
:max-height="1000"
@cell-click="handleCellClick"
@cell-dblclick="handleCellDblClick"
>
@ -88,6 +120,20 @@
}"
></span>
</span>
<!-- 转移概率数据显示 -->
<div
v-if="getCellTransitionProbabilityData(scope.row.specification, column.prop)"
class="transition-probability-data"
style="margin-top: 4px; padding: 4px; border-radius: 3px; font-size: 11px;"
:style="{
backgroundColor: getProbabilityColorForDisplay(getCellTransitionProbabilityData(scope.row.specification, column.prop).probability, scope.row.specification, column.prop),
color: '#000000',
fontWeight: 'bold'
}"
>
{{ getCellTransitionProbabilityData(scope.row.specification, column.prop).displayText }}
</div>
</div>
</template>
<template #header>
@ -126,6 +172,58 @@
@data-loaded="onWmsDataLoaded"
/>
<!-- 转移概率表格 -->
<div v-if="currentDialogTransitionData && currentDialogTransitionData.current_specification_transitions" class="transition-probability-section" style="margin-top: 20px;">
<div class="section-header">
<h4>转移概率分析 - {{ currentWmsModel }} - {{ currentWmsSpecification }}</h4>
</div>
<div class="transition-info" style="margin-bottom: 15px; padding: 10px; background-color: #f5f7fa; border-radius: 4px; font-size: 14px;">
<div v-if="currentDialogTransitionData.input_parameters">
<strong>输入参数:</strong>
设备: {{ currentDialogTransitionData.input_parameters.equipment_code }} |
轴数: {{ currentDialogTransitionData.input_parameters.axle_number }} |
当前规格: {{ currentDialogTransitionData.input_parameters.specification }}
</div>
<div v-if="currentDialogTransitionData.prediction" style="margin-top: 5px;">
<strong>预测:</strong>
最可能转移至: {{ currentDialogTransitionData.prediction.most_likely_next_spec }}
({{ (currentDialogTransitionData.prediction.probability * 100).toFixed(1) }}%)
</div>
</div>
<el-table
:data="getTransitionProbabilityTableData()"
style="width: 100%; margin-top: 10px;"
border
size="small"
>
<el-table-column prop="targetSpec" label="目标规格" width="100" />
<el-table-column prop="probability" label="转移概率" width="120">
<template #default="scope">
<span>{{ (scope.row.probability * 100).toFixed(1) }}%</span>
</template>
</el-table-column>
<el-table-column prop="count" label="历史次数" width="100" />
<el-table-column prop="percentage" label="占比" width="150">
<template #default="scope">
<div style="display: flex; align-items: center;">
<div
:style="{
width: (scope.row.probability * 100).toFixed(1) + '%',
height: '20px',
backgroundColor: getProbabilityColor(scope.row.probability, '#409EFF'),
marginRight: '8px',
borderRadius: '2px'
}"
></div>
<span>{{ (scope.row.probability * 100).toFixed(1) }}%</span>
</div>
</template>
</el-table-column>
</el-table>
</div>
<!-- 库存历史图表 -->
<div v-if="wmsDialogVisible" class="inventory-chart-section">
<div class="chart-header">
@ -154,6 +252,7 @@
</div>
<div v-show="!historyChartLoading && hasHistoryData" ref="inventoryChartRef" class="chart" style="height: 450px;"></div>
</div>
</el-dialog>
</div>
</template>
@ -179,11 +278,102 @@ const equipmentCodeColors = ref(new Map()) // equipment_code到颜色的映射
//
const transitionProbabilitiesMap = ref(new Map()) //
const transitionColorsMap = ref(new Map()) //
const activeCells = ref(new Set()) //
//
let clickTimeoutId = null; //
const DBL_CLICK_DELAY = 250; //
//
const inventoryFilter = ref('all'); // all-increase-decrease-
const equipmentFilter = ref('all'); // all-equipment_code
//
const equipmentFilterOptions = ref([]);
//
const getFilteredRecords = (inputRecords = null) => {
const sourceRecords = inputRecords || records.value;
if (!sourceRecords.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 sourceRecords.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 sourceRecords.filter(record => {
const key = `${record.specification}-${record.model}-${record.wire_disc || ''}`;
return decreaseKeys.has(key);
});
case 'all':
default:
//
return sourceRecords;
}
};
//
const handleEquipmentFilterChange = () => {
console.log('机台筛选条件变化:', equipmentFilter.value);
//
};
//
const handleFilterChange = () => {
console.log('筛选条件变化:', inventoryFilter.value);
// ""
if (inventoryFilter.value !== 'all' && !differenceRecords.value.length) {
console.log('需要获取差值数据以进行筛选');
fetchDifferenceData();
}
};
//
const getTransitionProbabilityTableData = () => {
if (!currentDialogTransitionData.value || !currentDialogTransitionData.value.current_specification_transitions) {
return [];
}
const transitions = currentDialogTransitionData.value.current_specification_transitions;
return Object.entries(transitions).map(([targetSpec, data]) => ({
targetSpec,
probability: data.probability,
count: data.count
})).sort((a, b) => b.probability - a.probability); //
};
// WMS
const wmsDialogVisible = ref(false)
const currentWmsModel = ref('')
const currentWmsSpecification = ref('')
//
const currentDialogTransitionData = ref(null)
const wmsTableRef = ref(null)
//
@ -229,21 +419,37 @@ const dynamicColumns = computed(() => {
//
const tableData = computed(() => {
console.log('计算表格数据, records.value:', records.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 finalFilteredRecords = getFilteredRecords(filteredRecords);
console.log('最终过滤后的记录数量:', finalFilteredRecords.length);
if (!records.value.length) {
console.log('records为空返回空数组');
if (!finalFilteredRecords.length) {
console.log('过滤后的records为空返回空数组');
return [];
}
//
const specifications = [...new Set(records.value.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(records.value.map(item => {
const combinations = [...new Set(finalFilteredRecords.map(item => {
if (item.wire_disc && item.wire_disc.trim() !== '') {
return `${item.model}::${item.wire_disc}`;
} else {
@ -270,7 +476,7 @@ const tableData = computed(() => {
}
//
const record = records.value.find(r => {
const record = finalFilteredRecords.find(r => {
const specMatch = r.specification === specification;
const modelMatch = r.model === model;
const wireDiscMatch = hasWireDisc
@ -376,6 +582,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));
@ -467,7 +676,7 @@ const fetchTransitionProbabilities = async (equipmentCode, axleNumber, model, sp
}
} else {
console.error('获取转移概率数据失败:', result.code, result.message);
ElMessage.error(`获取转移概率数据失败: ${result.message || '未知错误'}`);
ElMessage.warning(`获取转移概率数据失败: ${result.message || '未知错误'}`);
return null;
}
} catch (error) {
@ -529,14 +738,106 @@ const generateLowSaturationColor = (index) => {
return lowSaturationColors[index % lowSaturationColors.length];
};
//
const getProbabilityColor = (intensity) => {
//
const getProbabilityBackgroundColor = (intensity, baseColor) => {
// intensity 0-1
// baseColor
// 使
if (!baseColor) {
const hue = 220; //
const saturation = Math.round(50 + intensity * 50); // 50% 100%
const lightness = Math.round(85 - intensity * 50); // 85% 35%
return `hsl(${hue}, ${saturation}%, ${lightness}%)`;
}
// HSL
const rgb = hexToRgb(baseColor);
if (!rgb) {
const hue = 220;
const saturation = Math.round(50 + intensity * 50);
const lightness = Math.round(85 - intensity * 50);
return `hsl(${hue}, ${saturation}%, ${lightness}%)`;
}
const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);
//
const saturation = Math.min(hsl.s + intensity * 0.6, 1); // 60%
const lightness = Math.max(hsl.l - intensity * 0.4, 0.2); // 20%
return `hsl(${hsl.h}, ${Math.round(saturation * 100)}%, ${Math.round(lightness * 100)}%)`;
};
// getProbabilityColor
const getProbabilityColor = (intensity, baseColor) => {
// intensity 0-1
// baseColor
// 退
if (!baseColor) {
const hue = 220; //
const saturation = Math.round(30 + intensity * 70); // 30% 100%
const lightness = Math.round(85 - intensity * 30); // 85% 55%
return `hsl(${hue}, ${saturation}%, ${lightness}%)`;
}
// HSL
const rgb = hexToRgb(baseColor);
if (!rgb) {
// 使
const hue = 220;
const saturation = Math.round(30 + intensity * 70);
const lightness = Math.round(85 - intensity * 30);
return `hsl(${hue}, ${saturation}%, ${lightness}%)`;
}
const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);
//
const saturation = Math.min(hsl.s + intensity * 0.4, 1); // 40%
const lightness = Math.max(hsl.l - intensity * 0.2, 0.1); // 10%
return `hsl(${hsl.h}, ${Math.round(saturation * 100)}%, ${Math.round(lightness * 100)}%)`;
};
// RGB
const hexToRgb = (hex) => {
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
};
// RGBHSL
const rgbToHsl = (r, g, b) => {
r /= 255;
g /= 255;
b /= 255;
const max = Math.max(r, g, b);
const min = Math.min(r, g, b);
let h, s, l = (max + min) / 2;
if (max === min) {
h = s = 0; // achromatic
} else {
const d = max - min;
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
switch (max) {
case r: h = (g - b) / d + (g < b ? 6 : 0); break;
case g: h = (b - r) / d + 2; break;
case b: h = (r - g) / d + 4; break;
}
h /= 6;
}
return {
h: Math.round(h * 360),
s: s,
l: l
};
};
// wight_completion
@ -594,7 +895,9 @@ const getEquipmentCodeColor = (specification, columnProp) => {
// key
const keyWithSpec = `${columnProp}::${specification}`;
//
//
if (activeCells.value.has(keyWithSpec)) {
//
if (transitionProbabilitiesMap.value.has(keyWithSpec)) {
const transitionData = transitionProbabilitiesMap.value.get(keyWithSpec);
if (transitionData && transitionData.prediction && transitionData.prediction.most_likely_next_spec) {
@ -605,13 +908,14 @@ const getEquipmentCodeColor = (specification, columnProp) => {
const colorKey = `${keyWithSpec}::${mostLikelySpec}`;
if (transitionColorsMap.value.has(colorKey)) {
const baseColor = transitionColorsMap.value.get(colorKey);
console.log(`单元格 ${keyWithSpec} 应用转移概率颜色: ${baseColor}, 概率: ${(probability * 100).toFixed(1)}%`);
console.log(`激活单元格 ${keyWithSpec} 应用转移概率颜色: ${baseColor}, 概率: ${(probability * 100).toFixed(1)}%`);
return baseColor;
}
}
}
}
// 退
// 退
if (!uidProductionStatusMap.value.has(keyWithSpec)) {
return null;
}
@ -649,6 +953,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;
}
}
}
// 使
const intensity = probability; // probability 0-1
return getProbabilityBackgroundColor(intensity, baseColor);
};
//
const getCellTooltip = (specification, columnProp) => {
// key
@ -696,7 +1086,16 @@ const getDifferenceClass = (difference) => {
};
// -
// -
const handleCellClick = async (row, column, cell, event) => {
//
if (clickTimeoutId) {
clearTimeout(clickTimeoutId);
clickTimeoutId = null;
}
//
clickTimeoutId = setTimeout(async () => {
const cellValue = row[column.property];
//
@ -721,15 +1120,33 @@ const handleCellClick = async (row, column, cell, event) => {
wire_disc = null;
}
//
const keyWithSpec = `${columnKey}::${row.specification}`;
console.log('单击事件参数:', {
columnKey,
model,
wire_disc,
specification: row.specification
specification: row.specification,
keyWithSpec
});
//
if (activeCells.value.has(keyWithSpec)) {
//
activeCells.value.delete(keyWithSpec);
console.log(`单元格 ${keyWithSpec} 已取消激活,恢复原始颜色`);
ElMessage.info('已取消概率颜色显示');
return;
}
//
if (activeCells.value.size > 0) {
console.log('取消所有之前激活的单元格:', Array.from(activeCells.value));
activeCells.value.clear();
}
//
const keyWithSpec = `${columnKey}::${row.specification}`;
let equipmentCode = 'QB002'; //
let axleNumber = '左边'; //
@ -749,7 +1166,9 @@ const handleCellClick = async (row, column, cell, event) => {
//
if (transitionProbabilitiesMap.value.has(keyWithSpec)) {
console.log('该单元格的转移概率数据已存在跳过API调用');
console.log('该单元格的转移概率数据已存在,直接激活显示');
activeCells.value.add(keyWithSpec);
ElMessage.success('转移概率数据已显示');
return;
}
@ -774,27 +1193,59 @@ const handleCellClick = async (row, column, cell, event) => {
Object.entries(probabilities).forEach(([targetSpec, data]) => {
const colorKey = `${transitionsKey}::${targetSpec}`;
const intensity = data.probability / maxProbability; // 0-1
const color = getProbabilityColor(intensity);
//
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);
});
console.log('转移概率数据已存储:', transitionProbabilitiesMap.value);
console.log('概率颜色映射:', transitionColorsMap.value);
ElMessage.success('转移概率数据已加载');
//
activeCells.value.add(keyWithSpec);
ElMessage.success('转移概率数据已加载并显示');
}
}, DBL_CLICK_DELAY);
};
// - WMS
const handleCellDblClick = (row, column, cell, event) => {
// - WMS
const handleCellDblClick = async (row, column, cell, event) => {
//
if (clickTimeoutId) {
clearTimeout(clickTimeoutId);
clickTimeoutId = null;
console.log('双击事件已清除单击延时器');
}
//
console.log('双击事件触发:', {
row,
column,
columnProperty: column.property,
cellValue: row[column.property],
cellValueType: typeof row[column.property]
});
const cellValue = row[column.property];
//
if (!cellValue || cellValue === '-' || cellValue === null || cellValue === undefined) {
//
if (cellValue === null || cellValue === undefined) {
ElMessage.warning('该单元格暂无数据');
return;
}
// '-'
console.log('单元格值检查通过,继续执行');
// WMS
if (column.property === 'specification' || column.property === 'total') {
ElMessage.info('该列不支持查看详情');
@ -833,6 +1284,56 @@ const handleCellDblClick = (row, column, cell, event) => {
//
fetchInventoryHistoryData(model, row.specification, wire_disc);
//
const keyWithSpec = `${columnKey}::${row.specification}`;
//
let equipmentCode = 'QB002'; //
let axleNumber = '左边'; //
if (uidProductionStatusMap.value.has(keyWithSpec)) {
const status = uidProductionStatusMap.value.get(keyWithSpec);
equipmentCode = status.equipment_code || 'QB002';
axleNumber = status.axle_number || '左边';
}
console.log('双击事件获取转移概率参数:', {
equipmentCode,
axleNumber,
model,
specification: row.specification,
wireDisc: formatWireDisc(wire_disc || '')
});
//
if (transitionProbabilitiesMap.value.has(keyWithSpec)) {
console.log('双击事件:该单元格的转移概率数据已存在');
return;
}
//
try {
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);
//
currentDialogTransitionData.value = transitionData;
console.log('双击事件:转移概率数据已存储到对话框表格:', transitionData);
}
} catch (error) {
console.error('双击事件:获取转移概率数据失败:', error);
}
};
//
@ -1388,6 +1889,9 @@ const handleDialogClose = () => {
historyData.value = [];
hasHistoryData.value = false;
//
currentDialogTransitionData.value = null;
//
window.removeEventListener('resize', resizeInventoryChart);
};
@ -1451,6 +1955,10 @@ onMounted(() => {
white-space: nowrap;
text-align: center; /* 可选:居中对齐列头 */
padding: 8px 0; /* 调整列头内间距,以适应两行显示 */
position: sticky;
top: 0;
z-index: 10;
border-bottom: 2px solid #dcdfe6;
}
:deep(.el-table td) {

Loading…
Cancel
Save