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 @@
-
+
+
+ {{ getValidUntilDisplay(scope.row.validUntilValue, scope.row.validUntil) }}
+
+
@@ -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