一、二开需求
费用报销单分录增加客户字段,既能手动输入,又能选择
二、实现步骤
1、分录实体增加客户、客户名称字段;客户用于F7选择,绑定客户数据源,客户名称用于存储手动输入名称字段
2、费用报销单编辑页面引入字段,客户字段配置隐藏
3、分录下方增加客户信息,不需要绑定任何属性,查询对象赋值客户绑定的对象,并且记录此时客户信息的元素id为ext_F7
4、给客户名称增加一个编辑器:wafKhF7
编辑器脚本逻辑:点击客户名称打开客户信息F7
脚本:
waf.defineCustomeClass("celleditor.wafKhF7", celleditor.defaultEditor, {
show: function() {
//celleditor.defaultEditor.prototype.createEditor.call(this, value);
var btnId = this.opts.id + "btn";
var btnOpts = {
tagClass: "g-icon-search",
style: "height: 24px; width: 20px;position: relative;margin-left: -25px;text-decoration: none;",
id: btnId
};
var searchBtn = waf.createDOM("linkButton", btnOpts);
//$(this.elem).css("padding-right", "20px");
var initData = bizCollBillBase.getModelInitData();
this.elem = $("<div style='width:100%;height:100%;border:none;display:inline-block;'></div>")
.append(this.elem).append(searchBtn);
waf.initComponent("linkButton", btnOpts, searchBtn);
waf(searchBtn).find("span").addClass("qsBtn");
waf(searchBtn).wafLinkButton("option", "onclick", waf("#ext_F7").wafPromptStandard("open"));
celleditor.defaultEditor.prototype.show.call(this);
}
});
5、客户信息增加触发事件:khchange,选择后赋值客户和客户名称
脚本:
var entryDom = waf("#entries"),
currentRowId = entryDom.dataGrid("getSelectedRow"),
selectValue = value.current;
if (!selectValue) return;
entryDom.wafGrid("editStop");
var khName = selectValue.name.l2 ? selectValue.name.l2 : selectValue.name;
entryDom.wafGrid("setCell", currentRowId, "khName", khName);
entryDom.wafGrid("setCell", currentRowId, "kh", selectValue);
waf("#ext_F7").wafPromptBox("setValue", null);
6、给客户名称增加触发事件:khNameChange,当客户名称是手动输入的,需要清空客户F7的值
var entryDom = waf("#entries"),
currentRowId = entryDom.dataGrid("getSelectedRow"),
selectValue = ui.current;
entryDom.wafGrid("editStop");
entryDom.wafGrid("setCell", currentRowId, "kh", null);
推荐阅读