455 lines
16 KiB
JavaScript
455 lines
16 KiB
JavaScript
/*options流程附加信息显示标示
|
||
pid_流程实例id
|
||
pdid_流程定义id*/
|
||
function graphTrace(pid_,pdid_,taskid_) {
|
||
//alert(pdid_);
|
||
var _defaults = {
|
||
srcEle: this,
|
||
pid: pid_,//$(this).attr('pid'),
|
||
pdid: pdid_,// $(this).attr('pdid')
|
||
taskid: taskid_// $(this).attr('pdid')
|
||
};
|
||
var opts = $.extend(true, _defaults);
|
||
// 获取图片资源,如果流程实例id不为空,根据实例id调用资源显示;若为空则调用流程定义资源显示
|
||
if(opts.pid!=""){
|
||
var imageUrl = ext.contextPath + "/activiti/workflow/resource/process-instance.do?pid=" + opts.pid + "&type=image";
|
||
$.post(ext.contextPath + '/activiti/workflow/processDefinition/trace.do?pdid=' + opts.pdid, function(result) {
|
||
// 生成图片
|
||
$.getJSON(ext.contextPath + '/activiti/workflow/process/trace.do?pid=' + opts.pid+'&taskId='+opts.taskid, function(infos) {
|
||
var positionHtml = "";
|
||
var toppx=60;
|
||
var leftpx=8;
|
||
//console.info("trace返回结果",infos)
|
||
// 生成图片
|
||
var varsArray = new Array();
|
||
$.each(infos, function(i, v) {
|
||
//console.info("第"+i+"个节点",v)
|
||
var $positionDiv = $('<div/>', {
|
||
'class': 'activity-attr'
|
||
}).css({
|
||
position: 'absolute',
|
||
left: (v.x + leftpx-1),
|
||
top: (v.y + toppx-1),
|
||
width: (v.width - 2),
|
||
height: (v.height - 2),
|
||
backgroundColor: 'black',
|
||
opacity: 0
|
||
});
|
||
// alert("节点边框");
|
||
// 节点边框
|
||
var $border = $('<div/>', {
|
||
'class': 'activity-attr-border'
|
||
}).css({
|
||
position: 'absolute',
|
||
left: (v.x+leftpx),
|
||
top: (v.y+toppx),
|
||
width: (v.width ),
|
||
height: (v.height ),
|
||
});
|
||
|
||
if (v.currentActiviti) {
|
||
console.log("当前节点",v)
|
||
$border.addClass('ui-corner-all-12').css({
|
||
border: '3px solid red'
|
||
});
|
||
|
||
}
|
||
// alert($positionDiv.prop('outerHTML'));
|
||
positionHtml += $positionDiv.prop('outerHTML') + $border.prop('outerHTML');
|
||
|
||
varsArray[varsArray.length] = v.vars;
|
||
|
||
});
|
||
$('#traceDiv').html(result);
|
||
if ($('#workflowTraceDialog').length == 0) {
|
||
$('<div/>', {
|
||
id: 'workflowTraceDialog',
|
||
title: '查看流程',
|
||
html: "<div style='position:relative'><img style='margin:" + toppx + "px 0 0 "+ leftpx + "px' src='" + imageUrl + "' />" +
|
||
"<div id='processImageBorder' style='position:absolute; left:0px; top:0px;'>" +
|
||
positionHtml +
|
||
"</div>" +
|
||
"</div>"
|
||
}).appendTo('#trace_body');
|
||
} else {
|
||
$('#workflowTraceDialog img').attr('src', imageUrl);
|
||
$('#workflowTraceDialog #processImageBorder').html(positionHtml);
|
||
}
|
||
// 设置每个节点的data
|
||
$('#workflowTraceDialog .activity-attr').each(function(i, v) {
|
||
$(this).data('vars', varsArray[i]);
|
||
});
|
||
// 打开对话框
|
||
openModal('traceModal');
|
||
});
|
||
|
||
/* $('#workflowTraceDialog').dialog({
|
||
modal: true,
|
||
resizable: true,
|
||
dragable: false,
|
||
open: function() {
|
||
$('#workflowTraceDialog').dialog('option', 'title', '查看流程()<button id="changeImg">如果坐标错乱请点击这里</button><button id="diagram-viewer">Diagram-Viewer</button>');
|
||
$('#workflowTraceDialog').css('padding', '0.2em');
|
||
$('#workflowTraceDialog .ui-accordion-content').css('padding', '0.2em').height($('#workflowTraceDialog').height() - 75);
|
||
|
||
// 此处用于显示每个节点的信息,如果不需要可以删除
|
||
$('.activity-attr').qtip({
|
||
content: function() {
|
||
var vars = $(this).data('vars');
|
||
var tipContent = "<table class='need-border'>";
|
||
$.each(vars, function(varKey, varValue) {
|
||
if (varValue) {
|
||
tipContent += "<tr><td class='label'>" + varKey + "</td><td>" + varValue + "<td/></tr>";
|
||
}
|
||
});
|
||
tipContent += "</table>";
|
||
return tipContent;
|
||
},
|
||
position: {
|
||
at: 'bottom left',
|
||
adjust: {
|
||
x: 3
|
||
}
|
||
}
|
||
});
|
||
// end qtip
|
||
},
|
||
close: function() {
|
||
$('#workflowTraceDialog').remove();
|
||
},
|
||
width: document.documentElement.clientWidth * 0.95,
|
||
height: document.documentElement.clientHeight * 0.95
|
||
});*/
|
||
|
||
});
|
||
}else{
|
||
//调用流程定义资源显示
|
||
var imageUrl = ext.contextPath + "/activiti/workflow/resource/read.do?processDefinitionId=" + opts.pdid + "&resourceType=image";
|
||
var positionHtml = "";
|
||
var toppx=60;
|
||
var leftpx=8;
|
||
$.post(ext.contextPath + '/activiti/workflow/processDefinition/trace.do?pdid=' + opts.pdid, function(result) {
|
||
// 生成图片
|
||
$('#traceDiv').html(result);
|
||
if ($('#workflowTraceDialog').length == 0) {
|
||
$('<div/>', {
|
||
id: 'workflowTraceDialog',
|
||
title: '查看流程',
|
||
html: "<div><img style='overflow:scroll;margin:" + toppx + "px 0 0 "+ leftpx + "px' src='" + imageUrl + "'/>" +
|
||
"</div>"
|
||
}).appendTo('#trace_body');
|
||
} else {
|
||
$('#workflowTraceDialog img').attr('src', imageUrl);
|
||
}
|
||
openModal('traceModal');
|
||
});
|
||
}
|
||
|
||
}
|
||
/**
|
||
* @fn(routeNum) 回调函数,routeNum为选择的路径编号
|
||
* @taskId 当前任务实例id
|
||
* @passFlag true表示通过,false表示不通过
|
||
*/
|
||
var processExecute=function(fn,taskId,passFlag){
|
||
$.post(ext.contextPath + "/activiti/workflow/getRoutesForSelect.do", {taskId:taskId,passFlag:passFlag}, function(data) {
|
||
var actRouteNum=0;//除退回后的有效路径数
|
||
$.each(data,function(index,item){
|
||
//routeNum为0表示退回
|
||
if(item.routeNum>0){
|
||
actRouteNum++;
|
||
}
|
||
});
|
||
if( actRouteNum>1){
|
||
console.info(actRouteNum)
|
||
var buttons={
|
||
cancel: {
|
||
text: "取消",
|
||
value: null,
|
||
visible: true,
|
||
className: "btn btn-default btn-sm",
|
||
closeModal: true,
|
||
}
|
||
};
|
||
var text ="";
|
||
var btn_style="";
|
||
if(passFlag){
|
||
text="系统检测到当前任务存在多个分支走向,请选择您要提交至下一步节点";
|
||
btn_style="btn-info";
|
||
}else{
|
||
text="系统检测到当前任务存在多个驳回分支,请选择您要驳回至下一步节点";
|
||
btn_style="btn-danger";
|
||
}
|
||
$.each(data,function(index,item){
|
||
//routeNum为0表示退回
|
||
if(item.routeNum>0){
|
||
buttons["item"+index]={};
|
||
buttons["item"+index].text=item.name;
|
||
buttons["item"+index].value=item.routeNum;
|
||
buttons["item"+index].className="btn "+btn_style+" btn-sm";
|
||
buttons["item"+index].closeModal=true;
|
||
}
|
||
});
|
||
console.info(buttons)
|
||
|
||
swal({
|
||
text: text,
|
||
buttons: buttons
|
||
})
|
||
.then(function(value) {
|
||
fn(value);
|
||
});
|
||
}else{
|
||
fn(-1);
|
||
}
|
||
|
||
|
||
},'json');
|
||
|
||
}
|
||
/**
|
||
* 审核界面--流程选择节点,
|
||
*/
|
||
var processSelectNode = function(taskId){
|
||
//初始化路线选择
|
||
let routeNumSelect2 = $("#routeNum").select2({
|
||
placeholder:'请选择',//默认文字提示
|
||
language: "zh-CN",
|
||
minimumResultsForSearch: -1,//禁用搜索框
|
||
});
|
||
|
||
//驳回意见初始化隐藏
|
||
// $("#reject").hide();
|
||
//初始化审核意见,通过(true)或驳回(false)
|
||
var selectResult = $("#passstatus").select2({
|
||
placeholder:'请选择',//默认文字提示
|
||
minimumResultsForSearch: -1,//禁用搜索框
|
||
});
|
||
selectResult.on('change',function(){
|
||
var passFlag= $(this).val();
|
||
|
||
//驳回时显示驳回原因,通过时隐藏
|
||
// if(passFlag == 'false'){
|
||
// $("#reject").show();
|
||
// }else{
|
||
// $("#reject").hide();
|
||
// }
|
||
|
||
//选择下一节点,先选择审核结果,再选择节点
|
||
$.post(ext.contextPath + "/activiti/workflow/getRoutesForSelect2.do", {taskId:taskId,passFlag:passFlag}, function(data) {
|
||
$("#routeNum").empty();
|
||
var selelct = $("#routeNum").select2({
|
||
data: data,
|
||
placeholder:'请先选择审核结果',//默认文字提示
|
||
allowClear: false,//允许清空
|
||
escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入
|
||
language: "zh-CN",
|
||
minimumInputLength: 0,
|
||
minimumResultsForSearch: -1,//禁用搜索框
|
||
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
|
||
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
|
||
});
|
||
selelct.val(data[0].id).trigger("change");
|
||
//流程结束,不用选择人员
|
||
if(data[0].text == "结束流程"){
|
||
$("#selectUsers").hide();
|
||
}
|
||
selelct.on('change',function(){
|
||
var routeName = $("#routeNum").find("option:selected").text();
|
||
if(routeName == "结束流程"){
|
||
$("#selectUsers").hide();
|
||
}else{
|
||
$("#selectUsers").show();
|
||
}
|
||
})
|
||
},'json');
|
||
})
|
||
selectResult.val('').trigger("change");
|
||
|
||
//初始化审批人
|
||
var selectResultUser = $("#routeNum").select2({
|
||
placeholder:'请选择',//默认文字提示
|
||
minimumResultsForSearch: -1,//禁用搜索框
|
||
});
|
||
selectResultUser.on('change',function(){
|
||
|
||
var data1 = $("#routeNum").select2("data");
|
||
var targetusers="";
|
||
var targetUsersName="";
|
||
var resourceId= data1[0].resourceId;
|
||
var modelKEY = data1[0].modelKEY;
|
||
//选择下一节点,先选择审核结果,再选择节点,得到下一节点审批人
|
||
$.post(ext.contextPath + "/activiti/workflow/getTargetUsers4Node.do", {resourceId:resourceId,modelKEY:modelKEY}, function(data) {
|
||
$("#targetusers").empty();
|
||
$("#targetUsersName").empty();
|
||
if(data !=null && data.length>0){
|
||
for(var i=0;i<data.length;i++){
|
||
targetusers =targetusers+data[i].id+",";
|
||
targetUsersName =targetUsersName+data[i].caption+",";
|
||
}
|
||
if(targetusers.length>0){
|
||
targetusers = targetusers.substring(0, targetusers.length-1);
|
||
}
|
||
if(targetUsersName.length>0){
|
||
targetUsersName = targetUsersName.substring(0, targetUsersName.length-1);
|
||
}
|
||
//填写默认审批人
|
||
//$("#targetusers").val(targetusers);
|
||
//$("#targetUsersName").val(targetUsersName);
|
||
}
|
||
},'json');
|
||
|
||
//得到下一节点审批职位
|
||
var targetjobs="";
|
||
$.post(ext.contextPath + "/activiti/workflow/getTargetJobs4Node.do", {resourceId:resourceId,modelKEY:modelKEY}, function(data) {
|
||
$("#targetjobs").empty();
|
||
if(data !=null && data.length>0){
|
||
for(var i=0;i<data.length;i++){
|
||
var joblist = data[i].jobId;
|
||
targetjobs +=data[i].jobId+",";
|
||
}
|
||
if(targetjobs.length>0){
|
||
targetjobs = targetjobs.substring(0, targetjobs.length-1);
|
||
}
|
||
//console.info("targetjobs:"+targetjobs);
|
||
//填写默认审批人
|
||
//$("#targetusers").val(targetusers);
|
||
//$("#targetUsersName").val(targetUsersName);
|
||
|
||
}
|
||
$("#targetjobs").val(targetjobs);
|
||
},'json');
|
||
})
|
||
selectResult.val('').trigger("change");
|
||
}
|
||
/**
|
||
* 处理界面--流程选择节点,
|
||
*/
|
||
var processSelectNodeForHandle = function(taskId){
|
||
//驳回意见初始化隐藏
|
||
// $("#reject").hide();
|
||
//初始化审核意见,通过(true)或驳回(false)
|
||
var selectResult = $("#passstatus").select2({
|
||
placeholder:'请选择',//默认文字提示
|
||
minimumResultsForSearch: -1,//禁用搜索框
|
||
});
|
||
selectResult.on('change',function(){
|
||
var passFlag= $(this).val();
|
||
|
||
//驳回时显示驳回原因,通过时隐藏
|
||
// if(passFlag == 'false'){
|
||
// $("#reject").show();
|
||
// }else{
|
||
// $("#reject").hide();
|
||
// }
|
||
|
||
//选择下一节点,先选择审核结果,再选择节点
|
||
$.post(ext.contextPath + "/activiti/workflow/getRoutesForSelect2.do", {taskId:taskId,passFlag:passFlag}, function(data) {
|
||
$("#routeNum").empty();
|
||
var selelct = $("#routeNum").select2({
|
||
data: data,
|
||
placeholder:'请先选择审核结果',//默认文字提示
|
||
allowClear: false,//允许清空
|
||
escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入
|
||
language: "zh-CN",
|
||
minimumInputLength: 0,
|
||
minimumResultsForSearch: -1,//禁用搜索框
|
||
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
|
||
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
|
||
});
|
||
selelct.val(data[0].id).trigger("change");
|
||
//流程结束,不用选择人员
|
||
if(data[0].text == "结束流程"){
|
||
$("#selectUsers").hide();
|
||
}
|
||
selelct.on('change',function(){
|
||
var routeName = $("#routeNum").find("option:selected").text();
|
||
if(routeName == "结束流程"){
|
||
$("#selectUsers").hide();
|
||
}else{
|
||
$("#selectUsers").show();
|
||
}
|
||
})
|
||
},'json');
|
||
})
|
||
selectResult.val('').trigger("change");
|
||
$.post(ext.contextPath + "/activiti/workflow/getRoutesForSelect2.do", {taskId:taskId,passFlag:true}, function(data) {
|
||
var selelct = $("#routeNum").select2({
|
||
data: data,
|
||
placeholder:'请先选择审核结果',//默认文字提示
|
||
allowClear: false,//允许清空
|
||
escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入
|
||
language: "zh-CN",
|
||
minimumInputLength: 0,
|
||
minimumResultsForSearch: -1,//禁用搜索框
|
||
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
|
||
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
|
||
});
|
||
selelct.val(data[0].id).trigger("change");
|
||
//流程结束,不用选择人员
|
||
if(data[0].text == "结束流程"){
|
||
$("#selectUsers").hide();
|
||
}
|
||
selelct.on('change',function(){
|
||
var routeName = $("#routeNum").find("option:selected").text();
|
||
if(routeName == "结束流程"){
|
||
$("#selectUsers").hide();
|
||
}else{
|
||
$("#selectUsers").show();
|
||
}
|
||
})
|
||
},'json');
|
||
//初始化审批人
|
||
var selectResultUser = $("#routeNum").select2({
|
||
placeholder:'请选择',//默认文字提示
|
||
minimumResultsForSearch: -1,//禁用搜索框
|
||
});
|
||
selectResultUser.on('change',function(){
|
||
|
||
var data1 = $("#routeNum").select2("data");
|
||
var targetusers="";
|
||
var targetUsersName="";
|
||
var resourceId= data1[0].resourceId;
|
||
var modelKEY = data1[0].modelKEY;
|
||
//选择下一节点,先选择审核结果,再选择节点,得到下一节点审批人
|
||
$.post(ext.contextPath + "/activiti/workflow/getTargetUsers4Node.do", {resourceId:resourceId,modelKEY:modelKEY}, function(data) {
|
||
$("#targetusers").empty();
|
||
$("#targetUsersName").empty();
|
||
if(data !=null && data.length>0){
|
||
for(var i=0;i<data.length;i++){
|
||
targetusers =targetusers+data[i].id+",";
|
||
targetUsersName =targetUsersName+data[i].caption+",";
|
||
}
|
||
if(targetusers.length>0){
|
||
targetusers = targetusers.substring(0, targetusers.length-1);
|
||
}
|
||
if(targetUsersName.length>0){
|
||
targetUsersName = targetUsersName.substring(0, targetUsersName.length-1);
|
||
}
|
||
//填写默认审批人
|
||
//$("#targetusers").val(targetusers);
|
||
//$("#targetUsersName").val(targetUsersName);
|
||
}
|
||
},'json');
|
||
|
||
//得到下一节点审批职位
|
||
var targetjobs="";
|
||
$.post(ext.contextPath + "/activiti/workflow/getTargetJobs4Node.do", {resourceId:resourceId,modelKEY:modelKEY}, function(data) {
|
||
$("#targetjobs").empty();
|
||
if(data !=null && data.length>0){
|
||
for(var i=0;i<data.length;i++){
|
||
var joblist = data[i].jobId;
|
||
targetjobs +=data[i].jobId+",";
|
||
}
|
||
if(targetjobs.length>0){
|
||
targetjobs = targetjobs.substring(0, targetjobs.length-1);
|
||
}
|
||
//填写默认审批人
|
||
//$("#targetusers").val(targetusers);
|
||
//$("#targetUsersName").val(targetUsersName);
|
||
}
|
||
$("#targetjobs").val(targetjobs);
|
||
},'json');
|
||
})
|
||
}
|