需求:
将图一操作变更为图二,选中时选择框内显示选择选项,下拉框内不显示选中选项,并且多个下拉框同步共享(即加工工位选择过的,其他工位无法选择)
代码:
<el-form-item label="加工工位:" prop="processStationConf">
<el-select v-model="form.processStationConf" multiple placeholder="请选择加工工位" clearable @change="searchSelect(form.processStationConf, form.pullOutStationConf, form.pullInStationConf, form.passStationConf)">
<el-option v-for="item in NworkStationList" :label="item.workStationName"
:value="item.workStationCode" :key="item.workStationCode"></el-option>
</el-select>
</el-form-item>
<el-form-item label="拉出工位:" prop="processStationConf">
<el-select v-model="form.pullOutStationConf" multiple placeholder="请选择拉出工位" clearable @change="searchSelect(form.processStationConf, form.pullOutStationConf, form.pullInStationConf, form.passStationConf)">
<el-option v-for="item in NworkStationList" :label="item.workStationName"
:value="item.workStationCode" :key="item.workStationCode"></el-option>
</el-select>
</el-form-item>
js:
/**
* 每次改变数据,就会请求原有的数据,即:每次选择数据都会在原有数据上过滤
*/
searchSelect(a, b, c, d) {
// 扩展运算符
let val = [...a, ...b, ...c, ...d]
listWorkStation().then(res => {
//接受后端数据
this.NworkStationList = res
//对选择的数据进行遍历
val.forEach(i => {
//过滤出未被选择的数据
this.NworkStationList = this.NworkStationList.filter(item => {
return item.workStationCode != i
})
})
})
},