当前位置:首页 » 《资源分享》 » 正文

vxe-table——实现table 动态显示 +冻结列等功能——技能提升

27 人参与  2024年09月26日 08:01  分类 : 《资源分享》  评论

点击全文阅读


之前我也有写过类似的功能,就是可以自定义勾选需要展示的列。

不过之前是我自己写的弹窗处理的,有现成的插件vex-table插件可以使用。
vxe-table官网:https://vxetable.cn/v3/#/table/api
在这里插入图片描述

解决步骤1:安装vxe-table——npm install vxe-table@3.8.15

解决步骤2:挂载到main.js中——全局注册

import Vue from 'vue'import VXETable from 'vxe-table'import 'vxe-table/lib/style.css'

解决步骤3:页面使用

<vxe-table size="small" border resizable ref="xTable1" id="toolbar_demo5" :custom-config="customConfig"  show-overflow="tooltip" :sort-config="sortConfig" :row-config="rowConfig" :checkbox-config="checkboxConfig"  :data="dataSource" :loading="loading" @checkbox-change="wipCheckboxChange" @checkbox-all="wipCheckboxAll"  @sort-change="wipSortChange">  <vxe-column type="checkbox" width="50"></vxe-column>  <vxe-column sortable field="cardNo" title="管制卡编号" width="160">    <template #default="{ row }">      <a href="javascript:;" @click="printGzk(row)"        style="text-decoration: underline;cursor: pointer;color: #333;">{{ row.cardNo }}</a>      <a-icon style="margin-left: 5px; color: #333; cursor: pointer" type="copy" @click="copyClick(row)" />      <span style="margin-left: 5px" v-if="row.isJiaJi">        <a-tag color="red"> 急 </a-tag>      </span>    </template>  </vxe-column>  <vxe-column sortable field="thirdOrderNo" title="生产编号" width="130"></vxe-column></vxe-table>

注意上面的代码:

1.sortable 【表示该列需要排序】
2.resizable 【表格是否自适应】
3.ref 【用来获取表格的,比如清空选中:】
this. r e f s . x T a b l e 1. c l e a r C h e c k b o x R o w ( ) 【手动清空用户的选择,仅针对一行】 t h i s . refs.xTable1.clearCheckboxRow() 【手动清空用户的选择,仅针对一行】 this. refs.xTable1.clearCheckboxRow()【手动清空用户的选择,仅针对一行】this.refs.xTable1.clearAll() 【手动清空所有选择,针对多行】
4.id 【这个应该i是为了下面的custom-config中的本地存储来使用的】

在这里插入图片描述

5.custom-config 【个性化信息配置】
比如:需要将当前排序+显示/隐藏列缓存到本地,则需要下面的配置
在这里插入图片描述

在这里插入图片描述

6.show-overflow:所有内容过长时显示为省略号

在这里插入图片描述

7.sort-config:

defualtSort是个对象数组,对象参数为field+order
defaultSort——是个对象数组,每一项是field+order
multiple——设置为true,则表示支持多列排序
remote——是否支持服务端排序,就是如果排序仅当前页,则remote可以设置为false,如果是多页的排序,只能后端处理的,则需要设置为true
trigger——触发方式:ceil点击表头触发排序

在这里插入图片描述

8.row-config 【只有也给keyField是必要的,也就是指向id作为唯一值】

在这里插入图片描述

9.checkbox-config:
checkAll——是否默认勾选所有,可以设置为false,默认不勾选
checkRowKeys——选中的keys的集合,也就是id的集合

在这里插入图片描述

10.checkbox-change
11.checkbox-all

在这里插入图片描述

12.type=“checkbox” 【表示该列可以是复选框的样式】
13.field=“cardNo” 【指定每一列对应的参数名】
14.#default=“{ row }” 【自定义每一列内容时,用到的参数来源,row就相当于antd中的record,当前行的所有内容】
15.sort-change 【由于是服务的排序,则需要监听排序动作,并请求接口】

在这里插入图片描述

wipSortChange({ column, field, order, sortBy, sortList }) {      console.log(column, field, order, sortBy, sortList)      if (sortList.length != 0) {        let arr = sortList.map((v) => {          return v.field + ' ' + v.order        })        localStorage.setItem('sort_arr', JSON.stringify(arr))      }      let sort = localStorage.getItem('sort_arr')      if (sort != undefined) {        this.queryFrom.OrderBy = JSON.parse(sort).toString()      }      this.card_list_api()//调用接口    },

上面有一部分操作:是将排序的字段+排列顺序存储到本地,虽然custom-config中有一个是否启用localStorage本地保存,这个本地保存到排序是下面弹窗中的内容而非每一列的排序内容。

在这里插入图片描述

openCustom:@click=“$refs.xTable1.openCustom()” 简简单单的一句话,就可以实现动态列+是否固定列等操作。

在这里插入图片描述
在这里插入图片描述

还可以设置【左固定】还是【右固定】等操作。
在这里插入图片描述
实现的效果:
1.mode:可以是上面的弹窗,也可以是下面的弹窗等,一共三种模式
2.弹窗可以最大化+最小化
3.拖动第二列的小图标可以实现上下排序
4.可以自定义每一列的宽度
5.可以冻结指定列,最多4列

在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/164683.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1