From 50641ac91c5f57f2f5a179768fc724d28d941230 Mon Sep 17 00:00:00 2001 From: huangjinysf Date: Wed, 24 Dec 2025 23:41:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=BD=AC=E7=A7=BB=E6=A6=82?= =?UTF-8?q?=E7=8E=87=E6=98=BE=E7=A4=BA=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=9F=A5=E7=9C=8B=E5=BD=93=E5=89=8D=E8=A7=84=E6=A0=BC?= =?UTF-8?q?=E5=88=B0=E5=85=B6=E4=BB=96=E8=A7=84=E6=A0=BC=E7=9A=84=E8=BD=AC?= =?UTF-8?q?=E7=A7=BB=E6=A6=82=E7=8E=87=E5=92=8C=E6=AC=A1=E6=95=B0=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=BE=E5=A4=87=E7=8A=B6=E6=80=81=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/api.js | 4 +- src/views/plan/EquipmentStatus.vue | 89 ++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 2 deletions(-) diff --git a/src/config/api.js b/src/config/api.js index b95cd24..374d7a4 100644 --- a/src/config/api.js +++ b/src/config/api.js @@ -1,8 +1,8 @@ // API配置文件 export const API_CONFIG = { // API服务器基础地址 - BASE_URL: 'http://192.168.110.38:8100', - // BASE_URL: 'http://localhost:8100', + // BASE_URL: 'http://192.168.110.38:8100', + BASE_URL: 'http://localhost:8100', // API端点 ENDPOINTS: { diff --git a/src/views/plan/EquipmentStatus.vue b/src/views/plan/EquipmentStatus.vue index c8463ae..e0a4d21 100644 --- a/src/views/plan/EquipmentStatus.vue +++ b/src/views/plan/EquipmentStatus.vue @@ -162,6 +162,18 @@ + + +
+
+
当前规格的转移概率
+
+
+ 到 {{ spec }}: + 概率 {{ (info.probability * 100).toFixed(2) }}%, 转移次数 {{ info.count }} +
+
+
@@ -526,6 +538,10 @@ const selectedCompletionLevel = ref('all'); // 默认显示全部 const productionScheduleData = ref(null); const productionScheduleLoading = ref(false); +// 转移概率相关状态 +const transitionProbabilitiesData = ref(null); +const transitionProbabilitiesLoading = ref(false); + // 可编辑的总轴数 const editableTotalQuantity = ref(0); @@ -555,6 +571,7 @@ const showAxleDetails = (record, equipmentCode) => { fetchHistoryData(record.model, record.specification, record.wire_disc); fetchProductionScheduleData(record.model, record.specification, record.wire_disc, equipmentCode, record.axle_number); fetchSalesData(record.model, record.specification); + fetchTransitionProbabilitiesData(equipmentCode, record.axle_number, record.model, record.specification, record.wire_disc); } else { hasHistoryData.value = false; } @@ -568,6 +585,8 @@ const showAxleDetails = (record, equipmentCode) => { // 关闭对话框 const handleClose = () => { dialogVisible.value = false; + // 重置转移概率数据 + transitionProbabilitiesData.value = null; // 销毁图表实例 if (totalNumberChart) { totalNumberChart.dispose(); @@ -781,6 +800,48 @@ const fetchProductionScheduleData = (model, specification, wireDisc, equipmentCo }); }; +// 获取转移概率数据 +const fetchTransitionProbabilitiesData = (equipmentCode, axleNumber, model, specification, wireDisc) => { + transitionProbabilitiesLoading.value = true; + + // 使用URL编码处理参数,特别是中文和特殊字符 + const params = new URLSearchParams({ + equipment_code: equipmentCode, + axle_number: axleNumber, + model: model, + specification: specification, + wire_disc: wireDisc + }); + + // 构建API URL + let apiUrl = `${API_CONFIG.BASE_URL}/api/plan/transition/probabilities?${params.toString()}`; + + console.log('转移概率API URL:', apiUrl); + + fetch(apiUrl) + .then(response => { + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`); + } + return response.json(); + }) + .then(data => { + console.log('转移概率API响应:', data); + if (data.code === 200 && data.data) { + transitionProbabilitiesData.value = data.data; + } else { + transitionProbabilitiesData.value = null; + } + }) + .catch(error => { + console.error('转移概率API调用失败:', error); + transitionProbabilitiesData.value = null; + }) + .finally(() => { + transitionProbabilitiesLoading.value = false; + }); +}; + // 计算小时轴数 = 总轴数 * 产速 / 每轴均重 const calculateAxlesPerHour = () => { if (!selectedAxle.value || !editableTotalQuantity.value || @@ -1627,6 +1688,34 @@ const updateCharts = () => { margin-right: 10px; } +/* 转移概率样式 */ +.transition-probabilities-loading { + height: 80px; + position: relative; +} + +.transition-probabilities-details { + margin-top: 15px; + border-top: 1px dashed #e4e7ed; + padding-top: 10px; +} + +.transition-probabilities-content { + background-color: #f8f9fa; + border-radius: 4px; + padding: 8px; + max-height: 150px; + overflow-y: auto; +} + +.transition-probability-item { + display: flex; + justify-content: space-between; + margin-bottom: 4px; + font-size: 12px; + line-height: 1.4; +} + .detail-label { min-width: 100px; font-weight: bold;