|
|
|
|
@ -174,16 +174,20 @@ |
|
|
|
|
<el-row> |
|
|
|
|
<el-col :span="24"> |
|
|
|
|
<div class="info-item-txt info-item-info"> |
|
|
|
|
<span style="font-weight: 600">{{ order.woCode }}</span |
|
|
|
|
>/ |
|
|
|
|
<span>{{ order.partCode }}</span> |
|
|
|
|
<span class="order-code" style="font-weight: 600">{{ order.woCode }}</span> |
|
|
|
|
<span class="part-code">{{ order.partCode }}</span> |
|
|
|
|
</div> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="24"> |
|
|
|
|
<div class="info-item-txt info-item-info"> |
|
|
|
|
{{ order.batchNo }}<i> / </i>{{ order.makeQty }}<i> / </i |
|
|
|
|
>{{ order.productIdent }}<i v-if="order.priorityAps != ''"> / </i |
|
|
|
|
>{{ order.priorityAps }} |
|
|
|
|
<div class="info-item-txt info-item-orderInfo"> |
|
|
|
|
<div class="info-item-content"> |
|
|
|
|
<span class="batch-no">{{ order.batchNo }}</span> |
|
|
|
|
<span class="make-qty">{{ order.makeQty }}</span> |
|
|
|
|
<span class="product-ident">{{ order.productIdent }}</span> |
|
|
|
|
<span v-if="order.priorityAps != ''" class="priority-aps">{{ |
|
|
|
|
order.priorityAps |
|
|
|
|
}}</span> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
@ -333,14 +337,7 @@ |
|
|
|
|
v-if="getWidthPercent(task.planStartTime, task.planEndTime) < 1" |
|
|
|
|
class="task-overlay-text" |
|
|
|
|
:style="{ |
|
|
|
|
top: `${ |
|
|
|
|
-20 - |
|
|
|
|
getNarrowTaskOffset( |
|
|
|
|
order.woCode, |
|
|
|
|
layer.findIndex(t => t === task), |
|
|
|
|
layerIndex |
|
|
|
|
) |
|
|
|
|
}px`, |
|
|
|
|
top: `${getNarrowTaskOffsetByLayer(layerIndex)}px`, |
|
|
|
|
}" |
|
|
|
|
> |
|
|
|
|
{{ task.processName }} |
|
|
|
|
@ -511,6 +508,16 @@ export default { |
|
|
|
|
handleLeftScrollBound: null, |
|
|
|
|
}; |
|
|
|
|
}, |
|
|
|
|
watch: { |
|
|
|
|
// 监听参数变化 |
|
|
|
|
'$route.query': { |
|
|
|
|
handler(newQuery) { |
|
|
|
|
console.log('参数变化:', newQuery); |
|
|
|
|
this.handleParamsChange(); |
|
|
|
|
}, |
|
|
|
|
immediate: true, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
computed: { |
|
|
|
|
// 通过 Vue Router 获取查询参数 |
|
|
|
|
tsId() { |
|
|
|
|
@ -708,21 +715,12 @@ export default { |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
watch: { |
|
|
|
|
// 监听参数变化 |
|
|
|
|
'$route.query': { |
|
|
|
|
handler(newQuery) { |
|
|
|
|
console.log('参数变化:', newQuery); |
|
|
|
|
this.handleParamsChange(); |
|
|
|
|
}, |
|
|
|
|
immediate: true |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
mounted() { |
|
|
|
|
this.getSelectTeam(); |
|
|
|
|
this.getSelectEquip(); |
|
|
|
|
this.getProcessSet(); |
|
|
|
|
this.updateTime(); |
|
|
|
|
// this.updateTime(); |
|
|
|
|
this.updateTimeAxis(); |
|
|
|
|
this.$nextTick(() => { |
|
|
|
|
this.calcCurrentTimePosition(); |
|
|
|
|
@ -735,7 +733,6 @@ export default { |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 定时更新当前时间线位置 |
|
|
|
|
// setInterval(() => { |
|
|
|
|
// this.calcCurrentTimePosition(); |
|
|
|
|
@ -756,18 +753,17 @@ export default { |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
methods: { |
|
|
|
|
// 根据层索引确定窄任务文本的垂直偏移 |
|
|
|
|
getNarrowTaskOffsetByLayer(layerIndex) { |
|
|
|
|
// 偶数层在上方显示(负值),奇数层在下方显示(正值) |
|
|
|
|
const offset = layerIndex % 2 === 0 ? -20 : 15; // -20px 在上方,5px 在下方 |
|
|
|
|
return offset; |
|
|
|
|
}, |
|
|
|
|
handleParamsChange() { |
|
|
|
|
// 参数变化时的处理逻辑 |
|
|
|
|
console.log('接收到的参数:', { |
|
|
|
|
tsId: this.tsId, |
|
|
|
|
tsName: this.tsName, |
|
|
|
|
userId: this.userId, |
|
|
|
|
userName: this.userName, |
|
|
|
|
timestamp: this.timestamp |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
this.formLabelAlign.teamId = this.tsId |
|
|
|
|
this.formLabelAlign.teamName = this.tsName |
|
|
|
|
this.formLabelAlign.teamId = this.tsId; |
|
|
|
|
this.formLabelAlign.teamName = this.tsName; |
|
|
|
|
this.updateTime(); |
|
|
|
|
// 根据参数加载数据 |
|
|
|
|
this.getData(); |
|
|
|
|
}, |
|
|
|
|
@ -886,7 +882,6 @@ export default { |
|
|
|
|
if (this.legendStatus.pending) { |
|
|
|
|
this.formLabelAlign.planStatusList.push('1'); |
|
|
|
|
} |
|
|
|
|
this.handleParamsChange() |
|
|
|
|
|
|
|
|
|
this.getData(); |
|
|
|
|
}, |
|
|
|
|
@ -1896,4 +1891,45 @@ export default { |
|
|
|
|
font-size: 10px; |
|
|
|
|
white-space: nowrap; |
|
|
|
|
} |
|
|
|
|
.info-item-content { |
|
|
|
|
display: flex; |
|
|
|
|
width: 100%; |
|
|
|
|
} |
|
|
|
|
/* 左侧信息颜色区分 */ |
|
|
|
|
.order-code { |
|
|
|
|
color: #1a73e8; /* 谷歌蓝 - 专业稳重 */ |
|
|
|
|
font-weight: bold; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.part-code { |
|
|
|
|
color: #34a853; /* 谷歌绿 - 清新自然 */ |
|
|
|
|
font-weight: bold; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.batch-no { |
|
|
|
|
color: #fbbc05; /* 谷歌黄 - 温暖明亮 */ |
|
|
|
|
font-weight: bold; |
|
|
|
|
flex: 0 0 100px; /* 固定宽度80px,不伸缩 */ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.make-qty { |
|
|
|
|
color: #ea4335; /* 谷歌红 - 醒目突出 */ |
|
|
|
|
font-weight: bold; |
|
|
|
|
flex: 1; /* 均匀分配剩余空间 */ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.product-ident { |
|
|
|
|
color: #9c27b0; /* 紫色 - 优雅独特 */ |
|
|
|
|
font-weight: bold; |
|
|
|
|
flex: 1; /* 均匀分配剩余空间 */ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.priority-aps { |
|
|
|
|
color: #ff6d01; /* 橙色 - 温暖活力 */ |
|
|
|
|
font-weight: bold; |
|
|
|
|
flex: 0 0 90px; /* 固定宽度80px,不伸缩 */ |
|
|
|
|
text-align:right; |
|
|
|
|
padding-right:15px |
|
|
|
|
} |
|
|
|
|
</style> |
|
|
|
|
|