layui.define(['layer','vciWebReferGrid','vciWebReferTree','vciWebReferClassify','vciWebReferStand','vciWebReferDefalut'],function(exports){
|
/**
|
* 参照字段
|
* weidy@2018-03-06
|
*/
|
var Refer = function(){
|
this.defaultConfig = {
|
gridUrl:'webReferController/referDataGrid',//表格的参照路径
|
treeUrl:'webReferController/referTree',//树形的参照表格
|
valueField:'oid',//值的字段
|
textField:'name'//显示的字段
|
};
|
this.defaultRefer = {
|
/**
|
* 部门树
|
*/
|
departmentRefer:'refer/OrgDepartmentRefer',
|
/**
|
* 部门列表
|
*/
|
departmentGridRefer:'refer/OrgDepartmentGridRefer',
|
/**
|
* 用户,默认是显示常用,角色,部门和用户。可以配置是否显示工种等选项卡
|
*/
|
userRefer:'refer/SmUserRefer',
|
/**
|
* 仅仅用户的列表
|
*/
|
onlyUserRefer:'refer/SmUserGridRefer',
|
/**
|
* 用户穿梭框,左侧显示部门和角色树,右侧为穿梭框,穿梭框的右边部分默认显示已选择的用户
|
*/
|
//userTransferRefer:'refer/SmUserTransferRefer',
|
/**
|
* 角色列表
|
*/
|
roleRefer:'refer/SmRoleRefer',
|
/**
|
* 职务
|
*/
|
dutyRefer:'refer/OrgDutyRefer',
|
|
/**
|
* 岗位
|
*/
|
jobRefer:(configData.compatibility?'':'refer/OrgJobRefer'),
|
|
/**
|
* 工种
|
*/
|
workTypeRefer:(configData.compatibility?'':'refer/SmWorkTypeRefer'),
|
/**
|
* 流程模板
|
*/
|
processTempRefer:(configData.compatibility?"refer/WfProcessTemplateRefer":'')
|
};
|
//参照的类型 stand:UI上下文 ,default:默认展示成指定列的列表
|
this.referType = {
|
tree:'tree',
|
grid:'grid',
|
classify:'classify',
|
stand:'stand',
|
'default':'default'
|
}
|
};
|
Refer.prototype.init = function(){
|
|
};
|
Refer.prototype.initReferRegister = function(referRegisters){
|
//初始化注册的参数对象
|
var that = this;
|
that.referRegister = referRegisters;
|
if(that.referRegister){
|
for(var referKey in that.referRegister){
|
layui.use(that.referRegister[referKey]);
|
}
|
}
|
//refer下引用的就需要加一下
|
layui.modules['refer/SmUserReferBase'] = 'refer/SmUserReferBase';
|
if(that.defaultRefer){
|
for(var referKey in that.defaultRefer){
|
var modelName = that.defaultRefer[referKey];
|
if(modelName !='') {
|
layui.modules[modelName] = modelName;
|
layui.use(modelName);
|
}
|
}
|
}
|
layui.use('form');
|
layui.use('tree');
|
layui.use('table');
|
};
|
//添加参照对象
|
Refer.prototype.newRefer=function(filter,name,elem,options){
|
var that = this;
|
if(!that.referFields){
|
that.referFields = {};
|
}
|
that.referFields[filter+"_" +name] = {
|
elem:elem,
|
options:options
|
};
|
};
|
Refer.prototype.getReferConfig = function(filter,name){
|
var that = this;
|
if(that.referFields && (filter+"_" + name) in that.referFields){
|
return that.referFields[filter+"_" + name];
|
}
|
return null;
|
};
|
//显示参照对象
|
Refer.prototype.showRefer = function(filter,name,formValues){
|
var that = this;
|
var config = that.getReferConfig(filter,name);
|
if(config == null){//没有配置的时候
|
return;
|
}
|
if(config.elem){
|
that.setValue(filter,name,formValues?formValues[name]:config.elem.value,(formValues &&config.options)?formValues[config.options['showField']]:config.elem.text());
|
}
|
if(config.options){
|
var options = config.options;
|
options.formValues = formValues;
|
|
var referConfig = {
|
filter:filter,
|
name:name,
|
target:that,
|
value:config.elem.value,
|
text:config.elem.text()
|
};
|
$.extend(referConfig, options);
|
referConfig.options=options;
|
var title =config.title?config.title:config.elem.parent().prev().text();
|
title = title.replace(":","");
|
if(title){
|
title = $webUtil.isNotNull(options.title)?options.title:('为【' + title + '】选取值');
|
}else{
|
title = $webUtil.isNotNull(options.title)?options.title:('为【' + name + '】选取值');
|
}
|
var isMuti = ("true"==options.isMuti || options.isMuti == true || options.muti == true)? true : false;
|
referConfig.title=title;
|
referConfig.isMuti=isMuti;
|
referConfig.options.isMuti=isMuti;
|
|
if(options.type==that.referType.tree){
|
//树形.依然弹出窗口,直接使用下拉的方式显示,请使用combox
|
var vciReferTree = layui.vciWebReferTree;
|
options.url = $webUtil.getValueFromObj(options,['url','referUrl'],configData.compatibility?"uiDataController/defaultReferTree":that.defaultConfig.treeUrl);
|
if(configData.compatibility && $webUtil.isNull(options.url)){
|
options.url = "uiDataController/defaultReferTree";
|
}
|
vciReferTree.showReferDialog(referConfig);
|
}else if(options.type==that.referType.grid){
|
//表格类型
|
options.url = $webUtil.getValueFromObj(options,['url','referUrl'],configData.compatibility?"uiDataController/defaultReferDataGrid":that.defaultConfig.gridUrl);
|
if(configData.compatibility && $webUtil.isNull(options.url)){
|
options.url = "uiDataController/defaultReferDataGrid";
|
}
|
var vciReferGrid = layui.vciWebReferGrid;
|
vciReferGrid.showReferDialog(referConfig);
|
}else if(options.type==that.referType.classify){
|
//分类的选择
|
layui.vciWebReferClassify.showReferDialog(referConfig);
|
}else if(options.type==that.referType.stand){
|
//展示UI上下文
|
layui.vciWebReferStand.showReferDialog(referConfig);
|
}else if(options.type==that.referType['default']){
|
//展示成指定列的列表
|
layui.vciWebReferDefalut.showReferDialog(referConfig);
|
}else{
|
var hasRegister = false;
|
for(var key in that.referRegister){
|
if(that.referRegister[key] == options.type){
|
var layuiName = options.type;
|
layui[layuiName].showReferDialog(referConfig);
|
hasRegister = true;
|
break;
|
}
|
}
|
if(!hasRegister){
|
layui.use(options.type,function (){
|
layui[options.type].showReferDialog(referConfig);
|
});
|
}
|
}
|
}
|
};
|
//设置参照对象的值
|
Refer.prototype.setValue = function(filter,name,value,rawValue,isClose,selectRecords){
|
var that = this;
|
var selectValue = {
|
value:value,
|
rawValue:rawValue,
|
allValues:selectRecords
|
};
|
if(!that.referValues){
|
that.referValues = {};
|
}
|
that.referValues[filter+"_" +name] = {
|
value:value,
|
rawValue:rawValue,
|
allValues:selectRecords
|
};
|
var config = that.getReferConfig(filter,name);
|
//调用值修改事件--本对象里的调用事件
|
if(isClose && that.changeListener && that.changeListener[filter+"_" +name]){
|
var s = that.changeListener[filter+"_" +name];
|
s.callback(filter,name,config.options.showField,value,rawValue,selectRecords);
|
}
|
};
|
Refer.prototype.addChangeValueListener = function(filter,name,showFieldName,callback){
|
var that = this;
|
if(!that.changeListener){
|
that.changeListener = {};
|
}
|
that.changeListener[filter+"_" +name] = {
|
filter:filter,
|
name:name,
|
showFieldName:showFieldName,
|
callback:callback
|
};
|
};
|
//清除参照对象的值
|
Refer.prototype.clearValue=function(filter,name){
|
var that = this;
|
if(that.referValues && (filter+"_" +name) in that.referValues){
|
delete that.referValues[filter+"_" +name];
|
}
|
};
|
Refer.prototype.destory = function(filter,name) {
|
var that = this;
|
var referFilter = filter + "_" + name;
|
if (that.referFields && referFilter in that.referFields) {
|
delete that.referFields[referFilter];
|
}
|
if (that.referValues && referFilter in that.referValues) {
|
delete that.referValues[referFilter];
|
}
|
var option = that.getReferConfig(filter, name);
|
if (option && option.type) {
|
if (option.type == that.referType.tree) {
|
var vciReferTree = layui.vciWebReferTree;
|
vciReferTree.destory(filter, name);
|
} else if (option.type == that.referType.grid) {
|
var vciReferGrid = layui.vciWebReferGrid;
|
vciReferGrid.destory(filter, name);
|
} else if (option.type == that.referType.classify) {
|
layui.vciWebReferClassify.destory(filter, name);
|
} else {
|
for (var key in that.referRegister) {
|
if (that.referRegister[key] == options.type) {
|
var layuiName = options.type;
|
layui[layuiName].destory(filter, name);
|
break;
|
}
|
}
|
}
|
}
|
};
|
var refer = new Refer();
|
exports('vciWebRefer',refer);
|
});
|