SimpleTable 简单弹窗型表格
修改时间: 2018-04-11当前版本: 1.1.50
分类: NC高级组件
表格样式

简单示例
/**
* 使用说明:
*
* 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”}] |
