20251204,vue列表实现自定义筛选和列

作者:quan2631日期:2025/12/5

1、问题描述

在一个复杂列表,巨多筛选、巨多列表字段,大约70个。产品想要实现,自定义筛选和列。试试,用新的前端框架。列表已经实现,如何实现自定义呢?本来这个预估了3天,没想到不到3小时,搞定。服气+丝滑,见人就想说说。

默认页面:

点击按钮

2、如何实现

定义一个弹框,里边字段固定。截图给豆包,直接生成。

1<!-- ========== 弹框组件放在这里 ========== -->
2<el-dialog
3        title="设置筛选和显示列"
4        :visible.sync="settingDialogVisible"
5        width="80%">
6    <!-- 筛选条件设置部分 -->
7    <el-form :model="userSettingForm" size="small" label-width="100px">
8        <el-form-item label="筛选条件">
9            <el-checkbox-group v-model="userSettingForm.filters" class="filter-group">
10                <el-checkbox label="所购产品" name="filter"></el-checkbox>
11                <el-checkbox label="会员续费情况" name="filter"></el-checkbox>
12                <el-checkbox label="发车通过情况" name="filter"></el-checkbox>
13                <el-checkbox label="活跃情况" name="filter"></el-checkbox>
14                <el-checkbox label="车位数" name="filter"></el-checkbox>
15                <el-checkbox label="经营状况" name="filter"></el-checkbox>
16
17                <el-checkbox label="检测季度等级" name="filter"></el-checkbox>
18                <el-checkbox label="检测渗透率" name="filter"></el-checkbox>
19                <el-checkbox label="最小发车数" name="filter"></el-checkbox>
20                <el-checkbox label="最大发车数" name="filter"></el-checkbox>
21                <el-checkbox label="微店装修情况" name="filter"></el-checkbox>
22                <el-checkbox label="客户编辑使用情况" name="filter"></el-checkbox>
23
24                <el-checkbox label="分享使用情况" name="filter"></el-checkbox>
25                <el-checkbox label="员工通过情况" name="filter"></el-checkbox>
26                <el-checkbox label="员工添加数" name="filter"></el-checkbox>
27                <el-checkbox label="最小员工添加数" name="filter"></el-checkbox>
28                <el-checkbox label="最大员工添加数" name="filter"></el-checkbox>
29                <el-checkbox label="抖音私信回复使用情况" name="filter"></el-checkbox>
30            </el-checkbox-group>
31        </el-form-item>
32
33        <!-- 表格列设置部分 -->
34        <el-form-item label="显示列">
35            <el-checkbox-group v-model="userSettingForm.columns" class="column-group">
36                <el-checkbox label="智慧通主体手机号" name="column"></el-checkbox>
37                <el-checkbox label="城市" name="column"></el-checkbox>
38                <el-checkbox label="市场" name="column"></el-checkbox>
39                <el-checkbox label="车位数" name="column"></el-checkbox>
40                <el-checkbox label="检测季度等级" name="column"></el-checkbox>
41
42                <el-checkbox label="检测渗透率" name="column"></el-checkbox>
43                <el-checkbox label="经营状况" name="column"></el-checkbox>
44                <el-checkbox label="月活跃天数" name="column"></el-checkbox>
45                <el-checkbox label="最近拜访" name="column"></el-checkbox>
46                <el-checkbox label="区域运维" name="column"></el-checkbox>
47
48                <el-checkbox label="培训师" name="column"></el-checkbox>
49                <el-checkbox label="直销销售" name="column"></el-checkbox>
50                <el-checkbox label="已购产品" name="column"></el-checkbox>
51                <el-checkbox label="近一月到期产品" name="column"></el-checkbox>
52                <el-checkbox label="首次付款月度" name="column"></el-checkbox>
53
54                <el-checkbox label="发车通过情况" name="column"></el-checkbox>
55                <el-checkbox label="发车数" name="column"></el-checkbox>
56                <el-checkbox label="客户编辑次数" name="column"></el-checkbox>
57                <el-checkbox label="分享人数" name="column"></el-checkbox>
58                <el-checkbox label="添加员工数" name="column"></el-checkbox>
59
60                <el-checkbox label="微店链接" name="column"></el-checkbox>
61                <el-checkbox label="抖音私信回复人数" name="column"></el-checkbox>
62            </el-checkbox-group>
63        </el-form-item>
64    </el-form>
65
66    <span slot="footer" class="dialog-footer">
67        <el-button @click="settingDialogVisible = false"> </el-button>
68        <el-button type="primary" @click="settingDialogSave"> </el-button>
69    </span>
70</el-dialog>

关键方法

