/**
|
* 用户穿梭框的参照页面
|
* @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:'<div id="referGrid_toolbar_' + filter + '" layui-filter="referGrid_toolbar_' + filter + '" class="layui-table-toolbar referGrid_toolbar_'+filter+'" style="height:510px;"></div>',
|
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=['<div data-options="region:\'west\',split:true,minWidth:40,maxWidth:600" style="width:320px;background-color:#ffffff;display:',options.onlyTable?'none':'block','">',
|
'<div lay-filter="referTree_' + contentFilter + '" class="layui-tab layui-tab-card" lay-allowClose="false" style="margin-top: 0">',
|
'<ul class="layui-tab-title" lay-allowClose="false">'];
|
var tabHtml = [];
|
var tabContentHtml = [];
|
if(options.favUser){
|
tabHtml.push('<li class="layui-this">常用用户</li>');
|
tabContentHtml.push([
|
'<div class="layui-tab-item layui-show">',
|
'<ul layui-filter="favTree_',contentFilter,'" style="border:1px solid #6886ff;overflow-x:auto"></ul>',
|
'</div>'].join(''));
|
}
|
if(options.displayType) {
|
layui.each(options.displayType, function (_index, _item) {
|
tabHtml.push('<li ' + ((!options.favUser&&_index == 0)?' class="layui-this" ':'') + ' treeFilter="', _item, '_', contentFilter, '">' + that.displayTypeTitle[_item].title + '</li>');
|
tabContentHtml.push([
|
'<div class="layui-tab-item',((!options.favUser&&_index == 0)?' layui-show':''),'">',
|
'<ul layui-filter="', _item, '_', contentFilter, '" style="border:0px solid #6886ff;overflow-x:auto"></ul>',
|
'</div>'].join(''));
|
});
|
}
|
typeHtml.push(tabHtml.join(''));
|
typeHtml.push('</ul>');
|
typeHtml.push('<div class="layui-tab-content">');
|
typeHtml.push(tabContentHtml.join(''));
|
typeHtml.push( '</div>');
|
typeHtml.push( '</div>');
|
typeHtml.push('</div>');
|
var content= [
|
'<div class="layui-layout-border vciWebReferGridInDojo easyui-layout" data-options="fit:true" style="height: 100%">',
|
typeHtml.join(''),
|
'<div class="layui-layout" data-options="region:\'center\'">',
|
'<div class="demo-transfer" layui-filter="referTransfer_' + contentFilter + '" id="referTransfer_' + contentFilter + '" style="padding: 0 10px">',
|
'</div>',
|
'</div>',
|
];
|
$("#referGrid_toolbar_"+ filter ).html(content.join(''));
|
$('.vciWebReferGridInDojo').css({'width':$("#referGrid_toolbar_"+ filter ).parent().width()-10}).layout();
|
|
}else{
|
var content= [
|
'<div class="layui-layout-border vciWebReferGridInDojo " style="height: 100%">',
|
'<div class="layui-layout">',
|
'<div class="demo-transfer" layui-filter="referTransfer_' + contentFilter + '" id="referTransfer_' + contentFilter + '" style="padding: 0 10px">',
|
'</div>',
|
'</div>',
|
];
|
$("#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);
|
});
|