/** * 流程模板参照的基础页面 * @author weidy * @date 2022-2-18 */ layui.define(['layer','element','form','table'],function(exports){ var Class = function(){ this.MODELNAME = "refer/WfProcessTemplateRefer"; this.moduleKey = "WfProcessTemplateRefer"; this.backPath = (configData.compatibility?path:configData.processServicePath); this.displayType = { processClassify:'processClassify' }; this.displayTypeTitle = { processClassify: { title: '流程模板分类', url: 'processDefineController/referTreeProcessClassify', queryField: 'processClassifyId', queryUserUrl: 'processDefineController/referGridProcessTemplate' } }; this.defaultConfig = { displayType:[this.displayType.processClassify], textField:'name', valueField:'oid' }; this.showReferDialog = function (referConfig){ var filter = referConfig.filter, name = referConfig.name, title = referConfig.title, target = referConfig.target, value = referConfig.value, text = referConfig.text; var options = referConfig.options; var baseOptions = {}; for(var key in options){ baseOptions[key] = options[key]; } baseOptions.filter = filter; baseOptions.name = name; baseOptions.value = value; baseOptions.text = text; baseOptions.title = title; baseOptions.favUser = false; //displayType默认是部门,角色。不需要设置,因为里面会自动设置 baseOptions.setValue = function (filter,name,value,rawValue,isClose,selectRecords){ target.setValue(filter,name,value,rawValue,isClose,selectRecords); } this.viewUserInDialog(baseOptions); } /** * 直接显示选择的对话框,这个经常在点击按钮后的功能里使用 * @param options 配置的信息,包含如下属性 * filter ,标识 * name ,标识名称 * displayType:显示选项卡,[processTemplate.displayType.processClassify], * setValue:function (filter,name,value,rawValue,isClose,allSelectValues) {} 设置值的回调 * @returns 窗口的索引号 */ this.viewUserInDialog = function (options) { //在对话框中选择用户 var that = this; options = $.extend(that.defaultConfig,options); options.userUrl = $webUtil.getValueFromObj(options,['url','referUrl'],that.displayTypeTitle.processClassify.queryUserUrl); options.textField = $webUtil.getValueFromObj(options,['textField'],that.defaultConfig.textField); options.valueField = $webUtil.getValueFromObj(options,['valueField'],that.defaultConfig.valueField); var filter = options.filter; var name = options.name; var valueInfo = ($webUtil.isNotNull(options.text)?("已设置的值为[" +options.text +"]"):'未设置值'); var referIndex = $webUtil.dialog({ title:(options.title?options.title:'请选择流程模板'), btn:['确定','取消'], content:'
', area:[(($webUtil.isNotNull(options.width) && options.width*1>1) ?options.width*1 : 1050) +'px', (($webUtil.isNotNull(options.height) && options.height*1>1) ?options.height*1 : 670) + 'px'], btnBefore:valueInfo, yes:function(index,layero){ var selectValue = that.getSelectValue(filter,name); if(selectValue){ options.setValue(filter,name,selectValue.value,selectValue.rawValue,true,selectValue.allValues); layer.close(referIndex); } }, success:function(layero){ that.showGrid(filter,name,options); } }); return referIndex; }; this.setConfig=function(filter,name,options){ var that = this; if(!that.referConfig){ that.referConfig = {}; } that.referConfig[filter + "_" + name] = options; }; this.getConfig=function(filter,name){ var that = this; if(!that.referConfig){ that.referConfig = {}; } if((filter + "_" + name) in that.referConfig){ return that.referConfig[filter + "_" + name]; } }; this.showGrid =function (filter,name,options) { //显示 var that = this; that.setConfig(filter,name,options); var contentFilter = filter + "_" + name; var typeHtml=['
', '
', ''); typeHtml.push('
'); typeHtml.push(tabContentHtml.join('')); typeHtml.push( '
'); typeHtml.push( '
'); typeHtml.push('
'); var content= [ '
', typeHtml.join(''), //'
', '
', '
',//主列表的按钮 '
', '
', '
',//主列表 '
', '
', ]; $("#referGrid_toolbar_"+ filter ).html(content.join('')); $('.vciWebReferGridInDojo').css({'width':$("#referGrid_toolbar_"+ filter ).parent().width()-10}).layout(); if(options.displayType) { layui.each(options.displayType, function (_index, _item) { that.showTree(_item ,filter,name); }); } var tableId = 'referGrid_' + filter + '_' + name; var table = layui.table; var isMuti = options.isMuti; var requestData = options.where || {}; //可以定义表格了 table.render({ elem:'#referGrid_' + filter + '_' + name, id:tableId, url:(options.userUrl?options.userUrl:that.displayTypeTitle.processClassify.queryUserUrl), page:{ limit: 15, page: 1 }, backPath:(options.backPath?options.backPath:that.backPath), height: '475px', where:requestData, method:'get', selectMode:(isMuti?table.selectMode.muti:table.selectMode.single), cols:[[table.getIndexColumn(),table.getCheckColumn(), { field: 'name', title: '流程模板名称', width: 200 }, { field: 'key', title: '模板key', width: 150 },{ field:'version', title:'版本号', width:70 }]] }); var queryColumns = [ { field: 'name', title: '模板名称' }]; that.showSearchHtml(queryColumns,tableId,filter,name,requestData); }; this.showTree = function (displayType,filter,name) { var that = this; var tree = layui.tree; var requestData = {}; var options = that.getConfig(filter,name); var url = that.displayTypeTitle[displayType].url; //显示tree var treeOptions = { url:url, extraParams:requestData, treeFilter:filter, treeName:name, showSearch:true, backPath:(options.backPath?options.backPath:that.backPath), noApi:true, loadType:tree.loadType.all, click:function(item,elem,treeOptions){ that.treeDoClick(item,elem,treeOptions,displayType,filter,name); return false; } }; tree.init(displayType + "_" + filter+'_'+name,$('[layui-filter="'+ displayType + "_" + filter+'_'+name + '"]'),treeOptions); }; this.treeDoClick = function (item,elem,option,displayType,filter,name) { var that = this; var tableId = 'referGrid_' + filter + '_' + name; var where = {}; where[that.displayTypeTitle[displayType].queryField] = item.text; var tableUrl = that.displayTypeTitle[displayType].queryUserUrl; layui.table.reload(tableId,{ url:tableUrl, where:where }); }; this.showSearchHtml = function (queryColumns,tableId,filter,name,requestData) { var that = this; var table = layui.table; var toolbarElem = $('[layui-filter="referGrid_toolbar_' + filter + '_' + name +'"]'); if(queryColumns){ var toolbarHtml = '
' + '
'; toolbarHtml += '
'; toolbarHtml += '
'; toolbarHtml += '
'; toolbarElem.html(toolbarHtml); layui.form.render('select'); $('[name="referGrid_searchvalue_' + filter + "_" + name + '"]').keydown(function (e){ if(e.keyCode == 13){ var searchField = $(this).parent().parent().find('select').val(); var searchValue = $(this).val(); searchValue = "*" + searchValue + "*"; requestData[searchField] = searchValue; table.reload( tableId, { where: requestData } ); } }); $('[name="referGrid_searchbtn_'+ filter + '_' + name +'"]').click(function(){ var searchField = $(this).parent().parent().find('select').val(); var searchValue = $(this).parent().parent().find('[name="referGrid_searchvalue_' + filter + '_' + name + '"]').val(); searchValue = "*" + searchValue + "*"; requestData[searchField] = searchValue; table.reload( tableId, { where: requestData } ); }); } }; this.destory = function (filter,name) { //销毁 var that = this; if($('#referGrid_' + filter + '_' + name)){ $('#referGrid_' + filter + '_' + name).remove(); } }; this.getSelectValue = function (filter,name) { var that = this; var table = layui.table; var selectValue = {}; var checkStatus = table.checkStatus('referGrid_' + filter + "_" + name); var options = that.getConfig(filter,name); if(checkStatus.data.length>0){ if(!options.isMuti && checkStatus.data.length > 1){ $webUtil.showErrorMsg("只能选择一条数据"); return false; } var value = ""; var rawValue = ""; options.valueField = options.valueField?options.valueField:that.defaultConfig.valueField; options.textField = options.textField?options.textField:that.defaultConfig.textField; var isMutiValue = (options.valueField.indexOf(",")>-1); var isMutiRaw = (options.textField.indexOf(",")>-1); layui.each(checkStatus.data,function(_index,item){ if(isMutiValue){ var valueFieldArray = options.valueField.split(","); layui.each(valueFieldArray,function(_indexField,_itemField){ value += item[_itemField] + (options.valueSep?options.valueSep:' '); }); value+= ","; }else { value += item[options.valueField] + ","; } if(isMutiRaw) { var rawFieldArray = options.textField.split(","); layui.each(rawFieldArray,function(_indexField,_itemField){ rawValue += item[_itemField] + (options.textSep?options.textSep:' '); }); rawValue+= ","; }else{ rawValue += item[options.textField] + ","; } }); if($webUtil.endWith(value,",")){ value = value.substring(0,value.length - 1); } if($webUtil.endWith(rawValue,",")){ rawValue = rawValue.substring(0,rawValue.length -1); } selectValue = { value : value, rawValue : rawValue, allValues: checkStatus.data }; return selectValue; }else{ return false; } }; }; var cs = new Class(); exports(cs.MODELNAME,cs); });