@@ -124,7 +124,7 @@ export default {
padding: 15px;
background: #e8e8e8;
border-bottom: 1px solid #d4d4d4;
-
+
h3 {
margin: 0;
font-size: 16px;
@@ -137,23 +137,23 @@ export default {
border-right: none;
flex: 1;
overflow: hidden;
-
+
::v-deep .el-menu-item {
height: 48px;
line-height: 48px;
font-size: 13px;
color: #666;
-
+
&.is-active {
background-color: #f0f0f0;
color: #333;
border-right: 2px solid #999;
}
-
+
&:hover {
background-color: #f5f5f5;
}
-
+
i {
margin-right: 8px;
font-size: 14px;
@@ -177,4 +177,4 @@ export default {
display: flex;
flex-direction: column;
}
-
\ No newline at end of file
+
diff --git a/src/views/l2/track/components/LatestSetValues.vue b/src/views/l2/track/components/LatestSetValues.vue
new file mode 100644
index 0000000..5b3702b
--- /dev/null
+++ b/src/views/l2/track/components/LatestSetValues.vue
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
未设定
+
+ {{ it.key }}
+ {{ it.val }}
+
+
+
+
+
+
未设定
+
+ {{ it.key }}
+ {{ it.val }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/l2/track/rect.vue b/src/views/l2/track/rect.vue
index 585a109..442da82 100644
--- a/src/views/l2/track/rect.vue
+++ b/src/views/l2/track/rect.vue
@@ -1,2510 +1,2566 @@
-
-
-
-
-
-
-
- Loading...
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.label }}:
- {{ item.value }}
-
-
-
-
-
{{ device.positionNameCn }}
-
{{ device.positionNameEn }}
-
-
- {{ getDeviceStatus(device.positionNameEn) }}
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ Loading...
+
-
-
-
-
-
-
- {{ item.label }}:
- {{ item.value }}
-
-
-
-
-
{{ device.positionNameCn }}
-
{{ device.positionNameEn }}
-
-
- {{ getDeviceStatus(device.positionNameEn) }}
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.label }}:
- {{ item.value }}
-
-
-
-
-
{{ device.positionNameCn }}
-
{{ device.positionNameEn }}
-
-
- {{ getDeviceStatus(device.positionNameEn) }}
-
-
-
-
-
-
-
-
-
-
-
- {{ item.label }}:
- {{ item.value }}
-
-
-
-
-
{{ device.positionNameCn }}
-
{{ device.positionNameEn }}
-
-
- {{ getDeviceStatus(device.positionNameEn) }}
-
-
-
-
-
-
-
-
-
-
-
-
-
{{ device.positionNameCn }}
-
{{ device.positionNameEn }}
-
-
- {{ getDeviceStatus(device.positionNameEn) }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Production Plan
-
-
-
-
-
-
-
-
{{ index + 1 }}
-
-
Plan ID: {{ plan.planid || '-' }}
-
-
Coil ID: {{ plan.coilid || '-' }}
-
-
-
{{ getPlanStatusText(plan.status) }}
-
-
- Steel Grade: {{ plan.steelGrade || '-' }}
-
- Sequence: {{ plan.seqid || '-' }}
-
-
-
-
-
-
-
-
-
- Plan Detail
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
Current Position
-
-
{{ selectedPlanPosition.positionNameCn }}
-
{{ selectedPlanPosition.positionNameEn }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Furnace Setup
+ Drive Setup
+
+
+
+
+
+
+
+
+
+ {{ item.label }}:
+ {{ item.value }}
-
-
- {{ selectedPlan.planid || '-' }}
-
- {{ selectedPlan.coilid || '-' }}
-
- {{ selectedPlan.seqid || '-' }}
-
-
-
-
- {{ getPlanStatusText(selectedPlan.status) }}
-
-
- {{ selectedPlan.steelGrade || '-' }}
-
-
-
- {{ selectedPlan.entryThick ? selectedPlan.entryThick + ' mm' : '-' }}
-
-
-
- {{ selectedPlan.entryWidth ? selectedPlan.entryWidth + ' mm' : '-' }}
-
-
-
- {{ selectedPlan.entryWeight ? selectedPlan.entryWeight + ' t' : '-' }}
-
-
-
- {{ selectedPlan.entryLength ? selectedPlan.entryLength + ' mm' : '-' }}
-
- {{ selectedPlan.orderNo || '-' }}
-
- {{ selectedPlan.unitCode || '-' }}
-
- {{ selectedPlan.planType || '-' }}
-
-
-
-
-
-
Time Information
-
+
+
+
{{ device.positionNameCn }}
+
{{ device.positionNameEn }}
+
+
+ {{ getDeviceStatus(device.positionNameEn) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}:
+ {{ item.value }}
+
+
+
+
+
{{ device.positionNameCn }}
+
{{ device.positionNameEn }}
+
+
+ {{ getDeviceStatus(device.positionNameEn) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}:
+ {{ item.value }}
+
+
+
+
+
{{ device.positionNameCn }}
+
{{ device.positionNameEn }}
+
+
+ {{ getDeviceStatus(device.positionNameEn) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}:
+ {{ item.value }}
+
+
+
+
+
{{ device.positionNameCn }}
+
{{ device.positionNameEn }}
+
+
+ {{ getDeviceStatus(device.positionNameEn) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ device.positionNameCn }}
+
{{ device.positionNameEn }}
+
+
+ {{ getDeviceStatus(device.positionNameEn) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Production Plan
+
+
+
+
+
+
+
+
{{ index + 1 }}
+
+
Plan ID: {{ plan.planid || '-' }}
+
+
Coil ID: {{ plan.coilid || '-' }}
+
+
+
{{ getPlanStatusText(plan.status) }}
+
+
+ Steel Grade: {{ plan.steelGrade || '-' }}
+
+ Sequence: {{ plan.seqid || '-' }}
+
+
+
+
+
+
+
+
+
+ Plan Detail
+
+
+
+
+
+
+
+
+
+
+
Current Position
+
+
{{ selectedPlanPosition.positionNameCn }}
+
{{ selectedPlanPosition.positionNameEn }}
+
+
+
-
-
- {{ formatDateTime(selectedPlan.onlineDate) }}
+ {{ selectedPlan.planid || '-' }}
+
+ {{ selectedPlan.coilid || '-' }}
+
+ {{ selectedPlan.seqid || '-' }}
+
+
+
+
+ {{ getPlanStatusText(selectedPlan.status) }}
+
-
-
- {{ formatDateTime(selectedPlan.startDate) }}
+ {{ selectedPlan.steelGrade || '-' }}
+
+
+
+ {{ selectedPlan.entryThick ? selectedPlan.entryThick + ' mm' : '-' }}
-
-
- {{ formatDateTime(selectedPlan.endDate) }}
+
+
+ {{ selectedPlan.entryWidth ? selectedPlan.entryWidth + ' mm' : '-' }}
+
+
+ {{ selectedPlan.entryWeight ? selectedPlan.entryWeight + ' t' : '-' }}
+
+
+
+ {{ selectedPlan.entryLength ? selectedPlan.entryLength + ' mm' : '-' }}
+
+ {{ selectedPlan.orderNo || '-' }}
+
+ {{ selectedPlan.unitCode || '-' }}
+
+ {{ selectedPlan.planType || '-' }}
+
-
-
-
-
-
-
-
- Recent Operation
-
-
- {{ getOperationConfig(signalData.operation).icon }} {{ getOperationText(signalData.operation) }}
-
-
-
-
- {{ signalData.autoFlag === 1 ? 'Manual' : 'Auto' }}
-
-
-
-
Operation Type:
-
-
- {{ getOperationText(signalData.operation) }}
-
-
-
Coil ID: {{ producingCoilId || signalData.entryMatId || '-' }}
-
-
Plan ID: {{ signalData.planId || '-' }}
-
-
- Pay-off Reel: {{ signalData.porIdx }}
-
-
-
- Take-up Reel: {{ signalData.trIdx }}
-
-
-
-
Virtual Coil
-
+
+
+
+
Time Information
+
+
+
+
+ {{ formatDateTime(selectedPlan.onlineDate) }}
+
+
+
+ {{ formatDateTime(selectedPlan.startDate) }}
+
+
+
+ {{ formatDateTime(selectedPlan.endDate) }}
+
+
-
-
-
-
Operations
-
-
-
Coil Online
-
-
Manual Unload
-
-
Full Return
-
-
Half Return
-
-
Unload & Block
-
+
+
+
+
+ Recent Operation
+
+
+ {{ getOperationConfig(signalData.operation).icon }} {{ getOperationText(signalData.operation) }}
+
+
+
+
+ {{ signalData.autoFlag === 1 ? 'Manual' : 'Auto' }}
+
+
+
+
Operation Type:
+
+
+ {{ getOperationText(signalData.operation) }}
+
+
+
Coil ID: {{ producingCoilId || signalData.entryMatId || '-' }}
+
+
Plan ID: {{ signalData.planId || '-' }}
+
+
+ Pay-off Reel: {{ signalData.porIdx }}
+
+
+
+ Take-up Reel: {{ signalData.trIdx }}
+
+
+
+ Virtual Coil
+
+
+
+
+
+
+
+
Operations
+
+
+ Coil Online
+
+ Manual Unload
+
+ Full Return
+
+ Half Return
+
+ Unload & Block
+
+
+
+
+
+
Basic Info
+
+
+
+ | Position Name |
+
+ {{ selectedCard.positionNameCn || '-' }} |
+
+
+ | Position Code |
+
+ {{ selectedCard.positionNameEn || '-' }} |
+
+
+ | Coil ID |
+
+ {{ selectedCard.matId || '-' }} |
+
+
+ | Plan ID |
+
+ {{ selectedCard.planId || '-' }} |
+
+
+ | Plan No |
+
+ {{ selectedCard.planNo || '-' }} |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Confirm Adjustment
+
-
-
-
Basic Info
-
-
-
- | Position Name |
-
- {{ selectedCard.positionNameCn || '-' }} |
-
-
- | Position Code |
-
- {{ selectedCard.positionNameEn || '-' }} |
-
-
- | Coil ID |
-
- {{ selectedCard.matId || '-' }} |
-
-
- | Plan ID |
-
- {{ selectedCard.planId || '-' }} |
-
-
- | Plan No |
-
- {{ selectedCard.planNo || '-' }} |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Confirm Adjustment
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- No calculation result data
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ No calculation result data
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+ .ws-status-right .el-button {
+ min-width: 140px;
+ height: 34px;
+ font-weight: 600;
+ }
+
+ .ws-status-bar i {
+ font-size: 18px;
+ color: #606266;
+ cursor: pointer;
+ }
+
+ /* 分区头部增强 */
+ .section-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ }
+
+ .section-info {
+ font-size: 13px;
+ color: #67c23a;
+ font-weight: 500;
+ }
+
+ /* 信号信息面板 */
+ .signal-info {
+ padding: 10px 0;
+ }
+
+ .signal-info.signal-warning {
+ background: #fef0f0;
+ padding: 15px;
+ border-radius: 4px;
+ border: 1px solid #fde2e2;
+ }
+
+ .signal-info.signal-success {
+ background: #f0f9ff;
+ padding: 15px;
+ border-radius: 4px;
+ border: 1px solid #c6e2ff;
+ }
+
+ .signal-info.signal-complete {
+ background: #f0f9ff;
+ padding: 15px;
+ border-radius: 4px;
+ border: 1px solid #b3e19d;
+ }
+
+ .signal-detail {
+ margin-top: 10px;
+ font-size: 13px;
+ line-height: 2;
+ }
+
+ .signal-detail div {
+ padding: 4px 0;
+ }
+
+ .text-warning {
+ color: #e6a23c;
+ font-weight: 600;
+ font-size: 14px;
+ }
+
+ .text-success {
+ color: #67c23a;
+ font-weight: 600;
+ font-size: 14px;
+ }
+
+ /* 计算结果头部 */
+ .calc-result-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 15px;
+ padding-bottom: 10px;
+ border-bottom: 1px solid #ebeef5;
+ font-size: 14px;
+ }
+
+ /* 生产计划详情 */
+ .plan-detail-content {
+ overflow-y: auto;
+ }
+
+ /* 位置信息提示卡片 */
+ .position-alert {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ padding: 12px 15px;
+ margin-bottom: 15px;
+ background: #f0f9ff;
+ border: 1px solid #b3d8ff;
+ border-left: 4px solid #409eff;
+ border-radius: 4px;
+ }
+
+ .position-icon {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 40px;
+ height: 40px;
+ background: #409eff;
+ border-radius: 50%;
+ color: #fff;
+ font-size: 20px;
+ flex-shrink: 0;
+ }
+
+ .position-info {
+ flex: 1;
+ }
+
+ .position-label {
+ font-size: 12px;
+ color: #909399;
+ margin-bottom: 4px;
+ }
+
+ .position-name {
+ font-size: 16px;
+ font-weight: 600;
+ color: #303133;
+ margin-bottom: 2px;
+ }
+
+ .position-code {
+ font-size: 12px;
+ color: #606266;
+ font-family: 'Courier New', monospace;
+ }
+
+ .plan-time-info {
+ margin-top: 15px;
+ padding-top: 15px;
+ border-top: 1px solid #ebeef5;
+ }
+
+ .info-subtitle {
+ font-size: 13px;
+ font-weight: 600;
+ color: #606266;
+ margin-bottom: 10px;
+ }
+
+ .panel-title {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ }
+
+ .panel-title i {
+ margin-right: 5px;
+ }
+
+
\ No newline at end of file