This commit is contained in:
hanjian
2024-08-14 15:17:51 +08:00
parent 20a221c1a2
commit b610f94b2e
3483 changed files with 650965 additions and 0 deletions

View File

@@ -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>

View 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;">
&nbsp;
<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>

View File

@@ -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>

View 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>

View 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}&nbsp;</td>
<td class="td" title="${item.receiverUserName}">${item.receiverUserName}&nbsp;</td>
<td class="td" title="${item.actDefName}">${item.actDefName}&nbsp;</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>

View 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">
查&nbsp;&nbsp;询
<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()%>&nbsp;" 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()%>&nbsp;</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()%>&nbsp; </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())%>&nbsp; </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>

View File

@@ -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;">
&nbsp;
<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;"/>&nbsp;
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>

View File

@@ -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>
&nbsp;&nbsp;姓名:<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;"/>&nbsp;</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>

View 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}" />

View 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;">
&nbsp;
<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>

View 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;">
&nbsp;
<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>

View 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">
查&nbsp;&nbsp;询
<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无法匹配数据&nbsp;&nbsp;
<input type="radio" style="margin:0px;height:10px;width: 10px" value="0" name="dataType" id="dataType" ${dataType==0?'checked':'' } onchange="changeRadio(this);"/>
正常数据&nbsp;&nbsp;</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()%>&nbsp;
</td>
<td class="td" title="<%=task.getProcTitle()%>">
<a href="javascript:void(0);" onclick="openProcessTrackPage('${ctx}','<%=task.getProcInstId()%>');">
<%=task.getProcTitle()%>&nbsp;
</a>
</td>
<td class="td" title=" <%=task.getActDefName()%>&nbsp;">
<%=task.getActDefName()%>&nbsp;
</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():""%>
<%} %>
&nbsp;</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())%>&nbsp;
</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>

View 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>

View File

@@ -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())%>) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<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>

View 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}&nbsp;</td>
<td class="td" title="${item.procTitle}&nbsp;">${item.procTitle}&nbsp;</td>
<td>${item.receiverUserName}&nbsp;</td>
<td>${item.actDefName}&nbsp;</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>

View 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>

View 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>
&nbsp;&nbsp;姓名:<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;"/>&nbsp;</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>

View 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>&nbsp;流转记录</b></h4>
</div>