|
|
|
@ -105,8 +105,8 @@ |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col :span="24"> |
|
|
|
<el-form-item label="生产车间负责人"> |
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item label="生产车间负责人" prop="workshopLeaderUserId"> |
|
|
|
<el-select |
|
|
|
v-model="workshopLeaderUserIds" |
|
|
|
:disabled="readonly" |
|
|
|
@ -114,7 +114,7 @@ |
|
|
|
collapse-tags-tooltip |
|
|
|
clearable |
|
|
|
filterable |
|
|
|
placeholder="可多选,非必填" |
|
|
|
placeholder="可多选,请至少选择1人" |
|
|
|
style="width: 100%" |
|
|
|
@change="handleWorkshopLeaderChange"> |
|
|
|
<el-option |
|
|
|
@ -126,6 +126,27 @@ |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item label="QC车间负责人"> |
|
|
|
<el-select |
|
|
|
v-model="qcWorkshopLeaderUserIds" |
|
|
|
:disabled="readonly" |
|
|
|
multiple |
|
|
|
collapse-tags-tooltip |
|
|
|
clearable |
|
|
|
filterable |
|
|
|
placeholder="可多选,非必填" |
|
|
|
style="width: 100%" |
|
|
|
@change="handleQcWorkshopLeaderChange"> |
|
|
|
<el-option |
|
|
|
v-for="item in qcWorkshopLeaderList" |
|
|
|
:key="item.userId" |
|
|
|
:label="item.userDisplay || item.username" |
|
|
|
:value="item.userId"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<el-col :span="24"> |
|
|
|
<el-form-item label="试验目的" prop="purpose"> |
|
|
|
@ -214,45 +235,6 @@ |
|
|
|
</el-row>--> |
|
|
|
|
|
|
|
<!-- 只读模式下显示的附加信息 --> |
|
|
|
<template v-if="readonly && saveHeaderData.applyNo"> |
|
|
|
<el-divider content-position="left">试验单信息</el-divider> |
|
|
|
|
|
|
|
<el-row :gutter="20"> |
|
|
|
<el-col :span="8"> |
|
|
|
<el-form-item label="试验单号"> |
|
|
|
<span>{{ saveHeaderData.applyNo }}</span> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<el-col :span="8"> |
|
|
|
<el-form-item label="状态"> |
|
|
|
<el-tag :type="getStatusType(saveHeaderData.status)"> |
|
|
|
{{ getStatusText(saveHeaderData.status) }} |
|
|
|
</el-tag> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<el-col :span="8"> |
|
|
|
<el-form-item label="申请人"> |
|
|
|
<span>{{ saveHeaderData.creatorName }}</span> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
|
|
|
|
<el-row :gutter="20"> |
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item label="创建时间"> |
|
|
|
<span>{{ saveHeaderData.createTime }}</span> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item label="更新时间"> |
|
|
|
<span>{{ saveHeaderData.updateTime }}</span> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</template> |
|
|
|
</el-form> |
|
|
|
|
|
|
|
<!-- 用户选择弹窗 --> |
|
|
|
@ -286,6 +268,7 @@ export default { |
|
|
|
buList: [], |
|
|
|
pjmLeaderList: [], |
|
|
|
workshopLeaderList: [], |
|
|
|
qcWorkshopLeaderList: [], |
|
|
|
saveHeaderData: { |
|
|
|
applyNo: '', |
|
|
|
originalApplyNo: '', |
|
|
|
@ -305,12 +288,15 @@ export default { |
|
|
|
pjmLeaderName: '', |
|
|
|
workshopLeaderUserId: '', |
|
|
|
workshopLeaderName: '', |
|
|
|
qcWorkshopLeaderUserId: '', |
|
|
|
qcWorkshopLeaderName: '', |
|
|
|
contactMethod: '', |
|
|
|
processRequirement: '', |
|
|
|
creatorUserId: this.$store.state.user.id, |
|
|
|
creatorName: this.$store.state.user.userDisplay |
|
|
|
}, |
|
|
|
workshopLeaderUserIds: [], |
|
|
|
qcWorkshopLeaderUserIds: [], |
|
|
|
|
|
|
|
formRules: { |
|
|
|
applyNo: [ |
|
|
|
@ -330,6 +316,9 @@ export default { |
|
|
|
], |
|
|
|
expectedFinishDate: [ |
|
|
|
{ required: true, message: '请选择期望完成日期', trigger: 'change' } |
|
|
|
], |
|
|
|
workshopLeaderUserId: [ |
|
|
|
{ required: true, message: '请选择生产车间负责人', trigger: 'change' } |
|
|
|
] |
|
|
|
}, |
|
|
|
|
|
|
|
@ -345,7 +334,10 @@ export default { |
|
|
|
this.saveHeaderData.pjmLeaderName = '' |
|
|
|
this.saveHeaderData.workshopLeaderUserId = '' |
|
|
|
this.saveHeaderData.workshopLeaderName = '' |
|
|
|
this.saveHeaderData.qcWorkshopLeaderUserId = '' |
|
|
|
this.saveHeaderData.qcWorkshopLeaderName = '' |
|
|
|
this.workshopLeaderUserIds = [] |
|
|
|
this.qcWorkshopLeaderUserIds = [] |
|
|
|
// BU为空时回退查询全部负责人 |
|
|
|
this.loadPjmLeaderList('') |
|
|
|
return |
|
|
|
@ -356,7 +348,10 @@ export default { |
|
|
|
this.saveHeaderData.pjmLeaderName = '' |
|
|
|
this.saveHeaderData.workshopLeaderUserId = '' |
|
|
|
this.saveHeaderData.workshopLeaderName = '' |
|
|
|
this.saveHeaderData.qcWorkshopLeaderUserId = '' |
|
|
|
this.saveHeaderData.qcWorkshopLeaderName = '' |
|
|
|
this.workshopLeaderUserIds = [] |
|
|
|
this.qcWorkshopLeaderUserIds = [] |
|
|
|
} |
|
|
|
this.loadPjmLeaderList(newVal) |
|
|
|
} |
|
|
|
@ -396,29 +391,36 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 加载负责人列表(PJM负责人 + 生产车间负责人) |
|
|
|
* 加载负责人列表(PJM负责人 + 生产车间负责人 + QC车间负责人) |
|
|
|
*/ |
|
|
|
loadPjmLeaderList(buNo) { |
|
|
|
getPjmLeaderList({ buNo: buNo || '' }).then(({data}) => { |
|
|
|
if (data && data.code === 0) { |
|
|
|
this.pjmLeaderList = data.pjmLeaderList || data.list || [] |
|
|
|
this.workshopLeaderList = data.workshopLeaderList || [] |
|
|
|
this.qcWorkshopLeaderList = data.qcWorkshopLeaderList || [] |
|
|
|
this.ensurePjmLeaderOption() |
|
|
|
this.ensureWorkshopLeaderOption() |
|
|
|
this.ensureQcWorkshopLeaderOption() |
|
|
|
if (this.saveHeaderData.pjmLeaderUserId && !this.saveHeaderData.pjmLeaderName) { |
|
|
|
this.handlePjmLeaderChange(this.saveHeaderData.pjmLeaderUserId) |
|
|
|
} |
|
|
|
if (this.workshopLeaderUserIds.length > 0) { |
|
|
|
this.handleWorkshopLeaderChange(this.workshopLeaderUserIds) |
|
|
|
} |
|
|
|
if (this.qcWorkshopLeaderUserIds.length > 0) { |
|
|
|
this.handleQcWorkshopLeaderChange(this.qcWorkshopLeaderUserIds) |
|
|
|
} |
|
|
|
} else { |
|
|
|
this.pjmLeaderList = [] |
|
|
|
this.workshopLeaderList = [] |
|
|
|
this.qcWorkshopLeaderList = [] |
|
|
|
this.$message.error(data.msg || '加载负责人失败') |
|
|
|
} |
|
|
|
}).catch(() => { |
|
|
|
this.pjmLeaderList = [] |
|
|
|
this.workshopLeaderList = [] |
|
|
|
this.qcWorkshopLeaderList = [] |
|
|
|
this.$message.error('加载负责人异常') |
|
|
|
}) |
|
|
|
}, |
|
|
|
@ -476,6 +478,13 @@ export default { |
|
|
|
this.saveHeaderData.workshopLeaderName = this.parseWorkshopLeaderNames( |
|
|
|
this.saveHeaderData.workshopLeaderName |
|
|
|
).join(',') |
|
|
|
this.qcWorkshopLeaderUserIds = this.parseQcWorkshopLeaderUserIds(this.saveHeaderData.qcWorkshopLeaderUserId) |
|
|
|
this.saveHeaderData.qcWorkshopLeaderUserId = this.qcWorkshopLeaderUserIds.length > 0 |
|
|
|
? this.qcWorkshopLeaderUserIds.join(',') |
|
|
|
: '' |
|
|
|
this.saveHeaderData.qcWorkshopLeaderName = this.parseQcWorkshopLeaderNames( |
|
|
|
this.saveHeaderData.qcWorkshopLeaderName |
|
|
|
).join(',') |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
@ -498,18 +507,84 @@ export default { |
|
|
|
|
|
|
|
if (workshopLeaderIds.length === 0) { |
|
|
|
this.saveHeaderData.workshopLeaderName = '' |
|
|
|
} else { |
|
|
|
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(',') |
|
|
|
} |
|
|
|
this.$nextTick(() => { |
|
|
|
if (this.$refs.applyForm) { |
|
|
|
this.$refs.applyForm.validateField('workshopLeaderUserId') |
|
|
|
} |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 解析QC车间负责人ID列表 |
|
|
|
*/ |
|
|
|
parseQcWorkshopLeaderUserIds(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 |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 解析QC车间负责人姓名列表 |
|
|
|
*/ |
|
|
|
parseQcWorkshopLeaderNames(value) { |
|
|
|
if (!value) { |
|
|
|
return [] |
|
|
|
} |
|
|
|
return String(value).split(',').map(item => item.trim()).filter(item => !!item) |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 处理QC车间负责人变更 |
|
|
|
*/ |
|
|
|
handleQcWorkshopLeaderChange(userIds) { |
|
|
|
const oldQcWorkshopLeaderIds = this.parseQcWorkshopLeaderUserIds(this.saveHeaderData.qcWorkshopLeaderUserId) |
|
|
|
const oldQcWorkshopLeaderNames = this.parseQcWorkshopLeaderNames(this.saveHeaderData.qcWorkshopLeaderName) |
|
|
|
const oldQcWorkshopLeaderNameMap = {} |
|
|
|
oldQcWorkshopLeaderIds.forEach((id, index) => { |
|
|
|
const oldName = oldQcWorkshopLeaderNames[index] |
|
|
|
if (oldName) { |
|
|
|
oldQcWorkshopLeaderNameMap[id] = oldName |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
const qcWorkshopLeaderIds = this.parseQcWorkshopLeaderUserIds(userIds) |
|
|
|
this.qcWorkshopLeaderUserIds = qcWorkshopLeaderIds |
|
|
|
this.saveHeaderData.qcWorkshopLeaderUserId = qcWorkshopLeaderIds.length > 0 ? qcWorkshopLeaderIds.join(',') : '' |
|
|
|
|
|
|
|
if (qcWorkshopLeaderIds.length === 0) { |
|
|
|
this.saveHeaderData.qcWorkshopLeaderName = '' |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
const workshopLeaderNameList = workshopLeaderIds.map(userId => { |
|
|
|
const selected = this.workshopLeaderList.find(item => Number(item.userId) === Number(userId)) |
|
|
|
const qcWorkshopLeaderNameList = qcWorkshopLeaderIds.map(userId => { |
|
|
|
const selected = this.qcWorkshopLeaderList.find(item => Number(item.userId) === Number(userId)) |
|
|
|
if (selected) { |
|
|
|
return selected.userDisplay || selected.username || '' |
|
|
|
} |
|
|
|
return oldWorkshopLeaderNameMap[userId] || '' |
|
|
|
return oldQcWorkshopLeaderNameMap[userId] || '' |
|
|
|
}).filter(name => !!name) |
|
|
|
|
|
|
|
this.saveHeaderData.workshopLeaderName = workshopLeaderNameList.join(',') |
|
|
|
this.saveHeaderData.qcWorkshopLeaderName = qcWorkshopLeaderNameList.join(',') |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
@ -550,6 +625,27 @@ export default { |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 编辑场景兜底:已选QC车间负责人不在当前下拉项时补充显示 |
|
|
|
*/ |
|
|
|
ensureQcWorkshopLeaderOption() { |
|
|
|
if (!this.qcWorkshopLeaderUserIds || this.qcWorkshopLeaderUserIds.length === 0) { |
|
|
|
return |
|
|
|
} |
|
|
|
const qcWorkshopLeaderNames = this.parseQcWorkshopLeaderNames(this.saveHeaderData.qcWorkshopLeaderName) |
|
|
|
this.qcWorkshopLeaderUserIds.forEach((userId, index) => { |
|
|
|
const exist = this.qcWorkshopLeaderList.some(item => Number(item.userId) === Number(userId)) |
|
|
|
if (!exist) { |
|
|
|
const userDisplay = qcWorkshopLeaderNames[index] || String(userId) |
|
|
|
this.qcWorkshopLeaderList.push({ |
|
|
|
userId: userId, |
|
|
|
username: userDisplay, |
|
|
|
userDisplay: userDisplay |
|
|
|
}) |
|
|
|
} |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 获取表单数据(用于验证) |
|
|
|
*/ |
|
|
|
|