前言
简单记录一下自己写的列配置的功能,实现列的显示与隐藏,固定列,列顺序的功能。
简单写个 table
我先简单写个 table 列表,代码大概如下
1 | <template> |
前置安装
这里我们先安装一下vue用来拖动的组件vue-draggable-next
绘制样式
这里我就不多阐述了,直接贴代码了
列配置的button
1 | <template> |
列配置button点击展开的详情
1 | <template> |
调用
这时候就在外面调用一下button的组件就行
1 | <template> |
此时我们的效果如下
写方法
无本地数据处理
接下来就是我们比较复杂的逻辑了,就是处理那些处理方法了,首先来简单处理一下初始化列
1 | // 初始化存储列数据 |
这里为了简单,我就在本地进行配置了,大家如果用的话最好和后端有沟通,存数据库里面,用接口获取数据,先来说一下逻辑,我这里的逻辑就很简单,如果本地没有配置过,那就存一次就结束,相当于初始化,这里我进行存储的是三个东西,一个是固定列
的数据,一个是隐藏
的数据,还有一个是列顺序
有本地数据处理
这里进行了最简单的处理,根据order进行判断,因为这个是顺序嘛,然后根据顺序去进行配置
1 | //如果有列配置 |
displayColumns变化重新设置列
这里的调用包括了初始化调用和子组件里列配置变化的全部代码
1 | const changeCloumnsConfig = (list: COLUMNS_SHOW_FORMAT[]) => { |
然后在table的地方进行列属性重新赋值,这里注意哈,给列配置的列属性是固定的,不是给table的那个列,是变化的
1 | <template> |
不知道大家能不能看懂我的代码,其实简单来说就是根据配置重新给列赋值。可以给大家看看效果
此时,我们的基础功能就可以算简单实现了,接下来就是先把重置和保存给加上
重置保存方法
这里就非常的简单
1 | // 重置列 |
这样也许你会说就大功告成了,其实还差一些,比如当我们本地的列名称改了,本地列添加删除了,还用浏览器中的缓存,那么就会产生bug,因此,我们还需要继续完善。
本地代码列修改和存储对应不上的问题
1 | const initColumns = () => { |
我们根据一定的代码进行判断是否是有列名的修改进行后续的操作,这样一来,我们的列配置的功能就比较完整了,我们修改一个本地的代码试一下。
结语
这样,一个列配置的模块就完成了,当然这个代码还需要优化,里面用到的循环太多了,这个算法肯定是有问题的,后续我会想办法优化一下,但是思路就是这样的一个思路,当然你也可以把列宽也进行存储,这个就看你个人操作了,债见。