From dba88b56a889d25cdd9e677528eda9a5a865a8ec Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Wed, 13 May 2026 16:30:38 +0800 Subject: [PATCH] =?UTF-8?q?2026-05-13=20RoHs=E5=8A=9F=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/modules/rohs/rohsRecord.vue | 67 +++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/src/views/modules/rohs/rohsRecord.vue b/src/views/modules/rohs/rohsRecord.vue index 9b76f65..224f454 100644 --- a/src/views/modules/rohs/rohsRecord.vue +++ b/src/views/modules/rohs/rohsRecord.vue @@ -970,6 +970,7 @@ export default { approvalList: [], plmRohsAuthorityArr: [], plmRohsMaterialAuthorityArr: [], + nodeAuthorityLoaded: false, modalTitle: 'RoHs 新增', activeName: 'basicInfo', showModalFlag: false, @@ -1059,8 +1060,10 @@ export default { if (!site || stepId === null || stepId === undefined || !this.menuId) { this.plmRohsAuthorityArr = [] this.plmRohsMaterialAuthorityArr = [] + this.nodeAuthorityLoaded = true return Promise.resolve() } + this.nodeAuthorityLoaded = false let params = { site: site, stepId: stepId, @@ -1074,9 +1077,11 @@ export default { this.plmRohsAuthorityArr = [] this.plmRohsMaterialAuthorityArr = [] } + this.nodeAuthorityLoaded = true }).catch(() => { this.plmRohsAuthorityArr = [] this.plmRohsMaterialAuthorityArr = [] + this.nodeAuthorityLoaded = true }) }, rohsFieldFlag (fieldId) { @@ -1099,6 +1104,60 @@ export default { canEditRohsMaterial () { return !this.showModalFlag && this.rohsMaterialFieldFlag('testPartNo') !== 'N' }, + getRohsSubmitFieldValue (fieldId) { + const fieldMapping = { + materialClassify: 'materialClassifyList', + qualificationDocumentsNeeded: 'qualificationDocumentsNeededList', + testReportIncludingItems: 'testReportIncludingItemsList' + } + const mappedField = fieldMapping[fieldId] + if (mappedField) { + return this.modalData[mappedField] + } + return this.modalData[fieldId] + }, + isSubmitFieldEmpty (value) { + if (Array.isArray(value)) { + return value.length === 0 + } + if (typeof value === 'string') { + return value.trim() === '' + } + return !value + }, + validateSubmitRequiredFields () { + if (this.plmRohsAuthorityArr && this.plmRohsAuthorityArr.length > 0) { + for (let i = 0; i < this.plmRohsAuthorityArr.length; i++) { + const fieldConfig = this.plmRohsAuthorityArr[i] + if (fieldConfig.required !== 'Y') { + continue + } + const value = this.getRohsSubmitFieldValue(fieldConfig.fieldId) + if (this.isSubmitFieldEmpty(value)) { + this.$message.warning((fieldConfig.fieldName || fieldConfig.fieldId) + '不能为空!') + return false + } + } + } + + const requiredMaterialFields = (this.plmRohsMaterialAuthorityArr || []).filter(item => item.required === 'Y') + if (requiredMaterialFields.length > 0) { + const materialList = Array.isArray(this.modalData.materialList) ? this.modalData.materialList : [] + if (materialList.length === 0) { + this.$message.warning('材料信息不能为空!') + return false + } + for (let i = 0; i < requiredMaterialFields.length; i++) { + const fieldConfig = requiredMaterialFields[i] + const valid = materialList.every(item => !this.isSubmitFieldEmpty(item[fieldConfig.fieldId])) + if (!valid) { + this.$message.warning((fieldConfig.fieldName || fieldConfig.fieldId) + '不能为空!') + return false + } + } + } + return true + }, materialDialogHeaderCellStyle () { return { whiteSpace: 'nowrap', @@ -1368,6 +1427,7 @@ export default { this.materialSelections = [] this.plmRohsAuthorityArr = [] this.plmRohsMaterialAuthorityArr = [] + this.nodeAuthorityLoaded = false this.projectMaterialPageIndex = 1 this.projectMaterialTotal = 0 this.projectMaterialList = [] @@ -1551,6 +1611,13 @@ export default { this.$message.warning('单据主键信息缺失,无法提交审批') return } + if (!this.nodeAuthorityLoaded) { + this.$message.warning('节点权限加载中,请稍后重试') + return + } + if (!this.validateSubmitRequiredFields()) { + return + } this.submitLoading = true let params = { site: this.modalData.site,