el-select模糊搜索字段高亮

650 阅读1分钟

对你有帮助点个赞

image.png

  <el-form-item label="关联企业名称:" prop="companyData">
          <el-select
            style="width: 200px"
            v-model="formData.companyData"
            :popper-append-to-body="false"
            filterable
            remote
            :disabled="dialogTitle == '编辑资源池'"
            reserve-keyword
            :remote-method="handleRemoteMethod"
            :loading="companyLoading"
            value-key="companyId"
            clearable
            placeholder="可按企业名称搜索"
          >
            <el-option
              v-for="item in companyList"
              :key="item.companyId"
              :label="item.companyName"
              :value="item"
            >
              <span v-html="showHighlight(item.companyName)">{{ item.companyName }}</span>
            </el-option>
          </el-select>
        </el-form-item>
  // 查询备选供应商列表 --最多50条
    async queryPageByName() {
      let params = {
        companyName: this.companyName,
      };
      let res = await api.queryPageByName(params);
      if (res.code == "200") {
        this.companyLoading = false;
        this.companyList = res.data.records;
      }
    },

    // 关联企业名称查询
    handleRemoteMethod(name) {
      if (name !== "") {
        this.companyLoading = true;
        this.companyName = name;
        this.queryPageByName();
      } else {
        this.companyList = [];
      }
    },

    // 高亮显示
    showHighlight(val){
        return val.replace(
        new RegExp(this.companyName, "g"),
        `<span style='color: red'>${this.companyName}</span>`
      );
    },