From 462ec6b97c2a426038223c2345b04297b8cd050b Mon Sep 17 00:00:00 2001 From: huangjinysf Date: Sun, 4 Jan 2026 15:32:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(RealTimeInventory):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=A7=84=E6=A0=BC=E8=BD=AC=E7=A7=BB=E6=A6=82=E7=8E=87=E5=88=86?= =?UTF-8?q?=E6=9E=90=E8=A1=A8=E6=A0=BC=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在实时库存对话框中新增转移概率分析表格,展示当前规格转移到其他规格的概率数据 --- src/views/plan/RealTimeInventory.vue | 127 ++++++++++++++++++++++++++- 1 file changed, 125 insertions(+), 2 deletions(-) diff --git a/src/views/plan/RealTimeInventory.vue b/src/views/plan/RealTimeInventory.vue index 8abeaa0..3718c97 100644 --- a/src/views/plan/RealTimeInventory.vue +++ b/src/views/plan/RealTimeInventory.vue @@ -178,6 +178,58 @@
+ + +
+
+

转移概率分析 - {{ currentWmsModel }} - {{ currentWmsSpecification }}

+
+ +
+
+ 输入参数: + 设备: {{ currentDialogTransitionData.input_parameters.equipment_code }} | + 轴数: {{ currentDialogTransitionData.input_parameters.axle_number }} | + 当前规格: {{ currentDialogTransitionData.input_parameters.specification }} +
+
+ 预测: + 最可能转移至: {{ currentDialogTransitionData.prediction.most_likely_next_spec }} + ({{ (currentDialogTransitionData.prediction.probability * 100).toFixed(1) }}%) +
+
+ + + + + + + + + + + +
@@ -265,10 +317,28 @@ const handleFilterChange = () => { } }; +// 方法:获取转移概率表格数据 +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) // 图表相关状态 @@ -1097,8 +1167,8 @@ const handleCellClick = async (row, column, cell, event) => { }, DBL_CLICK_DELAY); }; -// 方法:处理单元格双击事件 - 显示WMS详情 -const handleCellDblClick = (row, column, cell, event) => { +// 方法:处理单元格双击事件 - 显示WMS详情和转移概率 +const handleCellDblClick = async (row, column, cell, event) => { // 清除单击事件的延时器,防止双击时触发单击逻辑 if (clickTimeoutId) { clearTimeout(clickTimeoutId); @@ -1151,6 +1221,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); + } }; // 获取销量数据 @@ -1706,6 +1826,9 @@ const handleDialogClose = () => { historyData.value = []; hasHistoryData.value = false; + // 清空当前对话框的转移概率数据 + currentDialogTransitionData.value = null; + // 移除窗口大小变化监听器 window.removeEventListener('resize', resizeInventoryChart); };