fix:生产管理:工单排程,生产队列修改
This commit is contained in:
parent
71a92fb720
commit
8b6050b9ae
@ -79,7 +79,11 @@
|
||||
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="三色灯颜色" prop="lightColor">
|
||||
<el-input v-model="form.lightColor" placeholder="请输入三色灯颜色" />
|
||||
<!-- <el-input v-model="form.lightColor" placeholder="请输入三色灯颜色" /> -->
|
||||
<el-select v-model="form.lightColor" placeholder="请选择三色灯颜色">
|
||||
<el-option v-for="item in lightColorOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
||||
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@ -184,6 +188,11 @@
|
||||
{ index: 7, key: 'updatedBy', label: `更新人`, checked: true },
|
||||
{ index: 8, key: 'updatedTime', label: `更新时间`, checked: true },
|
||||
],
|
||||
lightColorOptions:[
|
||||
{ value: '红色', label: '红色' },
|
||||
{ value: '黄色', label: '黄色' },
|
||||
{ value: '绿色', label: '绿色' },
|
||||
],
|
||||
// 数据列表
|
||||
dataList: [],
|
||||
// 总记录数
|
||||
|
||||
@ -110,8 +110,8 @@
|
||||
<vxe-column field="pQualifiedRate" title="预计合格率(%)" type="html">
|
||||
<template #default="{ row }">
|
||||
<!-- 移除反向计算的 handleQualifiedRateInput 事件 -->
|
||||
<el-input v-model="row.pQualifiedRate" size="small"
|
||||
placeholder="请输入预计合格率" @blur="formatQualifiedRate(row)" />
|
||||
<el-input v-model="row.pQualifiedRate" size="small" placeholder="请输入预计合格率"
|
||||
@blur="formatQualifiedRate(row)" />
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="cylinderNumber" title="双组号缸号"></vxe-column>
|
||||
@ -183,8 +183,8 @@
|
||||
v-model="workorderItem.remark2" placeholder="备注2"></el-input> </el-form-item></el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8"><el-form-item label="年" prop="year"> <el-input
|
||||
v-model="workorderItem.year" placeholder="年"></el-input> </el-form-item></el-col>
|
||||
<el-col :span="8"><el-form-item label="年" prop="year"> <el-input v-model="workorderItem.year"
|
||||
placeholder="年"></el-input> </el-form-item></el-col>
|
||||
<el-col :span="8"><el-form-item label="周" prop="week"> <el-input v-model="workorderItem.week"
|
||||
placeholder="周"></el-input> </el-form-item></el-col>
|
||||
<el-col :span="8"><el-form-item label="日" prop="date">
|
||||
@ -295,7 +295,9 @@ export default {
|
||||
{ state: 5, color: '#ffffd5', text: '物料不包含此描述' },
|
||||
],
|
||||
tableAllData: [],
|
||||
debounceTimers: {},
|
||||
// 修改防抖机制
|
||||
updateQueue: new Map(), // 存储待更新的行
|
||||
updateTimer: null, // 统一的更新定时器
|
||||
isEditing: false
|
||||
}
|
||||
},
|
||||
@ -355,8 +357,7 @@ export default {
|
||||
this.getList()
|
||||
},
|
||||
getList() {
|
||||
if (this.isEditing) return;
|
||||
|
||||
// 移除 isEditing 检查,避免阻塞更新
|
||||
const query = { ...this.search, ...this.pagination }
|
||||
query.week = query.week ?? -1;
|
||||
query.year = query.year ?? -1;
|
||||
@ -370,8 +371,8 @@ export default {
|
||||
this.workorder_table_data = pageRes.data.item1.map(item => {
|
||||
return {
|
||||
...item,
|
||||
pQualifiedNum: item.pQualifiedNum !== null && item.pQualifiedNum !== undefined
|
||||
? Number(item.pQualifiedNum)
|
||||
pQualifiedNum: item.pQualifiedNum !== null && item.pQualifiedNum !== undefined
|
||||
? Number(item.pQualifiedNum)
|
||||
: 0,
|
||||
pQualifiedRate: item.pQualifiedRate !== null && item.pQualifiedRate !== undefined
|
||||
? parseFloat(item.pQualifiedRate).toFixed(2)
|
||||
@ -404,12 +405,14 @@ export default {
|
||||
const previousNum = parseFloat(row.previousNumber) || 0;
|
||||
|
||||
if (previousNum > 0 && !isNaN(qualifiedNum)) {
|
||||
const rate = (qualifiedNum / previousNum)
|
||||
const rate = (qualifiedNum / previousNum) * 100;
|
||||
this.$set(row, 'pQualifiedRate', rate.toFixed(2));
|
||||
} else {
|
||||
this.$set(row, 'pQualifiedRate', '0.00');
|
||||
}
|
||||
this.autoUpdateWorkorder(row);
|
||||
|
||||
// 添加到更新队列
|
||||
this.addToUpdateQueue(row);
|
||||
},
|
||||
|
||||
formatQualifiedNum(row) {
|
||||
@ -424,41 +427,62 @@ export default {
|
||||
const rate = parseFloat(row.pQualifiedRate);
|
||||
this.$set(row, 'pQualifiedRate', isNaN(rate) ? '0.00' : rate.toFixed(2));
|
||||
this.isEditing = false;
|
||||
this.autoUpdateWorkorder(row);
|
||||
|
||||
// 添加到更新队列
|
||||
this.addToUpdateQueue(row);
|
||||
},
|
||||
|
||||
autoUpdateWorkorder(row) {
|
||||
if (this.debounceTimers[row.id]) {
|
||||
clearTimeout(this.debounceTimers[row.id]);
|
||||
// 新增方法:添加到更新队列
|
||||
addToUpdateQueue(row) {
|
||||
// 将行数据添加到更新队列中
|
||||
this.updateQueue.set(row.id, {...row});
|
||||
|
||||
// 清除之前的定时器
|
||||
if (this.updateTimer) {
|
||||
clearTimeout(this.updateTimer);
|
||||
}
|
||||
|
||||
this.debounceTimers[row.id] = setTimeout(() => {
|
||||
const updateData = { ...row };
|
||||
updateData.pQualifiedNum = Number(updateData.pQualifiedNum) || 0;
|
||||
let rate = Number(updateData.pQualifiedRate);
|
||||
updateData.pQualifiedRate = isNaN(rate) ? '0.00' : rate.toFixed(2);
|
||||
|
||||
updateData.vehicleNumber = Number(updateData.vehicleNumber) || 0;
|
||||
updateData.hangNumber = Number(updateData.hangNumber) || 0;
|
||||
updateData.previousNumber = Number(updateData.previousNumber) || 0;
|
||||
|
||||
updateworkorder(updateData).then(res => {
|
||||
if (res.code === 200) {
|
||||
this.$notify.success('更新成功');
|
||||
setTimeout(() => {
|
||||
this.getList();
|
||||
}, 300);
|
||||
} else {
|
||||
this.$notify.error(res.msg || '更新失败');
|
||||
}
|
||||
}).catch(error => {
|
||||
console.error('更新失败:', error);
|
||||
this.$notify.error('网络异常,更新失败');
|
||||
}).finally(() => {
|
||||
delete this.debounceTimers[row.id];
|
||||
});
|
||||
|
||||
// 设置新的定时器
|
||||
this.updateTimer = setTimeout(() => {
|
||||
this.processUpdateQueue();
|
||||
}, 1500);
|
||||
},
|
||||
|
||||
// 新增方法:处理更新队列
|
||||
async processUpdateQueue() {
|
||||
// 获取所有待更新的行
|
||||
const rowsToUpdate = Array.from(this.updateQueue.values());
|
||||
|
||||
// 清空队列
|
||||
this.updateQueue.clear();
|
||||
|
||||
try {
|
||||
// 逐个更新每行数据
|
||||
for (const row of rowsToUpdate) {
|
||||
const updateData = { ...row };
|
||||
updateData.pQualifiedNum = Number(updateData.pQualifiedNum) || 0;
|
||||
let rate = Number(updateData.pQualifiedRate);
|
||||
updateData.pQualifiedRate = isNaN(rate) ? '0.00' : rate.toFixed(2);
|
||||
|
||||
updateData.vehicleNumber = Number(updateData.vehicleNumber) || 0;
|
||||
updateData.hangNumber = Number(updateData.hangNumber) || 0;
|
||||
updateData.previousNumber = Number(updateData.previousNumber) || 0;
|
||||
|
||||
const res = await updateworkorder(updateData);
|
||||
if (res.code !== 200) {
|
||||
this.$notify.error(res.msg || '更新失败');
|
||||
}
|
||||
}
|
||||
|
||||
// 所有更新完成后刷新列表
|
||||
this.$notify.success('更新成功');
|
||||
this.getList();
|
||||
} catch (error) {
|
||||
console.error('更新失败:', error);
|
||||
this.$notify.error('网络异常,更新失败');
|
||||
}
|
||||
},
|
||||
|
||||
handleFileUploadProgress(event, file, fileList) {
|
||||
this.upload.isUploading = true
|
||||
},
|
||||
|
||||
@ -39,18 +39,14 @@
|
||||
<vxe-column field="previousNumber" title="上件数" type="html"></vxe-column>
|
||||
<vxe-column field="pQualifiedNum" title="预计合格数" type="html">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.pQualifiedNum" size="small" placeholder="请输入预计合格数"
|
||||
@input="calculateQualifiedRate(row)" @blur="formatQualifiedNum(row)" />
|
||||
<el-input v-model="row.pQualifiedNum" size="small" placeholder="请输入预计合格数" @input="calculateQualifiedRate(row)"
|
||||
@blur="formatQualifiedNum(row)" />
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="pQualifiedRate" title="预计合格率(%)" type="html">
|
||||
<template #default="{ row }">
|
||||
<el-input
|
||||
@input="handleQualifiedRateInput(row)"
|
||||
v-model="row.pQualifiedRate"
|
||||
size="small"
|
||||
placeholder="请输入预计合格率"
|
||||
@blur="formatQualifiedRate(row)" />
|
||||
<el-input @input="handleQualifiedRateInput(row)" v-model="row.pQualifiedRate" size="small"
|
||||
placeholder="请输入预计合格率" @blur="formatQualifiedRate(row)" />
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="cylinderNumber" title="双组号缸号" type="html"></vxe-column>
|
||||
@ -133,8 +129,8 @@ export default {
|
||||
this.workorder_table_data = res.data.item1.map(item => {
|
||||
return {
|
||||
...item,
|
||||
pQualifiedRate: item.pQualifiedRate !== null && item.pQualifiedRate !== undefined
|
||||
? parseFloat(item.pQualifiedRate).toFixed(2)
|
||||
pQualifiedRate: item.pQualifiedRate !== null && item.pQualifiedRate !== undefined
|
||||
? parseFloat(item.pQualifiedRate).toFixed(2)
|
||||
: '0.00'
|
||||
}
|
||||
})
|
||||
@ -153,9 +149,9 @@ export default {
|
||||
const pQualifiedNum = parseFloat(row.pQualifiedNum);
|
||||
|
||||
if (!isNaN(previousNumber) && previousNumber !== 0 && !isNaN(pQualifiedNum)) {
|
||||
const rate = (pQualifiedNum / previousNumber);
|
||||
const rate = (pQualifiedNum / previousNumber) * 100;
|
||||
row.pQualifiedRate = rate.toFixed(2);
|
||||
console.log(row.pQualifiedRate,'显示的合格率');
|
||||
console.log(row.pQualifiedRate, '显示的合格率');
|
||||
} else {
|
||||
row.pQualifiedRate = '0.00';
|
||||
}
|
||||
@ -170,7 +166,7 @@ export default {
|
||||
this.calculateQualifiedRate(row);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
// 格式化预计合格率为两位小数
|
||||
formatQualifiedRate(row) {
|
||||
if (row.pQualifiedRate !== '' && !isNaN(row.pQualifiedRate)) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user