diff --git a/src/views/modules/dashboard/robot-picking-board.vue b/src/views/modules/dashboard/robot-picking-board.vue
index 647c3b7..78d24d1 100644
--- a/src/views/modules/dashboard/robot-picking-board.vue
+++ b/src/views/modules/dashboard/robot-picking-board.vue
@@ -659,9 +659,9 @@ export default {
}
&.status-warning {
- background: linear-gradient(135deg, #f59e0b, #fbbf24);
+ background: linear-gradient(135deg, #10b981, #34d399);
color: #ffffff;
- box-shadow: 0 0 15px rgba(245, 158, 11, 0.5);
+ box-shadow: 0 0 15px rgba(16, 185, 129, 0.5);
}
&.status-pending {
diff --git a/src/views/modules/dashboard/warehouse-3d-board.vue b/src/views/modules/dashboard/warehouse-3d-board.vue
index 614a59a..40cf0d4 100644
--- a/src/views/modules/dashboard/warehouse-3d-board.vue
+++ b/src/views/modules/dashboard/warehouse-3d-board.vue
@@ -79,6 +79,38 @@
{{ taskData.inboundPercent }}%
+
+
+
+
+
+
📦
+
+
空托盘
+
{{ storageData.emptyPallet || 0 }}
+
+
+
@@ -104,7 +136,7 @@
{{ storageData.utilizationRate }}%
-
+
@@ -448,6 +480,9 @@ export default {
// 更新库位数据
if (message.data.storageData && Object.keys(message.data.storageData).length > 0) {
this.storageData = Object.assign({}, this.storageData, message.data.storageData)
+ this.storageData.emptyPallet = this.storageData.otherPallet
+ this.storageData.otherPallet = this.storageData.totalSlots-this.storageData.flatPallet-
+ this.storageData.guardPallet-this.storageData.steelPallet
// 重新初始化库位利用率图表
this.$nextTick(() => {
this.initStorageChart()
@@ -591,8 +626,8 @@ export default {
{
name: '库位类型',
type: 'pie',
- radius: ['45%', '70%'],
- center: ['35%', '50%'],
+ radius: ['30%', '70%'],
+ center: ['40%', '50%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 8,
@@ -664,7 +699,7 @@ export default {
},
{
value: this.storageData.otherPallet,
- name: '其他',
+ name: '可用库位数',
itemStyle: {
color: {
type: 'linear',
@@ -1512,28 +1547,28 @@ export default {
.task-summary {
.task-stats {
display: flex;
- gap: 16px;
- margin-bottom: 20px;
+ gap: 12px;
+ margin-bottom: 12px;
.stat-item {
flex: 1;
display: flex;
align-items: center;
- gap: 12px;
- padding: 16px;
+ gap: 10px;
+ padding: 10px 12px;
background: linear-gradient(135deg, rgba(0, 212, 255, 0.1) 0%, rgba(0, 132, 255, 0.1) 100%);
border: 1px solid rgba(0, 212, 255, 0.3);
- border-radius: 10px;
+ border-radius: 8px;
.stat-icon {
- width: 50px;
- height: 50px;
+ width: 40px;
+ height: 40px;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(135deg, #00d4ff, #0084ff);
- border-radius: 10px;
- font-size: 24px;
+ border-radius: 8px;
+ font-size: 20px;
color: #fff;
box-shadow: 0 4px 15px rgba(0, 212, 255, 0.4);
}
@@ -1542,13 +1577,13 @@ export default {
flex: 1;
.stat-label {
- font-size: 12px;
+ font-size: 11px;
color: #8ab8d6;
- margin-bottom: 6px;
+ margin-bottom: 4px;
}
.stat-value {
- font-size: 28px;
+ font-size: 22px;
font-weight: bold;
color: #00d4ff;
line-height: 1;
@@ -1556,9 +1591,9 @@ export default {
}
.stat-unit {
- font-size: 12px;
+ font-size: 11px;
color: #8ab8d6;
- margin-top: 4px;
+ margin-top: 3px;
}
}
}
@@ -1571,46 +1606,128 @@ export default {
.task-breakdown {
display: flex;
- gap: 12px;
+ gap: 10px;
+ margin-bottom: 10px;
.breakdown-item {
flex: 1;
- padding: 16px;
+ padding: 10px 12px;
background: rgba(25, 50, 85, 0.7);
border: 1px solid rgba(0, 212, 255, 0.2);
- border-radius: 8px;
+ border-radius: 6px;
display: flex;
flex-direction: column;
align-items: center;
- gap: 8px;
+ gap: 4px;
.item-icon {
- font-size: 32px;
- margin-bottom: 4px;
+ font-size: 24px;
+ margin-bottom: 2px;
}
.item-label {
- font-size: 13px;
+ font-size: 11px;
color: #8ab8d6;
}
.item-value {
- font-size: 24px;
+ font-size: 20px;
font-weight: bold;
color: #fff;
}
.item-percent {
- font-size: 12px;
+ font-size: 11px;
color: #00ff88;
}
&.outbound {
- border-top: 3px solid #00d4ff;
+ border-top: 2px solid #00d4ff;
}
&.inbound {
- border-top: 3px solid #00ff88;
+ border-top: 2px solid #00ff88;
+ }
+ }
+ }
+
+ /* 托盘数量统计样式 */
+ .pallet-statistics {
+ display: flex;
+ gap: 8px;
+
+ .pallet-item {
+ flex: 1;
+ padding: 6px 8px;
+ background: rgba(25, 50, 85, 0.5);
+ border: 1px solid rgba(0, 212, 255, 0.15);
+ border-radius: 4px;
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ transition: all 0.3s ease;
+
+ &:hover {
+ background: rgba(25, 50, 85, 0.8);
+ border-color: rgba(0, 212, 255, 0.4);
+ transform: translateY(-2px);
+ }
+
+ .pallet-icon {
+ font-size: 18px;
+ opacity: 0.9;
+ }
+
+ .pallet-info {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ gap: 2px;
+
+ .pallet-label {
+ font-size: 10px;
+ color: #8ab8d6;
+ letter-spacing: 0.3px;
+ }
+
+ .pallet-value {
+ font-size: 15px;
+ font-weight: bold;
+ color: #fff;
+ }
+ }
+
+ /* 不同托盘类型的边框颜色 */
+ &.flat {
+ border-left: 2px solid #00ff88;
+
+ .pallet-value {
+ color: #00ff88;
+ }
+ }
+
+ &.guard {
+ border-left: 2px solid #7b68ee;
+
+ .pallet-value {
+ color: #9370db;
+ }
+ }
+
+ &.steel {
+ border-left: 2px solid #00d4ff;
+
+ .pallet-value {
+ color: #00d4ff;
+ }
+ }
+
+ &.other {
+ border-left: 2px solid #ffd700;
+
+ .pallet-value {
+ color: #ffd700;
+ }
}
}
}