|
|
|
@ -52,6 +52,46 @@ |
|
|
|
<el-form-item label="打样单号"> |
|
|
|
<el-input v-model="searchData.proofingNo" clearable placeholder="请输入打样单号" style="width: 120px" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="区域"> |
|
|
|
<el-select v-model="searchData.cProjectRegion" clearable placeholder="全部" style="width: 110px"> |
|
|
|
<el-option |
|
|
|
v-for="i in cProjectRegionList" |
|
|
|
:key="`searchRegion_${i.cProjectRegion}`" |
|
|
|
:label="i.cProjectRegion" |
|
|
|
:value="i.cProjectRegion" |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="Engineer"> |
|
|
|
<el-select v-model="searchData.engineer" filterable clearable placeholder="全部" style="width: 130px"> |
|
|
|
<el-option |
|
|
|
v-for="item in searchEngineerOptions" |
|
|
|
:key="`searchEngineer_${item.value}`" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value" |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="PM/Sales"> |
|
|
|
<el-select v-model="searchData.projectManager" filterable clearable placeholder="全部" style="width: 130px"> |
|
|
|
<el-option |
|
|
|
v-for="item in searchProjectManagerOptions" |
|
|
|
:key="`searchProjectManager_${item.value}`" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value" |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="PIC"> |
|
|
|
<el-select v-model="searchData.pic" filterable clearable placeholder="全部" style="width: 130px"> |
|
|
|
<el-option |
|
|
|
v-for="item in searchPicOptions" |
|
|
|
:key="`searchPic_${item.value}`" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value" |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="项目/物料同步"> |
|
|
|
<el-select v-model="searchData.projectPartSyncFlag" clearable placeholder="全部" style="width: 120px"> |
|
|
|
<el-option label="已同步" value="Y" /> |
|
|
|
@ -1427,6 +1467,10 @@ export default { |
|
|
|
dryWetType: '', |
|
|
|
customerNo: '', |
|
|
|
proofingNo: '', |
|
|
|
cProjectRegion: '', |
|
|
|
engineer: '', |
|
|
|
projectManager: '', |
|
|
|
pic: '', |
|
|
|
projectPartSyncFlag: '', |
|
|
|
proofSyncFlag: '', |
|
|
|
proofingStatusList: [] |
|
|
|
@ -1435,6 +1479,9 @@ export default { |
|
|
|
searchCustomerOptionLoading: false, |
|
|
|
searchCustomerQueryToken: 0, |
|
|
|
searchCustomerOptionInitialized: false, |
|
|
|
searchEngineerOptions: [], |
|
|
|
searchProjectManagerOptions: [], |
|
|
|
searchPicOptions: [], |
|
|
|
trackingColumnList: cloneDefaultTrackingColumns(), |
|
|
|
hasUserTrackingColumnConfig: false, |
|
|
|
processColumns: cloneDefaultProcessColumns(), |
|
|
|
@ -1618,7 +1665,11 @@ export default { |
|
|
|
}, |
|
|
|
activated () { |
|
|
|
this.loadUserBuList().then(() => { |
|
|
|
return Promise.all([this.queryProcessColumns(), this.loadTrackingColumns()]) |
|
|
|
return Promise.all([ |
|
|
|
this.queryProcessColumns(), |
|
|
|
this.loadTrackingColumns(), |
|
|
|
this.loadSearchRoleOptions() |
|
|
|
]) |
|
|
|
}).then(() => { |
|
|
|
this.queryBuProcessConfig() |
|
|
|
this.getDataList() |
|
|
|
@ -3529,7 +3580,7 @@ export default { |
|
|
|
roleDesc: '', |
|
|
|
active: queryData && queryData.active ? queryData.active : '', |
|
|
|
page: 1, |
|
|
|
limit: 200 |
|
|
|
limit: queryData && queryData.limit ? queryData.limit : 200 |
|
|
|
} |
|
|
|
return apiFn(params).then(({ data }) => { |
|
|
|
if (data && data.code === 0) { |
|
|
|
@ -3986,6 +4037,10 @@ export default { |
|
|
|
this.searchData.dryWetType = '' |
|
|
|
this.searchData.customerNo = '' |
|
|
|
this.searchData.proofingNo = '' |
|
|
|
this.searchData.cProjectRegion = '' |
|
|
|
this.searchData.engineer = '' |
|
|
|
this.searchData.projectManager = '' |
|
|
|
this.searchData.pic = '' |
|
|
|
this.searchData.projectPartSyncFlag = '' |
|
|
|
this.searchData.proofSyncFlag = '' |
|
|
|
this.searchData.proofingStatusList = [] |
|
|
|
@ -3994,6 +4049,46 @@ export default { |
|
|
|
this.getDataList('Y') |
|
|
|
}) |
|
|
|
}, |
|
|
|
normalizeSearchRoleOptions (rows) { |
|
|
|
const optionMap = {} |
|
|
|
const options = [] |
|
|
|
;(Array.isArray(rows) ? rows : []).forEach(item => { |
|
|
|
if (!item || this.isBlankValue(item.username)) { |
|
|
|
return |
|
|
|
} |
|
|
|
const username = String(item.username).trim() |
|
|
|
const userDisplay = this.isBlankValue(item.userDisplay) ? '' : String(item.userDisplay).trim() |
|
|
|
const value = userDisplay ? (username + '-' + userDisplay) : username |
|
|
|
if (optionMap[value]) { |
|
|
|
return |
|
|
|
} |
|
|
|
optionMap[value] = true |
|
|
|
options.push({ |
|
|
|
value: value, |
|
|
|
label: userDisplay || username, |
|
|
|
username: username, |
|
|
|
userDisplay: userDisplay |
|
|
|
}) |
|
|
|
}) |
|
|
|
return options.sort((left, right) => String(left.label).localeCompare(String(right.label))) |
|
|
|
}, |
|
|
|
loadSearchRoleOptions () { |
|
|
|
// 与一键创建人员弹窗同源:Engineer / PM/Sales / PIC(PjM) 分别对应角色接口 6 / 0 / 1。 |
|
|
|
const roleQuery = { active: 'Y', limit: 1000 } |
|
|
|
return Promise.all([ |
|
|
|
this.fetchRoleListByApiKey('6', roleQuery), |
|
|
|
this.fetchRoleListByApiKey('0', roleQuery), |
|
|
|
this.fetchRoleListByApiKey('1', roleQuery) |
|
|
|
]).then(([engineerRows, projectManagerRows, picRows]) => { |
|
|
|
this.searchEngineerOptions = this.normalizeSearchRoleOptions(engineerRows) |
|
|
|
this.searchProjectManagerOptions = this.normalizeSearchRoleOptions(projectManagerRows) |
|
|
|
this.searchPicOptions = this.normalizeSearchRoleOptions(picRows) |
|
|
|
}).catch(() => { |
|
|
|
this.searchEngineerOptions = [] |
|
|
|
this.searchProjectManagerOptions = [] |
|
|
|
this.searchPicOptions = [] |
|
|
|
}) |
|
|
|
}, |
|
|
|
selectionChange (rows) { |
|
|
|
this.selectionRows = rows || [] |
|
|
|
}, |
|
|
|
@ -4221,7 +4316,8 @@ export default { |
|
|
|
return String(projectNo).trim() |
|
|
|
}, |
|
|
|
queryApplyOptionsByProjectNo (projectNo) { |
|
|
|
const normalizedProjectNo = this.normalizeProjectNo(projectNo) |
|
|
|
// 固定取项目编码前10位因为工程系统中项目编码前10位是唯一的,我们这边可能会有后缀或扩展位。 |
|
|
|
const normalizedProjectNo = projectNo.substring(0, 10); |
|
|
|
if (!normalizedProjectNo) { |
|
|
|
return Promise.resolve([]) |
|
|
|
} |
|
|
|
@ -4241,11 +4337,6 @@ export default { |
|
|
|
if (!item || this.isBlankValue(item.applyNo)) { |
|
|
|
return |
|
|
|
} |
|
|
|
const applyStatus = this.isBlankValue(item.status) ? '' : String(item.status).trim() |
|
|
|
// 业务要求:已完成的试验单不允许继续作为 tracking 打样单号使用。 |
|
|
|
if (applyStatus === '草稿' || applyStatus === '已完成') { |
|
|
|
return |
|
|
|
} |
|
|
|
const rowProjectNo = this.normalizeProjectNo(item.projectNo).toUpperCase() |
|
|
|
// searchExpApplyList 按模糊 project_no 查询,这里再次做等值过滤,确保与 tracking 项目编码一一对应。 |
|
|
|
if (rowProjectNo !== matchedProjectNo) { |
|
|
|
|