码表设置


什么是码表?

码表是“编码表”的简称。在ERP中,编码是一项重要的管理工作,会有大量的基础数据是基于编码表的,所以PSI中抽象出了码表这一业务对象。

从技术层面来讲,码表是可以用一张数据库表(table)来存储的业务对象。

例如:商品分类、商品、客户分类、客户等等,就是可以用码表来表达的业务对象。

码表由系统固有字段和用户自定义字段两部分组成。

码表的“字段”、“列”是同一个业务含义。用“字段”的时候,更多是从数据库建模的角度;用“列”的时候,多半是从用户界面的角度来表达。

码表系统固有字段

固有字段 列中文含义 说明
id 唯一id
code 编码
name 名称
record_status 记录状态 启用或者停用,引用系统数据字典t_sysdict_record_status中的值
date_created 创建时间 记录创建时间
create_user_id 创建人id 记录创建人id,引用t_user的id字段
update_dt 编辑时间 记录最后一次编辑时间
update_user_id 编辑人id 记录最后一次编辑人的id,引用t_user的id字段
py 拼音字头 名称的拼音字头
data_org 数据域
company_id 公司id 引用t_org的id字段

从上表可以看出,code和name是码表的核心业务字段。

码表属性

属性 说明
分类 分类可以结合编码属性来使用
编码 给码表做出恰当的编码,便于管理大量的码表
名称 码表的中文名称
模块名称 模块名称会用于权限和主菜单中显示当前码表属于哪个模块。例如:码表的名称叫“币别”,模块名称叫“币别管理”。模块名称也可以和码表名称一致,这里根据实际的业务灵活设置。
数据库表名 每个码表都对应一个数据库中的表
层级数据 当码表需要是多级的时候,需要设置码表为层级数据。通常各种“分类”常为层级数据,例如:商品分类就可以设为层级数据。
编辑布局列数 新增或编辑一条码表记录的时候,会弹出页面给用户使用。通常编辑布局列数设置为1,码表的各个字段会从上到下依次排列。如果码表的自定义字段过多,可以把编辑布局列数设置为2,此时布局就会每行显示两个字段。
视图分页 当码表是层级数据的时候,即使设置了视图分页,也不会启用分页效果。
自动编码长度 值可以为0到20的整数。设置为0,表示不自动编码,编码需要用户手工输入。设置为其他整数,编码会自动生成流水号,例如:设置为5,自动生成长度为5位的类似00001、00002、00003这样的编码。
业务逻辑类名 带namespace的完整class名,用于指定该码表的后台业务逻辑插件代码。
例如:\Home\Plugin\CodeTable\DemoBLL 其实现代码见:这里

具体的用法参考下面的码表事件

码表事件

码表事件用于:当用户在新增、编辑和删除码表记录的时候,通过后台业务逻辑类来插入自定义业务逻辑。

事件 事件处理函数 说明
新增码表记录 afterAdd 函数返回null表示可以继续执行新增操作; 返回字符串则会作为提示信息返回给用户,同时不执行新增操作(数据库事务会回滚)
编辑码表记录 afterUpdate 函数返回null表示可以继续执行编辑操作; 返回字符串则会作为提示信息返回给用户,同时不执行编辑操作(数据库事务会回滚)
删除码表记录 beforeDelete 函数null表示可以执行删除操作; 返回字符串则会作为提示信息返回给用户,同时不执行删除操作(数据库事务会回滚)

范例代码见:这里

码表列属性

属性 说明
列标题 列的标题会出现在视图列的标题和编辑页面中
列数据库名 该列数据库表中的字段名
列数据类型 支持varchar、int、decimal、datetime。列一旦创建,其数据类型就不能再修改
列数据长度 列数据类型是varchar的时候有效
列小数位数 列数据类型是decimal的时候有效
值来源 值的来源分为:用户直接录入、引用系统数据字典、引用其他码表、引用自身数据
引用表名 当值来源是需要引用其他数据的时候,指定的数据库表名
引用列名(关联用) 引用其他表的时候,和其他表关联的字段名。该字段是指引用表中的字段名。通常是码表的id字段。
引用列明(显示用) 引用其他表的时候,显示给用户的字段。例如:物料里面引用计量单位,显示计量单位的名称。
对用户可见 用户可见的列,在编辑界面和视图中就会出现。不可见的列,通常会作为后台业务逻辑字段来使用。
必须录入 列对用户可见的时候,本属性才有效。
列视图宽度 在码表的默认视图界面中,该列的宽度,以px为单位。如何更方便地设置本属性,请参见下面的可视化布局。
编辑界面显示次序 该列在编辑界面中出现的次序。如何更方便地设置本属性,请参见下面的可视化布局。
编辑器列占位 当码表的编辑布局列数大于1的时候,通过编辑器列占位,可以调整编辑界面布局。例如:编辑布局列数设置为4,编辑器列占位设置为3。可以类比HTML中table的colspan来理解这个属性的用途。
视图界面显示次序 该列在默认视图中的显示次序。如何更方便地设置本属性,请参见下面的可视化布局。
编辑器类型 编辑器类型对应的是ExtJS中的xtype,其数据来自系统数据字典t_sysdict_editor_xtype

可视化布局

目前PSI还没有实现完善的可视化布局功能,而是采用了变通的操作方式。

  • 默认视图列的布局调整

把码表通过主菜单维护加入到主菜单后,该码表可以作为一个独立的模块使用。通过主菜单进入该码表模块,会有开发者工具, 其下有保存列视图布局。拖动列宽度和前后次序后,保存列视图布局,就可以在下次打开该模块的时候,保持当前设置的列宽度和次序。

  • 编辑界面的布局调整

码表设置模块中的有调整编辑界面字段次序,通过拖动列的先后次序来实现设置编辑字段的次序。