工作流中如何实现求和、条件跳转、数字自动转为大写、多个下拉控件之间的联动等各类效果?
当前位置:点晴教程→点晴OA办公管理信息系统
→『 工作流使用交流 』
特别说明:本教程是旧版工作流教程,新版工作流无须这么麻烦,可以直接设置,无须用户接触到Javascript,以下例子仅供开拓思路参考。当然,新版工作流中仍然支持以下实现方法。 :工作流中如何实现求和、条件跳转、数字自动转为大写、多个下拉控件之间的联动等各类效果?
:点晴OA的工作流模块支持javascript脚本,可以利用javascript脚本实现各类特定效果。
1、求和
以上面两个需要求和的为例说明(代码附件:表单代码.txt ),在设计表单的时候,注意应该将合计中的那两个控件设置为只读、以防止用户自己更改合计值,方法是在源码模式下的对应控件中加入: readonly="readonly",先在源码模式下找到需要求和的控件id,然后在加入:
<input type="text" style="width:56px;height:21px;" id="CS21" title="CS001" name="CS21" maxlength="255" size="7" onchange="if(!isnumeric(this.value,3)){this.value=0};if(this.value==''){this.value=0;};" />
加入后效果:
<input type="text" style="width:56px;height:21px;" id="CS21" title="CS001" name="CS21" maxlength="255" size="7" onchange="if(!isnumeric(this.value,3)){this.value=0};if(this.value==''){this.value=0;};" readonly="readonly" />
然后找到需要将合计值计入以上控件的各个控件,在“表体JS脚本”中编写相应的js脚本函数:
//自动计算单据张数合计
function sub_danju(){
document.getElementById('CS21').value=(document.getElementById('CS10').value)-(-document.getElementById('CS11').value)-(-document.getElementById('CS12').value)-(-document.getElementById('CS13').value)-(-document.getElementById('CS14').value)-(-document.getElementById('CS15').value)-(-document.getElementById('CS16').value)
}
//自动计算合计金额
function sub_fee(){ document.getElementById('CS30').value=(document.getElementById('CS22').value)-(-document.getElementById('CS23').value)-(-document.getElementById('CS24').value)-(-document.getElementById('CS25').value)-(-document.getElementById('CS26').value)-(-document.getElementById('CS27').value)-(-document.getElementById('CS28').value)-(-document.getElementById('CS29').value)
}
//自动计算出差津贴,按每天50元计算
function sub_jintie(){ document.getElementById('CS29').value=document.getElementById('CS20').value*50;
sub_fee();
}
如果提交前还需要对报销总金额进行一下判断,那么可以在“提交前JS脚本”中添加判断js脚本:
if(document.getElementById('CS30').value-0>10000){alert('报销金额禁止大于10000元!');return false;}
完成上面的js脚本编写后,需要在相应录入数据的控件中增加onkeyup或onchange事件来触发上面的函数(onkeyup:每一次键盘按键弹起立即生效、onchange:光标离开控件并且数据发生变化时才生效),实现自动求和效果:
a、在天数录入控件(共([ ])天)的onkeyup或onchange事件中增加 sub_jintie() 函数,实现自动计算出差津贴:
<input type="text" style="width:52px;height:21px;" id="CS20" title="CS001" name="CS20" maxlength="255" size="6" onchange="if(!isnumeric(this.value,1)){this.value=0};if(this.value==''){this.value=0;};sub_jintie();" />
b、在单据张数相关控件的onkeyup或onchange事件中增加 sub_danju() 函数,实现自动计算单据张数合计值:
<input type="text" style="width:114px;height:21px;" id="CS10" title="CS001" name="CS10" maxlength="255" size="14" onchange="if(!isnumeric(this.value,1)){this.value=0};if(this.value==''){this.value=0;};sub_danju();" />
<input type="text" style="width:114px;height:21px;" id="CS11" title="CS001" name="CS11" maxlength="255" size="14" onchange="if(!isnumeric(this.value,1)){this.value=0};if(this.value==''){this.value=0;};sub_danju();" />
<input type="text" style="width:114px;height:21px;" id="CS12" title="CS001" name="CS12" maxlength="255" size="14" onchange="if(!isnumeric(this.value,1)){this.value=0};if(this.value==''){this.value=0;};sub_danju();" />
<input type="text" style="width:114px;height:21px;" id="CS13" title="CS001" name="CS13" maxlength="255" size="14" onchange="if(!isnumeric(this.value,1)){this.value=0};if(this.value==''){this.value=0;};sub_danju();" />
<input type="text" style="width:114px;height:21px;" id="CS14" title="CS001" name="CS14" maxlength="255" size="14" onchange="if(!isnumeric(this.value,1)){this.value=0};if(this.value==''){this.value=0;};sub_danju();" />
<input type="text" style="width:114px;height:21px;" id="CS15" title="CS001" name="CS15" maxlength="255" size="14" onchange="if(!isnumeric(this.value,1)){this.value=0};if(this.value==''){this.value=0;};sub_danju();" />
<input type="text" style="width:114px;height:21px;" id="CS16" title="CS001" name="CS16" maxlength="255" size="14" onchange="if(!isnumeric(this.value,1)){this.value=0};if(this.value==''){this.value=0;};sub_danju();" />
c、在单据张数相关控件的onkeyup或onchange事件中增加 sub_fee() 函数,实现自动计算单据张数合计值:
<input type="text" style="width:114px;height:21px;" id="CS22" title="CS001" name="CS22" maxlength="255" size="14" onchange="if(!isnumeric(this.value,1)){this.value=0};if(this.value==''){this.value=0;};sub_fee();" />
<input type="text" style="width:114px;height:21px;" id="CS23" title="CS001" name="CS23" maxlength="255" size="14" onchange="if(!isnumeric(this.value,1)){this.value=0};if(this.value==''){this.value=0;};sub_fee();" />
<input type="text" style="width:114px;height:21px;" id="CS24" title="CS001" name="CS24" maxlength="255" size="14" onchange="if(!isnumeric(this.value,1)){this.value=0};if(this.value==''){this.value=0;};sub_fee();" />
<input type="text" style="width:114px;height:21px;" id="CS25" title="CS001" name="CS25" maxlength="255" size="14" onchange="if(!isnumeric(this.value,1)){this.value=0};if(this.value==''){this.value=0;};sub_fee();" />
<input type="text" style="width:114px;height:21px;" id="CS26" title="CS001" name="CS26" maxlength="255" size="14" onchange="if(!isnumeric(this.value,1)){this.value=0};if(this.value==''){this.value=0;};sub_fee();" />
<input type="text" style="width:114px;height:21px;" id="CS27" title="CS001" name="CS27" maxlength="255" size="14" onchange="if(!isnumeric(this.value,1)){this.value=0};if(this.value==''){this.value=0;};sub_fee();" />
<input type="text" style="width:114px;height:21px;" id="CS28" title="CS001" name="CS28" maxlength="255" size="14" onchange="if(!isnumeric(this.value,1)){this.value=0};if(this.value==''){this.value=0;};sub_fee();" />
<input type="text" style="width:114px;height:21px;" id="CS29" title="CS001" name="CS29" maxlength="255" size="14" onchange="if(!isnumeric(this.value,1)){this.value=0};if(this.value==''){this.value=0;};sub_fee();" /> 通过以上的设置后,这个表单就可以实现多个单元格的不同合计效果了。
该文章在 2018/11/21 15:13:08 编辑过
|
关键字查询
相关文章
正在查询... |