From a4453540cd9e69c83ee1637ce5bd48675bcb6d84 Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Thu, 21 May 2026 16:18:14 +0800 Subject: [PATCH] =?UTF-8?q?2026-05-21=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 | 118 +++++++++++++++++++++----- 1 file changed, 95 insertions(+), 23 deletions(-) diff --git a/src/views/modules/rohs/rohsRecord.vue b/src/views/modules/rohs/rohsRecord.vue index 360a741..3cb99ca 100644 --- a/src/views/modules/rohs/rohsRecord.vue +++ b/src/views/modules/rohs/rohsRecord.vue @@ -331,26 +331,16 @@ - HSF审批人/HSF Approver + HSF审批人/HSF Approver HSF审批人/HSF Approver - - - - + placeholder="请选择人员" + @focus="openHsfApproverChooseModal"> + @@ -570,6 +560,23 @@ + + + + +
+ 确定 + 取消 +
+
+
+ @@ -1068,6 +1075,12 @@ export default { nodeOptions: [], projectList: [], hsfApproverOptionList: [], + hsfApproverTransferList: [], + hsfApproverFlag: false, + hsfApproverOperatorProp: { + key: 'operatorId', + label: 'operatorName' + }, fileList: [], approvalList: [], plmRohsAuthorityArr: [], @@ -1322,24 +1335,74 @@ export default { this.$set(this.modalData, 'relatedPeople', '') } }, + mapHsfApproverNamesToIds (nameList, optionList = this.hsfApproverOptionList) { + if (!Array.isArray(nameList) || !Array.isArray(optionList) || optionList.length === 0) { + return [] + } + const nameMap = new Map() + optionList.forEach(item => { + if (item && item.operatorName && item.operatorId && !nameMap.has(item.operatorName)) { + nameMap.set(item.operatorName, item.operatorId) + } + }) + return nameList + .map(name => nameMap.get(name)) + .filter(id => !!id) + }, + mapHsfApproverIdsToNames (idList, optionList = this.hsfApproverOptionList) { + if (!Array.isArray(idList) || !Array.isArray(optionList) || optionList.length === 0) { + return [] + } + const idMap = new Map() + optionList.forEach(item => { + if (item && item.operatorId && item.operatorName) { + idMap.set(item.operatorId, item.operatorName) + } + }) + return idList + .map(id => idMap.get(id)) + .filter(name => !!name) + }, + openHsfApproverChooseModal () { + if (this.isRohsFieldDisabled('hsfApprover')) { + return + } + if (!this.modalData || !this.modalData.projectId) { + this.$message.warning('请先选择项目编码') + return + } + this.loadHsfApproverByCurrentProject(false).then(() => { + this.hsfApproverTransferList = this.mapHsfApproverNamesToIds(this.modalData.hsfApproverList) + if (!this.hsfApproverOptionList || this.hsfApproverOptionList.length === 0) { + this.$message.warning('未查询到可选HSF审批人') + return + } + this.hsfApproverFlag = true + }) + }, + saveHsfApproverChooseModal () { + const selectedNames = this.mapHsfApproverIdsToNames(this.hsfApproverTransferList) + this.$set(this.modalData, 'hsfApproverList', selectedNames) + this.syncHsfApproverFields() + this.hsfApproverFlag = false + }, clearHsfApproverFields (clearBuNo = false) { if (clearBuNo) { this.$set(this.modalData, 'buNo', '') } this.hsfApproverOptionList = [] + this.hsfApproverTransferList = [] this.$set(this.modalData, 'hsfApproverList', []) this.$set(this.modalData, 'hsfApprover', '') this.$set(this.modalData, 'relatedPeople', '') }, - handleHsfApproverChange (val) { - this.$set(this.modalData, 'hsfApproverList', Array.isArray(val) ? val : []) - this.syncHsfApproverFields() - }, loadHsfApproverByCurrentProject (forceSelectAll = false) { if (!this.modalData || !this.modalData.site || !this.modalData.projectId) { if (forceSelectAll) { this.$message.warning('请先选择项目编码') } + this.hsfApproverOptionList = [] + this.hsfApproverTransferList = [] if (forceSelectAll) { this.clearHsfApproverFields(false) } @@ -1350,6 +1413,8 @@ export default { if (forceSelectAll) { this.$message.warning('当前项目未维护BU,无法查询HSF审批人') } + this.hsfApproverOptionList = [] + this.hsfApproverTransferList = [] if (forceSelectAll) { this.clearHsfApproverFields(false) } @@ -1363,19 +1428,24 @@ export default { return api.searchBmUser(params).then(({data}) => { if (data && data.code === 0 && Array.isArray(data.rows)) { this.hsfApproverOptionList = data.rows - const allApprovers = data.rows.map(item => item.operatorName).filter(item => item) if (forceSelectAll) { - this.$set(this.modalData, 'hsfApproverList', allApprovers) + const defaultSelectedIds = data.rows.map(item => item.operatorId).filter(item => item) + this.hsfApproverTransferList = defaultSelectedIds + this.$set(this.modalData, 'hsfApproverList', this.mapHsfApproverIdsToNames(defaultSelectedIds, data.rows)) + } else { + this.hsfApproverTransferList = this.mapHsfApproverNamesToIds(this.modalData.hsfApproverList, data.rows) } this.syncHsfApproverFields() } else { this.hsfApproverOptionList = [] + this.hsfApproverTransferList = [] if (forceSelectAll) { this.clearHsfApproverFields(false) } } }).catch(() => { this.hsfApproverOptionList = [] + this.hsfApproverTransferList = [] if (forceSelectAll) { this.clearHsfApproverFields(false) } @@ -1721,6 +1791,8 @@ export default { this.projectMaterialSelections = [] this.materialSelections = [] this.hsfApproverOptionList = [] + this.hsfApproverTransferList = [] + this.hsfApproverFlag = false this.plmRohsAuthorityArr = [] this.nodeAuthorityLoaded = !row this.isEditMode = !!row