SimpleTable 简单弹窗型表格

  1. 修改时间: 2018-04-11
  2. 当前版本: 1.1.50

分类: NC高级组件

表格样式

simpleTable.png

简单示例

/**
 * 使用说明:
 *
 * 1.引入createPage
 * 2.包装业务页面
 * 3.代码中使用表单各种 API
 *   this.props.table.createSimpleTable
 *   this.props.table.setAllTableData
 *   this.props.table.openModel
 *   this.props.table.closeModel
 *   ......
 */

// 1.引入createPage
import { createPage } from 'nc-lightapp-front'; // 'nc-lightapp-front/src'; 可以引入到源码,用于调试

// 示例 SimpleTable页面
class SimpleTable extends Component {
    constructor(props) {
        super(props);
    }

    // 界面渲染
    render() {
        // 3.获取创建表单API
        let { createSimpleTable } = this.props.table;
        return (
            <div className="table-wrapper">
                // 根据meta信息创建简单table 

                {createSimpleTable('tableDemo'), {
                    handlePageInfoChange: handlePageInfoChangeFn,    // 分页器操作的回调函数
                    tableModelConfirm: tableModelConfirmFn,          // 弹窗确认事件回调
                    onAfterEvent: afterEventFn,                      // 弹窗控件的编辑后事件      
                    onSelected: onSelectedFn,                        // 左侧选择列单个选择框回调
                    onSelectedAll: onSelectedAllFn,                  // 左侧选择列全选回调
                    selectedChange: selectedChangeFn,                // 选择框有变动的钩子函数
                    params: 'test',                                  // 自定义传参
                }}
            </div>
        );
    }
}

// 2.包装 SimpleTable页面

export default createPage({
    initTemplate: initTemPlateFn,   // initTemPlateFn为初始化模板的方法
    // **操作列和其他自定义列 要记得加 itemtype: customer**
})(SimpleTable);

模板结构

模版结构实例

{ moduletype: “table”, pagination: true, items: [ { itemtype: “refer”, maxlength: “20”, visible: true, label: “财务组织最新版本”, width: “200px”, disabled: true, attrcode: “pk_org”, color: “red” } ] }

父级模版字段说明

名称 作用 示例
items 模板数据数组,数组每一项表示表格每一列的配置 items: [{itemtype: number,scale: 2,label: 数量,attrcode: npobnum}]
pagination 是否显示分页 pagination: true

子级模版字段详细说明

名称 作用 示例
itemtype 组件类型 itemtype: ‘number’
attrcode 当前列对应字段 attrcode: ‘npobnum’
scale number 组件精度 scale: ‘8’
label 表头显示文字 label: ‘数字’
visible 组件的显隐性 visible: true
istotal 是否显示合计行(number 组件的特有属性) istotal:true
isSort 当前列是否可以进行排序(默认为 true 都可以进行排序) isSort:true
maxlength 最大长度 maxlength: ‘10’
color 表头字体颜色 color: ‘red’
width 表头宽度 width: ‘200px’
hyperlinkflag 是否显示超链接 hyperlinkflag: true
render 自定义 render 控制显示内容 render:() => {return
自定义内容
}

表格方法API (this.props.table下面的方法)

