Vue组件(30)封装一下数据列表的控件

Chase620
• 阅读 1338

UI库的 table

好像前端喜欢叫 table,而后端喜欢叫grid。就是现实数据的列表。当然table还有其他的含义,UI库的table也是有其他的功能的。

而数据列表控件其实也没啥好封装的,各种功能UI库都提供了,一般使用也是很方便的,只是为了我的那种想法还是需要小小的封装一下。

功能

  • 锁定行列(UI库自带)
  • 多选(整理)
  • id (设置)
  • 字段显示顺序(设置)
  • 字段属性(设置)

属性

  • 基础属性
 props: {
    controlId: { // 101 gridID,必填
      type: Number,
      required: true
    },
    height: { // table的高度
      type: Number,
      default: 300
    },
    colOrder: { // 字段显示的顺序
      type: Array,
      default: () => []
    },
    fixedIndex: { //  锁定的列数
      type: Number,
      default: 0
    },
    idName: { // 主键字段的名称
      type: String,
      default: 'id'
    },
    'data-selection-ids': Array, // 选择的记录的ID集合
    'data-list': { // 绑定的数据
      type: Array,
      default: () => []
    }
    ...
} 
  • colOrder
    table组件会遍历这个数组,取出来id,然后到 itemMeta 里面取出来字段的具体属性,绑定到 el-table-column ,这样可以方便调整字段的显示的先后顺序。

  • height
    设置高度才可以实现锁定行列的功能

  • fixedIndex
    锁定多少列,从左面开始数。

  • idName
    主键字段的名称,默认是id。看官网例子,没有提到id,选择记录的时候,返回的是整条记录,这个倒是方便,需要哪个就取哪个。
    只是一般大多都是需要一个ID,比如做批量删除的时候,要提交给后端选择的id集合。

所以这里可以直接返回选择的id集合。

  • data-selection-ids
    这个就是用户选择的记录的id集合,可以使用v-model的形式绑定,不过好像名称有点长,是不是应该弄个简单点的名称,比如dataIds?

  • data-list
    要显示的数据集合,数组形式。

设置高度、锁定行列等信息,还需要设置主键字段的名称,这样便于获取选择的记录的ID。

  • 字段属性
 label: '公司名称',
      prop: 'companyName',
      width: 120,
      align: 'left/center/right',
      'header-align': 'center' 

这几个是依据 element-plus 的 table 的 el-table-column 的需求来设置的。设置表头、绑定的字段名称和宽度。然后还应该加上对齐方式、格式化等功能。找了半天终于找到了 align,还有 formatter。

Vue组件(30)封装一下数据列表的控件

0001基本的列表.png

目前这个控件只想实现这几个功能,一般的列表需求大概可以满足了。
其他功能会封装成其他的控件,比如批量修改控件、n级分类控件等。

然后就可以做综合性的增删改查了。

调用方式

const gridItemMeta = {
    101: {
      id: 101,
      label: '编号',
      prop: 'id ',
      width: 120
    },
    102: {
      id: 102,
      label: '公司名称',
      prop: 'companyName',
      width: 120
    },
    103: {
      id: 103,
      label: '建立日期',
      prop: 'date',
      width: 120
    },
    104: {
      id: 104,
      label: '联系人',
      prop: 'name',
      width: 120
    },
    ...
}

const girdMeta = reactive({
      controlId: 1001,
      height: 250, // 高度
      colOrder: [101, 102, 103, 104, 105, 106, 107, 108], // 显示顺序
      fixedIndex: 0, // 锁定的列数
      itemMeta: gridItemMeta
}) 

还是老规矩,属性都可以做成json的形式,可以放在单独的 json 文件里面单独加载,这样增删改查需要的几个控件的属性就都弄到了json文件里面,然后呢,猜猜可以实现什么神奇的功能呢?

本文转自 https://www.jianshu.com/p/381f2bc4d769,如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这