步骤一,建表,如下图:
要点:
1,表名、字段名都要尽量标准,系统开发不是一个人的事,涉及自己,团队,用户,后期二开…
2,用树表,nocobase 的树表虽然不完美,但足够用。
3,图中的字段几乎是树表基本、必备的字段,其他功能性字段会随着开发逐渐添加。
4,注意字段类型,图中也几乎是标准选择。
5,字段的准确命名会让后续的开发事半功倍(可以望文生义,可以写通用触发器…)
步骤二,增加页面,选择区块,如下图:
要点:
1,列表,是用户最常用的查询界面,列表要有过滤器。
2,在列表界面上完成查看、编辑、新增等常用动作,是经过时间验证的较好的交互方式。
3,上图中,上部是筛选区块,下部是列表区块,列表区块要用“树表格”(更好),如下图:
4,(在同一个页面上的)筛选区块要主动连接列表区块(如下图)。
步骤三,配置新增页面(部门_表单)如下图:
要点:
1,仅需要父记录、编码、名称三个字段(本案),其他字段都应该是“自动更新”的。
2,要高效使用“区块模板”,编辑和新增在绝大多数场景下可以共用“部门_表单”模板。
3,避免“上下级乱伦死循环”,需要配置“父记录”字段的选择范围,含义是“编辑时父记录不能选择本级或下级”,如下图:
步骤四,处理数据库的“触发器函数”和“触发器”。
关键内容:触发器函数(我使用的数据库是 postgresql )
触发器函数1:更新树表NEW行本级长编码长名称级次,如下图:
触发器函数2:更新树表NEW行下游长编码长名称级次,如下图:
触发器函数3:更新父记录的“明细”为是/否(新增数据行本身的“明细”默认为“是”),如下图:
要点:
1,nocobase 的工作流目前局限性太多,实现以上效果只能用数据库触发器。
2,数据库触发器很简单,借助 copilot 等工具就更简单。(我都是借助 copilot )
主体工作如上,以下分楼层解释:
1,树表的常用场景。
2,为什么要有长编码,长名称,级次,明细这些字段。
3,部门表为什么要有长编码、长名称?会计科目表为什么没有长编码、只有长名称?
4,树表的编码,如何保证“树级关系”?
5,nocobase 树表目前的局限性及解决办法。