方法名 方法说明 参数 类型 说明 可选值 返回值 类型 示例 备注
1.createSimpleTable(moduleId, config) 创建简单弹窗型表格,表格对应的区域为moduleId moduleId 页面对应的区域ID String ; config 一些配置项 Object 弹窗型组件实例 Node createSimpleTable(‘tableDemo’)
2.setAllTableData(moduleId, data, isTop) 设置简单表格显示内容 moduleId 页面对应的区域名 String ; data 渲染数据 Object
如果设置空数据 data为{rows: []}, isTop 数据是否置顶,默认是true 置顶
undefined 执行函数 setAllTableData(‘tableDemo’,data) 1、参数 data 是个对象,对象下面有rows、pageInfo等属性,rows为数组
3.deleteTableRowsByRowId(moduleId, rowId) 通过RowId删除行 moduleId 区域Id String;
rowId 行id String
undefined 执行函数 deleteTableRowsByRowId(‘tableDemo’, ‘34343.55’)
4.addRow(moduleId, data, index) 通过行序号增加行(默认增加到行首,序号为0) moduleId 区域Id String;
data 渲染数据 Object;
index 行号 Number
undefined 执行函数 addRow(‘tableDemo’,data) 第三个参数不传,为行首
5.deleteTableRowsByIndex(moduleId, index) 通过index删除行 moduleId 区域Id String;
index 行号 Number/Array 单数字或者数字组成的数组
undefined 执行函数 deleteTableRowsByIndex(‘tableDemo’, [1,2,3]) ;
deleteTableRowsByIndex(‘tableDemo’, 2 )
6.getAllTableData(tableId) 获得表格全数据 tableId 表格Id String; 表格全部数据 执行函数 getAllTableData(‘tableDemo’)
7.getTablePageInfo(moduleId) 获取simpleTable表格的page信息 moduleId 页面对应的区域ID String {pageSize, pageIndex}:{当前页码,每页数量} getTablePageInfo(‘tableDemo’)
8.openModel(moduleId,type,record,index) 打开模态窗口 moduleId 页面对应的区域名 String ;
type(‘add’或者’edit’)操作类型 String;
record 如果编辑,那么当前行信息 Object;
index 如果编辑,那么当前行号-1 Number;
undefined 执行函数 openModel(‘tableDemo’,’add’,record,index)
9.closeModel(moduleId) 关闭模态窗口 moduleId 页面对应的区域名 String; undefined 执行函数 closeModel(‘tableDemo’)
10.setTableRender(moduleId, key, render) 设置表格某一列渲染函数 moduleId 区域Id String;
key 列表头键 String;
render 渲染函数 Function
undefined 执行函数 setTableRender(‘tableDemo’, ‘org_pk’, render)
11.showColByKey(moduleId, key) 通过键显示表格某列 moduleId 区域Id String;
key 列键值 String
undefined 执行函数 showColByKey(‘tableDemo’, ‘org_pk’)
12.hideColByKey(moduleId, key) 通过键显示表格某列 moduleId 区域Id String;
key 列键值 String
undefined 执行函数 hideColByKey(‘tableDemo’, ‘org_pk’)
13.getCheckedRows(moduleId) 获取选中行数据 moduleId 区域Id String [{index:1,data:{}},{index:2,data:{}}];
Array 对象组成的数组;
index为行号 data为行内数据
getCheckedRows(‘tableDemo’)
14.selectAllRows(moduleId, checked) 行全选/全不选;
checked为true 全选;
checked为false 全不选
moduleId 区域Id String ;
checked 开关标志 Boolean
undefined 执行函数 selectAllRows(‘tableDemo’, false)
15.reverseSelected(moduleId) 反选中 moduleId 区域Id String undefined 执行函数 reverseSelected(‘tableDemo’)
16.deleteTableRowsByIndex(moduleId, index) 通过index删除行 moduleId 区域Id String;
index 行号 Number/Array 单数字或者数字组成的数组
undefined 执行函数 deleteTableRowsByIndex(‘tableDemo’, [1,2,3]) ;
deleteTableRowsByIndex(‘tableDemo’, 2 )
17.setTableValueBykey(moduleId, key, data, index) 通过键给弹出框控件赋值 moduleId 区域Id String;
key 弹出框控件键 String;
data 渲染数据 Object;
index 行号 Number
undefined 执行函数 setTableValueBykey(‘tableDemo’,’org_pk’, data, 1)
18.setTableValueRequired(moduleId, key, flag) 通过键设置弹出框必输项 moduleId 区域Id String;
key 弹出框控件键 String;
flag 开关 Boolean;
undefined 执行函数 setTableValueRequired(‘tableDemo’, ‘org_pk’, false)
19.setTableValueDisabled(moduleId, key, flag) 通过键设置弹出框编辑性 moduleId 区域Id String;
key 弹出框控件键 String;
flag 开关 Boolean;
undefined 执行函数 setTableValueDisabled(‘tableDemo’, ‘org_pk’, true)
20.setValByKeyAndIndex(tableId, index, key, { value, display, scale }) 根据行序号设置表格某行某个字段值 tableId 表格Id String;
index 索引 Number;
key 属性名 String;
{ value, display, scale } 所要设置的具体值
undefined 执行函数 setValByKeyAndIndex(‘tableDemo’, 0, ‘org_pk’, {value: ‘ff’, display:112, scale:0})
21.setValByKeyAndRowId(tableId, rowid, key, { value, display, scale }) 根据rowid设置表格某行某个字段值 tableId 表格Id String;
rowid 行id Number;
key 属性名 String;
{ value, display, scale } 所要设置的具体值
undefined 执行函数 setValByKeyAndRowid(‘tableDemo’, ‘aaa’, ‘org_pk’, {value: ‘ff’, display:112, scale:0}})
22.updateDataByIndexs(tableId, record) 更新多行的数据(根据index值) tableId 表格Id String; record 行数据的数组 Array; undefined 执行函数 updateDataByIndexs(‘tableDemo’, [{index: 0, data: { values: {} }, …])
23.selectTableRows(tableId, index, flag) 设置某些行多选框的选中状态 tableId 表格的id String ,index 索引 Number或Array, flag Boolean undefined 执行函数 selectTableRows(‘tableDemo’, [1,2,3], false)
24.focusRowByIndex(tableId, index) 设置当前行 tableId 表格的id String ,index 索引 Number或Array undefined 执行函数 focusRowByIndex(‘tableDemo’,1)
25.getPks(tableId, pageIndex, pageSize) 获取pks tableId 表格的id String ,pageIndex 当前页 第一页为0开始, pageSize 每页条数,后两项不穿默认获得当前页pks undefined 执行函数 getPks(‘tableDemo’,1, 5)
26.setColScale(list) 设置某些表格,某些列的精度 list数据结构 [{areacode: ‘tableid’, filedcode: ‘colkey’, scale: “2”}, ….],areacode(区域id), filedcode(列对应的attrcode), scale(精度) undefined 执行函数 setColScale**([{areacode: ‘tableid’, filedcode: ‘colkey’, scale: “2”}, ….])
27.getClickRowIndex(tableId) 获取当前点击行 tableId 表格的id String {index, record} 执行函数 getClickRowIndex(‘tableDemo’)
28.updateTableData(moduleId, data) 根据rowid更新表格数据 data 后台返回的data 需要有rowId undefined 执行函数 updateTableData(‘tableDemo’, {rows: [{rowId:’1122wwwww’, values: {taudittime: {value: “2016-05-20 14:51:48”}}]})
29.updateTableHeight 刷新表格高度, 这是特殊场景使用,一般是表格上方部分,高度变化,表格需要不断适应时使用,并且页面上只有一个simpletable undefined 执行函数
30.getSortParam(tableId) 获取表格当前排序信息 tableId 表格的id String 执行函数 getSortParam(‘tableDemo’)
31.saveFilterCustomColData(tableId, { attrcode, rowId, value }) 存储自定义列的显示数据 tableId表格的id,attrcode(当前列字段), rowId(当前行rowid), value(自定义显示的数据) undefined 执行函数

createSimpleTable的config回调和自定义参数

函数名 方法说明 暴露出来的参数 示例 备注
handlePageInfoChange 分页器操作的回调函数 props,config,pks props为组件集合
tableModelConfirm 弹窗确认事件回调 props, data(提交数据), type(add/edit)
onAfterEvent 弹窗控件的编辑后事件 props, moduleId(区域id), attrcode(列字段), changedrows(新旧值), val(值), index(行索引), record(行数据)
onSelected 左侧选择列单个选择框回调 props, moduleId(区域id), record(行数据), index(当前index), status(选框值)
onSelectedAll 左侧选择列全选回调 props, moduleId(区域id), status(选框值), length(选中数量)
selectedChange 选择框有变动的钩子函数 props, moduleId(区域id), newVal(被选中的行数), oldVal(旧的被选中的行数)
params 自定义传参
onRowClick 单击行钩子函数 props, moduleId(区域id), record(行数据), index(当前index),e (事件对象)
onRowDoubleClick 行双击事件 record(行数据) ,index(当前index) props, e (事件对象)
noTotalRows 设置某些行的某些属性不可合计 noTotalRows: () => { return [{ code: [“npobnum”], indexArr: 2 },….] }
allowTotalRows 设置可合计的行 allowTotalRows: () => { return [3] }
noTotalCol 设置不可合计的列 [‘npobnum’]
showIndex 控制序号展示和隐藏 true或false
showCheck 控制多选框展示和隐藏 true或false
tableCustomerArea 在表格最下方添加自定义区域 是一个函数 () => {return }
rowClassList 给表体行添加自定义类名 rowClassList 是数组, 数组里面是对象 ,详见例子,index 行索引(可以是数字或者数字数组) className 类名 rowClassList: [{index: 1, className: ‘test-one’}]
height 设置表格高度 465
lazyload 是否滚动分页 true 是分页, false是不分页,默认是分页
adaptionHeight 表格是否自适应高度,占满屏幕 默认占满,(true)
otherAreaHeight 表格自适应高度时表格底部其他部分的高度, 减去这个高度等于最终表格高度 数字类型
showTotal 设置是否展示合计行,通过模版设置isTotal属性,和设置当前属性,都可以展示合计行,!!!!!!!但是模版设置合计行和这个属性不能同时设置,除非所有的列都想合计才用这个属性,否则都需要在模版上设置!!!!!! true或false
setCellClass(index, record, ICode) 设置单元格的类名 index表示当前行,record当前行数据,ICode当前字段 setCellClass={() => { return ‘calssname’ } 返回值是对应的类名
sort 表格后端排序 backSource:true,表示后端排序,mode:’multiple’(多列排序) 或’single’(单列排序)(如果前端排序的时候想多列排序,对象里就穿这个字段就可以了),sortFun 后端排序的回调函数 sort={mode:’multiple’,backSource:true,sortFun:(a)=> {console.log(a)}}
merge 用于表格单元格合并 index:当前单元格行序号,从0开始,attrcode,当前单元格的所在列的attrcode 例子:(index, attrcode)=>{if(index0&&attrcode
‘cpobid’){ return {colSpan:1,rowSpan:2} } if(index1&&attrcode
‘cpobid’){ return {colSpan:1,rowSpan:0} }} 注意:如果要合并当前单元格和下面一个单元格也就是rowspan设为2,需要把下面的单元格rowspan设为0,colspan同样,如果合并3个格,就需要把下两个格设为0,以此类推

simpleTable的模版里的meta和item的特定功能的设置

功能名称 属性名 方法说明 示例
列排序(前端排序) isSort默认为true 表格默认对所有列前端排序,如果想自定义排序,需要在item里自行注册sorter=() => {}函数,使用方法和数组的sort方法一样。 {itemtype: “number”,visible: true,label: “分配金额”,isSort: true,attrcode: “nallotmny”}或{itemtype: “number”,visible: true,label: “分配金额”,sorter:() => {return -1},attrcode: “nallotmny”}
决定什么状态渲染自定义单元格内容 renderStatus browse 表示浏览态渲染自定义单元格内容(此时表格需要是浏览态),edit表示编辑态渲染自定义单元格内容(此时表格需要是编辑态) { table_b: { pagination: true, items: [{itemtype: “refer”, maxlength: “20”,renderStatus: ‘browse’,render:() => {return ()} visible: true, label: “财务组织最新版本”, width: “140px”, disabled: true, color: “red”}]
控制分页器的显隐 pagination默认是false 现在分页器显隐需要业务组通过代码修改模版的meta.pagination字段控制 { tableBank: { moduletype: “table”, pagination: true, items: [{itemtype: “refer”, maxlength: “20”, visible: true, label: “财务组织最新版本”, width: “140px”, disabled: true, color: “red”}]