Browse Source

wms添加扫描过期提示

master
shenzhouyu 3 weeks ago
parent
commit
7f893ee8eb
  1. 71
      src/views/modules/customerIssue/customerIssuePDAIssueList.vue
  2. 80
      src/views/modules/production-issue/directIssueDetail.vue
  3. 75
      src/views/modules/production-issue/directIssueNoMaterialDetail.vue
  4. 94
      src/views/modules/production-issue/productionPickingDetail.vue

71
src/views/modules/customerIssue/customerIssuePDAIssueList.vue

@ -591,7 +591,7 @@ export default {
)
return
}
this.labelList.push({
const newLabel = {
id: Date.now(),
labelCode: labelCode,
partNo: partNo,
@ -605,9 +605,16 @@ export default {
unitId: labelInfo.unitId || labelCode,
site: labelInfo.site || this.site,
height: labelInfo.height || null,
})
this.$message.success('操作成功')
expiredDate: labelInfo.expiredDate,
}
this.confirmIfHasExpired([newLabel])
.then(() => {
this.labelList.push(newLabel)
this.$message.success('操作成功')
})
.catch(() => {
this.rollbackInvalidScan(labelInfo, labelCode)
})
} else {
this.$message.error(data.msg || '该标签不符合发料要求,请检查')
}
@ -796,11 +803,65 @@ export default {
})
},
parseExpiredTime(expiredDate) {
if (expiredDate == null || expiredDate === '') return NaN
if (typeof expiredDate === 'number') return expiredDate
if (expiredDate instanceof Date) {
const time = expiredDate.getTime()
return Number.isNaN(time) ? NaN : time
}
if (Array.isArray(expiredDate) && expiredDate.length >= 3) {
return new Date(
Number(expiredDate[0]),
Number(expiredDate[1]) - 1,
Number(expiredDate[2]),
Number(expiredDate[3] || 0),
Number(expiredDate[4] || 0),
Number(expiredDate[5] || 0)
).getTime()
}
const raw = String(expiredDate).trim()
const matched = raw.match(
/^(\d{4})-(\d{1,2})-(\d{1,2})(?:[ T](\d{1,2}):(\d{1,2})(?::(\d{1,2}))?)?/
)
if (matched) {
return new Date(
Number(matched[1]),
Number(matched[2]) - 1,
Number(matched[3]),
Number(matched[4] || 0),
Number(matched[5] || 0),
Number(matched[6] || 0)
).getTime()
}
return new Date(raw.replace(/-/g, '/')).getTime()
},
isExpiredDate(expiredDate) {
const expiredTime = this.parseExpiredTime(expiredDate)
if (Number.isNaN(expiredTime)) return false
return expiredTime < Date.now()
},
confirmIfHasExpired(list) {
const hasExpired = (list || []).some((item) => this.isExpiredDate(item.expiredDate))
if (!hasExpired) {
return Promise.resolve()
}
return this.$confirm('扫描清单中有已过期物料,是否继续?', '提示', {
confirmButtonText: '是',
cancelButtonText: '否',
type: 'warning',
})
},
async confirmIssue() {
if (this.labelList.length === 0) {
this.$message.warning('请先扫描发料标签')
return
}
try {
await this.confirmIfHasExpired(this.labelList)
} catch (e) {
return
}
if (this.totalScannedQty > this.orderInfo.quantity - this.qtyIssued) {
this.$message.warning('扫描数量不能大于总发料数量和已发数量的差!')
@ -2659,3 +2720,5 @@ export default {
border-top: 1px solid #f0f0f0;
}
</style>

80
src/views/modules/production-issue/directIssueDetail.vue

@ -238,19 +238,20 @@ export default {
height: data.labelInfo.height || 0,
wdrNo: data.labelInfo.wdrNo,
engChgLevel: data.labelInfo.engChgLevel,
expiredDate: data.labelInfo.expiredDate,
}
this.scannedLabels.push(newLabel)
console.log(this.scannedLabels)
this.$message.success('扫描成功')
// 如果勾选了"是否部分",添加后直接弹出修改数量弹框
if (this.isPartial) {
const newIndex = this.scannedLabels.length - 1
this.$nextTick(() => {
this.handleLabelClick(newLabel, newIndex)
this.confirmIfHasExpired([newLabel])
.then(() => {
this.scannedLabels.push(newLabel)
this.$message.success('扫描成功')
if (this.isPartial) {
const newIndex = this.scannedLabels.length - 1
this.$nextTick(() => {
this.handleLabelClick(newLabel, newIndex)
})
}
})
}
.catch(() => {})
} else {
this.$message.error(data.msg || '标签验证失败')
}
@ -291,13 +292,68 @@ export default {
this.$router.back()
}
},
parseExpiredTime(expiredDate) {
if (expiredDate == null || expiredDate === '') return NaN
if (typeof expiredDate === 'number') return expiredDate
if (expiredDate instanceof Date) {
const time = expiredDate.getTime()
return Number.isNaN(time) ? NaN : time
}
if (Array.isArray(expiredDate) && expiredDate.length >= 3) {
return new Date(
Number(expiredDate[0]),
Number(expiredDate[1]) - 1,
Number(expiredDate[2]),
Number(expiredDate[3] || 0),
Number(expiredDate[4] || 0),
Number(expiredDate[5] || 0)
).getTime()
}
const raw = String(expiredDate).trim()
const matched = raw.match(
/^(\d{4})-(\d{1,2})-(\d{1,2})(?:[ T](\d{1,2}):(\d{1,2})(?::(\d{1,2}))?)?/
)
if (matched) {
return new Date(
Number(matched[1]),
Number(matched[2]) - 1,
Number(matched[3]),
Number(matched[4] || 0),
Number(matched[5] || 0),
Number(matched[6] || 0)
).getTime()
}
return new Date(raw.replace(/-/g, '/')).getTime()
},
isExpiredDate(expiredDate) {
const expiredTime = this.parseExpiredTime(expiredDate)
if (Number.isNaN(expiredTime)) return false
return expiredTime < Date.now()
},
confirmIfHasExpired(list) {
const hasExpired = (list || []).some((item) => this.isExpiredDate(item.expiredDate))
if (!hasExpired) {
return Promise.resolve()
}
return this.$confirm('扫描清单中有已过期物料,是否继续?', '提示', {
confirmButtonText: '是',
cancelButtonText: '否',
type: 'warning',
})
},
confirmIssue() {
console.log('1231', localStorage.getItem('userName'))
if (this.scannedLabels.length === 0) {
this.$message.warning('请先扫描材料标签')
return
}
this.confirmIfHasExpired(this.scannedLabels)
.then(() => {
this.submitDirectIssue()
})
.catch(() => {})
},
submitDirectIssue() {
const params = {
site: this.site,
workOrderNo: this.workOrderNo,

75
src/views/modules/production-issue/directIssueNoMaterialDetail.vue

@ -324,6 +324,7 @@ export default {
height: data.labelInfo.height || 0,
wdrNo: data.labelInfo.wdrNo,
engChgLevel: data.labelInfo.engChgLevel,
expiredDate: data.labelInfo.expiredDate,
lineItemNo: "",
itemNo: "",
};
@ -404,13 +405,16 @@ export default {
pushLabelAndMaybeEdit(label) {
console.log("333");
this.scannedLabels.push(label);
this.$message.success("扫描成功");
if (this.isPartial) {
const newIndex = this.scannedLabels.length - 1;
this.$nextTick(() => this.handleLabelClick(label, newIndex));
}
this.confirmIfHasExpired([label])
.then(() => {
this.scannedLabels.push(label);
this.$message.success("扫描成功");
if (this.isPartial) {
const newIndex = this.scannedLabels.length - 1;
this.$nextTick(() => this.handleLabelClick(label, newIndex));
}
})
.catch(() => {});
},
cancelMaterialSelect() {
@ -466,12 +470,67 @@ export default {
back();
}
},
parseExpiredTime(expiredDate) {
if (expiredDate == null || expiredDate === "") return NaN;
if (typeof expiredDate === "number") return expiredDate;
if (expiredDate instanceof Date) {
const time = expiredDate.getTime();
return Number.isNaN(time) ? NaN : time;
}
if (Array.isArray(expiredDate) && expiredDate.length >= 3) {
return new Date(
Number(expiredDate[0]),
Number(expiredDate[1]) - 1,
Number(expiredDate[2]),
Number(expiredDate[3] || 0),
Number(expiredDate[4] || 0),
Number(expiredDate[5] || 0)
).getTime();
}
const raw = String(expiredDate).trim();
const matched = raw.match(
/^(\d{4})-(\d{1,2})-(\d{1,2})(?:[ T](\d{1,2}):(\d{1,2})(?::(\d{1,2}))?)?/
);
if (matched) {
return new Date(
Number(matched[1]),
Number(matched[2]) - 1,
Number(matched[3]),
Number(matched[4] || 0),
Number(matched[5] || 0),
Number(matched[6] || 0)
).getTime();
}
return new Date(raw.replace(/-/g, "/")).getTime();
},
isExpiredDate(expiredDate) {
const expiredTime = this.parseExpiredTime(expiredDate);
if (Number.isNaN(expiredTime)) return false;
return expiredTime < Date.now();
},
confirmIfHasExpired(list) {
const hasExpired = (list || []).some((item) => this.isExpiredDate(item.expiredDate));
if (!hasExpired) {
return Promise.resolve();
}
return this.$confirm("扫描清单中有已过期物料,是否继续?", "提示", {
confirmButtonText: "是",
cancelButtonText: "否",
type: "warning",
});
},
confirmIssue() {
if (this.scannedLabels.length === 0) {
this.$message.warning("请先扫描材料标签");
return;
}
this.confirmIfHasExpired(this.scannedLabels)
.then(() => {
this.submitDirectIssue();
})
.catch(() => {});
},
submitDirectIssue() {
const params = {
site: this.site,
workOrderNo: this.workOrderNo,

94
src/views/modules/production-issue/productionPickingDetail.vue

@ -245,17 +245,20 @@ export default {
wdrNo: data.labelInfo.wdrNo,
height: data.labelInfo.height || 0,
engChgLevel: data.labelInfo.engChgLevel,
expiredDate: data.labelInfo.expiredDate,
}
this.labelList.push(newLabel)
this.$message.success('操作成功')
if (this.isPartial) {
const newIndex = this.labelList.length - 1
this.$nextTick(() => {
this.handleLabelClick(newLabel, newIndex)
this.confirmIfHasExpired([newLabel])
.then(() => {
this.labelList.push(newLabel)
this.$message.success('操作成功')
if (this.isPartial) {
const newIndex = this.labelList.length - 1
this.$nextTick(() => {
this.handleLabelClick(newLabel, newIndex)
})
}
})
}
.catch(() => {})
} else {
this.$message.error(data.msg || '该标签与出库单不符,请检查')
}
@ -319,6 +322,55 @@ export default {
}
},
parseExpiredTime(expiredDate) {
if (expiredDate == null || expiredDate === '') return NaN
if (typeof expiredDate === 'number') return expiredDate
if (expiredDate instanceof Date) {
const time = expiredDate.getTime()
return Number.isNaN(time) ? NaN : time
}
if (Array.isArray(expiredDate) && expiredDate.length >= 3) {
return new Date(
Number(expiredDate[0]),
Number(expiredDate[1]) - 1,
Number(expiredDate[2]),
Number(expiredDate[3] || 0),
Number(expiredDate[4] || 0),
Number(expiredDate[5] || 0)
).getTime()
}
const raw = String(expiredDate).trim()
const matched = raw.match(
/^(\d{4})-(\d{1,2})-(\d{1,2})(?:[ T](\d{1,2}):(\d{1,2})(?::(\d{1,2}))?)?/
)
if (matched) {
return new Date(
Number(matched[1]),
Number(matched[2]) - 1,
Number(matched[3]),
Number(matched[4] || 0),
Number(matched[5] || 0),
Number(matched[6] || 0)
).getTime()
}
return new Date(raw.replace(/-/g, '/')).getTime()
},
isExpiredDate(expiredDate) {
const expiredTime = this.parseExpiredTime(expiredDate)
if (Number.isNaN(expiredTime)) return false
return expiredTime < Date.now()
},
confirmIfHasExpired(list) {
const hasExpired = (list || []).some((item) => this.isExpiredDate(item.expiredDate))
if (!hasExpired) {
return Promise.resolve()
}
return this.$confirm('扫描清单中有已过期物料,是否继续?', '提示', {
confirmButtonText: '是',
cancelButtonText: '否',
type: 'warning',
})
},
// 确认出库
confirmOutbound() {
if (this.labelList.length === 0) {
@ -333,17 +385,21 @@ export default {
}
qty += label.quantity
}
if (qty > this.outboundInfo.qtyToIssue) {
this.$confirm('扫描标签总数量超过需求数量确定出库吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
this.confirmProductionPicking()
this.confirmIfHasExpired(this.labelList)
.then(() => {
if (qty > this.outboundInfo.qtyToIssue) {
this.$confirm('扫描标签总数量超过需求数量确定出库吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
this.confirmProductionPicking()
})
} else {
this.confirmProductionPicking()
}
})
} else {
this.confirmProductionPicking()
}
.catch(() => {})
},
confirmProductionPicking() {
const params = {

Loading…
Cancel
Save