Browse Source

增加搜索条件

ecss-tx
han\hanst 2 weeks ago
parent
commit
3a9bfc9ea8
  1. 107
      src/views/modules/sampleTracking/projectProofTracking.vue

107
src/views/modules/sampleTracking/projectProofTracking.vue

@ -52,6 +52,46 @@
<el-form-item label="打样单号"> <el-form-item label="打样单号">
<el-input v-model="searchData.proofingNo" clearable placeholder="请输入打样单号" style="width: 120px" /> <el-input v-model="searchData.proofingNo" clearable placeholder="请输入打样单号" style="width: 120px" />
</el-form-item> </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-form-item label="项目/物料同步">
<el-select v-model="searchData.projectPartSyncFlag" clearable placeholder="全部" style="width: 120px"> <el-select v-model="searchData.projectPartSyncFlag" clearable placeholder="全部" style="width: 120px">
<el-option label="已同步" value="Y" /> <el-option label="已同步" value="Y" />
@ -1427,6 +1467,10 @@ export default {
dryWetType: '', dryWetType: '',
customerNo: '', customerNo: '',
proofingNo: '', proofingNo: '',
cProjectRegion: '',
engineer: '',
projectManager: '',
pic: '',
projectPartSyncFlag: '', projectPartSyncFlag: '',
proofSyncFlag: '', proofSyncFlag: '',
proofingStatusList: [] proofingStatusList: []
@ -1435,6 +1479,9 @@ export default {
searchCustomerOptionLoading: false, searchCustomerOptionLoading: false,
searchCustomerQueryToken: 0, searchCustomerQueryToken: 0,
searchCustomerOptionInitialized: false, searchCustomerOptionInitialized: false,
searchEngineerOptions: [],
searchProjectManagerOptions: [],
searchPicOptions: [],
trackingColumnList: cloneDefaultTrackingColumns(), trackingColumnList: cloneDefaultTrackingColumns(),
hasUserTrackingColumnConfig: false, hasUserTrackingColumnConfig: false,
processColumns: cloneDefaultProcessColumns(), processColumns: cloneDefaultProcessColumns(),
@ -1618,7 +1665,11 @@ export default {
}, },
activated () { activated () {
this.loadUserBuList().then(() => { this.loadUserBuList().then(() => {
return Promise.all([this.queryProcessColumns(), this.loadTrackingColumns()])
return Promise.all([
this.queryProcessColumns(),
this.loadTrackingColumns(),
this.loadSearchRoleOptions()
])
}).then(() => { }).then(() => {
this.queryBuProcessConfig() this.queryBuProcessConfig()
this.getDataList() this.getDataList()
@ -3529,7 +3580,7 @@ export default {
roleDesc: '', roleDesc: '',
active: queryData && queryData.active ? queryData.active : '', active: queryData && queryData.active ? queryData.active : '',
page: 1, page: 1,
limit: 200
limit: queryData && queryData.limit ? queryData.limit : 200
} }
return apiFn(params).then(({ data }) => { return apiFn(params).then(({ data }) => {
if (data && data.code === 0) { if (data && data.code === 0) {
@ -3986,6 +4037,10 @@ export default {
this.searchData.dryWetType = '' this.searchData.dryWetType = ''
this.searchData.customerNo = '' this.searchData.customerNo = ''
this.searchData.proofingNo = '' this.searchData.proofingNo = ''
this.searchData.cProjectRegion = ''
this.searchData.engineer = ''
this.searchData.projectManager = ''
this.searchData.pic = ''
this.searchData.projectPartSyncFlag = '' this.searchData.projectPartSyncFlag = ''
this.searchData.proofSyncFlag = '' this.searchData.proofSyncFlag = ''
this.searchData.proofingStatusList = [] this.searchData.proofingStatusList = []
@ -3994,6 +4049,46 @@ export default {
this.getDataList('Y') 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) { selectionChange (rows) {
this.selectionRows = rows || [] this.selectionRows = rows || []
}, },
@ -4221,7 +4316,8 @@ export default {
return String(projectNo).trim() return String(projectNo).trim()
}, },
queryApplyOptionsByProjectNo (projectNo) { queryApplyOptionsByProjectNo (projectNo) {
const normalizedProjectNo = this.normalizeProjectNo(projectNo)
// 1010
const normalizedProjectNo = projectNo.substring(0, 10);
if (!normalizedProjectNo) { if (!normalizedProjectNo) {
return Promise.resolve([]) return Promise.resolve([])
} }
@ -4241,11 +4337,6 @@ export default {
if (!item || this.isBlankValue(item.applyNo)) { if (!item || this.isBlankValue(item.applyNo)) {
return return
} }
const applyStatus = this.isBlankValue(item.status) ? '' : String(item.status).trim()
// tracking 使
if (applyStatus === '草稿' || applyStatus === '已完成') {
return
}
const rowProjectNo = this.normalizeProjectNo(item.projectNo).toUpperCase() const rowProjectNo = this.normalizeProjectNo(item.projectNo).toUpperCase()
// searchExpApplyList project_no tracking // searchExpApplyList project_no tracking
if (rowProjectNo !== matchedProjectNo) { if (rowProjectNo !== matchedProjectNo) {

Loading…
Cancel
Save