element表格自定义筛选
文章目录
- 前言
- 一、简介
- 二、效果展示
- 三、源码
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
…待续
提示:以下是本篇文章正文内容,下面案例可供参考
一、简介
修改el-table的筛选…待续
二、效果展示


三、源码
使用方法
<el-table-columnalign="center"prop="status":column-key="'status'"
><template #header><div class="layout-center-center"><span>路由状态</span><table-filterplaceholder="按路由状态搜索"filter-key="status"sortable:options="routeStatusList"@confirm="handleFilter":checked-list="tempFlow.status_list":sequence="tempFlow.sequence"></table-filter></div></template><template #default="{ row }"><span v-if="row.status == 0" style="color: green">[{{ row.status }}]{{ row.status_desc }}</span><span v-else style="color: red">[{{ row.status }}]{{ row.status_desc }}</span></template>
</el-table-column>
组件源码
<template><div class="table-filter" @click.stop><el-popoverref="popoverRef"popper-class="table-filter-box"placement="bottom":width="250"trigger="click"@show="handleShow"@hide="handleHide"><template #reference><el-icon v-if="showParams.showSelectBox"><ArrowUp /></el-icon><el-icon v-if="!showParams.showSelectBox"><ArrowDown /></el-icon></template><section class="table-filter-btns"><el-inputv-if="filter"v-model="searchKey":placeholder="placeholder"size="mini"class="filte-input"@input="search"/><el-divider v-if="filter" /><el-scrollbar max-height="200px" ref="scrollbarRef" v-if="filter"><div><el-checkboxv-model="checkAll"label="全部"size="large"@change="selectAll"/></div><divclass="infinite-list-item"v-for="option in showOptions":key="option"><el-checkboxv-model="option.checked":label="option.label"size="large"@change="selectItem(option.value, option.checked)"/></div></el-scrollbar><el-divider v-if="filter" /><div v-if="props.sortable"><el-checkbox v-model="sortable_asc" label="ASC" /><el-checkbox v-model="sortable_desc" label="DESC" /></div><el-divider v-if="props.sortable" /><section class="btns"><el-button type="primary" size="small" @click="handleConfirm">筛选</el-button><el-buttonsize="small"color="#ff5722"style="color: #fff"@click="handleCancel">取消</el-button></section></section></el-popover><el-icon v-if="checkedList.length > 0"><Filter /></el-icon><el-icon v-if="sortable_asc"><CaretTop /></el-icon><el-icon v-if="sortable_desc"><CaretBottom /></el-icon></div>
</template><script setup>
import { defineProps, reactive, ref, watch } from "vue";
const props = defineProps({placeholder: {},options: {},filterKey: {},checkedList: {type: Array,default: [],},sequence: {},sortable: {type: Boolean,default: false,},filter: {type: Boolean,default: true,},
});
let curCheckedList = _.cloneDeep(props.checkedList);
let curSequence = props.sequence;
const emit = defineEmits(["confirm"]);const scrollbarRef = ref();
const popoverRef = ref();
let searchKey = ref();
let checkAll = ref(true); //默认全选
let showOptions = ref([]);
let showParams = reactive({showSelectBox: false, //展示下拉框
});
let timer = ""; //处理输入事件的定时器,一次只允许一个定时器存在,避免过度刷新造成的卡顿
let timer_ = "";
let sortable_asc = ref(false);
let sortable_desc = ref(false);
let ifDoSearch = false; // 是否正在处理输入的数据中...
const init = (sequence) => {showOptions.value = _.cloneDeep(props.options);if (curCheckedList.length == props.options.length) {checkAll.value = true;} else {checkAll.value = false;}if (!sequence) {sortable_asc.value = false;sortable_desc.value = false;} else if (sequence == "ASC") {sortable_asc.value = true;} else if (sequence == "DESC") {sortable_desc.value = true;}
};
init(curSequence);// 点击全选
const selectAll = (checked) => {if (checked) {curCheckedList = [];showOptions.value = showOptions.value.map((item) => {item.checked = true;curCheckedList.push(item.value);return item;});} else {showOptions.value = showOptions.value.map((item) => {item.checked = false;return item;});curCheckedList = [];}
};// 勾选当前选项
const selectItem = (id, checked) => {if (checked) {curCheckedList.push(id);if (curCheckedList.length == props.options.length) {checkAll.value = true;}} else {curCheckedList.splice(curCheckedList.indexOf(id), 1);checkAll.value = false;}
};/*** @desc 确认事件*/
const handleConfirm = () => {emit("confirm", {key: props.filterKey,checkedList: curCheckedList,sequence: curSequence,});props.checkedList = _.cloneDeep(curCheckedList);props.sequence = curSequence;popoverRef.value.hide();
};/*** @desc 取消事件*/
const handleCancel = () => {popoverRef.value.hide();curCheckedList = _.cloneDeep(props.checkedList);init(props.sequence);
};// 下拉框展示触发的事件
const handleShow = (e) => {showParams.showSelectBox = true;if (props.filter) {scrollbarRef.value.setScrollTop(0);}
};
const handleHide = (e) => {showParams.showSelectBox = false;
};function search(query) {if (ifDoSearch) {clearTimeout(timer);clearTimeout(timer_);}timer = setTimeout(filterMethod(query), 0);ifDoSearch = true;
}function filterMethod(query) {let tmp = [];if (query !== "") {timer_ = setTimeout(() => {props.options.forEach((item) => {if (item.label.toLowerCase().indexOf(query.toLowerCase()) > -1 ||item.value == -1) {tmp.push(item);}});showOptions.value = tmp;}, 0);} else {showOptions.value = props.options;}ifDoSearch = false;
}watch(() => sortable_asc.value,(newValue, oldValue) => {if (newValue === oldValue) {return;} else if (newValue) {curSequence = "ASC";sortable_desc.value = false;} else if (!newValue) {curSequence = "";}}
);watch(() => sortable_desc.value,(newValue, oldValue) => {if (newValue === oldValue) {return;} else if (newValue) {curSequence = "DESC";sortable_asc.value = false;} else if (!newValue) {curSequence = "";}}
);
</script><style lang="less" scoped>
:deep(.el-divider--horizontal) {margin: 12px 0px;
}
:deep(.el-popper) {padding: 0px;
}
:deep(.el-popover) {padding: 0px;
}
.table-filter {display: inline-block;cursor: pointer;
}
.table-filter-box {height: 25px;line-height: 25px;
}
.table-filter-icon {font: 500;font-size: 18px;
}
.filte-input {width: 100%;
}
.btns {float: right;
}
.infinite-list {padding: 0;margin: 0;list-style: none;
}
</style>
。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
相关文章:
element表格自定义筛选
文章目录 前言一、简介二、效果展示三、源码总结 前言 提示:这里可以添加本文要记录的大概内容: …待续 提示:以下是本篇文章正文内容,下面案例可供参考 一、简介 修改el-table的筛选…待续 二、效果展示 三、源码 使用方法…...
全方位 Linux 性能调优经验总结
Part1Linux性能优化 1性能优化 性能指标 高并发和响应快对应着性能优化的两个核心指标:吞吐和延时 图片来自: www.ctq6.cn 应用负载角度:直接影响了产品终端的用户体验系统资源角度:资源使用率、饱和度等 性能问题的本质就是系统资源已经…...
Linux机器网络检查
查看DNS file: dianTestLRSSnapshot:~$ cat /etc/resolv.conf # This file is managed by man:systemd-resolved(8). Do not edit. # # This is a dynamic resolv.conf file for connecting local clients to the # internal DNS stub resolver of systemd-resolved. This file…...
使用示例和应用程序全面了解高效数据管理的Golang MySQL数据库
Golang,也被称为Go,已经成为构建强大高性能应用程序的首选语言。在处理MySQL数据库时,Golang提供了一系列强大的库,简化了数据库交互并提高了效率。在本文中,我们将深入探讨一些最流行的Golang MySQL数据库库ÿ…...
ubuntu 22.04 源码安装 apollo 8.0
对于其他的关于GPU的安装包需求,这里不再列出,因为我之前安装过,偷个懒就不写了,哈哈哈哈1, 安装docker 安装docker命令(这里的安装命令都是在docker官网,还有安装包): 1, 设置docker的apt仓库 # Add Do…...
RK3588编译MXNet框架
目录 1. 背景 2.编译MXNet准备 3.开发板编译 1. 背景 MXNet(也称为Apache MXNet或incubator-mxnet)是一个开源的深度学习框架,它最初由华为和亚马逊AWS共同开发,并于2017年成为Apache软件基金会的孵化项目。MXNet旨在提供高效、…...
港府Web3宣言周年思考:合规困境中的“隐患”
出品|欧科云链研究院 作者|毕良寰 距离《有关虚拟资产在港发展的政策宣言》已过去一年,我们欧科云链研究院在分析全球几个主要国家和地区对Web3的监管政策及态度后,对港府的雄心壮志充满期待。然而,由于近期一些庞氏骗…...
vue点击按钮跳转页面
在Vue.js中,你可以使用<router-link>或this.$router.push()来实现点击按钮跳转页面的功能,前提是你已经配置了Vue Router。以下是两种不同的方法来实现页面跳转: 方法一:使用<router-link> <router-link> 是Vu…...
大中小企业对CRM系统的需求
在以前,CRM客户管理系统是大型企业的专属。如今,不论何种规模的企业都能够使用CRM系统。市面上的CRM有着丰富的功能类型,管理者可以从企业自身规模出发,选择适合的CRM系统。下面说说,大中小企业对CRM系统的需求。 一句…...
.net core iis 发布后登入的时候请求不到方法报错502
.net core iis 发布后登入的时候请求不到方法报错502 502 bad gateway 502 - Web 服务器在作为网关或代理服务器时收到了无效响应。 您要查找的页面有问题,无法显示。当 Web 服务器(作为网关或代理)与上游内容服务器联系时,收到来自内容服务器的无效…...
知识图谱实战应用30-知识图谱在反欺诈情报分析项目中的应用实践
大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用30-知识图谱在反欺诈情报分析项目中的应用实践,现代商业环境中,各类欺诈行为日益猖獗,严重影响企业的运营和社会秩序。传统的欺诈检测方法难以满足实时性和有效性方面的要求。本文介绍了采用知识图谱技术构建反欺诈情报…...
[云原生1. ] 使用Docker-compose一键部署Wordpress平台
文章目录 1. Docker-compose概述1.1 简介1.2 docker-compose 的三大概念1.3 docker-compose配置模板文件常用的字段1.4 docker-compose 常用命令及格式 2. YAML 文件的详细介绍及编写注意事项2.1 简介2.2 yaml的特性2.2.1 语法特点2.2.2 数据结构2.2.3 引号的区别2.2.4 内置类型…...
springboot--基本特性--自定义 Banner
SpringApplication的使用 前言效果1.1 自定义banner1.2 自定义SpringApplication配置文件优先级高于程序化调整的优先级启动自定义banner关闭自定义banner 1.3 FluentBuilder API 前言 修改启动时候的修改banner 效果 1.1 自定义banner banner制定官网链接 在配置文件中设置…...
Vue3:checkbox使用及限制选中数量
HTML: <!--投票列表--> <ul class"list f16"><li v-for"(list,index) in listData" :key"index" ><!--div click"goAbout(list.orderid)">img :src"list.thumb"<span><i>编…...
如何选择更快更稳定的存储服务器
如何选择更快更稳定的存储服务器 选择更快、更稳定的存储服务器需要考虑以下几个方面: 存储介质:存储服务器的主要存储介质包括固态硬盘和机械硬盘。相比于机械硬盘,固态硬盘具有更高的读写速度和更低的延迟,因此能够提供更快的数…...
AcWing89. a^b
题目 求 a a a 的 b b b 次方对 p p p 取模的值。 输入格式 三个整数 a , b , p , a,b,p, a,b,p, 在同一行用空格隔开。 输出格式 输出一个整数,表示 a^b mod p 的值。 数据范围 0 ≤ a , b ≤ 1 0 9 0≤a,b≤10^9 0≤a,b≤109 1 ≤ p ≤ 1 0 9 1≤p≤10^…...
【推荐系统】推荐算法:冷启动-召回-粗排-精排-重排 解读
【推荐系统】推荐算法:冷启动-召回-粗排-精排-重排 解读 文章目录 【推荐系统】推荐算法:冷启动-召回-粗排-精排-重排 解读1. 介绍2. 冷启动2.1 用户冷启动2.1.1 利用用户注册信息冷启动2.1.2 好物推荐冷启动2.1.3 问题启发式冷启动2.1.4 社交冷启动2.1.…...
NB-IOT的粮库挡粮门异动监测装置
一种基于NBIOT的粮库挡粮门异动监测装置,包括若干个NBIOT开门监测装置,物联网后台管理系统,NBIOT低功耗广域网络和用户访问终端;各个NBIOT开门监测装置通过NBIOT低功耗广域网络与物联网后台管理系统连接,物联网后台管理系统与用户访问终端连接.NBIOT开门监测装置能够对粮库挡粮…...
六、【图像去水印】
文章目录 裁剪法移动复制法内容识别去水印色阶法去水印消失点法去水印反相混合法 裁剪法 处于边缘的水印,通过裁剪去除,如下图: 移动复制法 移动复制法适用于水印的背景这部分区域比较相似的情况下使用,如下图先使用矩形选区选中…...
电子电器架构 —— 车载网关初入门(二)
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 PS:小细节,本文字数5000+,详细描述了网关在车载框架中的具体性能设置。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
云安全与网络安全:核心区别与协同作用解析
在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...
AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)
Name:3ddown Serial:FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名:Axure 序列号:8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...
