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); });