五、字段的事件编辑
在CRM案例的报价单模块中,需要填写客户的一些基本信息,要是每次都一个一个的填会很慢,我们可以先在【基础信息】的【客户信息】模块里先填写好。然后通过js代码,实现选择客户后,客户信息中对应的的联系人、手机号码、地址等信息全部都自动带出来。
步骤一:准备好供应商信息
先在【基础信息】菜单下建好【客户信息】模块,然后在【客户信息】模块里填写好客户的基本信息。
步骤二:编写js代码
打开设计器,点击【客户名称】字段,然后字段属性里点击打开【事件编辑】。
JS代码如下:
if(newValue){
var data=jwpf.getFilterData("baojiadan.QuotationsZhuBiao.dinggoukehu.sql1",{"filter_EQL_kid":newValue});
if(data&&data.list&&data.list.length)
{
jwpf.setFormVal("fukuanfangshi",data.list[0]['fukuanfangshi']);
jwpf.setFormVal("kehubianhao",data.list[0]['kehubianhao']);
jwpf.setFormVal("kehuhetonghao",data.list[0]['kehuhetonghao']);
jwpf.setFormVal("bizhong",data.list[0]['waixiaobizhong']);
jwpf.setFormVal("shifukaipiao",data.list[0]['shifukaipiao']);
jwpf.setFormVal("yunshufangshi",data.list[0]['yunshufangshi']);
jwpf.setFormVal("wofanggongsi",data.list[0]['wofanggongsi']);
jwpf.setFormVal("yewuyuan",data.list[0]['yewuyuan']);
jwpf.setFormVal("kefu",data.list[0]['kefu']);
jwpf.setFormVal("dinggoulianxiren",{"key":data.list[0]['lxr'],"caption": data.list[0]['xingming'],"id":data.list[0]['lxr'],"text": data.list[0]['xingming']});
jwpf.setFormVal("dinggoulianxidizhi",data.list[0]['shouhuodizhi']);
jwpf.setFormVal("dinggoulianxidianhua",data.list[0]['dianhua']);
}
}
1.1 平台函数jwpf.getFilterData():
这里主要用平台内置jwpf.getFilterData()函数获取供应商信息数据,然后用jwdf.setFormVal()将获取到的数据设置到页面上。
jwpf.getFilterData()有两个参数,sqlkey(sql语句的key值)和filterParam(查询条件)。
参数:
sqlKey
SqlKey怎么来呢?我们可以把sql语句存放在某字段的sql编辑里(存放在哪个字段都行,看自己喜好)。
点开【sql编辑】,点击新增。
Sql代码如下:
SELECT
a.WoFangGongSi,
a.FuKuanFangShi,
a.WaiXiaoBiZhong,
a.ShiFuKaiPiao,
a.KeHuBianHao,
a.ShuiHaoXinXi,
a.YunShuFangShi,
a.KaiPiaoDanWeiMingChen,
CONCAT(a.DiZhi, '-', a.DianHua) AS KaiPiaoDiZhi,
a.KaiHuYinXing,
a.YeWuYuan,
a.KeFu,
b.ID AS lxr,
b.XingMing,
b.ShouHuoDiZhi,
b.DianHua
FROM
KE_HU_XIN_XI_ZHU_BIAO a
LEFT JOIN KE_HU_XIN_XI_ZI_BIAO_1 b
ON
a.ID = b.MASTER_ID
AND b.MoRen = '1'
WHERE
a.ID = :kid
这里的baojiadan.QuotationsZhuBiao.dinggoukehu.sql1便是jwpf.getFilterData()函数的参数sqlKey(sqlKey要用英文双引号引用(单引号也是可以的))。
filterParam
jwpf.getFilterData()的另外一个参数 filterParam= { "filter_EQS_name" : "设置查询条件值"; }
,变量名以filterEQS开头,后面的name表示查询条件key,就是sql语句里“:”后面的,例如这里就是id; 其中EQS中的S表示数据类型(S--字符串;L--整数;N--小数;D--日期)。事件编辑窗口右下角有详细的说明。返回值json对象:
返回值是json对象,返回值格式如:
{
"list":[{
"id":"具体值"
},{
"lianxiren":"具体值"
},{
"shoujihao":"具体值"
},{
"dizhi":"具体值"
}],
"map":{
"key":"caption"
}
}
用【返回值】.list,我这里是gysData.list,就能获取到列表数据: [{"id":"具体值"},{"lianxiren":"具体值"},{"shoujihao":"具体值"},{"dizhi":"具体值"}]
,是一个json数组,数组里的json的Key值就是sql生成规则里的字段Key。
注:参数filterParam中的变量名开头的写法,不仅仅只有filterEQS,还有另外一种写法:fixEQS。Filter和fix的区别是:fix是固定查询条件,filter是动态查询条件。固定条件参数,指的是sql里写死条件的。动态条件参数,指的是根据参数自动加上查询条件的
1.2 平台函数jwpf.setFormVal():
Jwpf.setFormVal()是用来设置页面值的,上一节已经详细讲过了,而且事件编辑窗口右下角有具体说明。