泛微oa流程表单二次开发新人注意事项
1.泛微的PC端和手机端使用的jQuery代码通用吗?
答:根据实际操作情况,泛微的PC端和手机端使用的jQuery代码并不是通用的,pc端的代码有些不能在手机模板流程表单中使用。
很可能在开发手机模板的时候,手机的要单独写一套js代码。
2.泛微的流程表单里有给开发人员二次开发的提交校验方法,checkCustomize()方法,同一个流程表单里只能写一个提交校验方法,注意:一个流程里如果有多个地方需要判断,那么需要都在checkCustomize()方法下进行判断,在方法中返回true,则进入到下一节点,返回Flase ,不能提交成功。使用代码如下:
<!-- script代码,如果需要引用js文件,请使用与HTML中相同的方式。 --> <script type="text/javascript"> jQuery(document).ready(function() { checkCustomize = function() { //提交验证 var returnval = true; var beginDateTime = jQuery("#field5973").val(); var endDateTime = jQuery("#field5974").val(); if(beginDateTime.valueOf() > endDateTime.valueOf()) { Dialog.alert("开始日期不能大于结束日期"); jQuery("#field5973").val(""); jQuery("#field5974").val(""); jQuery("#field5973span").html(""); jQuery("#field5974span").html(""); returnval = false; } return returnval; } }); </script>
3.泛微系统有自己定义的alert警告框,如下:
Dialog.alert("开始日期不能大于结束日期");
4.在进行流程表单开发过程中,会遇到隐藏字段且移除必填校验的字段或者给某个字段增加必填校验,这个地方用泛微提供的显示属性联动操作的话是非常方便的,字段隐藏后,就不会校验字段必填了js实现就得考虑隐藏后,字段还是会提示必填验证,关于这一点,我在百度上借鉴了网友的代码,pc端非常好用,手机端不适用,会引起其他代码失效,代码引用如下:
//Ecology8二次开发:HTML表单字段必填验证的添加与移除 /** * 给字段添加必填验证。 */ var addInputCheckField = function(fieldId, spanImgId) { $("#" + fieldId).attr("viewtype", "1"); var fieldStr = $("input[name=needcheck]").val(); if (fieldStr.charAt(fieldStr.length - 1) != ",") { fieldStr += ","; } $("input[name=needcheck]").val(fieldStr + fieldId + ","); $("#" + spanImgId).html("<img src="/images/BacoError_wev8.gif" align="absMiddle">"); }; /** * 移除字段必填验证。 */ var removeInputCheckField = function(fieldId, spanImgId) { $("#" + fieldId).attr("viewtype", "0"); var fieldStr = $("input[name=needcheck]").val(); $("input[name=needcheck]").val(fieldStr.replace(fieldId + ",", "")); $("#" + spanImgId).html(""); }; // 调用移除必填验证函数 removeInputCheckField("field10391", "field10391span"); // 移除必填验证,主表文本框、选择框 removeInputCheckField("field10849", "field10849spanimg"); // 移除必填验证,主表浏览框 removeInputCheckField("field10859_0", "field10859_0span"); // 移除必填验证,明细表文本框、选择框 removeInputCheckField("field10859_0", "field10859_0spanimg"); // 移除必填验证,明细表浏览框 // 调用添加必填验证函数 addInputCheckField("field10391", "field10391span"); // 添加必填验证,主表文本框、选择框 addInputCheckField("field10849", "field10849spanimg"); // 添加必填验证,主表浏览框 addInputCheckField("field10859_0", "field10859_0span"); // 添加必填验证,明细表文本框、选择框 addInputCheckField("field10859_0", "field10859_0spanimg"); // 添加必填验证,明细表浏览框 ———————————————— 版权声明:本文为CSDN博主「九方科技」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/lcwell1990/article/details/77042693
5.代码应先开发发起申请的这个流程,如果流程全用js代码实现,在开发的时候需注意:
5.1.页面的初始化加载
页面刚进来时会有初始化的页面效果,这个需要用jQuery加载方法做一下,需要把什么字段隐藏,什么字段显示都在这个代码中写,代码如下:
$(document).ready(function() { var type = $("#field24579").val(); if(type == "1") { $(".col3").hide(); $(".ht01").hide(); $("#field24575").hide(); $("#field24575span").html(""); $("#field24575").val("0"); $("#field24575_format").hide(); } else if(type == "0") { $(".col3").show(); $(".ht01").show(); $("#field24575").show(); $("#field24575_format").hide(); } else { $(".col3").hide(); $(".ht01").hide(); $("#field24575").hide(); $("#field24575_format").hide(); $("#field24575span").html(""); $("#field24575").val("0"); } });
5.2加载完页面后,用户这时会操作里面的内容,比如说,根据某个字段,判断另外一个字段是否必填显示或者隐藏,这个改变是用change事件或者点击事件等事件来控制的
例如:
//去掉input框中填写字段两头的空格 $(document).ready(function() { $("#field24570").change(function() { $(this).val($.trim($(this).val())); }); });
5.3.用户一顿操作猛如虎之后,页面发生了天翻地覆的变化,如果用户点击保存后,用户的页面操作后的页面怎么展示出来,还需要jQuery加载事件来完成,这个加载事件分为2部分,第一部分是初始化加载页面,第二部分是保存后的初始化加载页面,在发起申请流程里,保存后的加载方法和一开始进入页面的加载方法是同一块代码块,是相同的代码每有一个事件发生,页面初始化加载里面,就得写对应的页面显示效果,不能你操作了页面之后保存,页面的效果没有展示出来
示范代码如下:
<!-- script代码,如果需要引用js文件,请使用与HTML中相同的方式。 --> <script type="text/javascript"> $(document).ready(function() { $("#field24579").change(function() {//input改变事件 var type = $("#field24579").val(); if(type == "1") { $(".col3").hide(); $(".ht01").hide(); $("#field24575").hide(); $("#field24575span").html(""); $("#field24575").val("0"); $("#field24575_format").hide(); } else if(type == "0") { $(".col3").show(); $(".ht01").show(); $("#field24575").show(); $("#field24575").val(""); $("#field24575span").html(""); $("#field24575_format").hide(); $("#field24575span").html("<img src="/images/BacoError_wev8.gif" align="absmiddle">"); } else { $(".col3").hide(); $(".ht01").hide(); $("#field24575").hide(); $("#field24575_format").hide(); $("#field24575span").html(""); $("#field24575").val("0"); } }) }); $(document).ready(function() { $("#field24570").change(function() { $(this).val($.trim($(this).val())); }); }); $(document).ready(function() { //页面加载方法和事件方法相对应,可以选择多个加载代码块里写 var type = $("#field24579").val(); if(type == "1") { $(".col3").hide(); $(".ht01").hide(); $("#field24575").hide(); $("#field24575span").html(""); $("#field24575").val("0"); $("#field24575_format").hide(); } else if(type == "0") { $(".col3").show(); $(".ht01").show(); $("#field24575").show(); $("#field24575_format").hide(); } else { $(".col3").hide(); $(".ht01").hide(); $("#field24575").hide(); $("#field24575_format").hide(); $("#field24575span").html(""); $("#field24575").val("0"); } }); </script>
5.4上面发起申请流程代码写完后,需要提交,提交后的页面是审核模板了,这时需要在审核模板里把你在发起申请流程模板里的加载页面初始化的所有代码拷贝到每一个审核节点,如果不加,用户操作后在发起申请页面已经把需要隐藏的字段隐藏了,在提交页面后的审核页面就会再次出现隐藏的字段,因为这个时候审批人员只能填写审批意见,所以,页面的改变事件代码就不起作用了,只是只读,所以在所有的审核流程上,只需要初始化加载代码
例如 审核流程代码块:
<!-- script代码,如果需要引用js文件,请使用与HTML中相同的方式。 --> <script type="text/javascript"> $(document).ready(function() { var type = $("#field24579").val(); if(type == "1") { $(".col3").hide(); $(".ht01").hide(); $("#field24575").hide(); $("#field24575span").html(""); $("#field24575").val("0"); $("#field24575_format").hide(); } else if(type == "0") { $(".col3").show(); $(".ht01").show(); $("#field24575").show(); $("#field24575_format").hide(); } else { $(".col3").hide(); $(".ht01").hide(); $("#field24575").hide(); $("#field24575_format").hide(); $("#field24575span").html(""); $("#field24575").val("0"); } }); </script>
5.5.发起申请代码开发完成后,应先同步到归档节点,因为发起申请的模板里的字段是可编辑的,同步到归档后,所有的字段就不可编辑了,成为只读字段,注意:归档里面的代码只是发起申请页面加载初始化方法,然后从归档同步至所有的审核节点,发起申请不能同步,否则发起申请字段会变成只读,发起流程的人员不能操作页面,填写数据,到此,流程开发结束!
6.如有不严谨的地方,可以指出评论,共同进步,以便完善!