update
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||
<%@ include file="/commons/taglibs.jsp"%>
|
||||
<%@page import="com.blueland.bpm.engine.util.WorkFlowContants"%>
|
||||
|
||||
<%
|
||||
String path = request.getContextPath();
|
||||
String basePath = request.getScheme() + "://"
|
||||
+ request.getServerName() + ":" + request.getServerPort()
|
||||
+ path + "/";
|
||||
String processDefinitionId=request.getParameter("procDefId");
|
||||
String procInstId=request.getParameter("procInstId");
|
||||
String curActivityId=request.getParameter("curActivityId");
|
||||
String destActivityId=request.getParameter("destActivityId");
|
||||
String curActInstId=request.getParameter("curActInstId");
|
||||
String userId=request.getParameter("userId");
|
||||
String userOrgId=request.getParameter("userOrgId");
|
||||
|
||||
%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Cache-Control" content="no-store"/>
|
||||
<meta http-equiv="Pragma" content="no-cache"/>
|
||||
<meta http-equiv="Expires" content="0"/>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<link rel="stylesheet" href="${ctx}/resource/js/plugins/zTree/css/zTreeStyle/zTreeStyle.css" type="text/css"/>
|
||||
<script type="text/javascript" src="${ctx}/resource/js/plugins/zTree/js/jquery-1.4.4.min.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/resource/js/plugins/zTree/js/jquery.ztree.core-3.4.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/resource/js/plugins/zTree/js/jquery.ztree.excheck-3.4.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/resource/js/plugins/zTree/js/jquery.ztree.exedit-3.4.js"></script>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
var huiQianDeptIds="";
|
||||
try{
|
||||
var items = parent.parent.document.getElementsByName("huiQianDeptIds");
|
||||
//alert(items.length);
|
||||
if (items.length > 0) {
|
||||
for (var i = 0; i <items.length; i++) {
|
||||
if (items[i].checked == true) {
|
||||
//alert(items[i].value);
|
||||
huiQianDeptIds+=items[i].value+"#";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}catch(e){}
|
||||
//alert(huiQianDeptIds);
|
||||
var zNodes;
|
||||
var url="${ctx}/taskMgr/getNextActivityUserTree.do";
|
||||
$.ajaxSetup({
|
||||
async : false
|
||||
});
|
||||
$.post(url, {huiQianDeptIds:huiQianDeptIds,userId:"<%=userId%>",userOrgId:"<%=userOrgId%>",processDefinitionId:"<%=processDefinitionId%>",processInstId:"<%=procInstId%>",curActInstId:"<%=curActInstId%>",curActivityId:"<%=curActivityId%>",destActivityId:"<%=destActivityId%>"},
|
||||
|
||||
function (data, textStatus){
|
||||
//var jsonObject = eval(data);
|
||||
//alert(jsonObject);
|
||||
zNodes=eval(data);
|
||||
});
|
||||
|
||||
var setting = {
|
||||
view: {
|
||||
dblClickExpand : false,
|
||||
selectedMulti: false
|
||||
},
|
||||
edit: {
|
||||
enable: false,
|
||||
drag:{isMove:false}
|
||||
|
||||
},
|
||||
data: {
|
||||
simpleData: {
|
||||
enable: true,
|
||||
idKey : "id",
|
||||
pIdKey : "pId" ,
|
||||
DIY:"isAccessTopMenu"
|
||||
}
|
||||
},callback: {
|
||||
beforeClick: beforeClick
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
function filter(treeId, parentNode, childNodes) {
|
||||
//alert(childNodes);
|
||||
//默认加载第一个或者根节点
|
||||
//if(typeof(parentNode)=="undefined"||parentNode==null||parentNode==""){
|
||||
// if (childNodes[0].isAccessTopMenu=="false") {
|
||||
// parent.document.getElementById("rightFrame").src="../../pages/user/list.do?orgId="+childNodes[1].id+"&orgName="+encodeURIComponent(childNodes[1].name);
|
||||
// }else{
|
||||
// parent.document.getElementById("rightFrame").src="../../pages/user/list.do?orgId="+childNodes[0].id+"&orgName="+encodeURIComponent(childNodes[0].name);
|
||||
// }
|
||||
//}
|
||||
//alert(childNodes.length);
|
||||
//var filterNodes=$("#filterNodes").attr("value").split(",");
|
||||
//alert($.inArray(childNodes[0].id,filterNodes));
|
||||
|
||||
return childNodes;
|
||||
}
|
||||
function beforeClick(treeId, treeNode) {
|
||||
//alert(treeNode.isAccess);
|
||||
//判断是否有权限访问根节点
|
||||
if (treeNode.pId==""||treeNode.isAccessTopMenu=="false") {
|
||||
return false;
|
||||
} else {
|
||||
//if(treeNode.type=="${selectNodeType}"){
|
||||
$("#treeNodeId").val(treeNode.id+"^"+treeNode.pId);
|
||||
$("#treeNodeName").val(treeNode.name);
|
||||
$("#treeNodeType").val(treeNode.type);
|
||||
//}
|
||||
}
|
||||
|
||||
parent.addNextActivityUser();
|
||||
return true;
|
||||
}
|
||||
$(document).ready(function(){
|
||||
$.fn.zTree.init($("#userOrgTree"), setting,zNodes);
|
||||
//当人员树只有一个人员可供选择时,默认将人员移到已选列表
|
||||
try{
|
||||
var treeObj = $.fn.zTree.getZTreeObj("userOrgTree");
|
||||
var userNodes=treeObj.getNodesByParamFuzzy("type", "USER", null);
|
||||
if(userNodes.length==1){
|
||||
$("#treeNodeId").val(userNodes[0].id+"^"+userNodes[0].pId);
|
||||
$("#treeNodeName").val(userNodes[0].name);
|
||||
$("#treeNodeType").val(userNodes[0].type);
|
||||
window.parent.addNextActivityUser();
|
||||
}
|
||||
}catch(e){}
|
||||
});
|
||||
|
||||
//-->
|
||||
</SCRIPT>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY bgcolor="#FFFFFF">
|
||||
<ul id="userOrgTree" class="ztree"></ul>
|
||||
<form id="queryForm" name="queryForm" action="" method="post">
|
||||
<input name="treeNodeId" id="treeNodeId" type="hidden"/>
|
||||
<input name="treeNodeName" id="treeNodeName" type="hidden"/>
|
||||
<input name="treeNodeType" id="treeNodeType" type="hidden"/>
|
||||
<input name="filterNodeIdsStr" id="filterNodeIdsStr" type="hidden" value="${filterNodeIdsStr }"/>
|
||||
<input name="isShowCheckBox" id="isShowCheckBox" type="hidden" value="${isShowCheckBox }"/>
|
||||
<input name="showTreeType" id="showTreeType" type="hidden" value="${showTreeType }"/>
|
||||
<input name="selectNodeType" id="selectNodeType" type="hidden" value="${selectNodeType }"/>
|
||||
</form>
|
||||
</BODY>
|
||||
</html>
|
||||
167
ebpm-process-manage/webapp/pages/taskMgr/addMultiInstance.jsp
Normal file
167
ebpm-process-manage/webapp/pages/taskMgr/addMultiInstance.jsp
Normal file
@@ -0,0 +1,167 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||
<%@ include file="/commons/taglibs.jsp"%>
|
||||
<%@page import="com.blueland.bpm.engine.util.WorkFlowContants"%>
|
||||
<%
|
||||
String path = request.getContextPath();
|
||||
String basePath = request.getScheme() + "://"
|
||||
+ request.getServerName() + ":" + request.getServerPort()
|
||||
+ path + "/";
|
||||
%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<%@ include file="/commons/meta.jsp"%>
|
||||
<meta http-equiv="Cache-Control" content="no-store" />
|
||||
<meta http-equiv="Pragma" content="no-cache" />
|
||||
<meta http-equiv="Expires" content="0" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
});
|
||||
|
||||
function saveReceiver() {
|
||||
var isMultiInstance = false;
|
||||
var count = $("#nextActUserSel option").length;
|
||||
var nextActUserIdsStr = "";
|
||||
for (var i = 0; i < count; i++) {
|
||||
var tempNextActUserIdsStr = $("#nextActUserSel").get(0).options[i].value;
|
||||
if (tempNextActUserIdsStr == "")
|
||||
continue;
|
||||
nextActUserIdsStr += tempNextActUserIdsStr;
|
||||
if (i != count - 1)
|
||||
nextActUserIdsStr += ",";
|
||||
}
|
||||
if (nextActUserIdsStr == "") {
|
||||
alert("下一环节办理人员不能为空!");
|
||||
return false;
|
||||
} else if (!isMultiInstance && count > 1) {
|
||||
alert("下一环节只允许选择一位办理人员!");
|
||||
return false;
|
||||
}
|
||||
if (confirm("您确认补发多实例吗?")) {
|
||||
var taskId = "${activityInstanceModel.actInstId}";
|
||||
$.post('${ctx}/taskMgr/addMultiInstance.do', {"receivers":nextActUserIdsStr,"taskId":taskId},
|
||||
function (resp, textStatus){
|
||||
alert(resp);
|
||||
if (resp != "操作成功!") {
|
||||
art.dialog.opener.location.reload();
|
||||
art.dialog.close();
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function addNextActivityUser() {
|
||||
var treeNodeId=document.getElementById('actUserTreeFrame').contentWindow.document.getElementById('treeNodeId').value;
|
||||
var treeNodeName=document.getElementById('actUserTreeFrame').contentWindow.document.getElementById('treeNodeName').value;
|
||||
var treeNodeType=document.getElementById('actUserTreeFrame').contentWindow.document.getElementById('treeNodeType').value;
|
||||
|
||||
var count = $("#nextActUserSel option").length;
|
||||
var index = 0;
|
||||
//过滤空格
|
||||
if (treeNodeId == "" && treeNodeId.length == 0 || treeNodeType == 'ORG'
|
||||
|| treeNodeType == 'DEPT') {
|
||||
return;
|
||||
}
|
||||
|
||||
var isMultiInstance = false;
|
||||
for (var i = 0; i < count; i++) {
|
||||
//不重复添加
|
||||
if ($("#nextActUserSel").get(0).options[i].value == treeNodeId) {
|
||||
index++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (index > 0) {
|
||||
return;
|
||||
}
|
||||
if (isMultiInstance) {
|
||||
$("#nextActUserSel").append(
|
||||
"<option value="+treeNodeId+">" + treeNodeName
|
||||
+ "</option>");
|
||||
} else {
|
||||
$("#nextActUserSel").empty();
|
||||
$("#nextActUserSel").append(
|
||||
"<option value="+treeNodeId+">" + treeNodeName
|
||||
+ "</option>");
|
||||
}
|
||||
}
|
||||
|
||||
function removeNextActivityUser() {
|
||||
$('#nextActUserSel option:selected').remove();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="main-container" id="main-container">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-body">
|
||||
<table class='table table-bordered' border="0" cellspacing="0" cellpadding="0" id="myTable">
|
||||
<tr>
|
||||
<td align="left" colspan="5">
|
||||
<b>当前流程名称:${activityInstanceModel.procTitle},环节名称:${activityInstanceModel.actDefName},执行人:${activityInstanceModel.receiver}</b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background: #EDF4FC">
|
||||
<td colspan="4" style="border-bottom-color: #FFFFFF">
|
||||
<table>
|
||||
<tr>
|
||||
<td align="left">
|
||||
<h5 align="left" style="margin-left: 0px;">
|
||||
<b>待选用户</b>
|
||||
</h5>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<h5 align="left" style="margin-left: 0px">
|
||||
<b>已选用户</b>
|
||||
</h5>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
<td
|
||||
style="height: 250px; background-color: #FFFFFF; width: 180px; border: 1px solid #C6D3DB;">
|
||||
<IFRAME align="top" style="width: 300px; height: 100%;"
|
||||
scrolling="auto" src="${ctx}/pages/taskMgr/userTree.jsp"
|
||||
frameBorder="0" id="actUserTreeFrame"
|
||||
allowTransparency="true"></IFRAME>
|
||||
</td>
|
||||
<td valign="middle"
|
||||
style="width: 50px; height: 50px; vertical-align: top;text-align: center;"">
|
||||
<button type="button" id="addNextActUserBtn"
|
||||
onclick="addNextActivityUser()"
|
||||
class="btn btn-xs btn-primary" style="margin-top: 60px">>></button>
|
||||
|
||||
<button type="button" id="removeNextActUserBtn"
|
||||
onclick="removeNextActivityUser()"
|
||||
class="btn btn-xs btn-primary" style="margin-top: 10px">>></button>
|
||||
</td>
|
||||
<td style="width: 150px; height: 250px; vertical-align: top;">
|
||||
<select id='nextActUserSel' multiple="multiple"
|
||||
style='border: none; WIDTH: 100%; HEIGHT: 100%' size='4'
|
||||
tabindex='3' onclick="removeNextActivityUser();" />
|
||||
</td>
|
||||
<td align="left" valign="top"
|
||||
style="width: 50px; height: 50px; vertical-align: top;">
|
||||
|
||||
<button type="button" id="nextExecuteBtn"
|
||||
onclick="saveReceiver()" class="btn btn-sm btn-primary"
|
||||
style="margin-top: 66px">保存
|
||||
<i class="ace-icon fa fa-save bigger-110"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,94 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8" %>
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
|
||||
<%@ include file="/commons/taglibs.jsp" %>
|
||||
|
||||
<%
|
||||
String path = request.getContextPath();
|
||||
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
|
||||
%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<%@ include file="/commons/meta.jsp" %>
|
||||
<!--布局框架end-->
|
||||
<base href="<%=basePath%>">
|
||||
<title>流程详细页面</title>
|
||||
|
||||
<script type="text/javascript" >
|
||||
$(document).ready(function() {
|
||||
baseOnload();
|
||||
|
||||
});
|
||||
function baseOnload(){
|
||||
var data=$("#wf_fields").attr("value");
|
||||
var fieldsXml;
|
||||
if(typeof data == "string"){
|
||||
fieldsXml = new ActiveXObject("Microsoft.XMLDOM"); //ie6,ie7需要,firefox,ie8不需要
|
||||
fieldsXml.async = false;
|
||||
fieldsXml.loadXML(data);
|
||||
}else{
|
||||
fieldsXml= data;
|
||||
}
|
||||
$(fieldsXml).find("fields >*").each(function(i){
|
||||
var fieldValue=$(this).text();
|
||||
var inputObj=$("#"+this.nodeName);
|
||||
inputObj.val(fieldValue);
|
||||
});
|
||||
try{
|
||||
selfOnload();
|
||||
}catch(e){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
function baseValidate(){
|
||||
var validateFlag=true;
|
||||
if($("#wf_procTitle").val()==""){
|
||||
alert("流程标题[wf_procTitle]不能为空!");
|
||||
return false;
|
||||
}else if($("#wf_procDefId").val()==""){
|
||||
alert("流程定义ID[wf_procDefId]不能为空!");
|
||||
return false;
|
||||
}else if($("#wf_curActDefId").val()==""){
|
||||
alert("流程当前环节ID[wf_curActDefId]不能为空!");
|
||||
return false;
|
||||
}else if($("#wf_sender").val()==""){
|
||||
alert("流程发送人[wf_sender]不能为空!");
|
||||
return false;
|
||||
}else if($("#wf_actionType").val()==""){
|
||||
alert("流程执行类型[wf_actionType]不能为空!");
|
||||
return false;
|
||||
}
|
||||
return validateFlag;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<%@ include file="/commons/messages.jsp" %>
|
||||
<form id="nextExecuteForm">
|
||||
|
||||
<!-- 定义工作流依赖控件的集合,工作流控件以wf命名开头,业务控件请不要带wf_的前缀,请不要修改 start -->
|
||||
<input name="wf_procTitle" id="wf_procTitle" type="hidden" value="" />
|
||||
<input name="wf_procDefId" id="wf_procDefId" type="hidden" value="${processDefinition.id }" />
|
||||
<input name="wf_procDefName" id="wf_procDefName" type="hidden" value="${processDefinition.name }" />
|
||||
<input name="wf_curActDefId" id="wf_curActDefId" type="hidden" value="${curActivity.id }" />
|
||||
<input name="wf_curActDefName" id="wf_curActDefName" type="hidden" value="${activityDefName}" />
|
||||
<input name="wf_procInstId" id="wf_procInstId" type="hidden" value="${task.procInstId }" />
|
||||
<input name="wf_curActInstId" id="wf_curActInstId" type="hidden" value="${task.id }" />
|
||||
<input name="wf_sender" id="wf_sender" type="hidden" value="${bpm_login_session_user.userId }" />
|
||||
<input name="wf_nextActDefId" id="wf_nextActDefId" type="hidden" value="" />
|
||||
<input name="wf_receiver" id="wf_receiver" type="hidden" value="" />
|
||||
<input name="wf_actionType" id="wf_actionType" type="hidden" value="${actionType}" />
|
||||
<input name="wf_fields" id="wf_fields" type="hidden" value="${fields }" />
|
||||
<!--
|
||||
<jsp:include page="/pages/workflow/detail/topButton.jsp" flush="true"/>
|
||||
-->
|
||||
<!-- 定义框架需要的属性集合,请不要修改 end -->
|
||||
<jsp:include page="${workflowPage}" flush="true"/>
|
||||
<c:if test="${openPageType <=2}">
|
||||
<IFRAME style="width:1024px;height:200px;" scrolling="auto" src="${ctx}/pages/workflow/nextActivity/nextActivityUserMain.jsp" frameBorder="0" id="rightFrame" name="rightFrame" allowTransparency="true"></IFRAME>
|
||||
</c:if>
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
164
ebpm-process-manage/webapp/pages/taskMgr/baseProcessPage.jsp
Normal file
164
ebpm-process-manage/webapp/pages/taskMgr/baseProcessPage.jsp
Normal file
@@ -0,0 +1,164 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8" %>
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
|
||||
<%@ include file="/commons/taglibs.jsp" %>
|
||||
<%
|
||||
String path = request.getContextPath();
|
||||
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
|
||||
%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<%@ include file="/commons/meta.jsp" %>
|
||||
<script type="text/javascript" src="${ctx }/script/jquery-1.8.3.min.js"></script>
|
||||
<base href="<%=basePath%>"/>
|
||||
<title>流程详细页面</title>
|
||||
<script type="text/javascript" >
|
||||
$(document).ready(function() {
|
||||
baseOnload();
|
||||
});
|
||||
function baseOnload(){
|
||||
var data;
|
||||
try{
|
||||
data=$("#wf_fields").attr("value");
|
||||
var fieldsXml = $.parseXML(data);
|
||||
$(fieldsXml).find("fields >*").each(function(i){
|
||||
try{
|
||||
var fieldValue=$(this).text();
|
||||
if (fieldValue == null || typeof (fieldValue) == "undefined" || fieldValue == 'null') {
|
||||
fieldValue = "";
|
||||
}
|
||||
var inputObj=$("#"+this.nodeName);
|
||||
//取得控件类型
|
||||
var type = inputObj.attr("type");
|
||||
/* if(this.nodeName=="huiQianDeptIds"){
|
||||
alert(fieldValue);
|
||||
} */
|
||||
//特殊处理 radio
|
||||
if(type=="radio"){
|
||||
$("input[name="+this.nodeName+"][value=" + fieldValue + "]").attr(
|
||||
"checked", true);
|
||||
} else if(type=="checkbox"){
|
||||
if(fieldValue.indexOf(",")!=-1){
|
||||
var fieldValues=fieldValue.split(",");
|
||||
for(var i=0;i<fieldValues.length;i++){
|
||||
$("input[name="+this.nodeName+"][value=" + fieldValues[i] + "]").attr(
|
||||
"checked", true);
|
||||
}
|
||||
}else{
|
||||
$("input[name="+this.nodeName+"][value=" + fieldValue + "]").attr(
|
||||
"checked", true);
|
||||
}
|
||||
} else {
|
||||
inputObj.val(fieldValue);
|
||||
}
|
||||
}catch(e){alert("系统加载控件名为["+this.nodeName+"],值为["+$(this).text()+"]的数据失败,请您联系管理员排查问题!");}
|
||||
});
|
||||
}catch(e){alert("系统解析wf_fields数据失败,请您联系管理员排查问题!wf_fields["+data+"]");}
|
||||
try{
|
||||
selfOnload();
|
||||
}catch(e){
|
||||
}
|
||||
}
|
||||
|
||||
function baseValidate(){
|
||||
var validateFlag=true;
|
||||
if($("#wf_procTitle").val()==""){
|
||||
alert("流程标题[wf_procTitle]不能为空!");
|
||||
return false;
|
||||
}else if($("#wf_procDefId").val()==""){
|
||||
alert("流程定义ID[wf_procDefId]不能为空!");
|
||||
return false;
|
||||
}else if($("#wf_curActDefId").val()==""){
|
||||
alert("流程当前环节ID[wf_curActDefId]不能为空!");
|
||||
return false;
|
||||
}else if($("#wf_sender").val()==""){
|
||||
alert("流程发送人[wf_sender]不能为空!");
|
||||
return false;
|
||||
}
|
||||
return validateFlag;
|
||||
}
|
||||
function baseListReload(){
|
||||
art.dialog.opener.location.reload();
|
||||
art.dialog.close();
|
||||
}
|
||||
function traceProcess(){
|
||||
var procInstId=$("#wf_procInstId").val();
|
||||
showDiaLog('${ctx}/workflow/trace/processTraceText.do?processInstanceId='+procInstId,'流程监控','1000px','100%');
|
||||
}
|
||||
|
||||
|
||||
|
||||
function baseOnSubmit(title){
|
||||
var selfOnSubmitFlag=false;
|
||||
try{
|
||||
selfOnSubmitFlag=selfOnSubmit();
|
||||
if(!selfOnSubmitFlag)
|
||||
return selfOnSubmitFlag;
|
||||
}catch(e){
|
||||
}
|
||||
|
||||
try{
|
||||
selfOnSubmitFlag=baseValidate();
|
||||
if(!selfOnSubmitFlag)
|
||||
return selfOnSubmitFlag;
|
||||
}catch(e){
|
||||
|
||||
}
|
||||
try{
|
||||
//if($("#wf_nextActDefId").val()=="end"){
|
||||
//showDiaLog('${ctx}/pages/flowfile/selectArchives.jsp','选择归档类型','500px','50%');
|
||||
//return false;
|
||||
//}
|
||||
|
||||
}catch(e){}
|
||||
|
||||
if (typeof(title) == "undefined") {
|
||||
var nextActDefName=$('#wf_nextActDefName').val();
|
||||
if(nextActDefName==""){
|
||||
title="您确认送下一办理吗?";
|
||||
}else{
|
||||
title="您确认送["+nextActDefName+"]办理吗?";
|
||||
}
|
||||
}
|
||||
if(confirm(title)){
|
||||
jQuery.ajax({
|
||||
url: '${ctx}/taskMgr/jumpAnyTask.do',
|
||||
data: $('#nextExecuteForm',document).serialize(),
|
||||
type: "POST",
|
||||
beforeSend: function()
|
||||
{
|
||||
},
|
||||
success: function(resp)
|
||||
{
|
||||
if(resp.executeStatus=='SUCCESS'){
|
||||
alert("操作成功!");
|
||||
baseListReload();
|
||||
}else{
|
||||
alert("操作失败!");
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body class="white-page">
|
||||
<div class="main-container" id="main-container">
|
||||
<div class="panel panel-primary" style="box-shadow: none !important;">
|
||||
<div class="panel-body">
|
||||
|
||||
<form id="nextExecuteForm">
|
||||
<jsp:include page="/pages/taskMgr/params.jsp" flush="true"/>
|
||||
<%-- <jsp:include page="/pages/taskMgr/topButton.jsp" flush="true"/>--%>
|
||||
|
||||
<iframe style="width: 100%; height:360px;" scrolling="no"
|
||||
src="${ctx}/pages/taskMgr/nextActivityUserMain.jsp"
|
||||
frameBorder="0" id="nextActivityTreeFrame" name="nextActivityTreeFrame" allowTransparency="true"></iframe>
|
||||
|
||||
</form>
|
||||
</div></div></div>
|
||||
</body>
|
||||
</html>
|
||||
240
ebpm-process-manage/webapp/pages/taskMgr/delProcessRoam.jsp
Normal file
240
ebpm-process-manage/webapp/pages/taskMgr/delProcessRoam.jsp
Normal file
@@ -0,0 +1,240 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||
<%@page import="com.blueland.bpm.engine.core.model.*,org.activiti.engine.task.Comment,org.apache.commons.lang3.StringUtils,com.blueland.bpm.common.util.DateUtil,java.util.*"%>
|
||||
<%@ include file="/commons/taglibs.jsp"%>
|
||||
<%
|
||||
String path = request.getContextPath();
|
||||
String basePath = request.getScheme() + "://"
|
||||
+ request.getServerName() + ":" + request.getServerPort()
|
||||
+ path + "/";
|
||||
%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<%@ include file="/commons/meta.jsp"%>
|
||||
<base href="<%=basePath%>">
|
||||
<title>删除流程流转</title>
|
||||
<link href="${ctx}/resource/js/plugins/loadmask/jquery.loadmask.css" rel="stylesheet" type="text/css" />
|
||||
<script type='text/javascript' src='${ctx}/resource/js/plugins/loadmask/jquery.loadmask.js'></script>
|
||||
<script>
|
||||
var checkAct={};
|
||||
var createTime="";
|
||||
function delProcessAction(myUrl,title,id){
|
||||
var chk_value =[];
|
||||
var processInstanceId="";
|
||||
var list = new Array();
|
||||
$("input[name='items']:checkbox:checked").each(function(){
|
||||
chk_value.push($(this).val());
|
||||
})
|
||||
if(chk_value.length==0){
|
||||
alert("请至少选择一条环节数据!");
|
||||
return;
|
||||
}else{
|
||||
for(var i=0;i<chk_value.length;i++){
|
||||
var model = {};
|
||||
model.actInstId = chk_value[i];
|
||||
list.push(model);
|
||||
}
|
||||
}
|
||||
|
||||
console.log(JSON.stringify(chk_value))
|
||||
console.log(JSON.stringify(list))
|
||||
setMask("widget-box");
|
||||
if (confirm(title)) {
|
||||
jQuery.ajax({
|
||||
url: myUrl,
|
||||
data: JSON.stringify(list),
|
||||
dataType: "json", //表示返回值类型,不必须
|
||||
contentType : 'application/json;charset=utf-8', //设置请求头信息
|
||||
type: "POST",
|
||||
success: function(resp)
|
||||
{
|
||||
if(resp){
|
||||
alert("操作成功!");
|
||||
window.location.href=window.location.href
|
||||
}else{
|
||||
alert("操作失败!");
|
||||
$("#widget-box").unmask();
|
||||
}
|
||||
}
|
||||
});
|
||||
}else{
|
||||
$("#widget-box").unmask();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function stringToDate(str){
|
||||
var tempStrs = str.split(" ");
|
||||
var dateStrs = tempStrs[0].split("-");
|
||||
var year = parseInt(dateStrs[0], 10);
|
||||
var month = parseInt(dateStrs[1], 10) - 1;
|
||||
var day = parseInt(dateStrs[2], 10);
|
||||
var timeStrs = tempStrs[1].split(":");
|
||||
var hour = parseInt(timeStrs [0], 10);
|
||||
var minute = parseInt(timeStrs[1], 10);
|
||||
var second = parseInt(timeStrs[2], 10);
|
||||
var date = new Date(year, month, day, hour, minute, second);
|
||||
return date;
|
||||
}
|
||||
function setProcessActInfo(prevActInstId,prevActDefName,sendUserId,sendUserName,sendOrgId,sendOrgName,prevActDefId,createTime){
|
||||
this.checkAct={};
|
||||
$('#addTd').remove();
|
||||
this.checkAct.prevActInstId=prevActInstId;
|
||||
this.checkAct.prevActDefName=prevActDefName;
|
||||
this.checkAct.sendUserId=sendUserId;
|
||||
this.checkAct.sendUserName=sendUserName;
|
||||
this.checkAct.senderOrgId=sendOrgId;
|
||||
this.checkAct.senderOrgName=sendOrgName;
|
||||
this.checkAct.prevActDefId=prevActDefId;
|
||||
this.checkAct.createTime= this.stringToDate(createTime);
|
||||
this.createTime=createTime;
|
||||
this.addTr()
|
||||
}
|
||||
function addTr(){
|
||||
var trHtml= "<tr class='odd' id='addTd'>";
|
||||
trHtml=trHtml+"<td><input type='text' id='actInstId' name='actInstId' value=''></td>";
|
||||
trHtml=trHtml+"<td>"+checkAct.prevActDefName+"</td>";
|
||||
trHtml=trHtml+"<td>"+checkAct.sendUserName+"</td>";
|
||||
trHtml=trHtml+"<td> "+createTime+"</td>"
|
||||
trHtml=trHtml+"</tr>";
|
||||
|
||||
$("#delTable tbody").append(trHtml);
|
||||
}
|
||||
function updateFun(myUrl,title){
|
||||
var list = new Array();
|
||||
if(this.checkAct.prevActInstId!=undefined){
|
||||
this.checkAct.actInstId = $("#actInstId").val();
|
||||
if(this.checkAct.actInstId==null||this.checkAct.actInstId==""){
|
||||
alert("指定环节实例ID不能为空");
|
||||
return;
|
||||
}else{
|
||||
list.push(this.checkAct);
|
||||
if (confirm(title)) {
|
||||
jQuery.ajax({
|
||||
url: myUrl,
|
||||
data: JSON.stringify(list),
|
||||
dataType: "json", //表示返回值类型,不必须
|
||||
contentType : 'application/json;charset=utf-8', //设置请求头信息
|
||||
type: "POST",
|
||||
success: function(resp)
|
||||
{
|
||||
if(resp){
|
||||
alert("操作成功!");
|
||||
window.location.href=window.location.href
|
||||
}else{
|
||||
alert("操作失败!");
|
||||
$("#widget-box").unmask();
|
||||
}
|
||||
}
|
||||
});
|
||||
}else{
|
||||
$("#widget-box").unmask();
|
||||
}
|
||||
}
|
||||
|
||||
}else{
|
||||
alert("请选择要修改的环节!");
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
<body style="background-color: white;">
|
||||
|
||||
<form action="${ctx}/procInstMgr/delProcessRoamView.do" method="post" id="myform">
|
||||
<div class="widget-box" id="widget-box">
|
||||
<%
|
||||
List<ProcessLogModel> processComments = (List) request.getAttribute("processComments");
|
||||
%>
|
||||
<input type="hidden" id="procInstId" name="procInstId" value="${procInstId}"></input>
|
||||
|
||||
<span style="float:left;line-height: 33px;padding:0 0 0 10px">删除环节</span>
|
||||
<input style='float: right;' type="button" class="btn btn-sm btn-primary" id="submitButton" onclick="delProcessAction('${ctx}/procInstMgr/delActInst.do','您确认删除选择的流程环节吗?',this.id);" value="删除" />
|
||||
|
||||
|
||||
<!-- <input style='float: right;' type="button" class="btn btn-sm btn-primary" value="关 闭" onclick="art.dialog.close();" /> -->
|
||||
|
||||
<div class="widget-body">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="table-responsive">
|
||||
<table style="max-width: 600%;table-layout: fixed;" id="sample-table-1"
|
||||
class="table table-striped table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<!-- 排序时为th增加sortColumn即可,new SimpleTable('sortColumns')会为tableHeader自动增加排序功能; -->
|
||||
<th style="width:20px;"><input type="checkbox" onclick="setAllCheckboxState('items',this.checked)"></th>
|
||||
<th >环节实例ID</th>
|
||||
<th >流程标题</th>
|
||||
<th >执行人</th>
|
||||
<th >当前环节</th>
|
||||
<th >发送人</th>
|
||||
<th style="width: 150px">发送时间</th>
|
||||
<th style="width: 150px">处理时间</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach items="${allActivityInstance}" var="item" varStatus="status">
|
||||
<tr class="${status.count % 2 == 0 ? 'odd' : 'even'}">
|
||||
<td><input type="checkbox" name="items" value="${item.actInstId}"></td>
|
||||
<td class="td" title="${item.actInstId}">
|
||||
<a style="cursor: pointer" onclick="setProcessActInfo('${item.actInstId}','${item.actDefName}','${item.receiverUserId}',
|
||||
'${item.receiverUserName}','${item.receiverOrgId}','${item.receiverOrgName}','${item.actDefId}','<fmt:formatDate value="${item.finishTime}" pattern='yyyy-MM-dd HH:mm:ss'/>')">
|
||||
${item.actInstId}
|
||||
</a>
|
||||
</td>
|
||||
<td class="td" title="${item.procTitle}">${item.procTitle} </td>
|
||||
<td class="td" title="${item.receiverUserName}">${item.receiverUserName} </td>
|
||||
<td class="td" title="${item.actDefName}">${item.actDefName} </td>
|
||||
<td>${item.sendUserName}</td>
|
||||
<td>
|
||||
<fmt:formatDate value="${item.createTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatDate value="${item.finishTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- /.table-responsive -->
|
||||
</div>
|
||||
<!-- /span -->
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<span style="float:left;line-height: 33px;padding:0 0 0 10px">修改环节,基于上表选中的环节实例ID的执行数据修改指定环节的发送数据</span>
|
||||
<input style='float: right' type="button" class="btn btn-sm btn-primary" id="submitButton" onclick="updateFun('${ctx}/procInstMgr/updateActInst.do','您确认修改该环节吗?');" value="修改" />
|
||||
<div class="widget-body">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="table-responsive">
|
||||
<table
|
||||
style="max-width: 600%;table-layout: fixed;"
|
||||
class="table table-striped table-bordered table-hover" id="delTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<!-- 排序时为th增加sortColumn即可,new SimpleTable('sortColumns')会为tableHeader自动增加排序功能; -->
|
||||
<th >指定环节实例ID</th>
|
||||
<th >发送环节</th>
|
||||
<!-- <th width="100px">流程实例ID</th> -->
|
||||
<th >发送人</th>
|
||||
<th style="width: 150px">发送时间</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr></tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- /.table-responsive -->
|
||||
</div>
|
||||
<!-- /span -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
353
ebpm-process-manage/webapp/pages/taskMgr/list.jsp
Normal file
353
ebpm-process-manage/webapp/pages/taskMgr/list.jsp
Normal file
@@ -0,0 +1,353 @@
|
||||
<%@page import="org.activiti.engine.repository.ProcessDefinition" %>
|
||||
<%@page import="org.activiti.engine.task.Task" %>
|
||||
<%@page import="org.activiti.engine.repository.Deployment" %>
|
||||
<%@page import="com.blueland.bpm.engine.config.model.*" %>
|
||||
<%@page import="com.blueland.bpm.common.page.*" %>
|
||||
<%@page import="com.blueland.bpm.common.util.*"%>
|
||||
<%@page import="java.util.*" %>
|
||||
<%@ page contentType="text/html;charset=UTF-8" %>
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
|
||||
<%@ taglib tagdir="/WEB-INF/tags/simpletable" prefix="simpletable"%>
|
||||
<%@ include file="/commons/taglibs.jsp" %>
|
||||
<jsp:include page="/commons/userOrgTree.jsp" flush="true" />
|
||||
<%
|
||||
String path = request.getContextPath();
|
||||
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
|
||||
%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<%@ include file="/commons/meta.jsp" %>
|
||||
<base href="<%=basePath%>">
|
||||
<title>流程任务管理</title>
|
||||
<link href="${ctx_js_plugins}/simpletable/simpletable.css" type="text/css" rel="stylesheet">
|
||||
<script type="text/javascript" src="${ctx_js_plugins}/simpletable/simpletable.js"></script>
|
||||
|
||||
|
||||
<script type="text/javascript" >
|
||||
$(document).ready(function() {
|
||||
// 分页需要依赖的初始化动作
|
||||
window.simpleTable = new SimpleTable('queryForm','${page.thisPageNumber}','${page.pageSize}','${pageRequest.sortColumns}');
|
||||
});
|
||||
|
||||
function assigneeNameOnDbClick(name, value) {
|
||||
$("#assigneeName").val(name);
|
||||
$("#assignee").val(value);
|
||||
}
|
||||
function getTaskId(){
|
||||
var chk_value =[];
|
||||
var taskId="";
|
||||
$("input[name='items']:radio:checked").each(function(){
|
||||
chk_value.push($(this).val());
|
||||
})
|
||||
if(chk_value.length==0){
|
||||
alert("请选择一条流程数据!");
|
||||
return taskId;
|
||||
}else{
|
||||
var items=chk_value[0].split("=");
|
||||
for(var i=0;i<items.length;i++){
|
||||
if(items[0]=="taskId"){
|
||||
taskId=items[1];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return taskId;
|
||||
}
|
||||
function updateTaskData(url){
|
||||
var taskId=getTaskId();
|
||||
if(taskId.length==0){
|
||||
return;
|
||||
}
|
||||
showDiaLog(url+"?taskId="+taskId,"修改业务属性",'1024px','550px');
|
||||
}
|
||||
function updateProcessComment(url){
|
||||
var taskId=getTaskId();
|
||||
if(taskId.length==0){
|
||||
return;
|
||||
}
|
||||
showDiaLog(url+"?taskId="+taskId,"修改流转意见",'1024px','550px');
|
||||
}
|
||||
function jumpAnyTask(url){
|
||||
var taskId=getTaskId();
|
||||
if(taskId.length==0){
|
||||
return;
|
||||
}
|
||||
showDiaLog(url+"?taskId="+taskId,"自由跳转",'800px','400px');
|
||||
}
|
||||
|
||||
function againSetTaskReceiver(url){
|
||||
var taskId=getTaskId();
|
||||
if(taskId.length==0){
|
||||
return;
|
||||
}
|
||||
showDiaLog(url+"?taskId="+taskId,"重新分配人员",'600px','400px');
|
||||
}
|
||||
function addMultiInstanceView(url){
|
||||
var taskId=getTaskId();
|
||||
if(taskId.length==0){
|
||||
return;
|
||||
}
|
||||
if(isButOperatePower(taskId,"ADD_MULTIINST_ACT_BTN","当前待办无法进行补发多实例操作!")){
|
||||
return ;
|
||||
}
|
||||
showDiaLog(url+"?taskId="+taskId,"补发多实例",'600px','400px');
|
||||
}
|
||||
function isButOperatePower(taskId,butOperateId,tip){
|
||||
var data={ "curActInstId": taskId,"butOperateId":butOperateId};
|
||||
var needReturn = false;
|
||||
//判断是否有权限进行作废操作
|
||||
jQuery.ajax({
|
||||
url: "${ctx}/taskMgr/getButOperatePower.do",
|
||||
data: data,
|
||||
type: "POST",
|
||||
async: false,
|
||||
success: function(resp)
|
||||
{
|
||||
if(!resp){
|
||||
alert(tip);
|
||||
needReturn = true;
|
||||
}
|
||||
}
|
||||
});
|
||||
return needReturn;
|
||||
}
|
||||
function processAction(myUrl,title,type){
|
||||
var taskId=getTaskId();
|
||||
if(taskId.length==0){
|
||||
return;
|
||||
}
|
||||
|
||||
var needReturn = false;
|
||||
if(type=='1'){//退回拟稿环节
|
||||
needReturn=isButOperatePower(taskId,"BACK_STARTER_BTN","当前待办无法进行退回拟稿环节操作!");
|
||||
}else if(type=='2'){//退回上一环节
|
||||
needReturn=isButOperatePower(taskId,"BACK_PREV_ACT_BTN","当前待办无法进行退回上一环节操作!");
|
||||
}else if(type=='3'){//删除多实例待办
|
||||
needReturn=isButOperatePower(taskId,"DELETE_MULTIINST_ACT_BTN","当前待办无法进行删除多实例操作!");
|
||||
}
|
||||
if(needReturn){
|
||||
return;
|
||||
}
|
||||
|
||||
if (confirm(title)) {
|
||||
jQuery.ajax({
|
||||
url: myUrl,
|
||||
data: { "taskId": taskId,"isHistory": false},
|
||||
type: "POST",
|
||||
success: function(resp)
|
||||
{
|
||||
if(resp.executeStatus=='SUCCESS'){
|
||||
alert("操作成功!");
|
||||
window.location.reload();
|
||||
}else{
|
||||
alert("操作失败!");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<%@ include file="/commons/messages.jsp" %>
|
||||
<form id="queryForm" name="queryForm" action="${ctx}/taskMgr/list.do" method="post" style="display: inline;">
|
||||
<div class="main-container" id="main-container">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<%--<h8>流程任务管理</h8>--%>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="form-group well well-sm" style="margin-bottom: 2px;">
|
||||
|
||||
<table border="0" cellspacing="0" cellpadding="0"
|
||||
class="table-search">
|
||||
<tr>
|
||||
<td width="100px" height="25px">流程定义名称:</td>
|
||||
<td width="100px" heiht="25px">
|
||||
<input value="${query.processDefName}" id="processDefName" name="processDefName" />
|
||||
</td>
|
||||
<td>流程标题:</td>
|
||||
<td>
|
||||
<input value="${query.title}" id="title" name="title" />
|
||||
|
||||
</td>
|
||||
<td width="100px">流程实例ID:</td>
|
||||
<td>
|
||||
<input value="${query.processInstanceId}" id="processInstanceId" name="processInstanceId" />
|
||||
<button type="submit" class="btn btn-xs btn-primary">
|
||||
查 询
|
||||
<i class="ace-icon fa fa-search bigger-110"></i>
|
||||
</button>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>执行人:</td>
|
||||
<td>
|
||||
<input value="${assigneeName}" id="assigneeName" name="assigneeName" maxlength="30" onclick="showUserOrg('assigneeName','','','USER'); return false;" readonly />
|
||||
<input value="${assignee}" type="hidden" id="assignee" name="assignee" maxlength="30" />
|
||||
</td>
|
||||
<td width="80px">环节定义ID:</td>
|
||||
<td>
|
||||
<input value="${actDefId}" id="actDefId" name="actDefId" />
|
||||
</td>
|
||||
<td width="70px">环节实例ID:</td>
|
||||
<td>
|
||||
<input value="${actInstId}" id="actInstId" name="actInstId" />
|
||||
</td>
|
||||
</tr>
|
||||
<c:if test="${customSso != '1'}">
|
||||
<tr>
|
||||
<td colspan="7">
|
||||
<button type="button" onclick="againSetTaskReceiver('${ctx}/taskMgr/againSetTaskReceiverView.do');" class="btn btn-xs btn-success">
|
||||
重新分配人员
|
||||
<i class="ace-icon fa fa-share bigger-110"></i>
|
||||
</button>
|
||||
<c:if test="${ebpmAdmin}">
|
||||
<button type="button" onclick="jumpAnyTask('${ctx}/taskMgr/jumpAnyTaskView.do');" class="btn btn-xs btn-success">
|
||||
自由跳转
|
||||
<i class="ace-icon fa fa-paper-plane-o bigger-110"></i>
|
||||
</button>
|
||||
</c:if>
|
||||
<button type="button" onclick="processAction('${ctx}/taskMgr/backStarterTask.do','您确定要退回拟稿人环节吗?','1');" class="btn btn-xs btn-yellow">
|
||||
退回拟稿环节
|
||||
<i class="ace-icon fa fa-reply-all bigger-110"></i>
|
||||
</button>
|
||||
<button type="button" onclick="processAction('${ctx}/taskMgr/backPrevTask.do','您确定要退回上一环节吗?','2');" class="btn btn-xs btn-yellow">
|
||||
退回上一环节
|
||||
<i class="ace-icon fa fa-reply bigger-110"></i>
|
||||
</button>
|
||||
<button type="button" onclick="addMultiInstanceView('${ctx}/taskMgr/addMultiInstanceView.do');" class="btn btn-xs btn-success">
|
||||
补发多实例<i class="ace-icon fa fa-plus bigger-110"></i>
|
||||
</button>
|
||||
<button type="button" onclick="processAction('${ctx}/taskMgr/deleteMultiInstance.do','您确定要删除多实例吗?','3');" class="btn btn-xs btn-grey">
|
||||
删除多实例
|
||||
<i class="ace-icon fa fa-trash-o bigger-110"></i></button>
|
||||
</button>
|
||||
<!--
|
||||
<button type="button" onclick="processAction('${ctx}/taskMgr/delete.do','您确定要删除待办吗?','3');" class="btn btn-xs btn-grey">
|
||||
删除待办
|
||||
<i class="ace-icon fa fa-trash-o bigger-110"></i></button>
|
||||
</button>
|
||||
-->
|
||||
<c:if test="${ebpmAdmin}">
|
||||
<button type="button" onclick="updateTaskData('${ctx}/taskMgr/updateTaskDataView.do');" class="btn btn-xs btn-primary">
|
||||
修改业务属性
|
||||
<i class="ace-icon fa fa-edit bigger-110"></i>
|
||||
</button>
|
||||
</c:if>
|
||||
<%-- <a href="${ctx}/taskMgr/exportList.do?fileName=流程任务" class="btn btn-xs btn-primary"><i class="ace-icon fa fa-edit bigger-110"></i>导出流程任务列表</a> --%>
|
||||
</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12" >
|
||||
<div class="table-responsive">
|
||||
<div style="width: 100%;overflow: auto;">
|
||||
<table style="width: inherit;max-width: 600%;table-layout: fixed;" id="sample-table-1"
|
||||
class="table table-striped table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<%--<c:choose>--%>
|
||||
<%-- <c:when test="${page.result.size() > 0}"> </c:when>--%>
|
||||
<%-- <c:otherwise>--%>
|
||||
<%-- </c:otherwise>--%>
|
||||
|
||||
<%--</c:choose>--%>
|
||||
<!-- 排序时为th增加sortColumn即可,new SimpleTable('sortColumns')会为tableHeader自动增加排序功能; -->
|
||||
<th style="width: 20px"></th>
|
||||
<th style="width: 150px;">流程定义</th>
|
||||
<th>流程标题</th>
|
||||
<th >流程实例</th>
|
||||
<th >执行人</th>
|
||||
<th >当前环节</th>
|
||||
<th >发送人</th>
|
||||
<th style="width: 150px">接收时间</th>
|
||||
<th style="width: 90px">持续时间</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<%
|
||||
Page mypage=(Page)request.getAttribute("page");
|
||||
List<Task> tasks=mypage.getResult();
|
||||
|
||||
|
||||
if(tasks!=null){
|
||||
for(int i=0;i<tasks.size();i++){
|
||||
Task task=(Task)tasks.get(i);
|
||||
|
||||
%>
|
||||
<tr class="<%=((i+1)%2== 0 ? "odd" : "even") %>">
|
||||
<td><input type="radio" name="items" value="taskId=<%=task.getId() %>"></td>
|
||||
<td title="<%=task.getProcessDefinitionName()%>" class="td"><%=task.getProcessDefinitionName()%></td>
|
||||
<td title="<%=task.getProcTitle()%> " class="td">
|
||||
<a title="流程实例ID:<%=task.getProcessInstanceId()%>,环节实例ID:<%=task.getId()%>,环节定义ID:<%=task.getTaskDefinitionKey()%>,组织id:<%=task.getAssigneeOrgId()%>" href="javascript:void(0);" onclick="openProcessTrackPage('${ctx}','<%=task.getProcessInstanceId() %>');">
|
||||
<%=task.getProcTitle()%> </a>
|
||||
</td>
|
||||
<td title="<%=task.getProcessInstanceId()%>" class="td">
|
||||
<%=task.getProcessInstanceId()%>
|
||||
</td>
|
||||
|
||||
<td title="<%if(null!=task.getAssigneeUserName()){ %>
|
||||
<%=task.getAssigneeUserName() %>(<%=task.getAssignee()!=null?task.getAssignee():""%>)
|
||||
<%}else{ %>
|
||||
<%=task.getAssignee()!=null?task.getAssignee():""%>
|
||||
<%} %>" class="td" title="执行人组织:<%=task.getAssigneeOrgName()%>">
|
||||
<%if(null!=task.getAssigneeUserName()){ %>
|
||||
<%=task.getAssigneeUserName() %>(<%=task.getAssignee()!=null?task.getAssignee():""%>)
|
||||
<%}else{ %>
|
||||
<%=task.getAssignee()!=null?task.getAssignee():""%>
|
||||
<%} %>
|
||||
</td>
|
||||
<td>
|
||||
<%=task.getName()%> </td>
|
||||
<td title="<%if(null!=task.getSendUserName()){ %>
|
||||
<%=task.getSendUserName()!=null?task.getSendUserName():""%>(<%=task.getSendUserId()!=null?task.getSendUserId():""%>)
|
||||
<%}else{ %>
|
||||
<%=task.getSendUserId()!=null?task.getSendUserId():""%>
|
||||
<%} %>" class="td" title="发送人组织:<%=task.getSenderOrgName()%>">
|
||||
<%if(null!=task.getSendUserName()){ %>
|
||||
<%=task.getSendUserName()!=null?task.getSendUserName():""%>(<%=task.getSendUserId()!=null?task.getSendUserId():""%>)
|
||||
<%}else{ %>
|
||||
<%=task.getSendUserId()!=null?task.getSendUserId():""%>
|
||||
<%} %>
|
||||
</td>
|
||||
<td>
|
||||
<%=DateUtil.convertDateToString("yyyy-MM-dd HH:mm:ss",task.getCreateTime())%> </td>
|
||||
<td>
|
||||
<%String day=com.blueland.bpm.manage.web.ProcessInstanceController.differByDay(task.getCreateTime(),new Date());%>
|
||||
<%if(Integer.parseInt(day)<=3){
|
||||
%><span class="label label-success">耗时<%=day%>天</span>
|
||||
<%
|
||||
}else if(Integer.parseInt(day)<=10){%>
|
||||
<span class="label label-warning">耗时<%=day%>天</span>
|
||||
<%}else if(Integer.parseInt(day)>10){%>
|
||||
<span class="label label-danger">耗时<%=day%>天</span>
|
||||
<%}%>
|
||||
</td>
|
||||
</tr>
|
||||
<%}} %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<simpletable:pageToolbar page="${page}">
|
||||
</simpletable:pageToolbar>
|
||||
</div>
|
||||
<!-- /.table-responsive -->
|
||||
</div>
|
||||
<!-- /span -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,207 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||
<%@ include file="/commons/taglibs.jsp"%>
|
||||
<%@page import="com.blueland.bpm.engine.util.WorkFlowContants"%>
|
||||
<%
|
||||
String path = request.getContextPath();
|
||||
String basePath = request.getScheme() + "://"
|
||||
+ request.getServerName() + ":" + request.getServerPort()
|
||||
+ path + "/";
|
||||
String userId = request.getParameter("userId");
|
||||
String userName = request.getParameter("userName");
|
||||
%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Cache-Control" content="no-store"/>
|
||||
<meta http-equiv="Pragma" content="no-cache"/>
|
||||
<meta http-equiv="Expires" content="0"/>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<%@ include file="/commons/meta.jsp"%>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
var procInstId=$('#wf_procInstId', parent.document).attr("value");
|
||||
var procDefId=$('#wf_procDefId', parent.document).attr("value");
|
||||
var curActDefId=$('#wf_curActDefId', parent.document).attr("value");
|
||||
var curActInstId = $('#wf_curActInstId', parent.document).attr("value");
|
||||
getNextActivity(procDefId,procInstId,curActInstId,curActDefId);
|
||||
|
||||
});
|
||||
function getNextActivity(procDefId,procInstId,curActInstId,curActDefId){
|
||||
var url="${ctx}/taskMgr/getNextActivity.do";
|
||||
var sendUserId=$('#wf_sendUserId', parent.document).attr("value");
|
||||
var senderOrgId=$('#wf_sendUserOrgId', parent.document).attr("value");
|
||||
var pageInputVar=$("form",parent.document).serialize();
|
||||
$.post(url, {"processDefinitionId":procDefId,"procInstId":procInstId,"activityId":curActDefId,"pageInputVar":pageInputVar},
|
||||
function (data, textStatus){
|
||||
//alert(data);
|
||||
var jsonObject = eval(data);
|
||||
|
||||
var selectObj="<select id='actListSel' onchange='changeActUserTree();' style='border:none;WIDTH:100%;HEIGHT:100%' size='4' tabindex='3'>";
|
||||
$.each(jsonObject, function(index, value) {
|
||||
if(index==0){
|
||||
loadNextActivityUserTree(procDefId,procInstId,curActInstId,curActDefId,value.id,sendUserId,senderOrgId);
|
||||
selectObj+="<option isMulti="+value.isMulti+" isNotSelectReceiver="+value.isNotSelectReceiver+" type="+value.type+" selected value="+value.id+">"+value.name+"</option>";
|
||||
}else{
|
||||
selectObj+="<option isMulti="+value.isMulti+" isNotSelectReceiver="+value.isNotSelectReceiver+" type="+value.type+" value="+value.id+">"+value.name+"</option>";
|
||||
}
|
||||
});
|
||||
selectObj+="</select>";
|
||||
//alert(selectObj);
|
||||
$("#actListDiv").append(selectObj);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
function loadNextActivityUserTree(procDefId,procInstId,curActInstId,curActDefId,nextActDefId,sendUserId,senderOrgId){
|
||||
var nextActivityUserUrl="${ctx}/pages/taskMgr/nextActivityUserTree.jsp";
|
||||
nextActivityUserUrl += "?userId="+sendUserId+"&userOrgId="+senderOrgId+"&procDefId=" + procDefId + "&procInstId="+procInstId+"&curActInstId="+curActInstId+"&destActivityId="+ nextActDefId+ "&curActivityId="+ curActDefId;
|
||||
$("#actUserTreeFrame").attr("src", nextActivityUserUrl);
|
||||
}
|
||||
function changeActUserTree() {
|
||||
var procInstId=$('#wf_procInstId', parent.document).attr("value");
|
||||
var procDefId = $('#wf_procDefId', parent.document).attr("value");
|
||||
var curActDefId = $('#wf_curActDefId', parent.document).attr("value");
|
||||
var curActInstId = $('#wf_curActInstId', parent.document).attr("value");
|
||||
var nextActDefId = $('#actListSel option:selected').val();
|
||||
var sendUserId=$('#wf_sendUserId', parent.document).attr("value");
|
||||
var senderOrgId=$('#wf_sendUserOrgId', parent.document).attr("value");
|
||||
loadNextActivityUserTree(procDefId,procInstId,curActInstId,curActDefId, nextActDefId,sendUserId,senderOrgId);
|
||||
}
|
||||
function addNextActivityUser(){
|
||||
var treeNodeId=document.getElementById('actUserTreeFrame').contentWindow.document.getElementById('treeNodeId').value;
|
||||
var treeNodeName=document.getElementById('actUserTreeFrame').contentWindow.document.getElementById('treeNodeName').value;
|
||||
var treeNodeType=document.getElementById('actUserTreeFrame').contentWindow.document.getElementById('treeNodeType').value;
|
||||
var count=$("#nextActUserSel option").length;
|
||||
var index=0;
|
||||
//过滤空格
|
||||
if(treeNodeId==""&&treeNodeId.length==0||treeNodeType=='ORG'||treeNodeType=='DEPT'){
|
||||
return;
|
||||
}
|
||||
|
||||
var nextActSelOpt=$('#actListSel option:selected');
|
||||
var nextActDefTypeStr=nextActSelOpt.attr("type");
|
||||
var isMulti=nextActSelOpt.attr("isMulti");
|
||||
//alert(isMulti);
|
||||
for(var i=0;i<count;i++)
|
||||
{
|
||||
//不重复添加
|
||||
if($("#nextActUserSel").get(0).options[i].value ==treeNodeId)
|
||||
{
|
||||
index++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(index>0){
|
||||
return ;
|
||||
}
|
||||
//alert(treeNodeId+":"+treeNodeName);
|
||||
if(isMulti){
|
||||
$("#nextActUserSel").append("<option value="+treeNodeId+">"+treeNodeName+"</option>");
|
||||
}else{
|
||||
$("#nextActUserSel").empty();
|
||||
$("#nextActUserSel").append("<option value="+treeNodeId+">"+treeNodeName+"</option>");
|
||||
}
|
||||
}
|
||||
function removeNextActivityUser(){
|
||||
$('#nextActUserSel option:selected').remove();
|
||||
}
|
||||
|
||||
function executeNext(){
|
||||
var count=$("#nextActUserSel option").length;
|
||||
var nextActUserIdsStr="";
|
||||
for(var i=0;i<count;i++)
|
||||
{
|
||||
var tempNextActUserIdsStr=$("#nextActUserSel").get(0).options[i].value;
|
||||
if(tempNextActUserIdsStr=="")
|
||||
continue;
|
||||
nextActUserIdsStr+=tempNextActUserIdsStr;
|
||||
if(i!=count-1)
|
||||
nextActUserIdsStr+=",";
|
||||
}
|
||||
var nextActSelOpt=$('#actListSel option:selected');
|
||||
var nextActIdStr=nextActSelOpt.val();
|
||||
if(nextActIdStr==""){
|
||||
alert("下一环节定义ID[wf_nextActDefId]不能为空!");
|
||||
return false;
|
||||
}else{
|
||||
$('#wf_nextActDefId', parent.document).val(nextActIdStr);
|
||||
$('#wf_nextActDefName', parent.document).val(nextActSelOpt.text());
|
||||
}
|
||||
|
||||
var nextActDefTypeStr=nextActSelOpt.attr("type");
|
||||
var isNotSelectReceiver=nextActSelOpt.attr("isNotSelectReceiver");
|
||||
var isMulti=nextActSelOpt.attr("isMulti");
|
||||
$('#wf_nextActDefType').val(nextActDefTypeStr);
|
||||
|
||||
if (!isNotSelectReceiver && nextActUserIdsStr == "") {
|
||||
alert("下一环节办理人员不能为空!");
|
||||
return false;
|
||||
} else if (!isMulti && count > 1) {
|
||||
alert("下一环节只允许选择一位办理人员!");
|
||||
return false;
|
||||
}
|
||||
var nextActUserIdsStrs=nextActUserIdsStr.split(",");
|
||||
$("input[group='receive']",parent.document).remove();
|
||||
for(var i=0;i<nextActUserIdsStrs.length;i++){
|
||||
var tempUserIdAndOrgId=nextActUserIdsStrs[i].split("^");
|
||||
var nextActUserId="<input type='hidden' group='receive' id='wf_receivers["+i+"].receiveUserId' name='wf_receivers["+i+"].receiveUserId' value='"+tempUserIdAndOrgId[0]+"'/>";
|
||||
var nextActOrgId="<input type='hidden' group='receive' id='wf_receivers["+i+"].receiveUserOrgId' name='wf_receivers["+i+"].receiveUserOrgId' value='"+tempUserIdAndOrgId[1]+"'/>";
|
||||
$("#nextExecuteForm",parent.document).append(nextActUserId);
|
||||
$("#nextExecuteForm",parent.document).append(nextActOrgId);
|
||||
}
|
||||
parent.baseOnSubmit();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body class="white-page">
|
||||
<table class='table table-bordered form-table' border="0" cellspacing="0" cellpadding="0" id="myTable">
|
||||
|
||||
<tr>
|
||||
<td colspan="4" style="border: 0 !important;">
|
||||
<%-- <div style="margin: 10px; height: 2px;"></div>--%>
|
||||
<table class="user-table form-table">
|
||||
<tr>
|
||||
<td align="left" class="title">办理步骤1</td>
|
||||
<td align="left" class="title">待选用户</td>
|
||||
<td></td>
|
||||
<td class="title">已选用户</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width:210px;height:260px;vertical-align: top;padding: 5px 0;" >
|
||||
<div id="actListDiv" style='height:260px;'></div>
|
||||
</td>
|
||||
<td style="height:260px;background-color: #FFFFFF;width:180px;padding: 0px; ">
|
||||
<IFRAME align="top" style="width: 260px; height: 100%;margin-top: -7px;"
|
||||
scrolling="auto" src="" frameBorder="0" id="actUserTreeFrame" allowTransparency="true"></IFRAME>
|
||||
</td>
|
||||
<td valign="middle"
|
||||
style="width: 50px; height: 50px; vertical-align: top;text-align: center;">
|
||||
<button type="button" id="addNextActUserBtn"
|
||||
onclick="addNextActivityUser()"
|
||||
class="btn btn-xs btn-primary" style="margin-top: 60px">>></button>
|
||||
|
||||
<button type="button" id="removeNextActUserBtn"
|
||||
onclick="removeNextActivityUser()"
|
||||
class="btn btn-xs btn-primary" style="margin-top: 10px">>></button>
|
||||
</td>
|
||||
<td style="width:150px;height:250px;vertical-align: top;">
|
||||
<select id='nextActUserSel' multiple="multiple"
|
||||
style='border:none;WIDTH: 100%; HEIGHT: 100%' size='4' tabindex='3' onclick="removeNextActivityUser();"/>
|
||||
</td>
|
||||
<td align="left" valign="top" style="width:50px;height:50px;vertical-align: top;">
|
||||
|
||||
<input type="button" id="nextExecuteBtn" onclick="executeNext();" class="btn btn-xs btn-primary" value="流程处理" style="border-radius: 3px !important;background: #0070d2 !important; border: none !important; color: #fff !important; font-size: 14px !important; display: inline-block; margin: 0 0 0 5px; height: 32px; line-height: 32px; padding: 0 10px; outline: none; margin-top: 60px;
|
||||
margin-top:66px;margin-left: 20px;"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,151 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||
<%@ include file="/commons/taglibs.jsp"%>
|
||||
<%@page import="com.blueland.bpm.engine.util.WorkFlowContants"%>
|
||||
|
||||
<%
|
||||
String path = request.getContextPath();
|
||||
String basePath = request.getScheme() + "://"
|
||||
+ request.getServerName() + ":" + request.getServerPort()
|
||||
+ path + "/";
|
||||
String processDefinitionId=request.getParameter("procDefId");
|
||||
String procInstId=request.getParameter("procInstId");
|
||||
String curActivityId=request.getParameter("curActivityId");
|
||||
String destActivityId=request.getParameter("destActivityId");
|
||||
String curActInstId=request.getParameter("curActInstId");
|
||||
String userId=request.getParameter("userId");
|
||||
String userOrgId=request.getParameter("userOrgId");
|
||||
|
||||
%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Cache-Control" content="no-store"/>
|
||||
<meta http-equiv="Pragma" content="no-cache"/>
|
||||
<meta http-equiv="Expires" content="0"/>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<link rel="stylesheet" href="${ctx}/resource/js/plugins/zTree/css/zTreeStyle/zTreeStyle.css" type="text/css"/>
|
||||
<link rel="stylesheet" type="text/css" href="${ctx_js_plugins}/userSelect/css/usStyle/usStyle.css" />
|
||||
<script type="text/javascript" src="${ctx}/resource/js/plugins/zTree/js/jquery-1.4.4.min.js"></script>
|
||||
<script type="text/javascript"
|
||||
src="${ctx}/resource/js/plugins/zTree/js/jquery.ztree.core-3.4.js"></script>
|
||||
<script type="text/javascript"
|
||||
src="${ctx}/resource/js/plugins/zTree/js/jquery.ztree.excheck-3.4.js"></script>
|
||||
<script type="text/javascript"
|
||||
src="${ctx}/resource/js/plugins/zTree/js/jquery.ztree.exedit-3.4.js"></script>
|
||||
<SCRIPT type="text/javascript">
|
||||
var loadImgPath = "${ctx_js_plugins}/userSelect/css/usStyle/img/load.gif";//加载图标路径
|
||||
var jQuery_1_4_4= $.noConflict(true);
|
||||
var setting = {
|
||||
view: {
|
||||
dblClickExpand : false,
|
||||
selectedMulti: false
|
||||
},
|
||||
edit: {
|
||||
enable: false,
|
||||
drag:{isMove:false}
|
||||
|
||||
},
|
||||
data: {
|
||||
simpleData: {
|
||||
enable : true,
|
||||
idKey : "id",
|
||||
pIdKey : "pId" ,
|
||||
DIY:"isAccessTopMenu"
|
||||
}
|
||||
},async: {
|
||||
enable: true,
|
||||
url:"${ctx}/pages/user/getUserOrgTree.do",
|
||||
autoParam:["id", "name=n","level=lv"],
|
||||
otherParam:{"assignTreeId":'',"treeLevel":'',"showTreeType":''}
|
||||
},callback: {
|
||||
beforeClick: beforeClick
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
function filter(treeId, parentNode, childNodes) {
|
||||
return childNodes;
|
||||
}
|
||||
function beforeClick(treeId, treeNode) {
|
||||
//alert(treeNode.isAccess);
|
||||
//判断是否有权限访问根节点
|
||||
if (treeNode.pId==""||treeNode.isAccessTopMenu=="false") {
|
||||
return false;
|
||||
} else {
|
||||
//if(treeNode.type=="${selectNodeType}"){
|
||||
jQuery_1_4_4("#treeNodeId").val(treeNode.id+"^"+treeNode.pId);
|
||||
jQuery_1_4_4("#treeNodeName").val(treeNode.name);
|
||||
jQuery_1_4_4("#treeNodeType").val(treeNode.type);
|
||||
//}
|
||||
}
|
||||
|
||||
parent.addNextActivityUser();
|
||||
return true;
|
||||
}
|
||||
jQuery_1_4_4(document).ready(function(){
|
||||
jQuery_1_4_4("#loadDIV").hide();
|
||||
jQuery_1_4_4("#loadIMG").attr("src",loadImgPath);
|
||||
jQuery_1_4_4.fn.zTree.init(jQuery_1_4_4("#userOrgTree"), setting);
|
||||
//当人员树只有一个人员可供选择时,默认将人员移到已选列表
|
||||
try{
|
||||
var treeObj = jQuery_1_4_4.fn.zTree.getZTreeObj("userOrgTree");
|
||||
/**var userNodes=treeObj.getNodesByParamFuzzy("type", "USER", null);
|
||||
if(userNodes.length==1){
|
||||
$("#treeNodeId").val(userNodes[0].id+"^"+userNodes[0].pId);
|
||||
$("#treeNodeName").val(userNodes[0].name);
|
||||
$("#treeNodeType").val(userNodes[0].type);
|
||||
window.parent.addNextActivityUser();
|
||||
}**/
|
||||
}catch(e){}
|
||||
});
|
||||
|
||||
//-->
|
||||
/**根据姓名或工号查询*/
|
||||
function query(){
|
||||
var queryVal = jQuery_1_4_4("#queryVal").val();
|
||||
|
||||
if(queryVal==""){
|
||||
jQuery_1_4_4.fn.zTree.init(jQuery_1_4_4("#userOrgTree"), setting);
|
||||
return;
|
||||
}else{
|
||||
jQuery_1_4_4("#loadDIV").show();
|
||||
//alert(jQuery_1_4_4("#loadDIV").attr("style"))
|
||||
var data={"queryVal":queryVal,"showTreeType":"USER","id":"${param.orgId}"};
|
||||
jQuery_1_4_4.ajax({
|
||||
type: "POST",
|
||||
url:"${ctx}/pages/user/getUserOrgTree.do",
|
||||
data: data,
|
||||
dataType: "json",
|
||||
success: function(data){
|
||||
jQuery_1_4_4.fn.zTree.init(jQuery_1_4_4("#userOrgTree"), setting,data);
|
||||
jQuery_1_4_4("#loadDIV").css("display","none");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
</SCRIPT>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY bgcolor="#FFFFFF">
|
||||
<div>
|
||||
姓名:<input type="text" value="" id="queryVal" style="width:100px;padding:0px 5px;;font-size:12px;height: 15px;" onkeydown="if(event.keyCode==13) query();"/>
|
||||
<input type="button" style="padding:0px 5px;" class="queryButtonStyle" title="根据用户名或工号查询" onclick="query();"/>
|
||||
</div>
|
||||
<div id="loadDIV" align="center" style="width: 230px;height:420px;">
|
||||
<img src="" id="loadIMG" style="margin-top:130px;"/> </br>用户树加载中...
|
||||
</div>
|
||||
<ul id="userOrgTree" class="ztree"></ul>
|
||||
<form id="queryForm" name="queryForm" action="" method="post">
|
||||
<input name="treeNodeId" id="treeNodeId" type="hidden"/>
|
||||
<input name="treeNodeName" id="treeNodeName" type="hidden"/>
|
||||
<input name="treeNodeType" id="treeNodeType" type="hidden"/>
|
||||
<input name="filterNodeIdsStr" id="filterNodeIdsStr" type="hidden" value="${filterNodeIdsStr }"/>
|
||||
<input name="isShowCheckBox" id="isShowCheckBox" type="hidden" value="${isShowCheckBox }"/>
|
||||
<input name="showTreeType" id="showTreeType" type="hidden" value="${showTreeType }"/>
|
||||
<input name="selectNodeType" id="selectNodeType" type="hidden" value="${selectNodeType }"/>
|
||||
</form>
|
||||
</BODY>
|
||||
</html>
|
||||
62
ebpm-process-manage/webapp/pages/taskMgr/params.jsp
Normal file
62
ebpm-process-manage/webapp/pages/taskMgr/params.jsp
Normal file
@@ -0,0 +1,62 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
|
||||
<!-- 定义工作流依赖控件的集合,工作流控件以wf命名开头,业务控件请不要带wf_的前缀,请不要修改 start -->
|
||||
<!-- 流程标题 -->
|
||||
<input name="wf_procTitle" id="wf_procTitle" type="hidden"
|
||||
value="${task.procTitle}" />
|
||||
<!-- 流程定义ID -->
|
||||
<input name="wf_procDefId" id="wf_procDefId" type="hidden"
|
||||
value="${processDefinition.procDefId }" />
|
||||
<!-- 流程定义ID -->
|
||||
<input name="wf_procDefKey" id="wf_procDefKey" type="hidden"
|
||||
value="${processDefinition.procDefKey}" />
|
||||
|
||||
<!-- 流程定义名称 -->
|
||||
<input name="wf_procDefName" id="wf_procDefName" type="hidden"
|
||||
value="${processDefinition.procDefName }" />
|
||||
<!-- 当前环节定义ID -->
|
||||
<input name="wf_curActDefId" id="wf_curActDefId" type="hidden"
|
||||
value="${curActivity.actDefId }" />
|
||||
<!-- 当前环节定义名称 -->
|
||||
<input name="wf_curActDefName" id="wf_curActDefName" type="hidden"
|
||||
value="${curActivity.actDefName}" />
|
||||
<!-- 当前流程实例ID -->
|
||||
<input name="wf_procInstId" id="wf_procInstId" type="hidden"
|
||||
value="${task.procInstId }" />
|
||||
<!-- 当前环节实例ID -->
|
||||
<input name="wf_curActInstId" id="wf_curActInstId" type="hidden"
|
||||
value="${task.actInstId }" />
|
||||
<!-- 发送人ID -->
|
||||
<input name="wf_sendUserId" id="wf_sendUserId" type="hidden"
|
||||
value="${processPageContext.userId }" />
|
||||
<!-- 发送人公司ID -->
|
||||
<input name="wf_sendUserOrgId" id="wf_sendUserOrgId" type="hidden"
|
||||
value="${processPageContext.userOrgId }" />
|
||||
<!-- 上一环节接收人ID -->
|
||||
<input name="wf_preActSender" id="wf_preActSender" type="hidden"
|
||||
value="${task.sender }" />
|
||||
|
||||
<!-- 下一步选择环节定义ID,下一步选人组件JS动态赋值 -->
|
||||
<input name="wf_nextActDefId" id="wf_nextActDefId" type="hidden"
|
||||
value="" />
|
||||
<!-- 下一步选择环节定义名称,下一步选人组件JS动态赋值 -->
|
||||
<input name="wf_nextActDefName" id="wf_nextActDefName" type="hidden"
|
||||
value="" />
|
||||
<!-- 下一步选择环节类型,下一步选人组件JS动态赋值 -->
|
||||
<input name="wf_nextActDefType" id="wf_nextActDefType" type="hidden"
|
||||
value="" />
|
||||
<!-- 下一步接收人列表ID,多人以,号分隔,下一步选人组件JS动态赋值 -->
|
||||
<!-- 当前操作动作,比如新建、暂存、作废、走下一步 -->
|
||||
<input name="wf_actionType" id="wf_actionType" type="hidden"
|
||||
value="${processPageContext.actionType}" />
|
||||
<!-- 当前流程业务数据 -->
|
||||
<input name="wf_fields" id="wf_fields" type="hidden" value="${fields}" />
|
||||
<!-- 当前流程附件数据 -->
|
||||
<input name="wf_attachments" id="wf_attachments" type="hidden" value="" />
|
||||
<!-- 当前打开流程详细界面类型,新建、待办、已办、办结 -->
|
||||
<input name="wf_openPageType" id="wf_openPageType" type="hidden"
|
||||
value="${processPageContext.openPageType}" />
|
||||
<input name="wf_businessKey" id="wf_businessKey" type="hidden"
|
||||
value="${businessKey}" />
|
||||
<input name="wf_commentDisplayArea" id="wf_commentDisplayArea"
|
||||
type="hidden" value="${activityInfoConfig.ideaDisplayArea}" />
|
||||
172
ebpm-process-manage/webapp/pages/taskMgr/setTaskReceiver.jsp
Normal file
172
ebpm-process-manage/webapp/pages/taskMgr/setTaskReceiver.jsp
Normal file
@@ -0,0 +1,172 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||
<%@ include file="/commons/taglibs.jsp"%>
|
||||
<%@page import="com.blueland.bpm.engine.util.WorkFlowContants"%>
|
||||
<%
|
||||
String path = request.getContextPath();
|
||||
String basePath = request.getScheme() + "://"
|
||||
+ request.getServerName() + ":" + request.getServerPort()
|
||||
+ path + "/";
|
||||
%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<%@ include file="/commons/meta.jsp"%>
|
||||
<meta http-equiv="Cache-Control" content="no-store" />
|
||||
<meta http-equiv="Pragma" content="no-cache" />
|
||||
<meta http-equiv="Expires" content="0" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
});
|
||||
|
||||
function saveReceiver() {
|
||||
var isMultiInstance = false;
|
||||
var count = $("#nextActUserSel option").length;
|
||||
var nextActUserIdsStr = "";
|
||||
for (var i = 0; i < count; i++) {
|
||||
var tempNextActUserIdsStr = $("#nextActUserSel").get(0).options[i].value;
|
||||
if (tempNextActUserIdsStr == "")
|
||||
continue;
|
||||
nextActUserIdsStr += tempNextActUserIdsStr;
|
||||
if (i != count - 1)
|
||||
nextActUserIdsStr += ",";
|
||||
}
|
||||
if (nextActUserIdsStr == "") {
|
||||
alert("下一环节办理人员不能为空!");
|
||||
return false;
|
||||
} else if (!isMultiInstance && count > 1) {
|
||||
alert("下一环节只允许选择一位办理人员!");
|
||||
return false;
|
||||
}
|
||||
if (confirm("您确认重新分配人员吗?")) {
|
||||
var taskId = "${activityInstanceModel.actInstId}";
|
||||
$.post('${ctx}/taskMgr/againSetTaskReceiver.do', {"receivers":nextActUserIdsStr,"taskId":taskId},
|
||||
function (resp, textStatus){
|
||||
alert(resp);
|
||||
if (resp != "操作成功!") {
|
||||
art.dialog.opener.location.reload();
|
||||
art.dialog.close();
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function addNextActivityUser() {
|
||||
var treeNodeId=document.getElementById('actUserTreeFrame').contentWindow.document.getElementById('treeNodeId').value;
|
||||
var treeNodeName=document.getElementById('actUserTreeFrame').contentWindow.document.getElementById('treeNodeName').value;
|
||||
var treeNodeType=document.getElementById('actUserTreeFrame').contentWindow.document.getElementById('treeNodeType').value;
|
||||
|
||||
var count = $("#nextActUserSel option").length;
|
||||
var index = 0;
|
||||
//过滤空格
|
||||
if (treeNodeId == "" && treeNodeId.length == 0 || treeNodeType == 'ORG'
|
||||
|| treeNodeType == 'DEPT') {
|
||||
return;
|
||||
}
|
||||
|
||||
var isMultiInstance = false;
|
||||
for (var i = 0; i < count; i++) {
|
||||
//不重复添加
|
||||
if ($("#nextActUserSel").get(0).options[i].value == treeNodeId) {
|
||||
index++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (index > 0) {
|
||||
return;
|
||||
}
|
||||
if (isMultiInstance) {
|
||||
$("#nextActUserSel").append(
|
||||
"<option value="+treeNodeId+">" + treeNodeName
|
||||
+ "</option>");
|
||||
} else {
|
||||
$("#nextActUserSel").empty();
|
||||
$("#nextActUserSel").append(
|
||||
"<option value="+treeNodeId+">" + treeNodeName
|
||||
+ "</option>");
|
||||
}
|
||||
}
|
||||
|
||||
function removeNextActivityUser() {
|
||||
$('#nextActUserSel option:selected').remove();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body class="white-page">
|
||||
<div class="main-container" id="main-container">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-body">
|
||||
<table class='table table-bordered' border="0" cellspacing="0" cellpadding="0" id="myTable">
|
||||
<tr>
|
||||
<td align="left" colspan="5" class="td" title="当前流程名称:${activityInstanceModel.procTitle},环节名称:${activityInstanceModel.actDefName},执行人:${activityInstanceModel.receiver}">
|
||||
<b>当前流程名称:${activityInstanceModel.procTitle},环节名称:${activityInstanceModel.actDefName},执行人:${activityInstanceModel.receiver}</b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4" style="border-bottom-color: #FFFFFF">
|
||||
<table>
|
||||
<tr>
|
||||
<td align="left">
|
||||
<h5 align="left" style="margin-left: 0px;">
|
||||
<b>待选用户</b>
|
||||
</h5>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<h5 align="left" style="margin-left: 0px">
|
||||
<b>已选用户</b>
|
||||
</h5>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
<td style="height: 250px; background-color: #FFFFFF; width: 180px; border: 1px solid #C6D3DB;">
|
||||
<IFRAME align="top" style="width: 300px; height: 100%;"
|
||||
scrolling="auto" src="${ctx}/pages/taskMgr/userTree.jsp"
|
||||
frameBorder="0" id="actUserTreeFrame"
|
||||
allowTransparency="true">
|
||||
|
||||
</IFRAME>
|
||||
</td>
|
||||
<td valign="middle"
|
||||
style="width: 50px; height: 50px; vertical-align: top;text-align: center;">
|
||||
<button type="button" id="addNextActUserBtn"
|
||||
onclick="addNextActivityUser()" class="btn btn-xs btn-primary"
|
||||
style="margin-top: 60px">
|
||||
>>
|
||||
</button>
|
||||
<button type="button" id="removeNextActUserBtn"
|
||||
onclick="removeNextActivityUser()"
|
||||
class="btn btn-xs btn-primary" style="margin-top: 60px">
|
||||
>>
|
||||
</button>
|
||||
</td>
|
||||
<td style="width: 150px; height: 250px; vertical-align: top;">
|
||||
<select id='nextActUserSel' multiple="multiple"
|
||||
style='border: none; WIDTH: 100%; HEIGHT: 100%' size='4'
|
||||
tabindex='3' onclick="removeNextActivityUser();" />
|
||||
</td>
|
||||
<td align="left" valign="top"
|
||||
style="width: 50px; height: 50px; vertical-align: top;">
|
||||
|
||||
<button type="button" id="nextExecuteBtn"
|
||||
onclick="saveReceiver()" class="btn btn-sm btn-primary"
|
||||
style="border-radius: 3px !important;background: #0070d2 !important; border: none !important; color: #fff !important; font-size: 14px !important; display: inline-block; margin: 0 0 0 5px; height: 32px; line-height: 32px; padding: 0 10px; outline: none; margin-top: 60px">
|
||||
保存
|
||||
<i class="ace-icon fa fa-save bigger-110"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
170
ebpm-process-manage/webapp/pages/taskMgr/taskTransfer.jsp
Normal file
170
ebpm-process-manage/webapp/pages/taskMgr/taskTransfer.jsp
Normal file
@@ -0,0 +1,170 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||
<%@ include file="/commons/taglibs.jsp"%>
|
||||
<%@page import="com.blueland.bpm.engine.util.WorkFlowContants"%>
|
||||
<%
|
||||
String path = request.getContextPath();
|
||||
String basePath = request.getScheme() + "://"
|
||||
+ request.getServerName() + ":" + request.getServerPort()
|
||||
+ path + "/";
|
||||
%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<%@ include file="/commons/meta.jsp"%>
|
||||
<meta http-equiv="Cache-Control" content="no-store" />
|
||||
<meta http-equiv="Pragma" content="no-cache" />
|
||||
<meta http-equiv="Expires" content="0" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
});
|
||||
|
||||
function saveReceiver() {
|
||||
var isMultiInstance = false;
|
||||
var count = $("#nextActUserSel option").length;
|
||||
var nextActUserIdsStr = "";
|
||||
for (var i = 0; i < count; i++) {
|
||||
var tempNextActUserIdsStr = $("#nextActUserSel").get(0).options[i].value;
|
||||
if (tempNextActUserIdsStr == "")
|
||||
continue;
|
||||
nextActUserIdsStr += tempNextActUserIdsStr;
|
||||
if (i != count - 1)
|
||||
nextActUserIdsStr += ",";
|
||||
}
|
||||
if (nextActUserIdsStr == "") {
|
||||
alert("下一环节办理人员不能为空!");
|
||||
return false;
|
||||
} else if (!isMultiInstance && count > 1) {
|
||||
alert("下一环节只允许选择一位办理人员!");
|
||||
return false;
|
||||
}
|
||||
if (confirm("您确认重新分配人员吗?")) {
|
||||
var taskId = "${activityInstanceModel.actInstId}";
|
||||
$.post('${ctx}/taskMgr/taskTransfer.do', {"receivers":nextActUserIdsStr,"taskId":taskId},
|
||||
function (resp, textStatus){
|
||||
alert(resp);
|
||||
if (resp != "操作成功!") {
|
||||
art.dialog.opener.location.reload();
|
||||
art.dialog.close();
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function addNextActivityUser() {
|
||||
var treeNodeId = $(window.frames["actUserTreeFrame"].document).find(
|
||||
"#treeNodeId").attr("value");
|
||||
var treeNodeName = $(window.frames["actUserTreeFrame"].document).find(
|
||||
"#treeNodeName").attr("value");
|
||||
var treeNodeType = $(window.frames["actUserTreeFrame"].document).find(
|
||||
"#treeNodeType").attr("value");
|
||||
|
||||
var count = $("#nextActUserSel option").length;
|
||||
var index = 0;
|
||||
//过滤空格
|
||||
if (treeNodeId == "" && treeNodeId.length == 0 || treeNodeType == 'ORG'
|
||||
|| treeNodeType == 'DEPT') {
|
||||
return;
|
||||
}
|
||||
|
||||
var isMultiInstance = false;
|
||||
for (var i = 0; i < count; i++) {
|
||||
//不重复添加
|
||||
if ($("#nextActUserSel").get(0).options[i].value == treeNodeId) {
|
||||
index++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (index > 0) {
|
||||
return;
|
||||
}
|
||||
if (isMultiInstance) {
|
||||
$("#nextActUserSel").append(
|
||||
"<option value="+treeNodeId+">" + treeNodeName
|
||||
+ "</option>");
|
||||
} else {
|
||||
$("#nextActUserSel").empty();
|
||||
$("#nextActUserSel").append(
|
||||
"<option value="+treeNodeId+">" + treeNodeName
|
||||
+ "</option>");
|
||||
}
|
||||
}
|
||||
|
||||
function removeNextActivityUser() {
|
||||
$('#nextActUserSel option:selected').remove();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="main-container" id="main-container">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-body">
|
||||
<table class='table table-bordered' border="0" cellspacing="0" cellpadding="0" id="myTable">
|
||||
<tr>
|
||||
<td align="left" colspan="5">
|
||||
<b>当前流程名称:${activityInstanceModel.procTitle},环节名称:${activityInstanceModel.actDefName},执行人:${activityInstanceModel.receiver}</b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background: #EDF4FC">
|
||||
<td colspan="4" style="border-bottom-color: #FFFFFF">
|
||||
<table>
|
||||
<tr>
|
||||
<td align="left">
|
||||
<h5 align="left" style="margin-left: 0px;">
|
||||
<b>待选用户</b>
|
||||
</h5>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<h5 align="left" style="margin-left: 0px">
|
||||
<b>已选用户</b>
|
||||
</h5>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
<td
|
||||
style="height: 250px; background-color: #FFFFFF; width: 180px; border: 1px solid #C6D3DB;">
|
||||
<IFRAME align="top" style="width: 300px; height: 100%;"
|
||||
scrolling="auto" src="${ctx}/pages/taskMgr/userTree.jsp"
|
||||
frameBorder="0" id="actUserTreeFrame"
|
||||
allowTransparency="true"></IFRAME>
|
||||
</td>
|
||||
<td valign="middle"
|
||||
style="width: 50px; height: 50px; vertical-align: top;text-align: center;"">
|
||||
<button type="button" id="addNextActUserBtn"
|
||||
onclick="addNextActivityUser()"
|
||||
class="btn btn-xs btn-primary" style="margin-top: 60px">>></button>
|
||||
|
||||
<button type="button" id="removeNextActUserBtn"
|
||||
onclick="removeNextActivityUser()"
|
||||
class="btn btn-xs btn-primary" style="margin-top: 10px">>></button>
|
||||
</td>
|
||||
<td style="width: 150px; height: 250px; vertical-align: top;">
|
||||
<select id='nextActUserSel' multiple="multiple"
|
||||
style='border: none; WIDTH: 100%; HEIGHT: 100%' size='4'
|
||||
tabindex='3' onclick="removeNextActivityUser();" />
|
||||
</td>
|
||||
<td align="left" valign="top"
|
||||
style="width: 50px; height: 50px; vertical-align: top;">
|
||||
|
||||
<button type="button" id="nextExecuteBtn"
|
||||
onclick="saveReceiver()" class="btn btn-sm btn-primary"
|
||||
style="margin-top: 66px">保存
|
||||
<i class="ace-icon fa fa-save bigger-110"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
258
ebpm-process-manage/webapp/pages/taskMgr/taskTransferList.jsp
Normal file
258
ebpm-process-manage/webapp/pages/taskMgr/taskTransferList.jsp
Normal file
@@ -0,0 +1,258 @@
|
||||
<%@page import="org.activiti.engine.repository.ProcessDefinition" %>
|
||||
<%@page import="com.blueland.bpm.engine.core.model.*" %>
|
||||
<%@page import="org.activiti.engine.repository.Deployment" %>
|
||||
<%@page import="com.blueland.bpm.engine.config.model.*" %>
|
||||
<%@page import="com.blueland.bpm.common.page.*" %>
|
||||
<%@page import="com.blueland.bpm.common.util.*"%>
|
||||
<%@page import="java.util.*" %>
|
||||
<%@ page contentType="text/html;charset=UTF-8" %>
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
|
||||
<%@ taglib tagdir="/WEB-INF/tags/simpletable" prefix="simpletable"%>
|
||||
<%@ include file="/commons/taglibs.jsp" %>
|
||||
<jsp:include page="/commons/userOrgTree.jsp" flush="false" />
|
||||
<%
|
||||
String path = request.getContextPath();
|
||||
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
|
||||
%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<%@ include file="/commons/meta.jsp" %>
|
||||
<base href="<%=basePath%>">
|
||||
<title>流程任务迁移管理</title>
|
||||
<link href="${ctx_js_plugins}/simpletable/simpletable.css" type="text/css" rel="stylesheet">
|
||||
<script type="text/javascript" src="${ctx_js_plugins}/simpletable/simpletable.js"></script>
|
||||
<link href="${ctx}/resource/js/plugins/loadmask/jquery.loadmask.css" rel="stylesheet" type="text/css" />
|
||||
<script type='text/javascript' src='${ctx}/resource/js/plugins/loadmask/jquery.loadmask.js'></script>
|
||||
|
||||
<script type="text/javascript" >
|
||||
$(document).ready(function() {
|
||||
// 分页需要依赖的初始化动作
|
||||
window.simpleTable = new SimpleTable('queryForm','${page.thisPageNumber}','${page.pageSize}','${pageRequest.sortColumns}');
|
||||
// if(${dataType==0}){
|
||||
// $("#qbqyBtn").attr("disabled", false);
|
||||
// }else{
|
||||
// $("#qbqyBtn").attr("disabled", true);
|
||||
// }
|
||||
});
|
||||
function assigneeNameOnDbClick(name, value) {
|
||||
$("#assigneeName").val(name);
|
||||
$("#assignee").val(value);
|
||||
}
|
||||
function transferUserNameOnDbClick(name, value) {
|
||||
$("#transferUserName").val(name);
|
||||
$("#transferUserId").val(value);
|
||||
}
|
||||
function taskTransfer(myUrl,transferDatatype){
|
||||
//alert(myUrl);
|
||||
var chk_value =[];
|
||||
if(transferDatatype=="0"){
|
||||
$("input[name='taskIds']:checkbox:checked").each(function(){
|
||||
chk_value.push($(this).val());
|
||||
})
|
||||
if(chk_value.length==0){
|
||||
alert("请选择一条流程数据!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if($("#transferUserId").val()==""){
|
||||
alert("迁移的目标人员不能为空!");
|
||||
return;
|
||||
}
|
||||
if(transferDatatype=="1"&&$("#assignee").val()==""){
|
||||
alert("选择全部待办迁移时任务执行人不能为空!");
|
||||
return;
|
||||
}
|
||||
$("#transferDatatype").val(transferDatatype);
|
||||
if (confirm("您确认要将该用户的待办数据做迁移吗?")) {
|
||||
setMask("main-container");
|
||||
jQuery.ajax({
|
||||
url: myUrl,
|
||||
data: $('#queryForm',document).serialize(),
|
||||
type: "POST",
|
||||
success: function(resp)
|
||||
{
|
||||
alert(resp);
|
||||
if(resp=='操作成功'){
|
||||
document.getElementById("queryForm").submit();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function changeRadio(btn){
|
||||
try{
|
||||
$("#transferUserName").val(null);
|
||||
$("#transferUserId").val(null);
|
||||
$("#assigneeName").val(null);
|
||||
$("#assignee").val(null);
|
||||
}catch(e){}
|
||||
document.getElementById("queryForm").submit();
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<%@ include file="/commons/messages.jsp" %>
|
||||
<form id="queryForm" name="queryForm" action="${ctx}/taskMgr/taskTransferList.do" method="post" style="display: inline;">
|
||||
<div class="main-container" id="main-container">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h8>流程待办迁移</h8>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="form-group well well-sm" style="margin-bottom: 2px;">
|
||||
|
||||
<table border="0" cellspacing="0" cellpadding="0"
|
||||
class="table-search">
|
||||
<tr>
|
||||
<input value="" type="hidden" id="transferDatatype" name="transferDatatype"/>
|
||||
<c:if test="${dataType==0 }">
|
||||
<td>任务执行人:</td>
|
||||
<td>
|
||||
<input value="${assigneeName}" id="assigneeName" name="assigneeName" maxlength="30" onclick="showUserOrg('assigneeName','43','','USER'); return false;" readonly />
|
||||
<input value="${assignee}" type="hidden" id="assignee" name="assignee" maxlength="30" />
|
||||
</td>
|
||||
<td>
|
||||
<button type="submit" class="btn btn-xs btn-primary">
|
||||
查 询
|
||||
<i class="ace-icon fa fa-search bigger-110"></i>
|
||||
</button>
|
||||
</td>
|
||||
</c:if>
|
||||
<td>迁移的目标人员:</td>
|
||||
<td>
|
||||
<input value="${transferUserId}" type="hidden" id="transferUserId" name="transferUserId" maxlength="30" />
|
||||
<input value="${transferUserName}" id="transferUserName" name="transferUserName" maxlength="30" onclick="showUserOrg('transferUserName','43','','USER'); return false;" readonly/>
|
||||
</td>
|
||||
<td>
|
||||
<c:if test="${dataType==0 }">
|
||||
<button id="qbqyBtn" type="button" onclick="taskTransfer('${ctx}/taskMgr/taskTransfer.do','1');" class="btn btn-xs btn-success">
|
||||
全部待办迁移
|
||||
<i class="ace-icon fa fa-stack-exchange bigger-110"></i>
|
||||
</button>
|
||||
</c:if>
|
||||
<button type="button" onclick="taskTransfer('${ctx}/taskMgr/taskTransfer.do','0');" class="btn btn-xs btn-success">
|
||||
选择待办迁移
|
||||
<i class="ace-icon fa fa-exchange bigger-110"></i>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="5">
|
||||
<div>
|
||||
<input type="radio" style="margin:0px;height:10px;width: 10px" value="1" name="dataType" id="dataType" checked ${dataType==1?'checked':'' } onchange="changeRadio(this);"/>
|
||||
组织机构ID无法匹配数据
|
||||
<input type="radio" style="margin:0px;height:10px;width: 10px" value="0" name="dataType" id="dataType" ${dataType==0?'checked':'' } onchange="changeRadio(this);"/>
|
||||
正常数据 </div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="table-responsive">
|
||||
<div style="width: 100%;overflow: auto;">
|
||||
<table style=" width: inherit;max-width: 600%;table-layout: fixed;" id="sample-table-1"
|
||||
class="table table-striped table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<!-- 排序时为th增加sortColumn即可,new SimpleTable('sortColumns')会为tableHeader自动增加排序功能; -->
|
||||
<th style="width: 20px"><input type="checkbox"
|
||||
onclick="setAllCheckboxState('taskIds',this.checked)"></th>
|
||||
<th style="width: 150px;">流程定义名称</th>
|
||||
<th >流程标题</th>
|
||||
<th >当前环节</th>
|
||||
<th >执行人(老组织机构)</th>
|
||||
<c:if test="${dataType==0}">
|
||||
<th >发送人</th>
|
||||
</c:if>
|
||||
<c:if test="${dataType!=0}">
|
||||
<th >执行人(新组织机构)</th>
|
||||
</c:if>
|
||||
<th style="width: 150px">接收时间</th>
|
||||
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<%
|
||||
Page mypage=(Page)request.getAttribute("page");
|
||||
List<ActivityInstanceModel> tasks=mypage.getResult();
|
||||
|
||||
|
||||
if(tasks!=null){
|
||||
for(int i=0;i<tasks.size();i++){
|
||||
ActivityInstanceModel task=(ActivityInstanceModel)tasks.get(i);
|
||||
|
||||
%>
|
||||
<tr class="<%=((i+1)%2== 0 ? "odd" : "even") %>">
|
||||
<td><input type="checkbox" id="taskIds" name="taskIds" value="<%=task.getActInstId()%>"></td>
|
||||
<td class="td" title="<%=task.getProcDefName()%>">
|
||||
<%=task.getProcDefName()%>
|
||||
</td>
|
||||
<td class="td" title="<%=task.getProcTitle()%>">
|
||||
<a href="javascript:void(0);" onclick="openProcessTrackPage('${ctx}','<%=task.getProcInstId()%>');">
|
||||
<%=task.getProcTitle()%>
|
||||
</a>
|
||||
</td>
|
||||
<td class="td" title=" <%=task.getActDefName()%> ">
|
||||
<%=task.getActDefName()%>
|
||||
</td>
|
||||
<td class="td" title="<%if(null!=task.getReceiverUserName()){ %>
|
||||
<%=task.getReceiverUserName() %>(<%=task.getReceiverUserId()!=null?task.getReceiverUserId():""%>)【<%=task.getReceiverOrgName() %>(<%=task.getReceiverOrgId() %>)】
|
||||
<%}else{ %>
|
||||
<%=task.getReceiverUserId()!=null?task.getReceiverUserId():""%>
|
||||
<%} %>">
|
||||
<%if(null!=task.getReceiverUserName()){ %>
|
||||
<%=task.getReceiverUserName() %>(<%=task.getReceiverUserId()!=null?task.getReceiverUserId():""%>)【<%=task.getReceiverOrgName() %>(<%=task.getReceiverOrgId() %>)】
|
||||
<%}else{ %>
|
||||
<%=task.getReceiverUserId()!=null?task.getReceiverUserId():""%>
|
||||
<%} %>
|
||||
</td>
|
||||
<c:if test="${dataType==0}">
|
||||
<td class="td" title="<%if(null!=task.getSendUserName()){ %>
|
||||
<%=task.getSendUserName()!=null?task.getSendUserName():""%>(<%=task.getSendUserId()!=null?task.getSendUserId():""%>)【<%=task.getSenderOrgName() %>】
|
||||
<%}else{ %>
|
||||
<%=task.getSendUserId()!=null?task.getSendUserId():""%>
|
||||
<%} %>">
|
||||
<%if(null!=task.getSendUserName()){ %>
|
||||
<%=task.getSendUserName()!=null?task.getSendUserName():""%>(<%=task.getSendUserId()!=null?task.getSendUserId():""%>)【<%=task.getSenderOrgName() %>】
|
||||
<%}else{ %>
|
||||
<%=task.getSendUserId()!=null?task.getSendUserId():""%>
|
||||
<%} %>
|
||||
</td>
|
||||
</c:if>
|
||||
<c:if test="${dataType!=0}">
|
||||
<td class="td" title=" <%=task.getSenderOrgName()%><%if(task.getSenderOrgId()!=null){ %>(<%=task.getSenderOrgId()%>)<%} %>">
|
||||
<%=task.getSenderOrgName()%><%if(task.getSenderOrgId()!=null){ %>(<%=task.getSenderOrgId()%>)<%} %>
|
||||
</td>
|
||||
</c:if>
|
||||
<td>
|
||||
<%=DateUtil.convertDateToString("yyyy-MM-dd HH:mm:ss",task.getCreateTime())%>
|
||||
</td>
|
||||
</tr>
|
||||
<%}} %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<c:if test="${dataType==0 }">
|
||||
<simpletable:pageToolbar page="${page}">
|
||||
</simpletable:pageToolbar>
|
||||
</c:if>
|
||||
</div>
|
||||
<!-- /.table-responsive -->
|
||||
</div>
|
||||
<!-- /span -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
25
ebpm-process-manage/webapp/pages/taskMgr/topButton.jsp
Normal file
25
ebpm-process-manage/webapp/pages/taskMgr/topButton.jsp
Normal file
@@ -0,0 +1,25 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||
<%@page import="com.blueland.bpm.engine.core.model.ProcessInputModel"%>
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
|
||||
<%@ include file="/commons/taglibs.jsp"%>
|
||||
<%@ include file="/commons/meta.jsp" %>
|
||||
|
||||
<script>
|
||||
function traceProcess(){
|
||||
showDiaLog('${ctx}/workflow/trace/traceProcess.do?processInstanceId=${task.procInstId }',
|
||||
'流程监控','1000px','100%');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<div id="header">
|
||||
<!--
|
||||
<button class="btn btn-sm btn-primary" type="button" id="TRACE_BTN" onclick="traceProcess();">
|
||||
日志
|
||||
</button> -->
|
||||
<button class="btn btn-sm btn-primary" type="button" onclick="javascript:art.dialog.close();">
|
||||
关闭
|
||||
</button>
|
||||
<br/>
|
||||
</div>
|
||||
@@ -0,0 +1,106 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||
<%@page import="com.blueland.bpm.engine.core.model.*,org.activiti.engine.task.Comment,org.apache.commons.lang3.StringUtils,com.blueland.bpm.common.util.DateUtil,java.util.*"%>
|
||||
<%@ include file="/commons/taglibs.jsp"%>
|
||||
<%
|
||||
String path = request.getContextPath();
|
||||
String basePath = request.getScheme() + "://"
|
||||
+ request.getServerName() + ":" + request.getServerPort()
|
||||
+ path + "/";
|
||||
%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<%@ include file="/commons/meta.jsp"%>
|
||||
<base href="<%=basePath%>">
|
||||
<title>更新流程审批意见</title>
|
||||
<script>
|
||||
function delComment(taskName,procInstId,commentId){
|
||||
//alert(commentId);
|
||||
if(confirm("您确认删除["+taskName+"]环节的审批意见吗?")){
|
||||
$.post('${ctx}/taskMgr/deleteProcessComment.do', {"procInstId":procInstId,"commentId":commentId},
|
||||
function (data, textStatus){
|
||||
if(data){
|
||||
alert("操作成功!");
|
||||
window.location.href=window.location.href
|
||||
}else{
|
||||
alert("操作失败!");
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body style="background-color: white;" class="white-page">
|
||||
|
||||
<form action="${ctx}/taskMgr/updateProcessComment.do" method="post" id="myform">
|
||||
<div class="widget-box">
|
||||
<%
|
||||
List<ProcessLogModel> processComments = (List) request
|
||||
.getAttribute("processComments");
|
||||
%>
|
||||
<input type="hidden" id="procInstId" name="procInstId" value="${procInstId}"></input>
|
||||
<%
|
||||
if (processComments != null && !processComments.isEmpty()) {
|
||||
%>
|
||||
<input type="submit" class="btn btn-sm btn-primary" id="submitButton" value="保 存" />
|
||||
|
||||
<%
|
||||
}
|
||||
%>
|
||||
<input type="button" class="btn btn-sm btn-primary" value="关 闭" onclick="art.dialog.close();" />
|
||||
|
||||
<div class="widget-body" style="margin-top: 15px">
|
||||
<div class="widget-main no-padding">
|
||||
<table class='table table-bordered' border="0" cellspacing="0" cellpadding="0" id="myTable">
|
||||
<%
|
||||
try {
|
||||
for (ProcessLogModel processComment : processComments) {
|
||||
Comment comment = processComment.getComment();
|
||||
String fullMessage = comment.getFullMessage();
|
||||
fullMessage = !StringUtils.isEmpty(fullMessage) ? fullMessage
|
||||
.replaceAll("\r\n", "<br/>") : fullMessage;
|
||||
%><div id='replayData' style='text-align: left; border: 1px solid #c5d3da; height: auto; margin-top: -1px;'>
|
||||
<div style='text-align: left; float: left; margin-left: 20px;'>
|
||||
<%=fullMessage%>
|
||||
|
||||
</div>
|
||||
<br />
|
||||
<div style='text-align: left; float: left; margin-left: 20px;'>
|
||||
修改意见为:
|
||||
<input type="text" name="commentId_<%=comment.getId()%>" id="commentId_<%=comment.getId()%>" value="" />
|
||||
</div>
|
||||
<br /> <br />
|
||||
<div style='float: right;'>
|
||||
<%=processComment.getHistoricTaskInstance()
|
||||
.getName()%>:<%=processComment.getSendUserName()%>
|
||||
(<%=DateUtil.convertDateToString(
|
||||
"yyyy-MM-dd HH:mm:ss", comment.getTime())%>)
|
||||
<a href="javascript:void(0);" onclick="delComment('<%=processComment.getHistoricTaskInstance()
|
||||
.getName()%>','<%=processComment.getHistoricTaskInstance()
|
||||
.getProcessInstanceId()%>','<%=comment.getId()%>')">删除意见</a>
|
||||
</div>
|
||||
<br style='clear: both;' />
|
||||
</div>
|
||||
<%
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
%>
|
||||
|
||||
<%
|
||||
if (processComments == null || processComments.isEmpty()) {
|
||||
%>
|
||||
<br style='clear: both;' />
|
||||
<div style='text-align: left; float: left; margin-left: 20px;'>该流程暂无审批意见!</div>
|
||||
<%
|
||||
}
|
||||
%>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
238
ebpm-process-manage/webapp/pages/taskMgr/updateProcessTime.jsp
Normal file
238
ebpm-process-manage/webapp/pages/taskMgr/updateProcessTime.jsp
Normal file
@@ -0,0 +1,238 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||
<%@page import="com.blueland.bpm.engine.core.model.*,org.activiti.engine.task.Comment,org.apache.commons.lang3.StringUtils,com.blueland.bpm.common.util.DateUtil,java.util.*"%>
|
||||
<%@ include file="/commons/taglibs.jsp"%>
|
||||
<jsp:include page="/commons/userOrgTreeMore.jsp" flush="true" />
|
||||
<%
|
||||
String path = request.getContextPath();
|
||||
String basePath = request.getScheme() + "://"
|
||||
+ request.getServerName() + ":" + request.getServerPort()
|
||||
+ path + "/";
|
||||
%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<%@ include file="/commons/meta.jsp"%>
|
||||
<base href="<%=basePath%>">
|
||||
<title>更新流程审批时间</title>
|
||||
<link href="${ctx}/resource/js/plugins/loadmask/jquery.loadmask.css" rel="stylesheet" type="text/css" />
|
||||
<script type='text/javascript' src='${ctx}/resource/js/plugins/loadmask/jquery.loadmask.js'></script>
|
||||
<script>
|
||||
function processAction(myUrl,title,id){
|
||||
var chk_value =[];
|
||||
var processInstanceId="";
|
||||
var list = new Array();
|
||||
$("input[name='items']:checkbox:checked").each(function(){
|
||||
chk_value.push($(this).val());
|
||||
})
|
||||
if(chk_value.length==0){
|
||||
alert("请至少选择一条环节数据!");
|
||||
return;
|
||||
}else{
|
||||
for(var i=0;i<chk_value.length;i++){
|
||||
var model = {};
|
||||
model.actInstId = chk_value[i];
|
||||
if($("#"+chk_value[i]+"_finishTime").val()){
|
||||
model.finishTime = this.stringToDate($("#"+chk_value[i]+"_finishTime").val())
|
||||
}
|
||||
model.sendUserId = $("#"+chk_value[i]+"_sendUserId").val();
|
||||
model.sendUserName = $("#"+chk_value[i]+"_sendUserName").val();
|
||||
model.senderOrgId = $("#"+chk_value[i]+"_senderOrgId").val();
|
||||
model.senderOrgName = $("#"+chk_value[i]+"_senderOrgName").val();
|
||||
model.actState = $("#"+chk_value[i]+"_actState").val();
|
||||
if($("#"+chk_value[i]+"_createTime").val()){
|
||||
model.createTime = this.stringToDate($("#"+chk_value[i]+"_createTime").val())
|
||||
}else{
|
||||
alert("环节发送时间不能为空,请核查接收时间数据!");
|
||||
return;
|
||||
}
|
||||
list.push(model);
|
||||
}
|
||||
}
|
||||
console.log(JSON.stringify(chk_value))
|
||||
console.log(JSON.stringify(list))
|
||||
setMask("widget-box");
|
||||
if (confirm(title)) {
|
||||
jQuery.ajax({
|
||||
url: myUrl,
|
||||
data: JSON.stringify(list),
|
||||
dataType: "json", //表示返回值类型,不必须
|
||||
contentType : 'application/json;charset=utf-8', //设置请求头信息
|
||||
type: "POST",
|
||||
success: function(resp)
|
||||
{
|
||||
if(resp){
|
||||
alert("操作成功!");
|
||||
window.location.href=window.location.href
|
||||
}else{
|
||||
alert("操作失败!");
|
||||
$("#widget-box").unmask();
|
||||
}
|
||||
}
|
||||
});
|
||||
}else{
|
||||
$("#widget-box").unmask();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function stringToDate(str){
|
||||
var tempStrs = str.split(" ");
|
||||
var dateStrs = tempStrs[0].split("-");
|
||||
var year = parseInt(dateStrs[0], 10);
|
||||
var month = parseInt(dateStrs[1], 10) - 1;
|
||||
var day = parseInt(dateStrs[2], 10);
|
||||
var timeStrs = tempStrs[1].split(":");
|
||||
var hour = parseInt(timeStrs [0], 10);
|
||||
var minute = parseInt(timeStrs[1], 10);
|
||||
var second = parseInt(timeStrs[2], 10);
|
||||
var date = new Date(year, month, day, hour, minute, second);
|
||||
return date;
|
||||
}
|
||||
|
||||
function updateProcessTime(myUrl,title,id){
|
||||
if($("#startTime").val()==""){
|
||||
alert("流程发起时间不能为空,请核查发起时间数据!");
|
||||
return;
|
||||
}
|
||||
setMask("widget-box");
|
||||
if (confirm(title)) {
|
||||
jQuery.ajax({
|
||||
url: myUrl,
|
||||
data: {"procInstId":$("#procInstId").val(),"createTime":$("#startTime").val(),"endTime":$("#endTime").val()},
|
||||
dataType: "json", //表示返回值类型,不必须
|
||||
type: "POST",
|
||||
success: function(resp)
|
||||
{
|
||||
if(resp){
|
||||
alert("操作成功!");
|
||||
window.location.href=window.location.href
|
||||
}else{
|
||||
alert("操作失败!");
|
||||
$("#widget-box").unmask();
|
||||
}
|
||||
}
|
||||
});
|
||||
}else{
|
||||
$("#widget-box").unmask();
|
||||
}
|
||||
}
|
||||
function getUserFunOnDbClick(name,value,orgId,orgName,id) {
|
||||
$("#"+id+"_sendUserName").val(name);
|
||||
$("#"+id+"_sendUserId").val(value);
|
||||
$("#"+id+"_senderOrgId").val(orgId);
|
||||
$("#"+id+"_senderOrgName").val(orgName);
|
||||
//$("#deputeUserId").val(value);
|
||||
}
|
||||
</script>
|
||||
<body class="white-page">
|
||||
|
||||
<form action="${ctx}/procInstMgr/updateProcessTimeView.do" method="post" id="myform">
|
||||
<div class="widget-box" id="widget-box">
|
||||
<%
|
||||
List<ProcessLogModel> processComments = (List) request.getAttribute("processComments");
|
||||
%>
|
||||
<input type="hidden" id="procInstId" name="procInstId" value="${procInstId}"></input>
|
||||
|
||||
<span style="float:left;line-height: 33px;padding:0 0 0 10px">修改环节时间,备注:上一环节处理时间与下一环节发送时间一致</span>
|
||||
<input style='float: right;' type="button" class="btn btn-sm btn-primary" id="submitButton" onclick="processAction('${ctx}/procInstMgr/updateActInstTime.do','您确认修改勾选节点流程对应时间吗?',this.id);" value="保 存" />
|
||||
|
||||
|
||||
<!-- <input style='float: right;' type="button" class="btn btn-sm btn-primary" value="关 闭" onclick="art.dialog.close();" /> -->
|
||||
|
||||
<div class="widget-body">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="table-responsive">
|
||||
<table style="max-width: 600%;table-layout: fixed;" id="sample-table-1"
|
||||
class="table table-striped table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<!-- 排序时为th增加sortColumn即可,new SimpleTable('sortColumns')会为tableHeader自动增加排序功能; -->
|
||||
<th style="width:20px;"><input type="checkbox" onclick="setAllCheckboxState('items',this.checked)"></th>
|
||||
<th style="width: 150px">流程定义名称</th>
|
||||
<th>流程标题</th>
|
||||
<th style="width: 100px">执行人</th>
|
||||
<th style="width: 120px">当前环节</th>
|
||||
<th >发送人</th>
|
||||
<th >发送时间</th>
|
||||
<th >处理时间</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach items="${allActivityInstance}" var="item" varStatus="status">
|
||||
<tr class="${status.count % 2 == 0 ? 'odd' : 'even'}">
|
||||
<td><input type="checkbox" name="items" value="${item.actInstId}"></td>
|
||||
<input type="hidden" id="${item.actInstId}_actState" name="${item.actInstId}_actState" value="${item.actState}"/></td>
|
||||
<td>${item.procDefName} </td>
|
||||
<td class="td" title="${item.procTitle} ">${item.procTitle} </td>
|
||||
<td>${item.receiverUserName} </td>
|
||||
<td>${item.actDefName} </td>
|
||||
<%-- <td>${item.sendUserName}</td> --%>
|
||||
<td style="width: 100px"><input type="text" id="${item.actInstId}_sendUserName" name="${item.actInstId}_sendUserName" value="${item.sendUserName}" style="margin-right: 2px;height:25px;" onclick="showUserOrg('getUserFun','','','USER','${item.actInstId}','${item.actInstId}_sendUserName'); return false;" readonly />
|
||||
<input type="hidden" id="${item.actInstId}_sendUserId" name="${item.actInstId}_sendUserId" value="${item.sendUserId}"/></td>
|
||||
<input type="hidden" id="${item.actInstId}_senderOrgId" name="${item.actInstId}_senderOrgId" value="${item.senderOrgId}"/></td>
|
||||
<input type="hidden" id="${item.actInstId}_senderOrgName" name="${item.actInstId}_senderOrgName" value="${item.senderOrgName}"/></td>
|
||||
<td style="width: 100px">
|
||||
<input class="input" value="<fmt:formatDate value="${item.createTime}" pattern="yyyy-MM-dd HH:mm:ss"/>" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" id="${item.actInstId}_createTime" name="${item.actInstId}_createTime" />
|
||||
</td>
|
||||
<td style="width: 100px">
|
||||
<input class="input" value="<fmt:formatDate value="${item.finishTime}" pattern="yyyy-MM-dd HH:mm:ss"/>" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" id="${item.actInstId}_finishTime" name="${item.actInstId}_finishTime" />
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- /.table-responsive -->
|
||||
</div>
|
||||
<!-- /span -->
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<span style="float:left;line-height: 33px;padding:0 0 0 10px">修改流程时间</span>
|
||||
<input style="float:right" type="button" class="btn btn-sm btn-primary" id="submitButton" onclick="updateProcessTime('${ctx}/procInstMgr/updateProcessTime.do','您确认修改'+'${historicProcessInstance.procTitle}'+'时间么?',this.id);" value="保 存" />
|
||||
<div class="widget-body">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="table-responsive">
|
||||
<table id="sample-table-1"
|
||||
style="max-width: 600%;table-layout: fixed;"
|
||||
class="table table-striped table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<!-- 排序时为th增加sortColumn即可,new SimpleTable('sortColumns')会为tableHeader自动增加排序功能; -->
|
||||
<th >流程定义名称</th>
|
||||
<th >流程标题</th>
|
||||
<!-- <th width="100px">流程实例ID</th> -->
|
||||
<th style="width: 100px">创建人</th>
|
||||
<th >发起时间</th>
|
||||
<th >结束时间</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<tr class="odd">
|
||||
<td class="td" title="${historicProcessInstance.processDefinitionName}">${historicProcessInstance.processDefinitionName}</td>
|
||||
<td class="td" title="${historicProcessInstance.procTitle}">${historicProcessInstance.procTitle}</td>
|
||||
<%-- <td>${historicProcessInstance.id}</td> --%>
|
||||
<td>${historicProcessInstance.startUserName}</td>
|
||||
<td style="width: 150px">
|
||||
<input class="input" value="<fmt:formatDate value="${historicProcessInstance.startTime}" pattern="yyyy-MM-dd HH:mm:ss"/>" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" id="startTime" name="startTime" />
|
||||
</td>
|
||||
<td style="width: 150px">
|
||||
<input class="input" value="<fmt:formatDate value="${historicProcessInstance.endTime}" pattern="yyyy-MM-dd HH:mm:ss"/>" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" id="endTime" name="endTime" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- /.table-responsive -->
|
||||
</div>
|
||||
<!-- /span -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
129
ebpm-process-manage/webapp/pages/taskMgr/updateTaskData.jsp
Normal file
129
ebpm-process-manage/webapp/pages/taskMgr/updateTaskData.jsp
Normal file
@@ -0,0 +1,129 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||
<%@page import="com.blueland.bpm.engine.config.model.*,java.util.*"%>
|
||||
<%@ include file="/commons/taglibs.jsp"%>
|
||||
<%
|
||||
String path = request.getContextPath();
|
||||
String basePath = request.getScheme() + "://"
|
||||
+ request.getServerName() + ":" + request.getServerPort()
|
||||
+ path + "/";
|
||||
%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<%@ include file="/commons/meta.jsp"%>
|
||||
<base href="<%=basePath%>">
|
||||
<title>系统全局分类表新增</title>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
var data;
|
||||
var dataTypeRow = "<tr><td style='width:20%'>objectType</td><td><input class='form-control' type='text' name='wf_objectType' id='wf_objectType' value='${businessDataObject.objectType}'/></td></tr>";
|
||||
$("#myTable1").append(dataTypeRow);
|
||||
try{
|
||||
data = '${businessDataObject.bizData}';
|
||||
//先按照xml格式去解析
|
||||
var fieldsXml = $.parseXML(data);
|
||||
var xmlRootName = fieldsXml.documentElement.nodeName;
|
||||
$("#wf_xmlRootName").val(xmlRootName);
|
||||
$(fieldsXml).find(xmlRootName + " >*").each(function(i){
|
||||
var fieldValue=$(this).text();
|
||||
if (fieldValue == null || typeof (fieldValue) == "undefined" || fieldValue == 'null') {
|
||||
fieldValue = "";
|
||||
}
|
||||
var html="<tr><td style='width:20%'>"+this.nodeName+"</td><td><input class='form-control' type='text' name='"+this.nodeName+"' id='"+this.nodeName+"' value='"+fieldValue+"'/></td></tr>";
|
||||
$("#myTable1").append(html);
|
||||
});
|
||||
$("#wf_dataType").val("xml");
|
||||
}catch(e){
|
||||
try{
|
||||
//xml格式解析数据出错,说明返回的数据不是xml格式,则按照json格式解析
|
||||
var obj = eval('(' + data + ')');
|
||||
for(var key in obj){
|
||||
var html="<tr><td style='width:10%'>"+key+"</td><td><input class='form-control' type='text' name='"+key+"' id='"+key+"' value='"+obj[key]+"'/></td></tr>";
|
||||
$("#myTable1").append(html);
|
||||
}
|
||||
$("#wf_dataType").val("json");
|
||||
}catch(e){
|
||||
//如果json格式解析报错,则说明也不是json格式,则用一个textarea展示字符串
|
||||
var html="<tr><td colspan='2'><textarea id='txtBizData' name='txtBizData' style='margin: 0px; width: 100%; height: 381px;'>"+data+"</textarea></td></tr>";
|
||||
$("#myTable1").append(html);
|
||||
$("#wf_dataType").val("txt");
|
||||
}
|
||||
}
|
||||
|
||||
var fields;
|
||||
try{
|
||||
fields="${fields}";
|
||||
//alert(data);
|
||||
var fieldsXml = $.parseXML(fields);
|
||||
$(fieldsXml).find("fields >*").each(function(i){
|
||||
var fieldValue=$(this).text();
|
||||
if (fieldValue == null || typeof (fieldValue) == "undefined" || fieldValue == 'null') {
|
||||
fieldValue = "";
|
||||
}
|
||||
var html="<tr><td style='width:20%'>"+this.nodeName+"</td><td><input class='form-control' type='text' name='"+this.nodeName+"' id='"+this.nodeName+"' value='"+fieldValue+"'/></td></tr>";
|
||||
$("#myTable2").append(html);
|
||||
});
|
||||
}catch(e){alert("系统解析wf_fields数据失败,请您联系管理员排查问题!wf_fields["+fields+"]");}
|
||||
});
|
||||
|
||||
function update1() {
|
||||
var url = "${ctx}/taskMgr/updateTaskBusinessDataObject.do";
|
||||
$.post(url,$('#myform1').serialize(),
|
||||
function(result) {
|
||||
alert(result);
|
||||
});
|
||||
}
|
||||
|
||||
function update2() {
|
||||
var url = "${ctx}/taskMgr/updateTaskFieldsData.do";
|
||||
$.post(url,$('#myform2').serialize(),
|
||||
function(result) {
|
||||
alert(result);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body class="white-page">
|
||||
|
||||
<form action="${ctx}/taskMgr/updateTaskBusinessDataObject.do" method="post" id="myform1">
|
||||
<div class="widget-box">
|
||||
<input type="hidden" id="wf_dataType" name="wf_dataType" />
|
||||
<input type="hidden" id="wf_curActInstId" name="wf_curActInstId" value="${wf_curActInstId}"></input>
|
||||
<input type="hidden" id="wf_xmlRootName" name="wf_xmlRootName" />
|
||||
<input type="button" class="btn btn-sm btn-primary"
|
||||
onclick="update1();" id="submitButton" value="保存业务对象" /> <input
|
||||
type="button" class="btn btn-sm btn-primary"
|
||||
value="关 闭" onclick="art.dialog.close();" />
|
||||
|
||||
<div class="widget-body">
|
||||
<div>
|
||||
<table class='table table-bordered' border="0" cellspacing="0"
|
||||
cellpadding="0" id="myTable1">
|
||||
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<c:if test="${fields!=null}">
|
||||
<form action="${ctx}/taskMgr/updateTaskFieldsData.do" method="post" id="myform2">
|
||||
<div class="widget-box">
|
||||
<input type="hidden" id="wf_curActInstId" name="wf_curActInstId" value="${wf_curActInstId}"></input>
|
||||
<input type="button" class="btn btn-sm btn-primary"
|
||||
onclick="update2();" id="submitButton" value="保存Field" />
|
||||
|
||||
<div class="widget-body">
|
||||
<div>
|
||||
<table class='table table-bordered' border="0" cellspacing="0"
|
||||
cellpadding="0" id="myTable2">
|
||||
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</c:if>
|
||||
</body>
|
||||
</html>
|
||||
150
ebpm-process-manage/webapp/pages/taskMgr/userTree.jsp
Normal file
150
ebpm-process-manage/webapp/pages/taskMgr/userTree.jsp
Normal file
@@ -0,0 +1,150 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||
<%@ include file="/commons/taglibs.jsp"%>
|
||||
<%@page import="com.blueland.bpm.engine.util.WorkFlowContants"%>
|
||||
|
||||
<%
|
||||
String path = request.getContextPath();
|
||||
String basePath = request.getScheme() + "://"
|
||||
+ request.getServerName() + ":" + request.getServerPort()
|
||||
+ path + "/";
|
||||
|
||||
%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Cache-Control" content="no-store"/>
|
||||
<meta http-equiv="Pragma" content="no-cache"/>
|
||||
<meta http-equiv="Expires" content="0"/>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<link rel="stylesheet" href="${ctx}/resource/js/plugins/zTree/css/zTreeStyle/zTreeStyle.css" type="text/css"/>
|
||||
<script type="text/javascript" src="${ctx}/resource/js/plugins/zTree/js/jquery-1.4.4.min.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/resource/js/plugins/zTree/js/jquery.ztree.core-3.4.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/resource/js/plugins/zTree/js/jquery.ztree.excheck-3.4.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/resource/js/plugins/zTree/js/jquery.ztree.exedit-3.4.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="${ctx_js_plugins}/userSelect/css/usStyle/usStyle.css" />
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
|
||||
var zNodes;
|
||||
var url="${ctx}/pages/user/getUserOrgTree.do?showTreeType=USER";
|
||||
var loadImgPath = "${ctx_js_plugins}/userSelect/css/usStyle/img/load.gif";//加载图标路径
|
||||
$.ajaxSetup({
|
||||
async : false
|
||||
});
|
||||
$.post(url,
|
||||
|
||||
function (data, textStatus){
|
||||
//var jsonObject = eval(data);
|
||||
//alert(jsonObject);
|
||||
zNodes=eval(data);
|
||||
});
|
||||
|
||||
var setting = {
|
||||
view: {
|
||||
dblClickExpand : false,
|
||||
selectedMulti: false
|
||||
},
|
||||
edit: {
|
||||
enable: false,
|
||||
drag:{isMove:false}
|
||||
|
||||
},
|
||||
data: {
|
||||
simpleData: {
|
||||
enable: true,
|
||||
idKey : "id",
|
||||
pIdKey : "pId" ,
|
||||
DIY:"isAccessTopMenu"
|
||||
}
|
||||
},async: {
|
||||
enable: true,
|
||||
url:'${ctx}/pages/user/getUserOrgTree.do?showTreeType=USER',
|
||||
autoParam:["id", "name=n","level=lv"],
|
||||
otherParam:{"filterNodeIdsStr":"${filterNodeIdsStr }","showTreeType":"${param.showTreeType}","otherParam":"userTreeAsync"},
|
||||
dataFilter: filter
|
||||
},callback: {
|
||||
onAsyncSuccess: zTreeOnAsyncSuccess,
|
||||
beforeClick: beforeClick
|
||||
}
|
||||
};
|
||||
|
||||
/**用于捕获异步加载正常结束的事件回调函数*/
|
||||
function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) {
|
||||
//hideSelectedUserTreeNode();
|
||||
}
|
||||
|
||||
|
||||
|
||||
function filter(treeId, parentNode, childNodes) {
|
||||
return childNodes;
|
||||
}
|
||||
function beforeClick(treeId, treeNode) {
|
||||
//alert(treeNode.isAccess);
|
||||
//判断是否有权限访问根节点
|
||||
if (treeNode.pId==""||treeNode.isAccessTopMenu=="false") {
|
||||
return false;
|
||||
} else {
|
||||
//if(treeNode.type=="${selectNodeType}"){
|
||||
$("#treeNodeId").val(treeNode.id);
|
||||
$("#treeNodeName").val(treeNode.name);
|
||||
$("#treeNodeType").val(treeNode.type);
|
||||
//}
|
||||
}
|
||||
parent.addNextActivityUser();
|
||||
return true;
|
||||
}
|
||||
$(document).ready(function(){
|
||||
$("#loadDIV").hide();
|
||||
$("#loadIMG").attr("src",loadImgPath);
|
||||
$.fn.zTree.init($("#userOrgTree"), setting,zNodes);
|
||||
});
|
||||
|
||||
/**根据姓名或工号查询*/
|
||||
function query(){
|
||||
var queryVal = $("#queryVal").val();
|
||||
if(queryVal==""){
|
||||
$.fn.zTree.init($("#userOrgTree"), setting);
|
||||
return;
|
||||
}else{
|
||||
$("#loadDIV").show();
|
||||
//alert($("#loadDIV").attr("style"))
|
||||
var data={"queryVal":queryVal,"showTreeType":"USER","id":"${param.orgId}"};
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url:"${ctx}/pages/user/getUserOrgTree.do",
|
||||
data: data,
|
||||
dataType: "json",
|
||||
success: function(data){
|
||||
$.fn.zTree.init($("#userOrgTree"), setting,data);
|
||||
$("#loadDIV").css("display","none");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY bgcolor="#FFFFFF">
|
||||
<div>
|
||||
姓名:<input type="text" value="" id="queryVal" style="width:100px;padding:0px 5px;;font-size:12px;height: 15px;" onkeydown="if(event.keyCode==13) query();"/>
|
||||
<input type="button" style="padding:0px 5px;" class="queryButtonStyle" title="根据用户名或工号查询" onclick="query();"/>
|
||||
</div>
|
||||
<div>
|
||||
<div id="loadDIV" align="center" style="width: 230px;height:420px;">
|
||||
<img src="" id="loadIMG" style="margin-top:130px;"/> </br>用户树加载中...
|
||||
</div>
|
||||
<div><ul id="userOrgTree" class="ztree"></ul></div>
|
||||
</div>
|
||||
<form id="queryForm" name="queryForm" action="" method="post">
|
||||
<input name="treeNodeId" id="treeNodeId" type="hidden"/>
|
||||
<input name="treeNodeName" id="treeNodeName" type="hidden"/>
|
||||
<input name="treeNodeType" id="treeNodeType" type="hidden"/>
|
||||
<input name="filterNodeIdsStr" id="filterNodeIdsStr" type="hidden" value="${filterNodeIdsStr }"/>
|
||||
<input name="isShowCheckBox" id="isShowCheckBox" type="hidden" value="${isShowCheckBox }"/>
|
||||
<input name="showTreeType" id="showTreeType" type="hidden" value="${showTreeType }"/>
|
||||
<input name="selectNodeType" id="selectNodeType" type="hidden" value="${selectNodeType }"/>
|
||||
</form>
|
||||
</BODY>
|
||||
</html>
|
||||
9
ebpm-process-manage/webapp/pages/taskMgr/writeIdea.jsp
Normal file
9
ebpm-process-manage/webapp/pages/taskMgr/writeIdea.jsp
Normal file
@@ -0,0 +1,9 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||
<%@page import="com.blueland.bpm.engine.core.model.ProcessInputModel"%>
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
|
||||
<%@ include file="/commons/taglibs.jsp"%>
|
||||
<%@ include file="/commons/meta.jsp" %>
|
||||
|
||||
<div id="content_other">
|
||||
<h4 align="left" style="font-size:14px"><img src="images/icon-27.gif" /><b> 流转记录</b></h4>
|
||||
</div>
|
||||
Reference in New Issue
Block a user