/** * 流程处理的页面 * 支持批量执行任务 * 批量任务必须是同一个模板,同一个任务,并且都设置了负责人的 * 单一任务,如果下一节点没有设置负责人,需要选择负责人 */ 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('
当前任务:' + that.taskName + '
');//当前任务提示 var needSetNextUser = false; if (that.canSelectUserMap != null) { needSetNextUser = true; } if (needSetNextUser) {//TODO 有下一负责人的情况没有测试 //需要添加下一负责的时候,选项单选按钮,因为需要选择后再选择处理人 formHtmls.push('
选择处理方式:
'); formHtmls.push('
'); layui.each(that.outcomeMap, function (_index, _item) { 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('
'); 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('
'+fileHtml+'
');//附件 formHtmls.push('
已上传审批文件:
'); formHtmls.push('
') if (needSetNextUser) { formHtmls.push('
' + '
'); } else { formHtmls.push('
'); that.setRouter = false;//是否需要提示重新设置流程模板 var outcomeBtn=[],outcomeBtn2=[] layui.each(that.outcomeMap, function (_index, _item) { if (_index == 0 && _item.key == "未命名路由") { that.setRouter = true; outcomeBtn.push(''); } else if (_index == 1 && _item.key == "未命名路由" && setRouter) { $webUtil.showErrorMsg("流程模板错误!请修改流程模板!"); that.setRouter = false; return false }else if(_item.key=='同意'){ outcomeBtn.push(''); } else { outcomeBtn2.push(''); } }); if(outcomeBtn.length>0){ formHtmls.push('
'+outcomeBtn.join('')+'
'); } if(outcomeBtn2.length>0){ formHtmls.push('
'+outcomeBtn2.join('')+'
'); } 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); });