|
|
@ -138,10 +138,10 @@ |
|
|
</div> |
|
|
</div> |
|
|
<div class="summary-item"> |
|
|
<div class="summary-item"> |
|
|
<span class="summary-label">已使用</span> |
|
|
<span class="summary-label">已使用</span> |
|
|
<span class="summary-value used">{{ storageData.usedSlots }}</span> |
|
|
|
|
|
|
|
|
<span class="summary-value rate">{{ storageData.usedSlots }}</span> |
|
|
</div> |
|
|
</div> |
|
|
<div class="summary-item"> |
|
|
<div class="summary-item"> |
|
|
<span class="summary-label">利用率</span> |
|
|
|
|
|
|
|
|
<span class="summary-label">利用率(包含空托盘)</span> |
|
|
<span class="summary-value rate">{{ storageData.utilizationRate }}%</span> |
|
|
<span class="summary-value rate">{{ storageData.utilizationRate }}%</span> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
@ -221,8 +221,8 @@ |
|
|
<div class="panel-card inventory-trend"> |
|
|
<div class="panel-card inventory-trend"> |
|
|
<div class="card-header"> |
|
|
<div class="card-header"> |
|
|
<div class="header-icon"></div> |
|
|
<div class="header-icon"></div> |
|
|
<span class="header-title">原材料库存量趋势</span> |
|
|
|
|
|
<span class="header-subtitle">Raw Material Inventory Trend</span> |
|
|
|
|
|
|
|
|
<span class="header-title">原材料库存(M²)</span> |
|
|
|
|
|
<span class="header-subtitle">Raw Material Inventory</span> |
|
|
</div> |
|
|
</div> |
|
|
<div class="card-body"> |
|
|
<div class="card-body"> |
|
|
<div id="finishedGoodsTrendChart" class="chart-container"></div> |
|
|
<div id="finishedGoodsTrendChart" class="chart-container"></div> |
|
|
@ -233,8 +233,8 @@ |
|
|
<div class="panel-card inventory-trend"> |
|
|
<div class="panel-card inventory-trend"> |
|
|
<div class="card-header"> |
|
|
<div class="card-header"> |
|
|
<div class="header-icon"></div> |
|
|
<div class="header-icon"></div> |
|
|
<span class="header-title">规格料库存量趋势</span> |
|
|
|
|
|
<span class="header-subtitle">Specified Materials Inventory Trend</span> |
|
|
|
|
|
|
|
|
<span class="header-title">规格料库存(M)</span> |
|
|
|
|
|
<span class="header-subtitle">Specified Materials Inventory</span> |
|
|
</div> |
|
|
</div> |
|
|
<div class="card-body"> |
|
|
<div class="card-body"> |
|
|
<div id="rawMaterialTrendChart" class="chart-container"></div> |
|
|
<div id="rawMaterialTrendChart" class="chart-container"></div> |
|
|
@ -245,8 +245,8 @@ |
|
|
<div class="panel-card stagnant-analysis"> |
|
|
<div class="panel-card stagnant-analysis"> |
|
|
<div class="card-header"> |
|
|
<div class="card-header"> |
|
|
<div class="header-icon"></div> |
|
|
<div class="header-icon"></div> |
|
|
<span class="header-title">产成品库存趋势</span> |
|
|
|
|
|
<span class="header-subtitle">Finished Goods Inventory Trend</span> |
|
|
|
|
|
|
|
|
<span class="header-title">产成品库存(PCS)</span> |
|
|
|
|
|
<span class="header-subtitle">Finished Goods Inventory</span> |
|
|
</div> |
|
|
</div> |
|
|
<div class="card-body"> |
|
|
<div class="card-body"> |
|
|
<div id="stagnantChart" class="chart-container"></div> |
|
|
<div id="stagnantChart" class="chart-container"></div> |
|
|
@ -333,8 +333,8 @@ export default { |
|
|
|
|
|
|
|
|
// 机器人数据 |
|
|
// 机器人数据 |
|
|
robotData: [ |
|
|
robotData: [ |
|
|
{ id: 1, name: '机器人#1', status: 'working', statusText: '工作中', efficiency: 95, tasks: 2 }, |
|
|
|
|
|
{ id: 2, name: '机器人#2', status: 'working', statusText: '工作中', efficiency: 92, tasks: 4 } |
|
|
|
|
|
|
|
|
{ id: 1, name: '机械臂#1', status: 'working', statusText: '工作中', efficiency: 95, tasks: 1 }, |
|
|
|
|
|
{ id: 2, name: '机械臂#2', status: 'working', statusText: '工作中', efficiency: 92, tasks: 1 } |
|
|
], |
|
|
], |
|
|
|
|
|
|
|
|
// AGV数据(从TUSK系统实时获取) |
|
|
// AGV数据(从TUSK系统实时获取) |
|
|
@ -388,7 +388,7 @@ export default { |
|
|
mounted() { |
|
|
mounted() { |
|
|
// 初始化时间显示 |
|
|
// 初始化时间显示 |
|
|
this.currentTime = '等待服务器时间同步...' |
|
|
this.currentTime = '等待服务器时间同步...' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 启动时钟定时器(每秒更新) |
|
|
// 启动时钟定时器(每秒更新) |
|
|
this.timeInterval = setInterval(() => { |
|
|
this.timeInterval = setInterval(() => { |
|
|
this.updateTime() |
|
|
this.updateTime() |
|
|
@ -480,7 +480,7 @@ export default { |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 更新服务器时间偏移量 |
|
|
* 更新服务器时间偏移量 |
|
|
* |
|
|
|
|
|
|
|
|
* |
|
|
* @param {string} serverTimeString - 服务器时间字符串 |
|
|
* @param {string} serverTimeString - 服务器时间字符串 |
|
|
*/ |
|
|
*/ |
|
|
updateServerTimeOffset(serverTimeString) { |
|
|
updateServerTimeOffset(serverTimeString) { |
|
|
@ -489,7 +489,7 @@ export default { |
|
|
const timeStr = serverTimeString.split(' ')[0] + ' ' + serverTimeString.split(' ')[1] |
|
|
const timeStr = serverTimeString.split(' ')[0] + ' ' + serverTimeString.split(' ')[1] |
|
|
const serverTime = new Date(timeStr).getTime() |
|
|
const serverTime = new Date(timeStr).getTime() |
|
|
const localTime = new Date().getTime() |
|
|
const localTime = new Date().getTime() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!isNaN(serverTime)) { |
|
|
if (!isNaN(serverTime)) { |
|
|
this.serverTimeOffset = serverTime - localTime |
|
|
this.serverTimeOffset = serverTime - localTime |
|
|
console.log('服务器时间偏移量更新:', this.serverTimeOffset, 'ms') |
|
|
console.log('服务器时间偏移量更新:', this.serverTimeOffset, 'ms') |
|
|
@ -498,7 +498,7 @@ export default { |
|
|
console.warn('解析服务器时间失败:', error) |
|
|
console.warn('解析服务器时间失败:', error) |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 更新时间显示(使用服务器时间偏移量) |
|
|
* 更新时间显示(使用服务器时间偏移量) |
|
|
*/ |
|
|
*/ |
|
|
@ -564,7 +564,7 @@ export default { |
|
|
handleWebSocketMessage(message) { |
|
|
handleWebSocketMessage(message) { |
|
|
if (message && message.code === 0) { |
|
|
if (message && message.code === 0) { |
|
|
console.log('[智能立体仓库看板] 收到WebSocket推送数据:', message.data) |
|
|
console.log('[智能立体仓库看板] 收到WebSocket推送数据:', message.data) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 更新服务器时间偏移量 |
|
|
// 更新服务器时间偏移量 |
|
|
if (message.serverTime) { |
|
|
if (message.serverTime) { |
|
|
this.updateServerTimeOffset(message.serverTime) |
|
|
this.updateServerTimeOffset(message.serverTime) |
|
|
|