/**
|
* Created by weidy on 2018/5/18
|
* 发起流程
|
*/
|
layui.define(['layer','form','vciWebComboxStore'],function(exports){
|
var StartProcess = function(){
|
this.moduleKey = "vciWebStartProcess";
|
this.backPath = configData.compatibility ? path : configData.processServicePath ;//默认流程和项目的路径是一样的
|
this.url = {
|
getTemplate :'processDefineController/getTemplateByType',
|
getFavData:'wFWorkflowNodeFavController/listNodeFavByWorkflowTemplate',//收藏方案列表
|
addFav:'wFWorkflowNodeFavController/addSave',//收藏
|
editFav:'wFWorkflowNodeFavController/editSave',//编辑收藏方案
|
delFav:'wFWorkflowNodeFavController/deleteData',//删除收藏
|
getFavByOid:'wFWorkflowNodeFavController/listNodeFavItemVOBySchema',//根据方案的主键获取明细
|
getNode: 'processDefineController/getAllProcessNode',
|
startProcess:'webProcessCommandController/startProcess',
|
checkDataSecret:'webDataRightController/checkDataSecret',
|
checkAttribute:'webProcessCommandController/checkAttributesOnStartProcess'//发起流程时校验数据的属性是否符合要求
|
};
|
this.autoProcessSeparator = "_";
|
this.requiredProcessName = true;
|
this.requiredAllNode = true;//是否允许全部节点都选择
|
this.allowMutiExecuteTask = false;//是否允许批量执行任务
|
};
|
StartProcess.prototype.getContent = function(){//获取基础的html
|
return "";
|
};
|
StartProcess.prototype.init = function(){//初始化
|
var that = this;
|
$webUtil.copyConfig(that,that.moduleKey);
|
};
|
/**
|
* 显示流程的窗口
|
* @param type 流程模板所在类型,与之前的项目有区别,如果type为空自动取businessData里的第一条数据的btmname
|
* @param businessData 业务数据,可以是对象,可以是数组,但是都必须有oid和btmname属性
|
* @param options 参数
|
* isMutiProcess批量发起流程(即发起多条);
|
* beforeCheck发起之前的校验事件-不推荐使用,由发起之前校验;
|
* tableDefineCode流程执行过程中显示数据所使用的表格;
|
* autoProcessSeparator 流程名称中的分隔符
|
* autoProcessName自动流程名称;
|
* title 流程窗口的名称
|
* width 流程窗口的宽度
|
* height 流程窗口的高度
|
* canUseTemplate 可以使用的流程模板,用逗号分隔,如果为空表示所有的内容都有
|
* variablesInfo 参数信息
|
* @param callback 完成回调函数
|
* @returns {boolean}
|
*/
|
StartProcess.prototype.showStartWindow=function(type,businessData,options,callback) {
|
var that = this;
|
if (!businessData || businessData.length == 0) {
|
$webUtil.showErrorMsg("没有数据相关的信息");
|
return;
|
}
|
if (!$webUtil.isArray(businessData)) {
|
businessData = [businessData];
|
}
|
var isMutiProcess = false;
|
if (options.isMutiProcess == true && businessData.length > 1) {
|
isMutiProcess = true;
|
}
|
if ($webUtil.isNull(type)) {
|
type = businessData[0].btmname;
|
}
|
if ($webUtil.isNull(type)) {
|
$webUtil.showErrorMsg("业务数据中没有btmname属性的值");
|
return false;
|
}
|
var btmType = "";
|
var oids = [];
|
var maxSecret = -1;
|
var processName = [];
|
var isReturn = false;
|
layui.each(businessData, function (_index, _item) {
|
for (var key in _item) {
|
_item[key.toLowerCase()] = _item[key];
|
}
|
if (!_item.btmname || $webUtil.isNull(_item.btmname)) {
|
$webUtil.showErrorMsg("业务数据中没有btmname属性的值");
|
isReturn = true;
|
return;
|
} else if (!_item.oid || $webUtil.isNull(_item.oid)) {
|
$webUtil.showErrorMsg("业务数据中没有oid属性的值");
|
isReturn = true;
|
return;
|
}
|
if (_item.secretgrade || _item.secretgrade * 1 > 0) {
|
//说明是有密级的,获取最大的密级
|
var secretInThisData = _item.secretgrade * 1;
|
if (secretInThisData > maxSecret) {
|
maxSecret = secretInThisData;
|
}
|
}
|
oids.push(_item.oid);
|
if(options.processName && $webUtil.isNotNull(options.processName)){
|
processName.push(options.processName);
|
}
|
if (options.autoProcessName && $webUtil.isNotNull(options.autoProcessName)) {
|
processName.push(that.doAutoName(_item, options.autoProcessName));
|
}
|
btmType = _item.btmname;
|
});
|
if (isReturn) {
|
return false;
|
}
|
//看看是否需要校验属性
|
//checkAllowProperties:'lcstatus',
|
//checkAllowPropertiesValue:'Working'
|
if (options && (options.checkAllowAttributes|| options.checkAllowAttributeValues)) {
|
if (!options.checkAllowAttributes) {
|
options.checkAllowAttributes = 'lcstatus';//默认是校验生命周期状态
|
}
|
if ($webUtil.isNull(options.checkAllowAttributeValues)) {
|
//不校验了
|
that.doCheckSecret(maxSecret, type, btmType, oids, processName, options, isMutiProcess, callback);
|
} else {
|
$webUtil.post(options.checkAttributeUrl ? options.checkAttributeUrl : that.url.checkAttribute, {
|
oids: oids.join(","),
|
btmType: btmType,
|
uiType:options.UIType,
|
attributes: options.checkAllowAttributes,
|
attributeValues: options.checkAllowAttributeValues
|
}, function (result) {
|
if (result.success) {
|
that.doCheckSecret(maxSecret, type, btmType, oids, processName, options, isMutiProcess, callback);
|
} else {
|
$webUtil.showErrorMsg(result.msg + ',' + ((options.allowAttributesMsg)?options.allowAttributesMsg:""));
|
return false;
|
}
|
}, function (xhr, error) {
|
$webUtil.showErrorMsg("校验数据属性是否可以发起流程的时候出现了错误");
|
$webUtil.showDebugMsg(error);
|
}, that.backPath);
|
}
|
} else {
|
that.doCheckSecret(maxSecret, type, btmType, oids, processName, options, isMutiProcess, callback);
|
}
|
};
|
StartProcess.prototype.doCheckSecret = function(maxSecret,type,btmType,oids,processName,options,isMutiProcess,callback){
|
var that = this;
|
if(maxSecret> -1){
|
//说明有密级,需要先调用后台校验一下(因为密级可能不是单纯使用数值大小比较)
|
$webUtil.post(that.url.checkDataSecret,{dataSecret:maxSecret},function(result){
|
if(result.success){
|
that.gotoShowWindow(type,btmType,oids,maxSecret,processName,options,isMutiProcess,callback);
|
}else{
|
$webUtil.showErrorMsg(result.msg);
|
}
|
},function(xhr,error){
|
$webUtil.showErrorMsg("校验数据密级的时候出现了错误");
|
$webUtil.showDebugMsg(error);
|
},that.backPath);
|
}else {
|
that.gotoShowWindow(type, btmType, oids, maxSecret, processName, options, isMutiProcess, callback);
|
}
|
};
|
/**
|
* 自动构建流程名称
|
* @param _item
|
* @param autoProcessName
|
* @param separator
|
*/
|
StartProcess.prototype.doAutoName = function(_item,autoProcessName,separator){
|
var that= this;
|
var name = "";
|
if(!separator){
|
separator = that.autoProcessSeparator;
|
}
|
layui.each(autoProcessName.split(","),function(index,key){
|
key = key.toLowerCase();
|
if($webUtil.startWith(key,"${static}")){
|
name +=key.substring("${static}".length) + separator;
|
}else{
|
var value = _item[key];
|
if($webUtil.isNotNull(value)){
|
name += value + separator;
|
}
|
}
|
});
|
if($webUtil.endWith(name,separator)){
|
name = name.substring(0,name.length - separator.length);
|
}
|
return name;
|
};
|
/**
|
* 显示流程启动窗口
|
* @param type 流程分类
|
* @param oids 所有的主键数组
|
* @param maxSecret 数据中最大的密级值,如果该业务类型里没有密级字段,这个值为-1
|
* @param processName 所有的流程名称
|
* @param options 参数,与showStartWindow里的参数相同
|
* @param isMutiProcess 是否批量发起流程
|
* @param callback 完成后的回调函数
|
*/
|
StartProcess.prototype.gotoShowWindow = function(type,btmType,oids,maxSecret,processName,options,isMutiProcess,callback){
|
var that = this;
|
var form = layui.form;
|
var table = layui.table;
|
var formId = "start_process_form_" + oids[0];
|
var title = (options.title && $webUtil.isNotNull(options.title))?options.title:"启动流程";
|
var isMutiProcessAndHasName = false;//是批量发起,而且每个数据都有名称;
|
var thisProcessName = "";
|
if(isMutiProcess && processName && processName.length>0 && $webUtil.isNotNull(processName[0])){
|
thisProcessName = "批量发起流程,系统自动生成流程名称";
|
isMutiProcessAndHasName = true;
|
}else if( processName && processName.length>0 && $webUtil.isNotNull(processName[0])){
|
thisProcessName = processName[0];
|
}
|
that.loadTemplated = false;
|
var startProcessWindowIndex = layer.open({
|
type:1,
|
title:title,
|
btn:['启动流程','取消'],
|
//skin:'layui-layer-lan',
|
content:'<form id="' + formId + '" lay-filter="' + formId + '" class="layui-form" style="margin-top:5px;margin-right:5px;display: inline-block;"></form>' +
|
'<div style="display: inline-block;visibility: hidden;"><table id="table_'+formId+ '" lay-filter="table_'+formId+ '" style="overflow-x:auto;"></table></div>'+
|
'<hr class="layui-bg-red">' +
|
'<div style="padding-right: 100px;text-align: right">'+
|
'<a id="btnFav_'+formId+'" title="收藏"><i class="layui-icon layui-icon-star" style="font-size: 32px;margin-right: 10px"></i></a>'+
|
'<a id="btnclear_'+formId+'" title="清空"><i class="layui-icon layui-icon-refresh-1" style="font-size: 32px;"></i></a>'+
|
'</div>'+
|
'<form id="processNode_' + formId + '" lay-filter="processNode_' + formId + '" class="layui-form" style="margin-top:10px"></form>',
|
area:[(($webUtil.isNotNull(options.width) && options.width*1>1) ?options.width*1 : 920) +'px',
|
(($webUtil.isNotNull(options.height) && options.height*1>1) ?options.height*1 : 600) + 'px'],
|
closeBtn:1,
|
shade:true,
|
shadeClose:true,
|
resize:true,
|
resizing:function(layero){
|
form.doResize();
|
},
|
yes:function(index,layero){
|
if(form.validata(formId) && form.validata("processNode_" + formId)){
|
that.doStartProcess(formId,btmType,oids,processName,isMutiProcess,options,startProcessWindowIndex,callback);
|
}
|
},
|
btn2:function(index,layero){
|
layer.close(startProcessWindowIndex);
|
if(callback){
|
callback(false);
|
}
|
},
|
cancel:function(index,layero){
|
if(callback){
|
callback(false);
|
}
|
},
|
success:function(layero){
|
var formItems = [];
|
/*if(options.canUseTemplate){
|
var canUseTemplate=options.canUseTemplate.split(',')
|
var templateData = [];
|
layui.each(canUseTemplate,function (i,item){
|
templateData.push({"key":item,"value":item});
|
})
|
formItems = [{
|
name:'processTemplateOid',
|
text:'流程模板',
|
type:'combox',
|
data:templateData,
|
reloadCombox:true,
|
labelWidth:120,
|
textWidth:400
|
}];
|
}else{
|
formItems = [{
|
type:'combox',
|
name:'processTemplateOid',
|
text:'流程模板',
|
comboxKey:'processTemplate',
|
labelWidth:120,
|
textWidth:400,
|
reloadCombox:true,
|
extraParams:{
|
type:type,
|
filterTemplate:options.canUseTemplate
|
},
|
url:that.url.getTemplate
|
}];
|
}*/
|
formItems.push({
|
type:'combox',
|
name:'processTemplateOid',
|
text:'流程模板',
|
comboxKey:'processTemplate',
|
labelWidth:120,
|
textWidth:400,
|
reloadCombox:true,
|
extraParams:{
|
type:type,
|
filterTemplate:options.canUseTemplate
|
},
|
url:that.url.getTemplate
|
},{
|
type:'text',
|
name:'title',
|
text:'流程名称',
|
textWidth:400,
|
labelWidth:120,
|
required:that.requiredProcessName,
|
readOnly:isMutiProcessAndHasName,
|
value:thisProcessName
|
},{
|
type:'textArea',
|
name:'description',
|
text:'流程描述',
|
labelWidth:120,
|
textWidth:400
|
})
|
|
form.addItems(formId,formItems,function(elemForm){
|
//如果有多个模板的时候,需要显示模板名称的下拉框,否则直接显示节点内容
|
form.setValues({
|
title:thisProcessName
|
});
|
form.on('select(processTemplateOid)',function(data){
|
var templateOid = data.value;//是流程的主键
|
var selected = $(data.elem.options[data.elem.selectedIndex]);
|
that.currTemplateAttr=selected.data('attributes');
|
that.getProcessNode(templateOid,maxSecret,formId,function (){
|
$('#table_' + formId).parent().css({'visibility':'hidden'});
|
table.reload('table_' + formId,{
|
extraParams: {
|
templateOid: that.currTemplateAttr.deploymentId,
|
templateRevision: that.currTemplateAttr.version
|
}
|
})
|
});
|
});
|
var templateOid = options.templateOid || form.getValues(formId).processTemplateOid;
|
var selectElem=elemForm.find('select')[0];
|
that.currTemplateAttr=$(selectElem.options[selectElem.selectedIndex]).data('attributes');
|
that.getProcessNode(templateOid,maxSecret,formId,function (){
|
table.render({
|
elem: '#table_' + formId,
|
id: 'table_' + formId,
|
backPath: that.backPath,
|
url: that.url.getFavData,
|
extraParams:{
|
templateOid: that.currTemplateAttr.deploymentId,
|
templateRevision: that.currTemplateAttr.version
|
},
|
limit: Number.MAX_VALUE,
|
width: 345,
|
height:220,
|
selectMode:table.selectMode.single,
|
cols: [[{
|
title: '方案名称',
|
field: 'name',
|
width: 145,
|
edit:'text'
|
}, {
|
field: 'options',
|
title: '操作',
|
templet: function (d) {
|
return '<a class="layui-btn layui-btn-intable" lay-event="EDIT">编辑</a>' +
|
'<a class="layui-btn layui-btn-intable" lay-event="DEL">删除</a>' +
|
'<a class="layui-btn layui-btn-intable" lay-event="doStart">选择并发起</a>';
|
}
|
}]],
|
done: function (res, cur, total) {
|
that.clickTool=false;
|
$('#table_' + formId).next('.layui-table-view').css('border-width', '0').find('.layui-table-header').hide().next('.layui-table-body').height(220).find('td').css('border-color', '#ffffff');
|
$('#table_' + formId).parent().css({'visibility':'visible'})
|
if (total > 0) {
|
table.on('tool(table_' + formId + ')', function (obj) {
|
var data = obj.data;//当前选择行的数据
|
var layEvent = obj.event;//点的是什么按钮
|
if (layEvent == 'EDIT') {
|
if (form.validata("processNode_" + formId)) {
|
that.addOrEditFav(false, formId, data.oid, data.name)
|
}
|
}
|
if (layEvent == 'DEL') {
|
that.clickTool=true;
|
that.DEL(data.oid, data.ts, 'table_' + formId);
|
}
|
if (layEvent == 'doStart') {
|
that.clickTool=true;
|
if(obj.tr.hasClass('layui-table-click')){
|
if(form.validata(formId) && form.validata("processNode_" + formId)){
|
that.doStartProcess(formId,btmType,oids,processName,isMutiProcess,options,startProcessWindowIndex,callback);
|
}
|
}else{
|
that.checkedFav(data,formId,function (){
|
if(form.validata(formId) && form.validata("processNode_" + formId)){
|
that.doStartProcess(formId,btmType,oids,processName,isMutiProcess,options,startProcessWindowIndex,callback);
|
}
|
});
|
}
|
}
|
return false;
|
});
|
//监听单元格编辑
|
table.on('edit(table_' + formId + ')', function (obj) {
|
var value = obj.value //得到修改后的值
|
, data = obj.data //得到所在行所有键值
|
, field = obj.field; //得到字段
|
if ($webUtil.isNotNull(value)) {
|
$webUtil.manualAjax('put', that.url.editFav, JSON.stringify({
|
name: value,
|
oid: data.oid
|
}), function (result) {
|
if (result.success) {
|
$webUtil.showMsg("修改成功");
|
layui.table.reload('table_' + formId);
|
} else {
|
$webUtil.showErrorMsg("修改失败:" + result.msg);
|
}
|
}, function () {
|
}, that.backPath);
|
} else {
|
$(this).parent().trigger('click')
|
$webUtil.showErrorMsg("方案名称不能为空");
|
}
|
layui.stope(event)
|
});
|
table.selectRecord('table_' + formId, {index: 0});
|
} else {
|
$('#table_' + formId).next('.layui-table-view ').find('.layui-none').hide()
|
}
|
},
|
rowClick: function (thisTableFilter, record,tr) {
|
if(!that.clickTool){
|
that.checkedFav(record, formId);
|
}
|
that.clickTool=false;
|
}
|
});
|
$('#btnFav_'+formId).click(function () {
|
if (form.validata("processNode_" + formId)) {
|
that.addOrEditFav(true, formId)
|
}
|
})
|
$('#btnclear_'+formId).click(function (){
|
//alert('清空')
|
$("#processNode_" + formId).find(".layui-clear").trigger('click')
|
})
|
});
|
},{},{
|
defaultColumnOneRow:1,
|
inDialog:true
|
});
|
}
|
});
|
};
|
/**
|
* 获取流程模板上的节点
|
* @param templateOid 模板主键
|
* @param maxSecret 最大的密级
|
* @param formId 表单的id
|
*/
|
StartProcess.prototype.getProcessNode = function(templateOid,maxSecret,formId,callback){
|
var that = this;
|
if($webUtil.isNotNull(templateOid)){
|
$webUtil.post(that.url.getNode,{processOid:templateOid,maxSecret:maxSecret},function(result){
|
if(result.success){
|
that.showProcessNode(result.obj,formId,callback);
|
}else{
|
$webUtil.showErrorMsg(result.msg);
|
}
|
},function(result){},that.backPath);
|
}
|
};
|
/**
|
* 显示流程节点
|
* @param nodes 已经获取到的节点的信息
|
* @param formId 表单的主键
|
*/
|
StartProcess.prototype.showProcessNode=function(nodes,formId,callback){
|
var that = this;
|
var form = layui.form;
|
if($webUtil.isNotNull($("#processNode_" + formId).html())){
|
form.removeItems("#processNode_" + formId,[],true);//清除原有的
|
}
|
var nodeItems = [];
|
layui.each(nodes,function(_index,_item){
|
var thisNodeUsers = _item.processUserVO;
|
var referConfig={
|
textField:'name',
|
valueField:'id',
|
loadType:'all',
|
isMuti: true,
|
type:"process/vciWebUserTransferRefer"
|
}
|
if(thisNodeUsers && thisNodeUsers.length>0){
|
var roleuserData=[];
|
var deptuserData=[];
|
var userData=[];
|
layui.each(thisNodeUsers,function(_userIndex,_userItem){
|
var item=JSON.parse(JSON.stringify(_userItem))
|
item.users=_userItem.children;
|
item.children=null;
|
if(item.type == "role") {
|
roleuserData.push(item)
|
}else if(item.type == "dept") {
|
deptuserData.push(item)
|
}else if(item.type == "user"){
|
userData.push(item)
|
}
|
});
|
if(roleuserData.length>0){
|
referConfig.displayType=['roleUserData'];
|
referConfig.displayTypeTitle={roleUserData:{
|
title:'角色',
|
data:roleuserData
|
}}
|
referConfig.data=null;
|
}
|
if(deptuserData.length>0){
|
if(referConfig.displayType){
|
referConfig.displayType.push('departUserData');
|
referConfig.displayTypeTitle.departUserData={
|
title:'部门',
|
data:deptuserData
|
}
|
}else {
|
referConfig.displayType=['departUserData'];
|
referConfig.displayTypeTitle={departUserData:{
|
title:'部门',
|
data:deptuserData
|
}}
|
}
|
referConfig.data=null;
|
}
|
if(userData.length>0){
|
if(roleuserData.length>0 || deptuserData.length>0){
|
referConfig.displayType.push('usersData');
|
referConfig.displayTypeTitle.usersData={
|
title:'指定用户',
|
data:userData
|
}
|
referConfig.data=null;
|
}else{
|
referConfig.displayType=[]
|
referConfig.data=userData
|
}
|
|
}
|
}else{
|
//没有定义用户信息,显示全部用户
|
referConfig.displayType=['roleUser','departUser'];
|
referConfig.displayTypeTitle={
|
roleUser:{
|
title:'角色',
|
url:'roleQueryController/refTree',
|
queryField:'pkRole',
|
queryUserUrl:'userQueryController/refDataGridByPkRole'
|
},
|
departUser:{
|
title:'部门',
|
url:'departmentQueryController/refTree',
|
queryField:'pkDepartment',
|
queryUserUrl:'userQueryController/refDataGridByPkDepartment'
|
}
|
}
|
}
|
nodeItems.push({
|
type: 'refer',
|
name: _item.name,
|
text: _item.name,
|
showField: _item.name +'name',
|
textWidth: 730,
|
labelWidth:120,
|
required:that.requiredAllNode,
|
referConfig:referConfig,
|
readOnly: (_index==0?true:false)
|
});
|
});
|
form.addItems("processNode_" + formId,nodeItems,function(){
|
var firstNodeName = nodes[0].name;
|
var values = {};
|
values[firstNodeName] = $webUtil.getSystemVar($webUtil.systemValueKey.userId);
|
var userSecretText=$webUtil.getSystemVar($webUtil.systemValueKey.userSecretText)
|
values[firstNodeName + "name"] = $webUtil.getSystemVar($webUtil.systemValueKey.userName)+(userSecretText?("["+ userSecretText+"]"):'') ;
|
form.setValues(values,"processNode_" + formId);
|
//form.on('select(processNode_' + formId + ')',function(data){ });
|
if(callback){
|
callback();
|
}
|
},{},{
|
defaultColumnOneRow:1,
|
inDialog:true
|
});
|
};
|
/**
|
* 校验通过后,发起流程
|
* @param formId
|
* @param startProcessWindowIndex
|
* @param callback
|
*/
|
StartProcess.prototype.doStartProcess = function(formId,btmType,oids,processName,isMutiProcess,options,startProcessWindowIndex,callback){
|
var that = this;
|
var layer = layui.layer;
|
var form = layui.form;
|
//从下拉菜单中去找部署的信息
|
var formValues = form.getValues(formId);
|
var nodeValues = form.getValues("processNode_" + formId);
|
var processTemplateOid = formValues['processTemplateOid'];
|
var deployid = "";
|
var allTemplateAttr = $("[lay-combox='processTemplate']").data('processTemplate');
|
if(allTemplateAttr && allTemplateAttr.length > 0){
|
layui.each(allTemplateAttr,function(_index,_item){
|
if(_item.key == processTemplateOid){
|
deployid = _item.attributes.deploymentId;
|
return;
|
}
|
});
|
}
|
if($webUtil.isNotNull(deployid)){
|
if(isMutiProcess){
|
//批量发起流程
|
var finishCount = 0;
|
layui.each(oids,function(_oidIndex,_oid){
|
var startData = {
|
deployId :deployid,
|
title:processName.length >_oidIndex ? processName[_oidIndex]:"",
|
description:formValues.description,
|
btmType:btmType,
|
uiType:options.UIType||btmType,
|
oids:_oid,
|
tableDefineCode:options.tableDefineCode,
|
detailInfoUrl:options.detailUrl,
|
content:options.content,
|
startStatus:options.startStatus,
|
resetStatus:options.resetStatus,
|
releaseRemoteMethod: options.releaseRemoteMethod,
|
resetRemoteMethod:options.resetRemoteMethod,
|
alwaysDisplayNext:options.alwaysDisplayNext
|
};
|
if(options.otherParam){
|
$.extend(startData,options.otherParam)
|
}
|
for(var key in nodeValues){
|
var tempObj = {};
|
startData[ "nodeUsers['" + key + "']"] = nodeValues[key];
|
}
|
if(options.variablesInfo){
|
for(var key in options.variablesInfo){
|
var tempObj = {};
|
startData[ "data['" + key + "']"] = options.variablesInfo[key];
|
}
|
}
|
$webUtil.post(that.url.startProcess,startData,function(result){
|
if(result.success){
|
finishCount ++;
|
if(finishCount == oids.size()){
|
$webUtil.showMsg("批量发起流程全部完成,共发起了" + finishCount + "个流程");
|
layer.close(startProcessWindowIndex);
|
if(callback){
|
callback(true);
|
}
|
}
|
}else{
|
$webUtil.showErrorMsg("发起失败:" + result.msg);
|
/*layer.close(startProcessWindowIndex);
|
if(callback){
|
callback(false);
|
}*/
|
}
|
},function(){},that.backPath,true);
|
});
|
}else{
|
var startData = {
|
deployId :deployid,
|
title:formValues.title,
|
description:formValues.description,
|
btmType:btmType,
|
uiType:options.UIType||btmType,
|
oids:oids.join(","),
|
tableDefineCode:options.tableDefineCode,
|
detailInfoUrl:options.detailUrl,
|
content:options.content,
|
startStatus:options.startStatus,
|
resetStatus:options.resetStatus,
|
releaseRemoteMethod: options.releaseRemoteMethod,
|
resetRemoteMethod:options.resetRemoteMethod,
|
alwaysDisplayNext:options.alwaysDisplayNext
|
};
|
if(options.otherParam){
|
$.extend(startData,options.otherParam)
|
}
|
for(var key in nodeValues){
|
var tempObj = {};
|
startData[ "nodeUsers['" + key + "']"] = nodeValues[key];
|
}
|
if(options.variablesInfo){
|
for(var key in options.variablesInfo){
|
var tempObj = {};
|
startData[ "data['" + key + "']"] = options.variablesInfo[key];
|
}
|
}
|
$webUtil.post(that.url.startProcess,startData,function(result){
|
if(result.success){
|
$webUtil.showMsg(formValues.title + "发起成功");
|
layer.close(startProcessWindowIndex);
|
if(callback){
|
callback(true);
|
}
|
}else{
|
$webUtil.showErrorMsg(formValues.title + "发起失败:" + result.msg);
|
/*layer.close(startProcessWindowIndex);
|
if(callback){
|
callback(false);
|
}*/
|
}
|
},function(){},that.backPath,true);
|
}
|
|
}else{
|
$webUtil.showErrorMsg("数据错误,没有获取到流程模板的部署主键");
|
}
|
};
|
|
/**
|
* 新增修改收藏方案
|
* @param formId
|
*/
|
StartProcess.prototype.addOrEditFav = function(isAdd,formId,FavOid,FavName){
|
var that=this;
|
var form=layui.form;
|
var table=layui.table;
|
var formValues = form.getValues(formId);
|
var nodeValues = form.getValues("processNode_" + formId);
|
var processTemplateOid = formValues['processTemplateOid'];
|
var deployid = "";
|
var allTemplateAttr = $("[lay-combox='processTemplate']").data('processTemplate');
|
if(allTemplateAttr && allTemplateAttr.length > 0){
|
layui.each(allTemplateAttr,function(_index,_item){
|
if(_item.key == processTemplateOid){
|
deployid = _item.attributes.deploymentId;
|
return;
|
}
|
});
|
}
|
if($webUtil.isNotNull(deployid)) {
|
var FavIndex = layer.open({
|
type: 1,
|
title: isAdd?'新增收藏方案':'修改收藏方案',
|
btn: ['保存', '取消'],
|
content: '<form id="Favform_'+ formId+'" lay-filter="Favform_'+formId+ '" class="layui-form" style="margin-top:25px" ></form>',
|
area: ['400px', '200px'],
|
closeBtn: 1,
|
shade: true,
|
shadeClose: true,
|
success: function (layero) {
|
form.addItems('Favform_'+formId, [{
|
field: 'name',
|
text: '方案名称',
|
type:'text',
|
defaultValue: FavName,
|
required:true
|
}])
|
},
|
yes: function (layero) {
|
if (form.validata('Favform_' + formId) ) {
|
var FavName = form.getValues('Favform_' + formId, true).name;
|
var hasName=false;
|
var items=[];
|
$.each(nodeValues,function (i,_item) {
|
if (i.indexOf('name') > -1) {
|
items.push({
|
name: i.replace('name', ''),
|
nodeUserIds: nodeValues[i.replace('name', '')],
|
nodeUserNames: _item
|
})
|
}
|
})
|
var favData = {
|
name: FavName,
|
id: deployid,
|
description: '',
|
wfTemplateName: that.currTemplateAttr.name,
|
wfTemplateRev:that.currTemplateAttr.version,
|
items: items
|
};
|
if(isAdd){
|
var Favlist=table.getData('table_' + formId);
|
layui.each(Favlist,function (index,item){
|
if(item.name==FavName){
|
hasName=true;
|
return ;
|
}
|
})
|
}else{
|
favData = {
|
name: FavName,
|
oid:FavOid
|
}
|
}
|
if(!hasName) {
|
$webUtil.manualAjax(isAdd ? 'post' : 'put', isAdd ? that.url.addFav : that.url.editFav, JSON.stringify(favData), function (result) {
|
if (result.success) {
|
$webUtil.showMsg(isAdd ?"收藏成功":'修改成功');
|
layer.close(FavIndex);
|
layui.table.reload('table_' + formId);
|
} else {
|
$webUtil.showErrorMsg((isAdd ?"收藏失败:":'修改失败:') + result.msg);
|
}
|
}, function () {
|
}, that.backPath);
|
}else {
|
$webUtil.showConfirmMsg('该名称已有方案,是否覆盖',function (r) {
|
if(r){
|
hasName=false;
|
$webUtil.manualAjax(isAdd ? 'post' : 'put', isAdd ? that.url.addFav : that.url.editFav, JSON.stringify(favData), function (result) {
|
if (result.success) {
|
$webUtil.showMsg(isAdd ?"收藏成功":'修改成功');
|
layer.close(FavIndex);
|
layui.table.reload('table_' + formId);
|
} else {
|
$webUtil.showErrorMsg((isAdd ?"收藏失败:":'修改失败:') + result.msg);
|
}
|
}, function () {
|
}, that.backPath);
|
}
|
});
|
}
|
}
|
},
|
btn2: function (layero) {
|
layer.close(FavIndex)
|
}
|
});
|
}
|
}
|
|
//删除收藏方案
|
StartProcess.prototype.DEL= function(FavOid,ts,tableid){
|
var that = this;
|
$webUtil.showConfirmMsg("是否删除这个方案?",function () {
|
$webUtil.deleteRequest(that.url.delFav, {oid:FavOid,TS:ts},function(result){
|
if(result.success){
|
$webUtil.showMsgFromResult(result,"删除成功");
|
layui.table.reload(tableid);
|
}else{
|
$webUtil.showErrorMsg(result.msg);
|
}
|
},function (xhr,err) {
|
$webUtil.showErrorMsg("执行删除的时候出错了错误,可能是服务器暂时无法访问");
|
},that.backPath);
|
});
|
};
|
|
//选中方案
|
StartProcess.prototype.checkedFav= function(data,formId,callback){
|
var that = this;
|
$webUtil.get(that.url.getFavByOid,{schemaOid:data.oid},function(result){
|
if(result.success){
|
var nodes= layui.form.getFormItems("processNode_" + formId);
|
var values={};
|
layui.each(nodes,function(_index,_item) {
|
for(var i=0;i<result.obj.length;i++){
|
if(_item.text==result.obj[i].name){
|
values[_item.name]=result.obj[i].nodeUserIds;
|
values[_item.showField]=result.obj[i].nodeUserNames;
|
/*if(result.obj[i].nodeUserNames.indexOf(',')>-1){
|
values[_item.showField]=''
|
for(var nIndex=0;nIndex<result.obj[i].nodeUserNames.split(',').length;nIndex++){
|
values[_item.showField]+=','+result.obj[i].nodeUserIds.split(',')[nIndex]+' '+result.obj[i].nodeUserNames.split(',')[nIndex]
|
}
|
values[_item.showField]=values[_item.showField].replace(',','');
|
}else{
|
values[_item.showField]=result.obj[i].nodeUserIds+' '+result.obj[i].nodeUserNames;
|
}*/
|
|
result.obj.remove(result.obj[i]);
|
return;
|
}
|
}
|
})
|
layui.form.setValues(values,"processNode_" + formId);
|
if(callback){
|
callback()
|
}
|
}else{
|
$webUtil.showErrorMsg(result.msg);
|
}
|
},function(result){},that.backPath);
|
};
|
var sp = new StartProcess();
|
exports("process/vciWebStartProcess",sp);
|
});
|