/** * 用户穿梭框的参照页面 * @author wangting * @date 2022-1-17 */ layui.define(['layer','element','transfer'],function(exports){ var Class = function(){ this.MODELNAME = "process/vciWebUserTransferRefer"; this.moduleKey = "vciWebUserTransferRefer"; 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:false,//是否有常用用户 displayType:[this.displayType.departUser,this.displayType.roleUser],//默认显示的是部门和角色与用户 textField:'name', valueField:'id' }; /** * 直接显示选择的对话框,这个经常在点击按钮后的功能里使用 * @param options 配置的信息,包含如下属性 * filter ,标识 * name ,标识名称 * favUser:false, 是否显示常用用户,默认为false * displayType:显示选项卡,[userRefer.displayType.roleUser,userRefer.displayType.departUser,userRefer.displayType.workTypeUser,userRefer.displayType.dutyUser], * setValue:function (filter,name,value,rawValue,isClose,allSelectValues) {} 设置值的回调 * @returns 窗口的索引号 */ this.showReferDialog = function (options) { //在对话框中选择用户 var that = this; if(options.displayTypeTitle){ that.displayTypeTitle=options.displayTypeTitle; } 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); options.setValue = function (filter,name,value,rawValue,isClose,selectRecords){ options.target.setValue(filter,name,value,rawValue,isClose,selectRecords); } var filter = options.filter; var name = options.name; var valueInfo = ($webUtil.isNotNull(options.text)?("已设置的值为[" +options.text +"]"):'未设置值'); var area=[(($webUtil.isNotNull(options.width) && options.width*1>1) ?options.width*1 :( (options.favUser||(options.displayType && options.displayType.length>0))?1050:700)) +'px', (($webUtil.isNotNull(options.height) && options.height*1>1) ?options.height*1 : 620) + 'px'] var referIndex = $webUtil.dialog({ title:(options.title?options.title:'请选择用户'), btn:['确定','取消'], content:'
', area:area, 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); }else { $webUtil.showErrorMsg("请选择用户"); } }, success:function(layero){ that.showTransfer(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.showTransfer =function (filter,name,options) { //显示 var that = this; that.setConfig(filter,name,options); var contentFilter = filter + "_" + name; if(options.favUser||(options.displayType && options.displayType.length>0)){ 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(); }else{ var content= [ '
', '
', '
', '
', '
', ]; $("#referGrid_toolbar_"+ filter ).html(content.join('')); } var transferId = 'referTransfer_' + contentFilter; var isMuti = options.isMuti; var where=$.extend({limit:-1},options.where||{}); var selectWhere=$.extend({limit:-1},options.selectWhere||{}); that.selectedUser=[] var formValues=options.formValues[name]==''?[]:options.formValues[name].split(','); that.selectedUserValues=formValues; layui.each(formValues,function (i,item){ if(item){ that.selectedUser.push({id:item,name:options.formValues[options.showField].split(',')[i],secret:-1,originalData:{id:item,name:options.formValues[options.showField].split(',')[i],secret:-1}}) } }) layui.transfer.render({ elem: '#'+transferId ,id:transferId//索引 ,data:options.data ,selectData:that.selectedUser ,value:that.selectedUserValues ,url: '' ,where:where ,backPath:configData.compatibility ? path : configData.frameworkPath ,selectUrl: '' ,selectWhere:selectWhere ,selectMethod:'post' ,selectBackPath:configData.compatibility ? path : configData.frameworkPath ,width: 295 ,height: 480 ,parseData: function(res){ return { "originalData":res, "value": res.id //数据值 ,"title": res.id + " " + res.name+((res.secret && res.secret*1>0 && res.secretText)?("[" + res.secretText + "]"):"")//数据标题 } } ,title: ['未选用户', '所有已选用户'] ,showSearch: true ,onchange: function(obj, index){ if(index){ //来自右边 for(var i=0;i< obj.length;i++){ that.selectedUser.splice(that.selectedUserValues.indexOf(obj[i].value),1); that.selectedUserValues.remove(obj[i].value); } }else{ //来自左边 for(var i=0;i< obj.length;i++){ that.selectedUser.push(obj[i].originalData); that.selectedUserValues.push(obj[i].value); } } } }) var treeIndex=0 if(options.favUser){ //显示常用用户的树 that.showTree("favTree",filter,name,treeIndex); treeIndex++ } if(options.displayType) { layui.each(options.displayType, function (_index, _item) { that.showTree(_item ,filter,name,treeIndex); treeIndex++ }); if(options.displayType.length>1){ $('[lay-filter="referTree_' + contentFilter + '"] .layui-tab-title li').on('click' , function(e){ var treeFilter=$(this).attr('treeFilter'); layui.tree.reload(treeFilter) }); } } }; this.showTree = function (displayType,filter,name,treeIndex) { var that = this; var tree = layui.tree; var requestData = {}; var options = that.getConfig(filter,name); var url = that.displayTypeTitle[displayType].url; var data=that.displayTypeTitle[displayType].data; //显示tree var treeOptions = { url:url, extraParams:requestData, data:data, 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; }, done:function (filter,children,elem){ if(treeIndex==0){ var currentelem=layui.tree.getElemByItem(filter, children[0].oid); if(currentelem.length>0){ currentelem.children('a').trigger('click') } } } }; 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 = 'referTransfer_' + filter + '_' + name; var where = {}; where[that.displayTypeTitle[displayType].queryField] = item.oid; var tableUrl = that.displayTypeTitle[displayType].queryUserUrl; layui.transfer.reload(tableId, { url:tableUrl, where:where, data:item.users, title: ['['+item.name+'] 未选用户', '所有已选用户'], selectData:that.selectedUser ,value:that.selectedUserValues }) }; this.destory = function (filter,name) { //销毁 var that = this; if($('#referTransfer_' + filter + '_' + name)){ $('#referTransfer_' + filter + '_' + name).remove(); } }; this.getSelectValue = function (filter,name) { var that = this; var selectValue = {}; var getData = that.selectedUser;//layui.transfer.getData('referTransfer_' + filter + "_" + name); var options = that.getConfig(filter,name); if(getData.length>0){ if(!options.isMuti && getData.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(getData,function(_index,item){ item=item.originalData||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: getData }; return selectValue; }else{ return false; } }; }; var cs = new Class(); exports("process/vciWebUserTransferRefer",cs); });