eas的web扩展平台扩展标准页面js的_public方法原创
金蝶云社区-孙奇
孙奇
7人赞赏了该文章 144次浏览 未经作者许可,禁止转载编辑于2023年12月13日 09:44:30

1.以扩展报销单编辑页面BizAccountBill_Edit_Open.js中initEntryGrid方法为例,说明二开扩展标准产品_public实现:

标准initEntryGrid方法如下,为一个public方法,作用是对分录的一些控件做初始化处理,如业务类别f7、费用类型f7等

image.png

扩展时注意:

扩展重写_public实际为覆盖重写,执行时将不会再执行到标准js的该方法,而是直接执行扩展_public方法。所以,在扩展重写的_public方法里,不能仅实现二开业务处理,这会造成标准该方法的处理失效,造成二开和补丁的冲突;也不能直接将标准js该方法的代码复制过来,然后加上二开扩展代码,这样如果后续标准产品有更改,会导致更新补丁后标准更改不生效,造成二开和补丁的冲突。

如没有特殊情况,要采用兼容标准产品的方式扩展,即在重写的_public方法里,先调用标准产品的该方法,然后再做二开处理。类似java继承类重写方法时,通过super调用父类方法一样。举例如下:

(1) 在重写的_public方法调用前,要先缓存标准产品方法,可在扩展js的_public域做缓存super_initEntryGrid: BizAccountBill_Edit_Open.initEntryGrid

缓存后super_ initEntryGrid(该名称可以自定义)即为标准js方法initEntryGrid。

(2) 重写BizAccountBill_Edit_Open.initEntryGrid = function(){},在重写方法里,先调缓存的标准js该方法initEntryGrid即_public.super_initEntryGrid (),再做二开扩展处理。

具体扩展代码如下:

 image.png


2.扩展基类public方法也是一样,比如扩展bizCollBillBase.js方法中的initCompanyAndCostCenter方法,扩展js代码如下

 image.png


3.扩展报销单编辑页面BizAccountBill_Edit_Open.js中setInitComponentOpt方法

(1) 在重写的_public方法调用前,要先缓存标准产品方法,可在扩展js的_public域做缓存super_setInitComponentOpt:_self.setInitComponentOpt。

缓存后super_setInitComponentOpt即为标准js方法setInitComponentOpt

(2) 重写BizAccountBill_Edit_Open.setInitComponentOpt = function(type, option, com){},在重写方法里,先调缓存的标准js该方法setInitComponentOpt即_public.super_setInitComponentOpt(type, option, com),再做二开扩展处理。

具体扩展代码如下:

image.png


赞 7