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,再到前端控制,权限等等玲琅满目 ...
随机推荐
- 使用kafka作为生产者生产数据到hdfs
关键:查看kafka官网的userGuide 配置文件: agent.sources = r1agent.sinks = k1agent.channels = c1 ## sources config ...
- hadoop集群配置文件与功能对应解析
以三个节点的集群为例: 总括: nodemanager ,datanode --> slavesresourcemanager ----------> yarn namenode ...
- Restful和WebService区别
简介 Restful是一种架构风格,其核心是面向资源,更简单: 而webService底层SOAP协议,主要核心是面向活动: 两个都是通过web请求调用接口 RESTful是什么 REST就是(REp ...
- DASCTF X GFCTF 2024|四月开启第一局 [PWN]详解
DASCTF X GFCTF 2024|四月开启第一局[PWN] wp(详解) 1.dynamic_but_static 题目保护情况 64位程序,没有开canary和pie保护,got表可改 64位 ...
- yb课堂 实战之Mybatis打通Mysql数据库 《二》
配置mybatis连接Mysql数据库 server.port=8081 # ========================数据库相关配置===================== spring.d ...
- webpack4.15.1 学习笔记(八) — 缓存(Caching)
目录 输出文件名(Output Filenames) 缓存第三方库 将 js 文件放到一个文件夹中 webpack 打包模块化后的应用程序,会生成一个可部署的 /dist目录,只要 /dist 目录中 ...
- [oeasy]教您玩转python - 0003 - 编写 py 文件
编写 py 文件 回忆上次内容 次在解释器里玩耍 了解到字符串就是给一堆字符两边加引号 可以是单引号 也可以是双引号 这样游乐场就知道 这个不是一个名字 而是一个字符串 字符串可以用print函数 ...
- 前端说你的API接口太慢了,怎么办?
当有千万条海量数据时,前端调取接口发现接口响应的太慢,前端这时让你优化一下接口,你说有几千万条数据,觉得自己尽力了,前端觉得你好菜,别急,读完这篇文章,让前端喊你一声:大佬,厉害!!! 常用的方法总结 ...
- 学习笔记--初识Java面向对象
面向对象与面向过程的区别 面向过程:主要关注具体过程,因果关系 优点:对于业务逻辑比较简单的程序,可以得到快速开发,前期投入成本比较低 缺点:由于面向过程的使用让程序间的元素"耦合度&quo ...
- 【Python】Word文档操作
依赖库下载: pip install python-docx -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install docx2pdf -i ...