/**
* 流程处理的页面
* 支持批量执行任务
* 批量任务必须是同一个模板,同一个任务,并且都设置了负责人的
* 单一任务,如果下一节点没有设置负责人,需要选择负责人
*/
layui.define(['layer','form','table','BaseAction'],function(exports){
var ProcessExecutePanel = function(){
this.id = "vciWebProExecutePanel";
this.modelKey = "vciWebProExecutePanel";
this.taskOidInProcess = "";//任务主键
this.taskName = "";//任务名称
this.executionId = "";//执行主键
this.backPath = configData.compatibility ? path : configData.processServicePath;
this.outcomeMap = [];//所有的路由
this.canSelectUserMap = null;//下一负责人的映射
this.creator = "";//流程发起人 用于流程完毕推送消息
this.url = {
execute :'webProcessCommandController/completeTasks',//最终的执行URL
getOutcome: 'processDefineController/getOutcomes'//获取路由
}
};
ProcessExecutePanel.prototype.getContent = function(){
var that = this;
var formId = "form_" + that.id;
return '
';
};
ProcessExecutePanel.prototype.init = function() {
var that = this;
if (that.outcomeMap == null || that.outcomeMap.length == 0) {
$webUtil.showErrorMsg("没有可供执行的操作,无法执行任务");
if (that.finishListener) {
that.finishListener(false);
}
return;
}
var form = layui.form;
var formId = "form_" + that.id;
//直接添加代码,因为使用表单的添加方法不能完全达到效果
var formHtmls = [];
formHtmls.push('');
formHtmls.push('');//当前任务提示
var needSetNextUser = false;
if (that.canSelectUserMap != null) {
needSetNextUser = true;
}
if (needSetNextUser) {//TODO 有下一负责人的情况没有测试
//需要添加下一负责的时候,选项单选按钮,因为需要选择后再选择处理人
formHtmls.push('');
formHtmls.push('');
//下一负责人,只有同意的时候才有下一负责人
var nextUserData = that.canSelectUserMap[that.outcomeMap[0].key];
//需要处理一下显示的名称
if (nextUserData) {
layui.each(nextUserData, function (_userIndex, _userItem) {
if (_userItem.type == "role") {
_userItem.name = _userItem.name + "(角色)";
} else if (_userItem.type == "dept") {
_userItem.name = _userItem.name + "(部门)";
} else {
_userItem.name = "(" + _userItem.id + ")" + _userItem.name;
}
if (_userItem.secret && _userItem.secret * 1 > 0 && _userItem.secretText) {
_userItem.name += " [" + _userItem.secretText + "]";
}
if (_userItem.children && _userItem.children.length > 0) {
layui.each(_userItem.children, function (_childrenUserIndex, _childrenUserItem) {
_childrenUserItem.name = "(" + _childrenUserItem.id + ")" + _childrenUserItem.name;
if (_childrenUserItem.secret && _childrenUserItem.secret * 1 > 0 && _childrenUserItem.secretText) {
_childrenUserItem.name += " [" + _childrenUserItem.secretText + "]";
}
});
}
});
}
formHtmls.push('');
formHtmls.push('');
//当修改了处理方式的时候,同步要修改下一负责人的内容
form.on('radio(outcome)', function (data) {
var selectOutComeElem = $('select[name="nextTaskUser"]');
if (that.canSelectUserMap && that.canSelectUserMap[data.value]) {
//说明应该设置下一负责人
var referConfigString1 = JSON.stringify({
textField: 'name',
valueField: 'id',
loadType: 'all',
type: 'tree',
isMuti: false,
data: that.canSelectUserMap[data.value]
}, function (key, val) {
if (typeof val === 'function') {
return val + '';
}
return val;
});
selectOutComeElem.attr("lay-refer", referConfigString1);
selectOutComeElem.parent().parent().show();
selectOutComeElem.parent().parent().prev().show();
} else {
//不设置下一负责人,那应该隐藏
selectOutComeElem.parent().parent().hide();
selectOutComeElem.parent().parent().prev().hide();
}
});
}
formHtmls.push('');//审批意见
formHtmls.push('');
var fileHtml = '' +
'
' +
'
点击上传,或将文件拖拽到此处
' +
'
' +
'
' +
'
'+
'
![已上传图片]()
' +
'
' +
'
';
formHtmls.push('');//附件
formHtmls.push('已上传审批文件:
');
formHtmls.push('')
if (needSetNextUser) {
formHtmls.push('');
} else {
formHtmls.push('');
}
$("#" + formId).html(formHtmls.join(''));
$('#' + formId + ' [name="processOutCome"]').click(function () {
that.executeTask(needSetNextUser ? "" : $(this).html());
});
form.render();
var baseAction = layui['BaseAction'];
baseAction.renderUploadFile('#upload-drag-processFile', {
uploadfileurl: 'webProcessCommandController/uploadAuditSuggestFile',
uploadfilebackpath: configData.compatibility ? path : configData.fileServicePath
},{
taskOids:that.taskOidInProcess
},function (){
that.refresh()
})
that.initFileTable('table_profile')
$('#' + formId + '_attach .layui-upload').css({'margin-left': '0'})
form.setValues({
taskOids: that.taskOidInProcess,
taskName: that.taskName
});
};
ProcessExecutePanel.prototype.initFileTable = function(id) {
var that = this;
var table = layui.table;
table.render({
elem: '#' + id,
id: id,
url: 'processDefineController/listAuditSuggestFile',
backPath: that.backPath,
selectMode: table.selectMode.signal,
width: 250,
extraParams: {
taskOids:that.taskOidInProcess
},
cols: [[{
title: '文件名',
field: 'name',
width: 120,
templet:function (d){
return ''+d.name+''
}
}, {
title: '上传人',
field: 'creator',
width: 68
},{
field:'option',
title:'操作',
width:56,
templet:function (d){
return '下载';
}
}]],
done: function (res, cur, total) {
table.on('tool(' + id + ')',function(obj){
var data = obj.data;//当前选择行的数据
var layEvent = obj.event;//点的是什么按钮
if(layEvent == 'PREVIEW'){
//文件预览
layui.use('BaseFileDownloadAction', function () {
var vciWebFilePreview = layui['BaseFileDownloadAction'];
vciWebFilePreview.PREVIEW(data.oid,{fileOid:data.oid},function (){
$webUtil.showErrorMsg("文件预览失败,请联系管理员")
})
})
}else if(layEvent=='download'){
layui.use('BaseFileDownloadAction', function () {
var vciWebFilePreview = layui['BaseFileDownloadAction'];
vciWebFilePreview.doAction({
paramVOS: {},
id: 'download'+data.oid,
dataStore: [data]
})
})
}
});
}
});
};
ProcessExecutePanel.prototype.executeTask = function(outcome){
var that = this;
var form = layui.form;
var formId = "form_" + that.id;
if(form.validata(formId)){
//校验通过
var values = form.getValues(formId);
if($webUtil.isNull(outcome) && $webUtil.isNull(values.outcome)){
$webUtil.showErrorMsg("请必须选择处理方式");
return false;
}
if($webUtil.isNotNull(outcome) && $webUtil.isNull(values.outcome)){
values.outcome =outcome;
}
var nextTaskUser = values.nextTaskUser;
if($webUtil.isNull(nextTaskUser) && that.canSelectUserMap !=null && that.canSelectUserMap[values.outcome]){
$webUtil.showErrorMsg("请必须选择下一负责人");
return false;
}
if(that.setRouter && values.outcome =='执行'){
values.outcome = '未命名路由';
outcome = "未命名路由";
}
if("不同意"==values.outcome && $webUtil.isNull(values.note)){
$webUtil.showErrorMsg("当处理方式为不同意时,需要填写审批意见");
return false;
}
if("同意"==values.outcome && $webUtil.isNull(values.note)){
values.note = "同意";
}
var requestData = {
taskOids:values.taskOids,
outCome:($webUtil.isNotNull(outcome)?outcome:(values.outcome)),
note:values.note,
nextTaskUserIds:nextTaskUser
};
$webUtil.post(that.url.execute,requestData,function(result){
if(result.success){
if(that.finishListener){
that.finishListener(true);
}
$webUtil.showMsg("流程任务执行成功");
}else{
$webUtil.showErrorMsg(result.msg);
}
},{
},that.backPath,true);
}
};
ProcessExecutePanel.prototype.refresh=function (){
layui.table.reload('table_profile')
}
var bdp = new ProcessExecutePanel();
exports('process/vciWebProExecutePanel',bdp);
});