/** * 用户参照的基础页面 * @author weidy * @date 2020-12-21 */ layui.define(['layer','element','form','table'],function(exports){ var Class = function(){ this.MODELNAME = "refer/SmUserReferBase"; this.moduleKey = "SmUserReferBase"; this.backPath = (configData.compatibility?path:configData.frameworkPath); this.url = { controller:'smUserController/', dataGrid:'userQueryController/refDataGrid' }; this.displayType = { roleUser:'roleUser', departUser:'departUser', workTypeUser:'workTypeUser', dutyUser:'dutyUser' }; this.displayTypeTitle = { roleUser:{ title:'角色', url:'roleQueryController/refTree', queryField:'pkRole', queryUserUrl:'userQueryController/refDataGridByPkRole' }, departUser:{ title:'部门', url:'departmentQueryController/refTree', queryField:'pkDepartment', queryUserUrl:'userQueryController/refDataGridByPkDepartment' }, workTypeUser:{ title:'工种', url:'smWorkTypeController/refTree', queryField:'pkWorktype', queryUserUrl:'userQueryController/refDataGridByPkWorktype' }, dutyUser:{ title:'职务', url:'dutyQueryController/refTree', queryField:'pkDuty', queryUserUrl:'userQueryController/refDataGridByPkDuty' } }; this.defaultConfig = { favUser:true,//是否有常用用户 displayType:[this.displayType.departUser,this.displayType.roleUser],//默认显示的是部门和角色与用户 textField:'name', valueField:'oid' }; /** * 直接显示选择的对话框,这个经常在点击按钮后的功能里使用 * @param options 配置的信息,包含如下属性 * filter ,标识 * name ,标识名称 * favUser:false, 是否显示常用用户,默认为true * displayType:显示选项卡,[userRefer.displayType.roleUser,userRefer.displayType.departUser,userRefer.displayType.workTypeUser,userRefer.displayType.dutyUser], * 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.url.dataGrid); 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(); //$("#referGrid_toolbar_"+filter+" .layui-layout-border").css({'height':'100%'}); if(options.favUser){ //显示常用用户的树 that.showTree("favTree",filter,name); } 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.url.dataGrid), 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: 'id', title: '用户名', sort:true, width: 120 }, { field: 'name', title: '姓名', sort:true, width: 70 },{ field:'workNo', title:'工号', sort:true, width:100 },{ field:'pkWorkTypeText', title:'工种', sort:true, hidden:configData.controllerSecret, width:60 },{ field:'secretGradeText', title:'密级', sort:true, width: 60, hidden:(!configData.controllerSecret), },{ field:'pkDepartmentName', title:'所在部门', sort:true, width:150 }]] }); var queryColumns = [ { field: 'id', title: '用户名' }, { 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:(displayType==that.displayType.roleUser?true:false), 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.oid; 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['conditionMap["' + 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['conditionMap["' + 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); });