diff --git a/src/views/modules/yieldReport/com_replace_material.vue b/src/views/modules/yieldReport/com_replace_material.vue index ac64cc5..2d6e3ff 100644 --- a/src/views/modules/yieldReport/com_replace_material.vue +++ b/src/views/modules/yieldReport/com_replace_material.vue @@ -2,7 +2,7 @@
- + @@ -35,25 +35,41 @@
{{ labels.downTimeTitle }} - + + value-format="yyyy-MM-dd" @change="calculateDuration" style="width: 100px;"> + value-format="HH:mm:ss" @change="calculateDuration" style="width: 80px;"> + + + + + + + + + + + + + + - + @@ -137,6 +153,8 @@ export default { oriRmRollNo: '', reportDate: '', reportTime: '', + endDate: '', // 结束日期(不传后端) + endTime: '', // 结束时间(不传后端) downTimeQty: 0, consumeQty: 0, oriConsumeQty: 0, @@ -194,6 +212,7 @@ export default { bomItemNo: 'BOM序号:', downTimeTitle: '停机', startTime: '开始时间:', + endTime: '结束时间:', downTimes: '时长:', downTimesMustMoreThanZero: '时长必须大于0!', materialRollCantBeNull: '材料卷号不能为空!', @@ -236,7 +255,13 @@ export default { objectId: 'startTime', objectType: 'label', tableId: '*' - }, { + }, { + functionId: functionId, + languageValue: '结束时间:', + objectId: 'endTime', + objectType: 'label', + tableId: '*' + }, { functionId: functionId, languageValue: '时长:', objectId: 'downTimes', @@ -285,6 +310,8 @@ export default { //重置时间 this.pageData.reportDate = this.dayjs(new Date()).format('YYYY-MM-DD'); this.pageData.reportTime = this.dayjs(new Date()).format('HH:mm:ss'); + this.pageData.endDate = this.dayjs(new Date()).format('YYYY-MM-DD'); + this.pageData.endTime = this.dayjs(new Date()).format('HH:mm:ss'); this.pageData.downTimeQty = 0; this.pageData.rmRollNo = ''; //判断是否启用多语言 @@ -326,6 +353,46 @@ export default { } }, + /*计算时长(分钟)*/ + calculateDuration() { + // 检查是否所有时间字段都已填写 + if (!this.pageData.reportDate || !this.pageData.reportTime || + !this.pageData.endDate || !this.pageData.endTime) { + return; + } + + try { + // 构建完整的开始和结束时间字符串 + const startDateTime = `${this.pageData.reportDate} ${this.pageData.reportTime}`; + const endDateTime = `${this.pageData.endDate} ${this.pageData.endTime}`; + + // 转换为时间戳 + const startTime = this.dayjs(startDateTime); + const endTime = this.dayjs(endDateTime); + + // 验证时间有效性 + if (!startTime.isValid() || !endTime.isValid()) { + console.warn('时间格式无效'); + return; + } + + // 计算时间差(分钟) + const durationMinutes = endTime.diff(startTime, 'minute'); + + // 如果结束时间早于开始时间,提示错误 + if (durationMinutes < 0) { + this.$message.warning('结束时间不能早于开始时间'); + this.pageData.downTimeQty = 0; + return; + } + + // 自动设置时长 + this.pageData.downTimeQty = durationMinutes; + } catch (error) { + console.error('计算时长失败:', error); + } + }, + /*检查材料卷号的数据*/ checkRmRollNoBun() { //首先判断时间是否超过100毫秒 @@ -367,7 +434,30 @@ export default { this.$message.error(this.labels.downTimesMustMoreThanZero); return false; } - connectMaterialRoll(this.pageData).then(({data}) => { + + // 构建提交数据,排除 endDate 和 endTime(这两个字段只用于前端计算,不传给后端) + const submitData = { + site: this.pageData.site, + username: this.pageData.username, + orderNo: this.pageData.orderNo, + itemNo: this.pageData.itemNo, + seqNo: this.pageData.seqNo, + rollNo: this.pageData.rollNo, + operatorId: this.pageData.operatorId, + histSeqNo: this.pageData.histSeqNo, + bomItemNo: this.pageData.bomItemNo, + rmRollNo: this.pageData.rmRollNo, + oriRmRollNo: this.pageData.oriRmRollNo, + reportDate: this.pageData.reportDate, + reportTime: this.pageData.reportTime, + downTimeQty: this.pageData.downTimeQty, + consumeQty: this.pageData.consumeQty, + oriConsumeQty: this.pageData.oriConsumeQty, + totalConsumeQty: this.pageData.totalConsumeQty, + checkFlag: this.pageData.checkFlag + }; + + connectMaterialRoll(submitData).then(({data}) => { //判断是否存在异常 if(data.code == 500){ this.$message.error(data.msg);