使用场景介绍
批量申请的东西需要多家供应商报价、同时供应商不固定,在选择时又根据不同的东西会选择最优的供应商。在这个需求下,只能用流程明细来批量实现东西的申请,同时 设定3家供应商,分别命名为 供应商一、供应商二、供应商三,然后在选择最终供应商时, 用 选择框 选择为 供应商一,供应商二,供应商三, 但这样看起来不够直观,并不是显示对应供应商的名称,所以就有了以下需求,动态的将 供应商一、供应商二、供应商三 替换为 实际的供应商名称。
初始场景
选择框设定
这种方式显示的不够直观,最好是能将 填好的供应商名称 对应显示在明细中。
调整后效果
实现:上面的最终供应方由下面的供应商名称动态的变动而变动。
实现代码
var GYS1id = WfForm.convertFieldNameToId("GYS1"); //获取供应商一的字段ID
var GYS2id = WfForm.convertFieldNameToId("GYS2"); //获取供应商二的字段ID
var GYS3id = WfForm.convertFieldNameToId("GYS3"); //获取供应商三的字段ID
var qrgyfid = WfForm.convertFieldNameToId("qrgyf","detail_1"); //获取确认供应方的字段ID
var xgllk = function(val){ //将修改选择框的显示值 做为一个函数用
var gys1value =WfForm.getFieldValue(GYS1id); //获取供应商一的值
var gys2value =WfForm.getFieldValue(GYS2id); //获取供应商二的值
var gys3value =WfForm.getFieldValue(GYS3id); //获取供应商三的值
window.setTimeout(function(){ //加个延时,点击选择框时,HTML弹窗加载需要时间,不加延时修改不到。
$(val).each(function() {
var $this = $(this);
var title='';
if(val=='.child-item'){ //浏览框为只读时,只有显示值,没有 属性为 title的项。
title = $this.text();
}else{
title = $this.attr("title");//定位用,不修改
}
switch(title){
case "供应商一":
if(gys1value !=""){
$this.text(gys1value);
}
break;
case "供应商二":
if(gys2value !=""){
$this.text(gys2value);
}
break;
case "供应商三":
if(gys3value !=""){
$this.text(gys3value);
}
break;
}
});
}, 10);
}
var zzxg =function(){
xgllk(".ant-select-selection-selected-value"); //点击选择框弹出选择项内容的修改
xgllk(".child-item"); //选择框只读时的修改。
xgllk(".ant-select-dropdown-menu-item"); //选择框选定后显示内容的修改
}
zzxg(); //流程打开时调用
WfForm.bindFieldAction("onclick", qrgyfid, function(fieldid,rowIndex){
zzxg(); //选择框点击时调用
});
WfForm.bindDetailFieldChangeEvent(qrgyfid,function(id,rowIndex,value){
zzxg(); //选择框内容变动时调用
});
$(document).on('click', '.ant-select-arrow', function() {
zzxg(); //选择框边上的小三角点击时调。这里是对流程中所有小三角生效,但内容修改只修改 属性title 为 供应商一、 供应商二、供应商三 的。
});
WfForm.bindFieldChangeEvent(GYS1id, function(obj,id,value){//供应商一变更时也做同步的变更
zzxg();
});
WfForm.bindFieldChangeEvent(GYS2id, function(obj,id,value){//供应商二变更时也做同步的变更
zzxg();
});
WfForm.bindFieldChangeEvent(GYS3id, function(obj,id,value){//供应商三变更时也做同步的变更
zzxg();
});