本文介绍了在开发中如何实现在列表点击新增时,通过下拉选项选择不同单据类型,并据此打开相应单据类型页面的两种方法。一种方法是在页面打开前传递单据类型参数,并在新页面获取和赋值;另一种更简单的方法是在弹窗参数中直接设置单据类型属性。同时,简要说明了beforeShowBill、afterCreateNewData和afterBindData三个插件事件的作用和使用场景。
如何通过列表打开新增页面时指定单据类型
在日常开发中,有这样一种需求:在列表点击新增的时候有个下拉选项,通过点击不同的按钮指定不同的单据类型,打开页面则为对应单据类型页面
首先思考一种实现思路:在页面打开前,根据点击不同的按钮,绑定不同的单据类型参数传到弹出的新页面,然后在新页面的插件上下文获取到对应的单据类型参数胡,并将单据类型值重新赋值给单据类型字段。
下面我们来演示下这种怎么实现:
创建一个包含单据类型字段的简单页面:
打开业务控制里面的“启用单据类型”
配置工具-单据类型-列表创建一个单据类型1,将“单据类型1文本”设为必填,“单据类型2文本”的可见性全部去除
再创建一个单据类型2,相反,将“单据类型2文本”设为必填,“单据类型1文本”的可见性全部去除
列表新增按钮增加两个单据类型选项
编写列表插件,重写beforeShowBill方法:
编写表单插件:
演示效果:
好了,大工告成!
其实还有另一种更加简单的方式实现:
直接在弹窗参数设置单据类型属性即可,这样就不需要再写表单事件去获取从列表传过来的对应的单据类型参数值然后赋值的逻辑了。
总结:
beforeShowBill事件:执行新建、修改、查看等操作,打开单据维护界面之前,触发此事件
afterCreateNewData 事件:界面初始化或刷新,新建表单数据包成功,并给字段填写了默认值之后,触发此事件;插件可以在此事件,重设字段的默认值。部分字段的默认值难以通过设计器配置出来,如需要计算的值、根据系统参数选项决定的值,必须写插件实现。
afterBindData 事件:界面数据包构建完毕,生成指令,刷新前端字段值、控件状态之后,触发此事件;插件可以在此事件,根据各字段值数据,重新设置控件、字段的可用、可见性等。
不要在此事件,修改字段值。
推荐阅读