0.1.2 • Published 15 days ago

@hanmotec/uniface-data-table v0.1.2

Weekly downloads
-
License
MIT
Repository
-
Last release
15 days ago

数据表格

使用方法

npm i -D @hanmotec/uniface-data-table

数据表格包括三个部分,指示栏,数据区和操作栏。

指标栏

指示栏包括行序号,如果多选,可以显示选择框,如果有表格内的展开字段,也可以显示展开/关闭图标。指标栏的定义方法如下:

let indicatorColumn = {
    width: 60,   //宽度,单位为px
    selectable: true,  //是否支持选中
    buildInlineComponent: async (data: any) => {
        //返回指定行的内嵌展示组件
    }
}

操作栏

操作栏定义栏当前行的处理动作,定义的方式如下:

let actionsColumn = {
    title: "动作", //栏标题
    width: 160, //宽度,单位px
    vacancy: 3, //最多的按钮数量,超过通过弹出菜单实现
    getActions: (item: any) => {
        //这个地方可以根据item的状态,返回不同的动作集合
        return [
            {
                text: '查看',
                action: displayItem
            },
            {
                text: '修改',
                action: modifyItem
            },
            {
                text: '删除',
                action: deleteItem
            }
        ]
    }
}

标题定义

表格支持复合表头,示例如下:

const columns:TableColumns =
[
  {
    "text": "姓名",  //栏标题
    "field": "name",  //关联字段的名称,'.'代表支持嵌套对象
    "width": 130, //宽度,单位px
    "resizable": true //是否可以调整大小
  },
  {
    "text": "性别",
    "width": 60,
    "field": "gender",
    "align": "center",
    "resizable": true,
    formatter: (value:any) => value == null ? '' : value == 'M' ? '<span style="color: red">男</span>' : '<span>女</span>',
    escapeHTML: true
  },
  {
    "text": "基本状况", //复合标题
    "columns": [
        {
          "text": "家庭地址",
          "width": 360,
          "field": "address",
          hint: (item: any) => item.address, //当宽度不够的时候,鼠标在单元格时显示弹出信息
          "resizable": true,
          "visible": true, //单元格是否显示
          compareFunction: (o1, o2) => compareObjects(o1?.address, o2?.address), //是否支持排序
        },
        {
          "text": "联系电话",
          "width": 120,
          "field": "phone",
          align: "center", //对齐方式
          "href": (item: any)=> {  //超链接
            return {
              text: "查看详情",
              action: () => {console.log(item)}
            }
          }
        },
        {
          "text": "联系人",
          "width": 90,
          "field": "concat",
          "resizable": true,
          "visible": false,
          "align": "right",
          "render": ConcatPerson
        }
      ]
  },
  {
    "text": "治疗信息",
    "columns": [
      {
        "text": "疾病",
        field: "disease",
        "width": 120,
        "resizable": true,
        "visible": true,
        compareFunction: (o1, o2) => compareObjects(o1?.disease, o2?.disease),
      },
      {
        "text": "费用",
        "width": 120,
        "resizable": true,
        "visible": true
      },
      {
        "text": "入院日期",
        "width": 120,
        "resizable": true,
        "visible": true
      },
      {
        "text": "出院日期",
        "width": 120,
        "resizable": true,
        "visible": true
      }
    ]
  },
  {
    "text": "备注",
    "width": 230
  }
]

单元格的渲染方式

单元格的显示内容通过以下方式来展示的。
1. 如果存在render,那么通过一个组件来展示当前单元格的内容。 2. 是否为超链接单元格,如果是,安装超链接的方式展示 3. 是否存在formatter,如果有,根据filed传入值给这个函数,返回的内容显示在单元格内,如果filed是空,那么传入当前行的数据对象。和这个关联的属性是escapeHTML,如果是true,那么按照html的格式展示内容 4. 通过field获取内容,以字符串的方式显示在单元格内。

0.1.2

15 days ago

0.1.1

4 months ago

0.1.0

4 months ago

0.0.9

5 months ago

0.0.8

5 months ago

0.0.7

5 months ago

0.0.5

5 months ago

0.0.4

5 months ago

0.0.3

5 months ago

0.0.2

5 months ago

0.0.1

5 months ago