element-ui 表格控制列显隐简单方案
核心是使用v-if控制列的显隐
<template>
<div>
<div v-for="(item, index) in tables" :key="index">
<el-table
:data="item.data"
@filter-change="value => filterChange(value,index, 'tables')"
:span-method="value => cellMerge(value,'tables')"
:header-cell-style="{background:'#fbfbfb'}"
size="mini"
doLayout
border
>
<el-table-column
v-for="(ele,index) in item.columns"
:label="ele.text"
:prop="ele.value"
show-overflow-tooltip
v-if="ele.flag"
:key="ele.value + index"
:resizable="false"
>
<template slot-scope="scope">
<span>{{scope.row[scope.column.property]}}</span>
</template>
</el-table-column>
<el-table-column
:key="item.columns.length + 1"
fixed="right"
width="50"
v-if="item.stash_columns"
:filters="item.stash_columns"
:filtered-value="item.filter_value"
:resizable="false"
>
<template slot="header" slot-scope="scope">
<i class="el-icon-menu" style="cursor: pointer"></i>
</template>
</el-table-column>
</el-table>
</div>
</div>
</template>
<script> export default {
data () {
return {
tables: [
{
data: [],
columns: [
{
text: '滴滴',
value: 'didi',
flag: true
},
{
text: '哒哒',
value: 'dada',
flag: true
},
{
text: '嘿嘿',
value: 'heihei',
flag: true
},
{
text: '哈哈',
value: 'haha',
flag: false
}
]
}
]
}
},
methods: {
// 处理数据
handlerData (type) {
const data = [{didi: '11', dada: '22', heihei: '33', haha: '44'}]
const tables = this[type]
tables && tables.length > 0 && tables.map((item, index) => {
this.$set(this[type][index], 'data', data)
this.$set(this[type][index], 'stash_columns', item.columns)
this.$set(this[type][index], 'filter_value', [])
const columns = item.stash_columns
const filter_value = item.filter_value
columns && columns.length > 0 && columns.map((ele, idx) => {
if (ele.flag) {
filter_value.push(ele.value)
}
})
this.$set(this[type][index], 'filter_value', filter_value)
})
},
// 控制列显隐
filterChange (value, idx, type) {
switch (type) {
case type:
for (const ele in value) {
this.$set(this[type][idx], 'show_columns', value[ele])
}
const tables = this[type]
tables && tables.length > 0 && tables.map((item, index) => {
const columns = item.columns
const show_columns = item.show_columns
if (show_columns && show_columns.length > 0) {
columns && columns.length > 0 && columns.map((val, key) => {
this.$set(this[type][index].columns[key], 'flag', false)
show_columns.map((ele) => {
if (val.value === ele) {
this.$set(this[type][index].columns[key], 'flag', true)
}
})
})
}
})
break
default:
break
}
},
// 合并单元格
cellMerge ({row, column, rowIndex, columnIndex}, type) {
this.$nextTick(() => {
const tables = this[type]
tables && tables.length > 0 && tables.map((item, index) => {
const show_columns = item.show_columns
const length = show_columns && show_columns.length > 0 ? show_columns.length : item.columns.length
if (columnIndex === length - 1) {
return [1, 0]
} else if (columnIndex === length) {
return [0, 0]
}
})
})
}
},
mounted () {
this.handlerData('tables')
}
} </script>
element-ui 表格控制列显隐简单方案的更多相关文章
- Element UI tree 回显问题
Part.1 问题 写项目时遇到一个棘手的问题,在做关于权限功能时,点击修改需要显示角色原本对应的权限.涉及到了 tree 组件回显,但是有一个很尴尬的问题:tree 组件只要父节点选中,那么子节点就 ...
- element ui tree回显 setCheckedNodes,setCheckedKeys,setChecked等函数报undefined问题
在写项目的时候,需要用到tree组件进行回显来进行权限控制: 在回显过程中使用回显函数会报报undefined, 这时只需要给该函数包裹一层nextTick方法就行了, 在回显过程中我们有可能使用半选 ...
- element ui el-tree回显问题及提交问题(当后台返回的el-tree相关数组的时候,子菜单未全部选中,但是只要父级菜单的id在数组中,那么他的子菜单为全部选中状态)
1:问题原因:我们可能使用 this.$refs.tree.setCheckedKeys(this.defalutArr);或者使用:default-expanded-keys="treeD ...
- vue+element ui 的表格列使用组件
前言:工作中用到 vue+element ui 的前端框架,有这个场景:很多表格的列有许多一样的,所以考虑将列封装为组件.转载请注明出处:https://www.cnblogs.com/yuxiaol ...
- Element ui结合springboot的简单实战
Eelment UI简单实战 前端开发 1 创建项目,导入element ui(略) 2 大致设计出想要的效果,如下 3 创建包 根据设计的大致模样在项目的components中创建对应的包,方便以后 ...
- Element UI Form 每行显示多列,即多个 el-form-item
Element UI Form组件使用问题. 每个 el-form-item 都会独占一行. 对于输入项很多的管理app, 能否在每个form中, 每行显示 2 个或者多个 el-form-item ...
- vue3的学习笔记:MVC、Vue3概要、模板、数据绑定、用Vue3 + element ui、react框架实现购物车案例
一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.Vue是框架而jQuery则是库. 1.2.MVC(Mo ...
- element UI排坑记(一):判断tabs组件是否切换
之所以将这个问题列在排坑记之中,是因为官方组件的一个属性颇有些隐蔽,这个问题曾经折腾了本人较多时间,始终思维固着,且使用搜索引擎也不容易搜索到答案,故记之.然而实际解决却是相当简单的. 一.问题描述 ...
- Element UI表格组件技巧:如何简洁实现跨页勾选、跨页统计功能
业务场景 在使用Element UI的Table组件时,常常面对这样的业务需求: 表格数据的每一项都要提供勾选框,当切换分页时,能够记忆所有页面勾选的数据,以实现批量提交不同页面勾选数据的功能.并且, ...
- 基于vue(element ui) + ssm + shiro 的权限框架
zhcc 基于vue(element ui) + ssm + shiro 的权限框架 引言 心声 现在的Java世界,各种资源很丰富,不得不说,从分布式,服务化,orm,再到前端控制,权限等等玲琅满目 ...
随机推荐
- 2020-2021 ICPC, NERC, Southern and Volga Russian Regional Contest AGHIJM 题解
A. LaIS 设 \(dp_i\) 为到第 i 位的最长的 almost increasing 长度.可以发现,这个 \(dp_i\) 的转移只有从 \(a_j \leq a_i\) 的地方转移过去 ...
- 3款C#开源且实用的工具类库,工作效率提升利器!
前言 在日常工作开发中工具类库是软件开发中不可或缺的一部分,它们通过提供代码重用.通用功能.隐藏复杂性.提高代码质量.扩展性等方面的优势,帮助开发者更高效.更稳定地构建软件应用程序.今天大姚给大家分享 ...
- 算法金 | 推导式、生成器、向量化、map、filter、reduce、itertools,再见 for 循环
大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 不要轻易使用 For 循环 For 循环,老铁们在编程中经常用到的一个基本结构,特别是 ...
- input标签 手机端数字键盘
要一点击提起数字键盘,安卓只要设置input的类型是number或tel, ios 需要 pattern="number"可以直接打开搜狗输入法的数字键盘,可以输入.和数字如果只能 ...
- 深度解读昇腾CANN内存复用技术,降低网络内存占用
本文分享自华为云社区<深度解读昇腾CANN内存复用技术,降低网络内存占用>,作者: 昇腾CANN. 随着大模型的兴起,神经网络规模不断扩大,对内存资源的消耗也越来越高,如何降低AI算法的内 ...
- QAnything AI开源的企业级本地知识库问答解决方案,致力于支持任意格式文件或数据库的问答
QAnything AI简介 QAnything ai是一个本地知识库问答系统,旨在支持多种文件格式和数据库,允许离线安装和使用.您可以简单地删除任何格式的任何本地存储文件,并获得准确.快速和可靠的答 ...
- [oeasy]python0020换行字符_feed_line_lf_反斜杠n_B语言_安徒生童话
换行字符 回忆上次内容 struct包可以让我们使用封包格式 把数字封包到字节里 pack函数负责封包 unpack函数负责解封 我们通过封到不同的字节状态 遍历了一次ascii码 编辑 还是 ...
- vscode添加python文件头模板
pycharm可以自动生成python的文件头模板,但是vscode目前还不可以(不支持python,c的似乎有插件支持了).琢磨了一下,可以通过用户代码片段来实现. 1. 什么是用户代码片段 参考文 ...
- 【Mybatis-Plus】Spring整合 驼峰命名设置失效问题
查询时发现这个问题: DEBUG [main] - Creating a new SqlSession DEBUG [main] - SqlSession [org.apache.ibatis.ses ...
- 【转载】 NetworkManager——nmcli命令连接WIFI和创建热点
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/u014695839/article/de ...