排产代码提交

dev-scheduling
zhangdi 5 days ago
parent 0e1b713742
commit 90c6031f56
  1. 127
      src/views/productionSchedulingPlan/schedulingDashboard/index.vue

@ -35,7 +35,12 @@
</el-col>
<el-col :span="6">
<el-form-item label="时间:">
<el-date-picker v-model="formLabelAlign.startTime" type="date" placeholder="选择日期">
<el-date-picker
v-model="formLabelAlign.startTime"
type="date"
value-format="YYYY-MM-DD"
placeholder="选择日期"
>
</el-date-picker>
</el-form-item>
</el-col>
@ -211,27 +216,27 @@
>
<div class="tooltip-content">
<!-- 工单标题 -->
<div class="wo-code-title" v-if="searchType=='1'">{{ tooltipData.woCode }}</div>
<div class="wo-code-title" v-if="searchType=='2'">{{ tooltipData.teamName }}</div>
<div class="wo-code-title" v-if="searchType=='3'">{{ tooltipData.equipName }}</div>
<div class="wo-code-title" v-if="searchType == '1'">{{ tooltipData.woCode }}</div>
<div class="wo-code-title" v-if="searchType == '2'">{{ tooltipData.teamName }}</div>
<div class="wo-code-title" v-if="searchType == '3'">{{ tooltipData.equipName }}</div>
<!-- 详情列表 -->
<ul class="detail-list">
<li class="detail-item" v-if="searchType=='1'">
<li class="detail-item" v-if="searchType == '1'">
<span class="label">工序</span>
<span class="value">{{ tooltipData.processName || '-' }}</span>
</li>
<li class="detail-item" v-if="searchType=='1'">
<li class="detail-item" v-if="searchType == '1'">
<span class="label">班组</span>
<span class="value">{{ tooltipData.teamName || '-' }}</span>
</li>
<li class="detail-item" v-if="searchType=='2'||searchType=='3'">
<li class="detail-item" v-if="searchType == '2' || searchType == '3'">
<span class="label">车间订单号</span>
<span class="value">{{ tooltipData.woCode || '-' }}</span>
</li>
<li class="detail-item">
<span class="label">计划开始时间</span>
<span class="value">{{tooltipData.planStartTime || '-' }}</span>
<span class="value">{{ tooltipData.planStartTime || '-' }}</span>
</li>
<li class="detail-item">
<span class="label">实际开始时间</span>
@ -239,7 +244,7 @@
</li>
<li class="detail-item">
<span class="label">计划完成时间</span>
<span class="value">{{tooltipData.planEndTime || '-' }}</span>
<span class="value">{{ tooltipData.planEndTime || '-' }}</span>
</li>
<li class="detail-item">
<span class="label">实际完成时间</span>
@ -248,9 +253,7 @@
<li class="detail-item">
<span class="label">状态</span>
<span class="value">
<el-tag :type="tooltipData.status">{{
tooltipData.status || '未知'
}}</el-tag>
<el-tag :type="tooltipData.status">{{ tooltipData.status || '未知' }}</el-tag>
</span>
</li>
</ul>
@ -270,7 +273,7 @@ export default {
searchType: '',
formLabelAlign: {
type: '1', //
startTime: '', //
startTime: null, //
teamName: '', //
equipName: '', //
woCode: '', //
@ -313,6 +316,7 @@ export default {
},
mounted() {
this.searchType = this.formLabelAlign.type;
this.formLabelAlign.startTime = new Date().toISOString().substr(0, 10);
this.getData();
},
methods: {
@ -474,6 +478,49 @@ export default {
hideTooltip() {
this.tooltipVisible = false;
},
// methods
getLayeredTasks(device) {
const tasks = this.getDeviceTasks(device);
if (!tasks.length) return [];
//
const sortedTasks = [...tasks].sort((a, b) => {
return this.timeToMinutes(a.startTime) - this.timeToMinutes(b.startTime);
});
const layers = [];
sortedTasks.forEach(task => {
//
let placed = false;
for (let i = 0; i < layers.length; i++) {
const lastTask = layers[i][layers[i].length - 1];
if (this.timeToMinutes(task.startTime) >= this.timeToMinutes(lastTask.endTime)) {
layers[i].push(task);
placed = true;
break;
}
}
if (!placed) {
layers.push([task]);
}
});
return layers;
},
//
getLayerOffset(layerIndex, totalLayers) {
if (totalLayers <= 1) return 0;
// = /
const layerHeight = this.rowHeight / totalLayers;
return layerIndex * layerHeight + 2; // 2px
},
//
getLayerTaskHeight(totalLayers) {
if (totalLayers <= 1) return this.rowHeight - 4; // 4px
return this.rowHeight / totalLayers - 4;
},
},
};
</script>
@ -779,35 +826,35 @@ export default {
margin: 3px 0;
}
.wo-code-title {
font-size: 18px;
font-weight: bold;
color: #1f2d3d;
margin-bottom: 15px;
padding-bottom: 10px;
border-bottom: 1px solid #e6e6e6;
}
font-size: 18px;
font-weight: bold;
color: #1f2d3d;
margin-bottom: 15px;
padding-bottom: 10px;
border-bottom: 1px solid #e6e6e6;
}
.detail-list {
list-style: none;
padding: 0;
margin: 0;
.detail-item {
display: flex;
align-items: center;
margin-bottom: 12px;
line-height: 24px;
.label {
width: 100px;
color: #666;
font-weight: 500;
}
.detail-list {
list-style: none;
padding: 0;
margin: 0;
.value {
flex: 1;
color: #333;
}
.detail-item {
display: flex;
align-items: center;
margin-bottom: 12px;
line-height: 24px;
.label {
width: 100px;
color: #666;
font-weight: 500;
}
.value {
flex: 1;
color: #333;
}
}
}
</style>

Loading…
Cancel
Save