vue3 下拉框自带的模糊查询不准确 el-autocomplete

一、元素标签写法

 <el-form-item label="配件名称" prop="materialName">
      <el-autocomplete style="width:100%" v-model="form_feiyong.materialName" 
     :fetch-suggestions="querySearchVType" clearable  placeholder="请选择配件名 
      称" @select="selectMaterial" value-key="value" @change="selectMaterial"/>
 </el-form-item>

二、具体方法


  const restaurants = ref([])
// 配件名称过滤修改
const querySearchVType = (queryString:string, cb:any)=>{
  restaurants.value = state.materialOption;
  let results = queryString ? restaurants.value.filter(createFilter(queryString)) : restaurants.value;
  // 调用 callback 返回建议列表的数据
  cb(results);
}
// 过滤方法的实现
const createFilter = (queryString:string)=> {
  return (restaurant:any) => {
    //  第一个字或者字母匹配 return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) > ===0 );
    // 下面的写法支持模糊查询
    return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) > -1);
  }
}
// 选择配件名称
const selectMaterial=(value) =>{
  if(value === ""){
    state.form_feiyong.materialSpec=""
    state.materialSpecOption=[]
    state.form_feiyong.materialType=""
    state.materialTypeOption=[]
  }else{
    // 根据配件名称过滤配件规格
    state.materialSpecOption=state.materialAllOption.filter((item) =>{
      return item.materialName == value.value
    })
  }
}

 

posted @ 2024-11-18 09:31  flyComeOn  阅读(6)  评论(0编辑  收藏  举报