vue2表格显隐列的封装【升级缓存版】

2024-09-01 01:52

本文主要是介绍vue2表格显隐列的封装【升级缓存版】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景

我们知道,若依后台有列表页、表格字段有显隐列的功能,但是,页面一旦刷新,就又回到初始状态了,但是有时候我们想要刷新后也保留我们设置的显隐列,就需要自己封装了
若依显隐列示例图如下:
在这里插入图片描述

源码

效果展示

效果图如下,点击设置显隐列图标,弹框设置界面,点击修改后会保存设置,刷新后按照我们的设置来显示,即缓存版
在这里插入图片描述

使用方法
    1. 在合适的位置(一般在表格上方)放置显隐列组件,该组件默认只展示一个图标,图标可自定义
    1. 为表格的字段添加v-if判断,详见下图
      在这里插入图片描述
    1. 在data()中设置默认的展示字段
data() {return {// 需要展示的字段checkList: [], // 字段信息,弹框中展示用的fieldDisplayList: [{ label: "缺陷编号", prop: "dangerCode", },{ label: "缺陷类型", prop: "dangerType", },{ label: "缺陷分类", prop: "dangerCategory", },{ label: "缺陷状态", prop: "step", },{ label: "缺陷等级", prop: "dangerLevel", },{ label: "上报内容", prop: "dangerContent", },{ label: "缺陷位置", prop: "startAxis", },{ label: "上报人", prop: "reportName", },{ label: "上报时间", prop: "reportTime", },],}	
}
    1. 在created()中设置默认初始为全部显示即可
this.fieldDisplayList.map((f) => {this.checkList.push(f.prop);
});
源码
<template><div><el-tooltip effect="dark" content="设置展示字段"><img class="field-setting" @click="showDialog = true" src="@/assets/images/fieldSetting.jpg" alt="设置展示字段"></el-tooltip><el-dialogtitle="设置展示字段":visible.sync="showDialog":close-on-press-escape="false":width="width"append-to-bodyv-dialog-drag><el-row :gutter="gutter"><el-checkbox-group v-model="checkArray">
<!--          :key="index"--><template v-for="(item,index) in list"><el-col :span="item.elCol || elCol" v-if="item.hide !== true"><el-checkbox :label="item.prop" :disabled="false">{{ item.label }}</el-checkbox></el-col></template></el-checkbox-group></el-row><template v-slot:footer><el-button @click="submits" type="primary">修改</el-button><el-button @click="cancel">取消</el-button></template></el-dialog></div>
</template><script>export default {model: {prop: 'myValue', // 默认是valueevent: 'myInput', // 默认是input},props: {// 名称name:{type: String,default: () => '',},/*** 所有显示字段的列表* 格式: {*   prop: 唯一键名,*   label: 显示的名称*   hide: 是否隐藏,默认不填不隐藏,为true时隐藏* }* */list: {type: Array,default: () => [],},// 默认显示的主要字段列表defaultCheckList: {type: Array,default: () => [],},gutter: {type: Number,default: () => 10,},elCol: {type: Number,default: () => 8,},width: {type: String,default: "500px",},},data() {return {checkArray:[],showDialog: false}},watch: {list(val) {this.checkArray = val.map(p=>p.prop)this.init()},},mounted() {this.checkArray = this.list.map(p=>p.prop)this.init()},methods: {init() {const localCheckArray = localStorage.getItem(this.name)// 如果本地缓存有,那么就存储起来,显示全部if(localCheckArray) {this.checkArray = localCheckArray.split(',')this.$emit("myInput", this.checkArray);} else {// 如果本地存储没有,且设置的默认展示字段数量大于0,那么就展示传入的主要字段if(this.defaultCheckList.length > 0) {this.checkArray = this.defaultCheckListthis.$emit("myInput", this.checkArray);}}},// 提交更改的时候,刷新主表格的key值submits() {const checkArray = this.checkArray.join(',') || '';localStorage.setItem(this.name, checkArray)this.$emit("myInput", checkArray)this.$emit('change', Math.random())this.cancel()},cancel() {this.showDialog = false}},
};
</script><style lang="scss" scoped>
.el-col {padding: 10px 0;
}
/* 设置显示隐藏 */
.field-setting {float: right;cursor: pointer;
}</style>

这篇关于vue2表格显隐列的封装【升级缓存版】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125616

相关文章

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

HTML5中的Microdata与历史记录管理详解

《HTML5中的Microdata与历史记录管理详解》Microdata作为HTML5新增的一个特性,它允许开发者在HTML文档中添加更多的语义信息,以便于搜索引擎和浏览器更好地理解页面内容,本文将探... 目录html5中的Mijscrodata与历史记录管理背景简介html5中的Microdata使用M

html5的响应式布局的方法示例详解

《html5的响应式布局的方法示例详解》:本文主要介绍了HTML5中使用媒体查询和Flexbox进行响应式布局的方法,简要介绍了CSSGrid布局的基础知识和如何实现自动换行的网格布局,详细内容请阅读本文,希望能对你有所帮助... 一 使用媒体查询响应式布局        使用的参数@media这是常用的

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

前端CSS Grid 布局示例详解

《前端CSSGrid布局示例详解》CSSGrid是一种二维布局系统,可以同时控制行和列,相比Flex(一维布局),更适合用在整体页面布局或复杂模块结构中,:本文主要介绍前端CSSGri... 目录css Grid 布局详解(通俗易懂版)一、概述二、基础概念三、创建 Grid 容器四、定义网格行和列五、设置行

前端下载文件时如何后端返回的文件流一些常见方法

《前端下载文件时如何后端返回的文件流一些常见方法》:本文主要介绍前端下载文件时如何后端返回的文件流一些常见方法,包括使用Blob和URL.createObjectURL创建下载链接,以及处理带有C... 目录1. 使用 Blob 和 URL.createObjectURL 创建下载链接例子:使用 Blob