Browse Source

2026-05-26

RoHs优化
master
fengyuan_yang 2 weeks ago
parent
commit
64e15a9de6
  1. 115
      src/views/modules/rohs/rohsRecord.vue

115
src/views/modules/rohs/rohsRecord.vue

@ -84,7 +84,11 @@
<el-table-column prop="expectReportTime" header-align="center" align="center" label="报告时间(月)" width="200"></el-table-column>
<el-table-column prop="sgsReportNumber" header-align="center" align="center" label="SGS报告编号" width="190" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="expiredDate" header-align="center" align="center" label="报告日期" width="165"></el-table-column>
<el-table-column prop="validUntil" header-align="center" align="center" label="有效期" width="160"></el-table-column>
<el-table-column header-align="center" align="center" label="有效期" width="170" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span>{{ getValidUntilDisplay(scope.row.validUntilValue, scope.row.validUntil) }}</span>
</template>
</el-table-column>
<el-table-column prop="isMeetRohsRequirement" header-align="center" align="center" label="符合RoHS" width="170"></el-table-column>
<el-table-column prop="isAhGrade" header-align="center" align="center" label="AH属性" width="140"></el-table-column>
<el-table-column prop="hsfSupplierClassification" header-align="center" align="center" label="HSF供应商等级" width="220"></el-table-column>
@ -304,8 +308,19 @@
<el-form-item label="报告日期/Expired Date">
<el-date-picker v-model="modalData.expiredDate" type="date" value-format="yyyy-MM-dd" :disabled="isRohsFieldDisabled('expiredDate')" style="width: 180px" :editable=false></el-date-picker>
</el-form-item>
<el-form-item label="有效期/Valid Until">
<dict-data-select v-model="modalData.validUntil" clearable :disabled="isRohsFieldDisabled('validUntil')" style="width: 180px" dict-type="rohs_valid_until"></dict-data-select>
<el-form-item label="有效期数值/Valid Until Value">
<el-input-number
v-model="modalData.validUntilValue"
:controls="false"
:min="0"
:step="1"
:precision="0"
:disabled="isValidUntilValueDisabled()"
style="width: 150px">
</el-input-number>
</el-form-item>
<el-form-item label="有效期单位/Valid Until Unit">
<dict-data-select v-model="modalData.validUntil" clearable :disabled="isValidUntilUnitDisabled()" style="width: 180px" dict-type="rohs_valid_until"></dict-data-select>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="modalData">
@ -322,7 +337,7 @@
</el-radio-group>
</el-form-item>
<el-form-item label="HSF供应商等级/Supplier Class">
<el-radio-group v-model="modalData.hsfSupplierClassification" :disabled="isRohsFieldDisabled('hsfSupplierClassification')" style="width: 180px">
<el-radio-group v-model="modalData.hsfSupplierClassification" :disabled="isRohsFieldDisabled('hsfSupplierClassification')" style="width: 200px">
<el-radio label="A类" @click.native.prevent="radioClick('hsfSupplierClassification', 'A类')">A类</el-radio>
<el-radio label="B类" @click.native.prevent="radioClick('hsfSupplierClassification', 'B类')">B类</el-radio>
<el-radio label="C类" @click.native.prevent="radioClick('hsfSupplierClassification', 'C类')">C类</el-radio>
@ -789,14 +804,17 @@
<el-form-item label="报告日期/Expired Date">
<el-date-picker :value="currentRow.expiredDate" disabled type="date" value-format="yyyy-MM-dd" style="width: 180px"></el-date-picker>
</el-form-item>
<el-form-item label="有效期/Valid Until">
<el-form-item label="有效期数值/Valid Until Value">
<el-input :value="currentRow.validUntilValue || ''" disabled style="width: 150px"></el-input>
</el-form-item>
<el-form-item label="有效期单位/Valid Until Unit">
<el-input :value="currentRow.validUntil || ''" disabled style="width: 180px"></el-input>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="currentRow">
<el-form-item label="是否符合RoHS/Meet RoHS Req"><el-input :value="displayYesNo(currentRow.isMeetRohsRequirement)" disabled style="width: 230px"></el-input></el-form-item>
<el-form-item label="材料属性是否是AH/Is AH Grade"><el-input :value="displayYesNo(currentRow.isAhGrade)" disabled style="width: 180px"></el-input></el-form-item>
<el-form-item label="HSF供应商等级/Supplier Class"><el-input :value="currentRow.hsfSupplierClassification || ''" disabled style="width: 180px"></el-input></el-form-item>
<el-form-item label="HSF供应商等级/Supplier Class"><el-input :value="currentRow.hsfSupplierClassification || ''" disabled style="width: 200px"></el-input></el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="currentRow">
<el-form-item label="HSF审批人/HSF Approver"><el-input :value="currentRow.hsfApprover || ''" disabled style="width: 420px"></el-input></el-form-item>
@ -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

Loading…
Cancel
Save