From 64e15a9de668af13143c58dc3d251033e06a3c22 Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Tue, 26 May 2026 11:54:31 +0800 Subject: [PATCH] =?UTF-8?q?2026-05-26=20RoHs=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/modules/rohs/rohsRecord.vue | 115 ++++++++++++++++++++++++-- 1 file changed, 109 insertions(+), 6 deletions(-) diff --git a/src/views/modules/rohs/rohsRecord.vue b/src/views/modules/rohs/rohsRecord.vue index c1d10ed..e96aaa0 100644 --- a/src/views/modules/rohs/rohsRecord.vue +++ b/src/views/modules/rohs/rohsRecord.vue @@ -84,7 +84,11 @@ - + + + @@ -304,8 +308,19 @@ - - + + + + + + @@ -322,7 +337,7 @@ - + A类 B类 C类 @@ -789,14 +804,17 @@ - + + + + - + @@ -1173,6 +1191,7 @@ export default { hsfApproverList: [], relatedPeople: '', buNo: '', + validUntilValue: 0, validUntil: '', isMeetRohsRequirement: '', isAhGrade: '', @@ -1273,9 +1292,49 @@ export default { } return this.rohsFieldFlag(fieldId) === 'N' }, + isRohsFieldDisabledWithFallback (primaryFieldId, fallbackFieldId) { + if (this.showModalFlag) { + return true + } + if (!this.isEditMode) { + return false + } + const primaryDisabled = this.rohsFieldFlag(primaryFieldId) === 'N' + if (!primaryDisabled) { + return false + } + return this.rohsFieldFlag(fallbackFieldId) === 'N' + }, + isValidUntilValueDisabled () { + return this.isRohsFieldDisabledWithFallback('validUntilValue', 'validUntil') + }, + isValidUntilUnitDisabled () { + return this.isRohsFieldDisabledWithFallback('validUntil', 'validUntilValue') + }, canEditRohsMaterial () { return !this.showModalFlag }, + normalizeValidUntilValue (value) { + if (value === null || value === undefined || value === '') { + return null + } + const parsed = Number.parseInt(value, 10) + if (Number.isNaN(parsed) || parsed <= 0) { + return null + } + return parsed + }, + getValidUntilDisplay (value, unit) { + const normalizedValue = this.normalizeValidUntilValue(value) + const normalizedUnit = String(unit || '').trim() + if (normalizedValue && normalizedUnit) { + return normalizedValue + normalizedUnit + } + if (normalizedValue) { + return String(normalizedValue) + } + return normalizedUnit + }, getRohsSubmitFieldValue (fieldId) { const fieldMapping = { materialClassify: 'materialClassifyList', @@ -1300,6 +1359,7 @@ export default { }, validateSubmitRequiredFields () { if (this.plmRohsAuthorityArr && this.plmRohsAuthorityArr.length > 0) { + let validUntilPairRequiredChecked = false for (let i = 0; i < this.plmRohsAuthorityArr.length; i++) { const fieldConfig = this.plmRohsAuthorityArr[i] if (fieldConfig.required !== 'Y') { @@ -1308,6 +1368,19 @@ export default { if (fieldConfig.fieldId === 'hsfStandard' && !this.shouldShowHsfStandard(this.modalData.endCustomer)) { continue } + if (fieldConfig.fieldId === 'validUntil' || fieldConfig.fieldId === 'validUntilValue') { + if (validUntilPairRequiredChecked) { + continue + } + const validUntilValue = this.normalizeValidUntilValue(this.modalData.validUntilValue) + this.$set(this.modalData, 'validUntilValue', validUntilValue) + if (this.isSubmitFieldEmpty(validUntilValue) || this.isSubmitFieldEmpty(this.modalData.validUntil)) { + this.$message.warning('有效期数值/单位不能为空!') + return false + } + validUntilPairRequiredChecked = true + continue + } const value = this.getRohsSubmitFieldValue(fieldConfig.fieldId) if (this.isSubmitFieldEmpty(value)) { this.$message.warning((fieldConfig.fieldName || fieldConfig.fieldId) + '不能为空!') @@ -1318,6 +1391,24 @@ export default { return true }, + validateValidUntilPair () { + const validUntilValue = this.normalizeValidUntilValue(this.modalData.validUntilValue) + const validUntilUnit = String(this.modalData.validUntil || '').trim() + this.$set(this.modalData, 'validUntilValue', validUntilValue) + this.$set(this.modalData, 'validUntil', validUntilUnit) + if (!validUntilValue && !validUntilUnit) { + return true + } + if (!validUntilValue) { + this.$message.warning('请填写有效期数值') + return false + } + if (!validUntilUnit) { + this.$message.warning('请选择有效期单位') + return false + } + return true + }, materialDialogHeaderCellStyle () { return { whiteSpace: 'nowrap', @@ -1731,6 +1822,10 @@ export default { }) this.$set(target, 'endCustomerFlag', !!target.endCustomerFlag) this.$set(target, 'projectIdFlag', !!target.projectIdFlag) + const validUntilValue = target.validUntilValue !== undefined && target.validUntilValue !== null && target.validUntilValue !== '' + ? target.validUntilValue + : fallbackData.validUntilValue + this.$set(target, 'validUntilValue', this.normalizeValidUntilValue(validUntilValue)) }, refreshCurrentTabTable () { if (this.activeTable === 'approvalInformation') { @@ -1909,6 +2004,7 @@ export default { this.$set(this.modalData, 'materialList', Array.isArray(this.modalData.materialList) ? this.modalData.materialList : []) this.$set(this.modalData, 'hsfApproverList', this.modalData.hsfApprover ? this.modalData.hsfApprover.split(';').filter(item => item) : []) this.$set(this.modalData, 'buNo', this.modalData.buNo || '') + this.$set(this.modalData, 'validUntilValue', this.normalizeValidUntilValue(this.modalData.validUntilValue)) this.syncHsfApproverFields() this.fillDisplayFields(this.modalData, row || {}) // 编辑时不允许修改最终客户和项目编码 @@ -1986,6 +2082,7 @@ export default { hsfApproverList: [], relatedPeople: '', buNo: '', + validUntilValue: 0, validUntil: '', isMeetRohsRequirement: '', isAhGrade: '', @@ -2014,6 +2111,9 @@ export default { } this.normalizeHsfStandardByCustomer(this.modalData) this.syncHsfApproverFields() + if (!this.validateValidUntilPair()) { + return + } this.modalData.qualificationDocumentsNeeded = this.modalData.qualificationDocumentsNeededList.join(';') this.modalData.testReportIncludingItems = this.modalData.testReportIncludingItemsList.join(';') this.modalData.materialClassify = this.modalData.materialClassifyList.join(';') @@ -2081,6 +2181,9 @@ export default { } this.normalizeHsfStandardByCustomer(this.modalData) this.syncHsfApproverFields() + if (!this.validateValidUntilPair()) { + return + } if (!this.nodeAuthorityLoaded) { this.$message.warning('节点权限加载中,请稍后重试') return