1. 表单功能及事件
1.1. 功能
1.1.1. 弹窗
1.1.2. popwin
例如:明细表中弹窗显示业务单(其中242为要展示的目标业务ID,ord2_sqordid为明细中存储的目标业务实例ID)
方法一:td书信中配置
onclick="popwin(70%,50%,/order/biz.htm?crmid=242&ordid={ord2_ordid},项目合同)"
方法二:td书信中配置(相对第一种更简短) onclick="popwin1order(242,{ord2_sqordid},项目合同)"
1.1.3. dialog
dialog(_w_w, _w_h, url, title, _lfun, _rfun, _cfun)
- 调用弹窗
dialog("+700", "+480", "/uri?nocache=0&mydpid=" + dpid + "&dptitle=" + tohex(dptitle), "标题栏" ,
function(winid){//弹窗页面onload时执行 winid形如:_w1w2_,
$("#ebswin_"+winid+"_frame") = 弹窗页面window content对象
},function(){//返回结果回调
},function(winid,closefunction){//close window callback, winid形如:_w1w2_,默认点击 叉 关闭时,closefunction = true
$("#ebswin_"+winid+"_frame") = 弹窗页面window content对象
});
弹窗页面逻辑
1.设置底部按钮
setdialogbuttons(buttons, height, alignStyle, backcolor, topline, promptinfo)
setdialogbuttons(["新增","完成","close"],null,"center") ;
2. 设置点击按钮的处理逻辑
function dialogbuttonclick(buttonindex)
{
if (buttonindex == 0) {
add(1);
}
if (buttonindex==1)
{
save(2) ;
}
}
3. 直接返回结果,由dialog函数的回调事件处理
//返回并关闭窗口
dialogreturn(r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15)
//返回不关闭窗口
dialogreturnnoclose(r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15)
1.1.4. 临时主表数据存储
/*立即保存业务单主表数据*/
function immediate_save_order(){
var error1 ="";
myapply("",true,"order_"+crmid+"_modify",{ordid:ordid,jbid:jbid,prevfield:"ord_"},null,
function(iseof,data1,dsname1)
{
if (!iseof && $flds[0]=='operation' && ($f[0]=='error' || $f[0]=='abort'))
{
error1 = isnull($f[1],"发现了错误") ;
}
else if(dsname1=="error")
{
error1 = data1 ;
alert("数据保存出错:"+error1) ;
return ;
} else
if (!dsname1)
{
info("保存成功") ;
} ;
}) ;
}
1.2. 事件
表单事件指表单中,EBS系统提供的扩展事件,每个表单这些事件需要我们自己定义。当系统完成某些操作(如:表单加载完成)时,系统会调用 这些事件,由此完成部分系统不支持的非通用功能。
1.2.1. 通用事件
- afterloaded,业务单加载完成后
/*
*可用对象:
*1.order: 记录主表的所有字段的对象,获取字段方式与json对象一致
*2.orderx:记录明细表x的所有记录的对象,其中每条明细,以order2[+ord2id]方式获取,具体其中字段内容,直接在上述结果的基础上以json
*方式获取即可。 欲获取明细表,其tag=2,取记录ord2_id=2的店铺编号字段:order2["_2"].ord2_dpbh或order2["_2"]["ord2_dpbh"]
*/
function afterloaded(){
/*这里写你的逻辑*/
}
- inputchange,输入框发生改变后
function inputchange(obj1){
var name1 = $(obj1).getAttr("name","");
if(name1 == "ord2_kssj"){
if(browser.ismobile){
var trvalue = $(obj1).parent("tr").getAttr("value","");
var ks = $(obj1).myval();
$("tr[value='"+trvalue+"']").each(function(i,e){
$("td[name='ord2_jssj']",e).myval(ks);
})
}else{
var trobj = $(obj1).parent("tr");
var ks = $("[name='ord2_kssj']",trobj).myval();
var js = $("[name='ord2_jssj']",trobj);
js.myval(ks);
}
}
}
- afterpick,弹窗或下拉选择后,可用变量待测试
/*
*result.name=当前对象名 .value=返回的ID .text=返回的内容
*/
function afterpick(obj1){
}
1.2.2. 主表事件
1.2.3. 明细事件
- afternewdetailx,选择器选择数据到明细表后,x未明细表tag
/**
*可用对象:
*result={} ;
*result.object:调用选择器的对象;
*result.val=选择xml原始数据,用于dom操作;
*result.display:显示,废弃参数,可忽略 ;
*/
function afternewdetail2(){
var t1s = result.val.getElementsByTagName("t1");
for(var i=0 ;i<t1s.length;i++){
var dpbh = t1s[i].getElementsByTagName("ord2_dpbh")[0].innerHTML;
if(dpbh>''){
var ord2id = t1s[i].getElementsByTagName("ord2_id")[0].innerHTML;
var tar = $("tbody[name=details_auto] tr[value='"+ord2id+"'] td[name='ord2_xcmdd']");
tar.attr("editable","1").find("input").attr("readonly","true");
tar.next().removeClass("clear");
}
}
}