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