1
2// 11. 自定义筛选表单
3userSettingForm: {
4    // 存储筛选条件的勾选状态
5    filters: [],
6    // 存储表格列的勾选状态
7    columns: []
8},
9// 用于控制实际显示的筛选条件和表格列
10visibleFilters: [],
11visibleColumns: []
12
13
14mounted() {
15    // 从本地存储加载用户之前的设置
16    const savedSettings = localStorage.getItem('trainerFilterSettings');
17    if (savedSettings) {
18        this.userSettingForm = JSON.parse(savedSettings);
19        this.visibleFilters = [...this.userSettingForm.filters];
20        this.visibleColumns = [...this.userSettingForm.columns];
21    }
22},
23
24
25/**
26 * 用户设置栏位和筛选
27 */
28openUserSettingFn(){
29    this.settingDialogVisible = true;
30},
31
32settingDialogSave(){
33    // 将勾选状态同步到实际显示的数组中
34    this.visibleFilters = [...this.userSettingForm.filters];
35    this.visibleColumns = [...this.userSettingForm.columns];
36    // 可以在这里添加本地存储,保存用户设置
37    console.log('trainerFilterSettings:', this.userSettingForm);
38    localStorage.setItem('trainerFilterSettings', JSON.stringify(this.userSettingForm));
39    this.settingDialogVisible = false;
40},

页面部分,筛选和列表

1<el-col :xs="24" :sm="12" :md="8" :lg="4" v-if="visibleFilters.includes('活跃情况')">
2    <el-form-item prop="activeDaysType">
3        <el-select
4                v-model="queryParams.activeDaysType"
5                placeholder="请选择活跃情况"
6                clearable
7        >
8            <el-option label="未活跃" value="0"></el-option>
9            <el-option label="1-3天" value="1"></el-option>
10            <el-option label="4-6天" value="2"></el-option>
11            <el-option label="7-14天" value="3"></el-option>
12            <el-option label="15-24天" value="4"></el-option>
13            <el-option label="25天以上" value="5"></el-option>
14        </el-select>
15    </el-form-item>
16</el-col>
17
18
19<el-table-column v-if="visibleColumns.includes('发车通过情况')" prop="vehicleLaunchApprovalStatus" label="发车通过情况" width="120" align="center">
20</el-table-column>
21<el-table-column v-if="visibleColumns.includes('发车数')" prop="vehicleLaunchCount" label="发车数" width="80" align="center">
22</el-table-column>

3、AI+VUE,丝滑

看我的问答:

https://www.doubao.com/thread/wbb7fc7c3101236c8

4、思考

这种AI工具,直接生成一个方案,大多数直接可用。惊叹!

VUE这种前端,丝滑,要是传统项目,不可想象。当然,也能做。

很多语法,像最基础的,需要懂吗?认真思考中!!!!

1<el-form :model="queryParams" size="small" :inline="true" v-show="true" label-width="100px">
2<el-row :gutter="20">
3
4<!--第1行开始 -->
5<el-col :xs="24" :sm="12" :md="8" :lg="4">
6    <el-form-item prop="serialNumber">
7        <el-input
8                v-model="queryParams.serialNumber"
9                placeholder="请输入序列号"
10                clearable
11                @keyup.enter.native="handleQuery"
12        />
13    </el-form-item>
14</el-col>

20251204,vue列表实现自定义筛选和列》 是转载文章,点击查看原文


相关推荐


OpenAI 危!DeepSeek 放大招:追平谷歌最强,手撕 GPT-5 High
新智元2025/12/2

「【新智元导读】「开源之神」DeepSeek 重磅发布 V3.2 正式版,性能全面超越 GPT-5 High,与谷歌 Gemini-3.0 Pro 平分秋色。新模型不仅斩获 4 项国际奥赛金牌级成绩,更凭借独创的 DSA 稀疏注意力架构,打破「速度、成本、智能」的不可能三角。」 OpenAI 这次真的要慌了! 就在刚刚,「源神」DeepSeek 开源了 DeepSeek-V3.2 正式版—— 在数学编程等多项推理基准上,全面超越 GPT-5 High,优于 Claude 4.5 Sonet; 与


浅谈C++与C语言二进制文件差异(从一次链接错误说起)
码事漫谈2025/11/30

"undefined reference to `func' ",这个看似简单的链接错误背后,隐藏着C与C++二进制文件的根本差异。很多开发者认为C++只是"C with Classes",却不知这对"亲密兄弟"在二进制层面早已分道扬镳。 在软件开发的演进历程中,C++作为C语言的延伸,始终保持着高度的语法兼容性。这种表面上的相似性却掩盖了两者在编译产物层面的深刻差异。本文将从二进制文件的视角,深入剖析C++与C语言在目标代码生成机制上的本质区别,揭示面向对象、泛型编程等高级特性在机器层面的实现


【已开源】Cursor AI 开发实战:小文件在线互传工具
极客密码2025/11/27

