EAS820尚无法从框架层面直接支持HDD结构,但是可以使用框架自主实现。此处以某电商仓储为例,制作了HDD的web端实现。
注意此处的明细分录实体首字母要改为小写,否则会出现明细分录的值查不出来的问题。</br>
这里需要注意的是,① 明细分录的实体对象不能选择任何对象,要保留为空;分录属性名称,不能与该页面上其他的主分录重名。② 明细分录中自定义列,注意是自定义列的元素ID与实体中该字段匹配。
beforeSelectRow:function(rowid,e){
//选中一条数据之前,需要首先将上一条的数据保存,然后再初始化当新选中数据
_private.saveDetail();
_private.initDetail(rowid);
}
appendEntryRowAfter:function(e){
var overlayId = e.currentTarget.id || $(e.target).closest(".rowoverlay").attr("id"),
ay = overlayId.split("_"),
gridId = ay[ay.length-1];
//清空表格数据,只有主表上新增行时才需要
if(gridId=="entrys"){
_private.saveDetail();
_private.initDetail();
}
}
deleteEntryRowAfter:function(e){
//只有选中列即为删除列时,才要清空明细
var deleteRowId = waf(e.target).attr("rowid")
var selectedRowId = waf("#entrys").wafGrid("getSelectedRow");
if(deleteRowId==selectedRowId){
_private.initDetail();
}
}
beforeSubmit:function(e){
//提交或者保存之前需要先将分录明细保存到分录,否则会报错
_private.saveDetail();
}
,
saveBefore:function(e){
//提交或者保存之前需要先将分录明细保存到分录,否则会报错
_private.saveDetail();
}
loadComplete:function(data){
//默认展示分录第一条数据的
var rowid = $("#entrys").wafGrid("getRowId",1);
_private.initDetail(rowid);
}
//初始化明细分录
initDetail(rowid){
if(rowid){
var rowdata = waf('#entrys').wafGrid('getRowRealData', rowid);
var dEntrys = rowdata.dEntrys;
waf("#editGrid0").wafGrid("setGridData",dEntrys,true);
}else{//清空明细分录表格
waf("#editGrid0").wafGrid('clearGridData',true)
}
}
,
//保存明细分录
saveDetail:function(rowid){
if(!rowid){
rowid = waf("#entrys").wafGrid("getSelectedRow");
}
var data = waf("#editGrid0").wafGrid("getGridData");
$("#entrys").wafGrid("setCell",rowid,"dEntrys",data)
}
public class ModelFieldSelectorHandler extends AbstractWebEventHandler implements IModelFieldSelectorEventHandler {
public void onFieldSelect(ModelFieldSelectorEvent event) {
SelectorItemCollection sic = event.getSelectorItemCollection();
sic.add(new SelectorItemInfo("entrys.dEntrys.unit"));
sic.add(new SelectorItemInfo("entrys.dEntrys.qty"));
sic.add(new SelectorItemInfo("entrys.dEntrys.area"));
sic.add(new SelectorItemInfo("entrys.dEntrys.unit.name"));
sic.add(new SelectorItemInfo("entrys.dEntrys.unit.number"));
}
}
ModelFieldSelectorEvent是框架内置的一个Event,其目的就是用于查询额外字段,该事件不需要我们自行触发,框架自动触发。
1.配置页面
2.预览页面