1,用的el-select可以搜索的下拉框,因为数据多,默认加载下拉框数据调接口只调了200条,但是远程搜索可以搜到所有的数据,比如搜索到了201条,Code是3322,当时正常,
页面要求的是到其他页面再回来的时候,要显示之前筛选过的数据,就做了存储之前的筛选条件(也就是Code为3322这条数据)。那再次进来页面回显的时候,在200条内就找不到3322的code,就回显不出来。
2,想到的解决办法是合并200条的数据数组和存储的数组,再去重,剩下的就是201条数据在下拉框中了,这样就可以回显了
3,在能拿到存储数据的接口处理
let arr2 = []
//resultS是存储的数据
for(let i = 0;i<resultS.Drugs.IDs.length;i++) {
//把存储的改成数组的格式,方便比较
arr2.push({
Code: resultS.Drugs.IDs[i],
Name: '&'+ DeptsName[i],
label: DeptsName[i],
})
}
//处理好再赋值
this.selectObj[2].options = this.concatSort(arr2)
concatSort(arr2){
//对比两个数组,合并两组数据
let arr3 = []
let arr4 = []
arr3 = this.selectObj[2].options.concat(arr2).filter(function(v, i, arr) {
return arr.indexOf(v.Code) === arr.lastIndexOf(v.Code);
});
//去重
for(let i = 0; i < arr3.length; i++){
for(let j = i + 1; j < arr3.length; j++){
if(arr3[i].Code == arr3[j].Code){
j = ++i;
}
}
arr4.push(arr3[i]);
}
//把选中的放上面,添加一个序号,
arr4.forEach((iuu,inde)=>{
this.$set(iuu,'index',inde+1)
})
//排个序
return arr4.sort(this.compare('index'))
},
//排序
compare(property){
return function(a,b){
var value1 = a[property];
var value2 = b[property];
return value2 - value1;
}
},