diff --git a/src/views/modules/erf/components/expApplyForm.vue b/src/views/modules/erf/components/expApplyForm.vue index 36fceed..043108c 100644 --- a/src/views/modules/erf/components/expApplyForm.vue +++ b/src/views/modules/erf/components/expApplyForm.vue @@ -79,14 +79,14 @@ - + 试验负责人 - + - + 0) { + this.handleWorkshopLeaderChange(this.workshopLeaderUserIds) } } else { this.pjmLeaderList = [] @@ -431,18 +437,79 @@ export default { : (this.saveHeaderData.pjmLeaderName || '') }, + /** + * 解析生产车间负责人ID列表 + */ + parseWorkshopLeaderUserIds(value) { + if (value === null || value === undefined || value === '') { + return [] + } + const sourceList = Array.isArray(value) ? value : String(value).split(',') + const idList = [] + sourceList.forEach(item => { + const id = Number(String(item).trim()) + if (Number.isFinite(id) && !idList.includes(id)) { + idList.push(id) + } + }) + return idList + }, + + /** + * 解析生产车间负责人姓名列表 + */ + parseWorkshopLeaderNames(value) { + if (!value) { + return [] + } + return String(value).split(',').map(item => item.trim()).filter(item => !!item) + }, + + /** + * 初始化生产车间负责人多选数据 + */ + normalizeWorkshopLeaderSelection() { + this.workshopLeaderUserIds = this.parseWorkshopLeaderUserIds(this.saveHeaderData.workshopLeaderUserId) + this.saveHeaderData.workshopLeaderUserId = this.workshopLeaderUserIds.length > 0 + ? this.workshopLeaderUserIds.join(',') + : '' + this.saveHeaderData.workshopLeaderName = this.parseWorkshopLeaderNames( + this.saveHeaderData.workshopLeaderName + ).join(',') + }, + /** * 处理生产车间负责人变更 */ - handleWorkshopLeaderChange(userId) { - if (!userId) { + handleWorkshopLeaderChange(userIds) { + const oldWorkshopLeaderIds = this.parseWorkshopLeaderUserIds(this.saveHeaderData.workshopLeaderUserId) + const oldWorkshopLeaderNames = this.parseWorkshopLeaderNames(this.saveHeaderData.workshopLeaderName) + const oldWorkshopLeaderNameMap = {} + oldWorkshopLeaderIds.forEach((id, index) => { + const oldName = oldWorkshopLeaderNames[index] + if (oldName) { + oldWorkshopLeaderNameMap[id] = oldName + } + }) + + const workshopLeaderIds = this.parseWorkshopLeaderUserIds(userIds) + this.workshopLeaderUserIds = workshopLeaderIds + this.saveHeaderData.workshopLeaderUserId = workshopLeaderIds.length > 0 ? workshopLeaderIds.join(',') : '' + + if (workshopLeaderIds.length === 0) { this.saveHeaderData.workshopLeaderName = '' return } - const selected = this.workshopLeaderList.find(item => item.userId === userId) - this.saveHeaderData.workshopLeaderName = selected - ? (selected.userDisplay || selected.username || '') - : (this.saveHeaderData.workshopLeaderName || '') + + const workshopLeaderNameList = workshopLeaderIds.map(userId => { + const selected = this.workshopLeaderList.find(item => Number(item.userId) === Number(userId)) + if (selected) { + return selected.userDisplay || selected.username || '' + } + return oldWorkshopLeaderNameMap[userId] || '' + }).filter(name => !!name) + + this.saveHeaderData.workshopLeaderName = workshopLeaderNameList.join(',') }, /** @@ -466,17 +533,21 @@ export default { * 编辑场景兜底:已选生产车间负责人不在当前下拉项时补充显示 */ ensureWorkshopLeaderOption() { - if (!this.saveHeaderData.workshopLeaderUserId) { + if (!this.workshopLeaderUserIds || this.workshopLeaderUserIds.length === 0) { return } - const exist = this.workshopLeaderList.some(item => item.userId === this.saveHeaderData.workshopLeaderUserId) - if (!exist && this.saveHeaderData.workshopLeaderName) { - this.workshopLeaderList.push({ - userId: this.saveHeaderData.workshopLeaderUserId, - username: this.saveHeaderData.workshopLeaderName, - userDisplay: this.saveHeaderData.workshopLeaderName - }) - } + const workshopLeaderNames = this.parseWorkshopLeaderNames(this.saveHeaderData.workshopLeaderName) + this.workshopLeaderUserIds.forEach((userId, index) => { + const exist = this.workshopLeaderList.some(item => Number(item.userId) === Number(userId)) + if (!exist) { + const userDisplay = workshopLeaderNames[index] || String(userId) + this.workshopLeaderList.push({ + userId: userId, + username: userDisplay, + userDisplay: userDisplay + }) + } + }) }, /**