使用场景介绍
付款及报销流程中都会关联一些前置流程做为付款依据,但并不是所有的流程都是需要归档后才能付款的,所以这里关联的流程只能用 多流程 字段,而不能使用 归档流程字段。但对财务人员来说流程是否归档是做为判断付款的依据,而每条流程点开来查看太费时,所以希望可以用不同的颜色区分开哪些流程是归档的,哪些是没归档的。
实现方案
1、获取关联流程字段内所有的requestid 值。
2、通过 AJAX 去查询这些 流程的状态是否为 归档,如果归档就返回流程标题名称(workflow_requestbase 这个表中的status 字段进行判断 ,只要这个字段包含 归档 两个字,就说明流程已经归档了–前提是流程到归档节点的出口信息名称都要包含归档两个字)。
3、只要返回的流程标题名称与关联流程中显示的标题名称比对一致,就设字体为红色。
实现效果
关联的流程为归档时,红色显示
关联的流程未归档时,默认颜色显示
实现代码
以下代码放在对应的流程中
var xglcid = WfForm.convertFieldNameToId("xglc"); //流程表单中的多流程 字段,根据需求调整
var xglcvalue = WfForm.getFieldValue(xglcid); //获取字段内的值
var val = "#"+xglcid+"span .child-item"; //锁定查找范围
if(xglcvalue !=''){//如果相关流程值不为空,则判断对应的流程状态是否为归档
ecCom.WeaTools.callApi('/ecology/ajax/requestidtooverrequestname.jsp','GET',{requestid:xglcvalue}).then(function(result) {//返回已归档的流程名称
for(var i=0;i<result.length;i++){
$(val).each(function() {
var $this = $(this);
title = $this.text();
if(title==result[i].name){//如果流程名称一致,则将该名称设为红色
$this.css("color","red"); //也可以根据需求改为其它颜色
}
});
}
});
}
对应的AJAX文件代码
存放路径为/ecology/ajax/requestidtooverrequestname.jsp 可根据需求自行调整
<%@ page language="java" contentType="application/json; charset=utf-8" %>
<%@ page import="weaver.general.Util,weaver.conn.RecordSet" %>
<%@ page import="java.util.Map"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="net.sf.json.JSONObject"%>
<jsp:useBean id="RecordSet" class="weaver.conn.RecordSet" scope="page" />
<%
//通过流程ID获取流程名并且状态为已归档。
String requestid = request.getParameter("requestid");
RecordSet.executeSql("select requestname from workflow_requestbase where requestid in("+requestid+") and status like '%归档%'");
Map<String,String> jsonList=new HashMap<String,String>();
String alljson = "";
while(RecordSet.next()){
jsonList.put("name",RecordSet.getString("requestname"));
JSONObject jsonStr=JSONObject.fromObject(jsonList);
alljson=alljson+jsonStr.toString()+",";
}
alljson ="["+alljson+"]";
%>
<%=alljson%>