目录

JS开发

引入js文件

表单提交校验

一些常用函数


最近一年都在接触泛微OA的一些开发工作,这篇文章将总结这一年以来的二次开发经验。


JS开发

引入js文件

泛微表单建模中可以直接插入JS代码块,但是在这个里面写代码非常反人类,因为它不支持tab缩进,一些语法的标亮提示也没有,所以我习惯把JS写在js文件中,在代码块中引入该js文件即可:

$(document).ready(function(){
    jQuery.post("/workflow/js/demo.js?"+Math.random(),function(data){});
});

写好的js只要放在ecology根目录下的/workflow/js/里即可,js路径后面加上随机函数Math.random()是为了刷新页面后及时载入最新的js文件内容。

表单提交校验

在js中新增函数checkCustomize,该函数中判断后返回true则允许提交,返回false则禁止提交。

一些常用函数

  • 浏览按钮的禁用与启用:如果想禁用浏览按钮,比如限制用户必须先填某些内容才能选择浏览框,可以用如下代码
//禁用
$("#field13769__").attr("disabled",true);
$("#field13769_browserbtn").attr("disabled",true);
$("#innerContentfield13769div").css("cursor",'not-allowed');
$("#field13769_browserbtn").css("cursor",'not-allowed');
$("#field13769span .e8_showNameClass .e8_delClass").html("");

//启用
$("#field13769__").attr("disabled",false);
$("#field13769_browserbtn").attr("disabled",false);
$("#innerContentfield13769div").css("cursor",'');
$("#field13769_browserbtn").css("cursor",'');
$("#field13769span .e8_showNameClass .e8_delClass").html(" x ");
  • 明细表遍历:如果想遍历明细表可以用如下代码
//第一个明细表即oTable0,第二个即oTable1,以此类推...
jQuery("#oTable0").find("tr[_target=datarow]").each(function(index,obj){
	var i = $(obj).attr("_rowindex");//明细字段的序号
});
  • 添加或删除明细:如果想实现程序自动新增明细行或删除明细行,可以用如下代码
//删除明细行,下面这个是删除所有明细行,如果想删除特定明细行只需选中特定明细行的check框即可
jQuery("input[type='checkbox'][name='check_node_0']").each(function(){
	jQuery(this).attr({'checked':'checked'});
});
//deleteRow0即为删除第一个明细表被勾选的明细行,deleteRow1即为删除第二个明细表被勾选的明细行,以此类推...
deleteRow0(0,true);

//添加明细行,addRow0即为给第一个明细表新增一行,addRow1即为给第二个明细表新增一行,以此类推...
addRow0(0);
  • 原生提示框:提示框与泛微自带提示框样式统一
window.top.Dialog.alert("这里写提示信息");
  • 隐藏明细表的加号按钮,如果不想让用户手工添行,必须通过自动联动添明细行,可以将明细表的加号按钮隐藏
//addbutton0即为第一个明细表的加号按钮,addbutton1即为第二个明细表的加号按钮,以此类推...
document.getElementById('$addbutton0$').style.display="none";
  • 流程中引入JSP,可以做一些复杂的开发
--只需在表中修改对应的字段即可
workflow_base,该表中id即对应流程的workflowID,custompage中为引入的JSP文件如今
  • 在页面上获取requestid、workflowid等
<!--在引入的JSP中添加如下代码-->
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.*" %>
<%@ page import="weaver.general.*" %>
<%
	int workflowid = Util.getIntValue(request.getParameter("workflowid"));
	int requestid = Util.getIntValue(request.getParameter("requestid"));
%>
<script type="text/javascript">
    //在js中即可使用
    var workflowid = '<%=workflowid %>';
    var requestid = '<%=requestid %>';
</script>
  • 增加或移除必填验证,应用场景,在明细表中想根据某个字段的值确认另一个字段是否必填,因为泛微自带的编辑属性只能配置主表的且还是下拉选的才能配置
//移除必填验证
function removeInputCheckField1(fieldId) {
	$('#' + fieldId).attr('viewtype', '0');
	var fieldStr = $('input[name=needcheck]').val();
	$('input[name=needcheck]').val(fieldStr.replace(fieldId + ',', ''));
	$("#"+fieldId).val('');
	$("#"+fieldId).css("cursor",'not-allowed');
	$("#"+fieldId).attr("disabled",true);
	$("#"+fieldId+"_browserbtn").attr("disabled",false);
	$('#' + fieldId + "span").html("");
}
//增加必填控制
function addInputCheckField1(fieldId) {
	$('#' + fieldId).attr('viewtype', '1');
	var fieldStr = $('input[name=needcheck]').val();
	if(fieldStr.indexOf(fieldId) == -1){
		if (fieldId.charAt(fieldStr.length - 1) != ',') {
			fieldStr += ',';
		}
		$('input[name=needcheck]').val(fieldStr + fieldId + ',');
	}
	$("#"+fieldId).css("cursor",'');
	$("#"+fieldId).attr("disabled",false);
	if($("#"+fieldId).val() == '' || $("#"+fieldId).val() == null || $("#"+fieldId).val() == undefined){
		$('#' + fieldId + "span").html('<img src="/images/BacoError_wev8.gif" align="absMiddle">');
	}
}