Browse Source

2025-10-17

过站采集报工增加上下岗操作
master
fengyuan_yang 11 months ago
parent
commit
0a0c323f7e
  1. 5
      src/views/modules/yieldReport/com_finish_roll.vue
  2. 151
      src/views/modules/yieldReport/com_switch_operator.vue

5
src/views/modules/yieldReport/com_finish_roll.vue

@ -25,9 +25,8 @@
<el-button class="customer-bun-min" type="primary" @click="closeDialog" style="margin-left: 10px; margin-bottom: 5px;">
{{buttons.closeButton}}</el-button>
</el-form-item>
<el-form-item class="customer-button">
<el-button class="customer-bun-min" type="primary" @click="openAttendanceModal" style="margin-left: 10px; margin-bottom: 5px;">
考勤修改</el-button>
<el-form-item label=" ">
<el-button type="primary" @click="openAttendanceModal" style="margin-left: 10px">考勤修改</el-button>
</el-form-item>
<!-- <el-button v-if="showDefault" @click="saveMultiLanguage()" type="primary">多语言设置</el-button>-->
</el-col>

151
src/views/modules/yieldReport/com_switch_operator.vue

@ -327,7 +327,7 @@ export default {
this.titleCon = isAttendanceMode ? '考勤修改' : this.labels.componentTitle;//重置标题
},
// 加载操作员列表
// 加载操作员列表(只查询在岗人员 is_on_duty = 'Y')
loadOperatorList() {
if (!this.currentSchedule.orderNo || !this.currentSchedule.seqNo) {
return;
@ -337,7 +337,7 @@ export default {
orderNo: this.currentSchedule.orderNo,
itemNo: this.currentSchedule.itemNo,
seqNo: this.currentSchedule.seqNo,
isOnDuty: 'Y'
isOnDuty: 'Y' // 只查询在岗人员
};
getOperatorList2(params).then(({ data }) => {
if (data && data.code === 0) {
@ -408,20 +408,30 @@ export default {
});
},
// 更新单行操作员时间(下岗)
// 下岗操作
updateOperatorTime(row) {
// 校验时间
const validateResult = this.validateOperatorTime(row);
if (!validateResult.valid) {
this.$message.error(validateResult.message);
return;
}
this.$confirm('确定更新该操作员的上下岗时间吗?', '提示', {
this.$confirm('确定让该操作员下岗吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// 如果用户没有选择下岗时间,使用当前时间
let offDutyTime = row.offDutyTime;
if (!offDutyTime) {
const now = new Date();
offDutyTime = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}`;
}
// 校验下岗时间不能早于上岗时间
if (row.onDutyTime && offDutyTime) {
const onDuty = new Date(row.onDutyTime);
const offDuty = new Date(offDutyTime);
if (offDuty < onDuty) {
this.$message.error('下岗时间不能早于上岗时间!');
return;
}
}
const params = {
id: row.id,
site: this.$store.state.user.site,
@ -429,20 +439,19 @@ export default {
itemNo: this.currentSchedule.itemNo,
seqNo: this.currentSchedule.seqNo,
operator: row.operator,
onDutyTime: row.onDutyTime,
offDutyTime: row.offDutyTime
offDutyTime: offDutyTime
};
updateOperatorTime(params).then(({ data }) => {
removeOperatorOnDuty(params).then(({ data }) => {
if (data && data.code === 0) {
this.$message.success('操作员时间更新成功!');
this.$message.success('操作员下岗成功!');
// 刷新列表
this.loadOperatorList();
} else {
this.$message.error(data.msg || '操作员时间更新失败!');
this.$message.error(data.msg || '操作员下岗失败!');
}
}).catch(() => {
this.$message.error('操作员时间更新失败!');
this.$message.error('操作员下岗失败!');
});
}).catch(() => {
// 取消操作
@ -451,9 +460,9 @@ export default {
// 校验操作员时间
validateOperatorTime(row) {
// 允许上岗时间为空(跳过校验)
// 上岗时间不能为空
if (!row.onDutyTime) {
return { valid: true };
return { valid: false, message: '上岗时间不能为空!' };
}
const now = new Date();
@ -533,54 +542,82 @@ export default {
// 批量更新操作员时间(返回Promise)
batchUpdateOperatorTimeSync() {
return new Promise((resolve, reject) => {
return new Promise(async (resolve, reject) => {
// 如果列表为空,直接返回
if (!this.operatorList || this.operatorList.length === 0) {
resolve();
return;
}
// 校验所有行的时间
for (let i = 0; i < this.operatorList.length; i++) {
const row = this.operatorList[i];
const validateResult = this.validateOperatorTime(row);
if (!validateResult.valid) {
this.$message.error(`第 ${i + 1} 行:${validateResult.message}`);
reject();
return;
try {
// 分为两组:需要下岗的 和 只需要更新上岗时间的
const offDutyList = []; // 需要下岗的
const updateOnDutyList = []; // 只更新上岗时间的
for (let i = 0; i < this.operatorList.length; i++) {
const row = this.operatorList[i];
// 上岗时间不能为空
if (!row.onDutyTime) {
this.$message.error(`第 ${i + 1} 行:上岗时间不能为空!`);
reject();
return;
}
if (row.offDutyTime) {
// 有下岗时间,需要校验并执行下岗操作
const onDuty = new Date(row.onDutyTime);
const offDuty = new Date(row.offDutyTime);
if (offDuty < onDuty) {
this.$message.error(`第 ${i + 1} 行:下岗时间不能早于上岗时间!`);
reject();
return;
}
offDutyList.push({
id: row.id,
operator: row.operator,
offDutyTime: row.offDutyTime
});
} else {
// 没有下岗时间,只更新上岗时间
updateOnDutyList.push({
id: row.id,
operator: row.operator,
onDutyTime: row.onDutyTime
});
}
}
}
// 准备批量更新的数据
const operatorListData = this.operatorList.map(row => ({
id: row.id,
operator: row.operator,
onDutyTime: row.onDutyTime,
offDutyTime: row.offDutyTime
}));
const params = {
site: this.$store.state.user.site,
orderNo: this.currentSchedule.orderNo,
itemNo: this.currentSchedule.itemNo,
seqNo: this.currentSchedule.seqNo,
operatorList: operatorListData
};
// 调用后端批量处理
const params = {
site: this.$store.state.user.site,
orderNo: this.currentSchedule.orderNo,
itemNo: this.currentSchedule.itemNo,
seqNo: this.currentSchedule.seqNo,
offDutyList: offDutyList,
updateOnDutyList: updateOnDutyList
};
batchUpdateOperatorTime(params).then(({ data }) => {
if (data && data.code === 0) {
this.$message.success('考勤信息批量更新成功!');
// 刷新列表
this.loadOperatorList();
resolve();
} else {
this.$message.error(data.msg || '考勤信息批量更新失败!');
batchUpdateOperatorTime(params).then(({ data }) => {
if (data && data.code === 0) {
this.$message.success('考勤信息批量更新成功!');
// 刷新列表
this.loadOperatorList();
resolve();
} else {
this.$message.error(data.msg || '考勤信息批量更新失败!');
reject();
}
}).catch(() => {
this.$message.error('考勤信息批量更新失败!');
reject();
}
}).catch(() => {
this.$message.error('考勤信息批量更新失败!');
reject();
});
});
} catch (error) {
this.$message.error('批量更新操作员时间失败!');
reject(error);
}
});
},

Loading…
Cancel
Save