灵机一动 + Cursor + 几个小时 = 一个完整的文件传输工具!这就是 AI 编程的魅力~ 前言 大家好!今天给大家分享一次纯纯的 AI 开发实战。 周末在家闲着没事,突然想到平时工作中经常需要在设备间传文件,或者临时给朋友分享个东西。现有的工具要么太重(百度网盘、微信那种),要么不够安全(公开链接谁都能访问),要么就是要付费。 灵机一动:能不能做一个轻量级的临时文件传输工具? 然后打开 Cursor,开始和 AI 聊天,几个小时后,一个完整的项目就出来了 —— F2F.icu! 关键


LangChain / LLM 开发中:invoke() 与 predict() 的区别
吴佳浩2025/11/25

LangChain / LLM 开发中:invoke() 与 predict() 的区别 文章当中的1400等等协议内容大家不必在意这是我日常会用到的 大家主要了解就可以了 作者:吴佳浩 最后更新:2025-11-25 适用版本:LangChain v1.0+ 1. 为什么会有 invoke() 和 predict() 两个方法? 在 LangChain / LCEL / OpenAI ChatModel 开发中,你会看到同一个模型居然能同时调用: llm.predict(...) l


再来聊聊,Vue3 项目中 Pinia 的替代方案
前端布鲁伊2025/11/23

想获取更多2025年最新前端场景题可以看这里:fe.ecool.fun 大家好,我是刘布斯。 之前转载了一篇文章Vue 项目不要再用 Pinia 了,先不可否认,这文章有点标题党的意思。但这篇文章的主要观点是说,在中小项目里,用 Vue 3 自带的组合式 API(reactive / ref)来管状态,很多时候比硬上 Pinia 要香。 好家伙,评论区一下就热闹了,总结起来是:“Pinia 多好用,你肯定是没用明白 Pinia” 说实话,我确实有点意外。 我先摆明态度:Pinia 是个非常优秀的


2025.11.19 力扣每日一题
小白程序员成长日记2025/11/21

2154.将找到的值乘以2 这个题目比较简单,做的挺快的。 class Solution { public: int findFinalValue(vector<int>& nums, int original) { //1.对数组进行排序 sort(nums.begin(),nums.end()); //2.遍历排序后的数组 for (int num : nums) { //3.如果当前数字等于original


Windows开发:一场与指针的共舞,亦是超越它的征程
码事漫谈2025/11/19

当人们问“Windows开发导致指针吗?”或“Windows开发到底指针么?”,这背后其实是一个混合了技术困惑和职业好奇的复杂问题。简单来说,这个问题的内核是:Windows开发是否是一个整天与令人头疼的指针打交道的岗位? 答案是双重的:是的,深入理解指针是高级Windows开发的基石;但也不是,因为现代Windows开发已经在很大程度上帮助你管理指针,让你更专注于业务逻辑。 一、解码问题:什么是“Windows开发到底指针么?” 这个问题通常源于以下几点认知: 技术传说: C/C++是Win


rust语言,将JSON中的所有值以字符串形式存储到sqlite数据库中(逐行注释)
咸甜适中2025/11/18

主要功能实现: 所有json中数字转为字符串,保持精度不变巨大值 直接存储为字符串:3355446515156151516158.55125184845684值为列表:["egeggeg","gegeg",25.5] 存储为: ["egeggeg","gegeg","25.5"]值为字典:{"name":"小小","age":26} 存储为: {"name":"小小","age":"26"} 代码 use regex::Regex; use rusqlite::{Connection, Res


利用CMDB数据实现指标业务维度的动态扩展
可观测性用观测云2025/11/17

背景 很多客户已经建有 Prometheus/Zabbix 等采集方式,通常不会贸然替换 DataKit 进行直采,往往是通过 DataKit 去获取其它工具采集的结果。如 Prometheus remote write,Zabbix export 等。 为了增加不同数据类型的关联性,需要对已有的指标数据添加更多业务 TAG,如应用名,所属项目,部门等。为实现此类需求,需要能够获得原始的相关配置信息,如 CMDB 数据等。然后通过观测云 Pipeline 中的 refere_table() 方法


深入浅出 SQLSugar:快速掌握高效 .NET ORM 框架
q***2512025/11/16

SQLSugar 是一个高效、易用的 .NET ORM 框架,支持多种数据库(如 SQL Server、MySQL、PostgreSQL 等)。它提供了丰富的功能,包括 CRUD 操作、事务管理、动态表名、多表联查等,开发者可以通过简单的链式操作实现复杂的数据库逻辑。 本文将以完整的示例,详细介绍 SQLSugar 的安装、配置和功能使用,适用于 .NET Framework 和 .NET Core 项目。 一、SQLSugar简介 1. 什么是 SQLSugar? SQLSugar 是一个轻量

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2025 聚合阅读