最近陆陆续续收到多家客户提出需要在行程里加字段或者把行程里的出发地或者目的地改为可选择的辅助资料等二开的需求。针对类似的需求整理出出大致的一个二开方案供大家参考。
首先先介绍一下针对行程这块设计的背景及实现理念方便大家在做二次开发时更容易理解:
在PC端行程也是一个单据体,但是实质上这个单据体里的所有字段都是分录中的字段,它没有一直独立的物理表来存储这些字段,又因为移动端目前是还没有办法实现多单据体的智能录入,所以掌上报销都是一个单据头另外加上分录这个单据体。而行程只能通过特殊的处理来让它可录入并且把数据写入分录中。行程上所有的字段都是在BOSIDE中 “掌上报销V3_行程”这个移动表单中添加的,而无法通过自定义字段来实现。
有了上面的设计背景及实现理念的介绍各位在二开时心里应该就有了一个整体框架,没错就是要自己在BOSIDE中自己在掌上报销V3_行程中加上自己要的字段,然后通过插件赋值。下面我通过图文及代码片段来介绍一下大概的实现过程。
此方案前提是已经在PC端的差旅报销单的行程上加好了自己需要的字段,此处只针对移动端的二开做处理。
一、扩展BOSIDE中的 图一的掌上报销V3_行程这个移动表单,然后在相应的位置拖入自己需要的字段,并且要保证这个字段的标识与PC端中对应字段的标识完全一致,保持一致是为了不针对每个二开的字段写代码对源单(PC端对应的单据)进行赋值。
图一:BOSIDE掌上报销V3_行程设计图
二、BOS中字段添加成功后就需要二开对应的插件做功能的实现,只需要重写下面的一个方法就可,掌上报销的底层实现就可以给行程中的字段赋值了,重重中之重就是二开的字段标识和PC端字段标识必须一致,否则不生效!!! 本地调试要验证是否设置值成功,那就override一个datachange事件,在事件中直接调用base不用做其它操作,打上断点在这里查看base.BillView.Model.DataObject对象中行程实体里找到你的字段看看值有没有设置成功,BillView可以理解为源单的view。
3、把开发完后的插件注册到掌上报销V3_行程上,并且一定要把这个移动表单上的系统原生的插件取消,因为继承的就是原生的插件,不然后重复的执行
附上移动表单的开发小技巧:由于移动表单的界面很少,拖入字段经常搞错位置,有时甚至不知道插入到界面的字段跑哪里去了,要解决这个问题其实很简单。就是要针对哪个流式布局来操作,就把这个流式布局的高和宽放的大大的,其它的暂时不用的布局高度设置为0,依次这样操作直到所有的布局都调整为你想要的。切记在把高度设置为0时一定要记录下它原本的高度,用于操作完后高度还原。
附上一个掌上报销V3界面二开的课程,供参考学习:
https://vip.kingdee.com/school/135337033873846784
推荐阅读