当前位置: 首页 > news >正文

el-select 搜索无选项时 请求接口添加输入的值

el-select 搜索无选项时 请求接口添加输入的值

<template><div class="flex"><el-select class="w250" v-model="state.brand.id" placeholder="请选择"  clearable             filterable :filter-method="handleQuery" @change="tagHandler"><el-option v-for="item in state.tableData" :key="item.id"            :label="item.displayName" :value="item.id"></el-option><template #empty><div class="add-item"><span class="add-item-value" @click="addBrand"><el-icon><Plus /></el-icon>添加 <span class="searchValue">{{ state.searchValue }}</span></span></div></template></el-select></div>
</template>
<script setup lang="ts">
import { reactive, onMounted } from 'vue';
const state = reactive({// 品牌的数据结构brand: {id: undefined,displayName: '',},// 全部的选项tableData: [] as any,// 存放输入的值searchValue: '',
});onMounted(() => {// 初始请求一次全部选项handleQuery('');
});// 选择以后清空选择框的输入值
const tagHandler = () => {state.searchValue = '';
};// 输入值开始搜索
const handleQuery = async (e: any) => {// 把输入的值存起来state.searchValue = e;let res = await getAPI(ProductExtApi);state.tableData = res.data.result?.items ?? [];
};// 添加品牌
const addBrand = async () => {// 请求添加接口let res = await getAPI(BrandApi)({displayName: state.searchValue,});// 接口返回ID 赋值到我们自定义的数据上面state.brand = {id: res.data.result ?? 0,displayName: state.searchValue,};// 添加完执行一次搜索if (res.data.code == 200) handleQuery(state.searchValue);state.searchValue = '';
};// 组件初始化赋值
const set = (brand: any) => {if (brand) {if (!state.tableData.find((el: any) => el.id == brand.id)) {                state.tableData.push(brand);}state.brand = brand;}
};// 返回给需要的组件
const get = () => {return state.brand.id;
};defineExpose({ set, get });
</script><style lang="scss" scoped>.add-item {padding: 10px;font-size: 14px;.add-item-value {cursor: pointer;}i {vertical-align: text-top;margin-right: 5px;}.searchValue {color: var(--el-color-primary);margin-left: 5px;}
}</style>

http://www.lryc.cn/news/218008.html

相关文章:

  • 基于单片机的商场防盗防火系统设计
  • 【Java|golang】2103. 环和杆---位运算
  • [SSD综述 1.4] SSD固态硬盘的架构和功能导论
  • 【C++那些事儿】类与对象(1)
  • 集简云x slack(自建)无需API开发轻松连接OA、电商、营销、CRM、用户运营、推广、客服等近千款系统
  • JS模块化,ESM模块规范的 导入、导出、引用、调用详解
  • markdown常用的快捷键
  • VSCode中的任务什么情况下需要配置多个问题匹配器problemMatcher?多个问题匹配器之间的关系是什么?
  • C语言鞍点数组改进版
  • K8s:部署 CNI 网络组件+k8s 多master集群部署+负载均衡及Dashboard k8s仪表盘图像化展示
  • 【数据结构】树家族
  • Vert.x学习笔记-Vert.x的基本处理单元Verticle
  • 干货分享:基于 LSTM 的广告库存预估算法
  • dataframe删除某一列
  • 提升ChatGPT答案质量和准确性的方法Prompt engineering
  • SpringBoot + Vue2项目打包部署到服务器后,使用Nginx配置SSL证书,配置访问HTTP协议转HTTPS协议
  • HTML 表格
  • AIGC(生成式AI)试用 10 -- 安全性问题
  • STM32循迹小车原理介绍和代码示例
  • Nginx 配置详细讲解
  • gdb 日志记录不显示到屏幕的方法(gdb13最新版)
  • JAVA智慧工地管理系统源码基于微服务
  • 学习笔记三十四:Ingress和 Ingress Controller概述
  • Webpack的Tree Shaking。它的作用是什么?
  • 研发效能DevOps: Git安装
  • ZZ038 物联网应用与服务赛题第D套
  • 基于STM32设计的室内环境监测系统(华为云IOT)_2023
  • UE5C++学习(一)--- 增强输入系统
  • 好物周刊#29:项目管理软件
  • 玻色量子“天工量子大脑”亮相中关村论坛,大放异彩