/** * 分类+档案的参照页面 * @author weidy * @date 2021-1-10 */ layui.define(['layer','element'],function(exports){ var Class = function(){ this.MODELNAME = "vciWebReferClassify"; this.moduleKey = "vciWebReferClassify"; this.defaultConfig = { valueField:'oid',//值的字段 textField:'name'//显示的字段 }; this.showReferDialog = function(referConfig){ var referFilter = referConfig.filter, name = referConfig.name, title = referConfig.title, valueInfo = ($webUtil.isNotNull(referConfig.text)?("已设置的值为[" +referConfig.text +"]"):'未设置值'), isMuti = referConfig.isMuti, target = referConfig.target, value = referConfig.value, text = referConfig.text; var options = referConfig.options; var me = this; options.gridUrl = $webUtil.getValueFromObj(options,['url','referUrl']); var referIndex = $webUtil.dialog({ title: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, resizing:function(layero){ me.doResize(referFilter,name); }, yes:function(index,layero){ var selectValue = me.getSelectValue(referFilter,name,isMuti); if(selectValue){ target.setValue(referFilter,name,selectValue.value,selectValue.rawValue,true,selectValue.allValues); layer.close(referIndex); } }, success:function(layero){ me.showGrid(referFilter,name,options,value,text); } }); }; /** * 直接显示选择的对话框,这个经常在点击按钮后的功能里使用 * @param options 配置的信息,包含如下属性 * filter ,标识 * name ,标识名称 * classifys:[{ * filter:'分类的标识', * title:'标题', * url:'分类的路径', * queryField:'列表数据中分类的字段', * classifyValueField:'从树上获取的属性,注意树的数据是attribute. * queryByClassifyUrl:'从分类上查询的内容' * }]; * cols:'显示的列', * queryColumns:'查询的列', * gridUrl:'列表的路径', * onlyTable:'只显示列表', * * setValue:function (filter,name,value,rawValue,isClose,allSelectValues) {} 设置值的回调 * @returns 窗口的索引号 */ this.viewUserInDialog = function (options) { //在对话框中选择用户 var that = this; options = $.extend(that.defaultConfig,options); options.textField = $webUtil.getValueFromObj(options,['textField'],that.defaultConfig.textField); options.valueField = $webUtil.getValueFromObj(options,['valueField'],that.defaultConfig.valueField); options.gridUrl = $webUtil.getValueFromObj(options,['url','referUrl']); 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(''), '
', '
',//主列表的按钮 '
', '
', '
',//主列表 '
', '
', ]; $("#referClassify_"+ filter ).html(content.join('')); // $("#referClassify_"+filter+" .layui-layout-border").css({'height':'96%'}); if(options.classifys) { layui.each(options.classifys, function (_index, _item) { _item.backPath = _item.backPath || options.backPath; that.showTree(_item ,filter,name); }); } var tableId = 'referClassify_' + filter + '_' + name; var table = layui.table; var isMuti = options.isMuti; var requestData = options.where || {}; //可以定义表格了 table.render({ elem:'#referClassify_' + filter + '_' + name, id:tableId, url:options.gridUrl, page:{ limit: 15, page: 1 }, backPath:(options.backPath?options.backPath:that.backPath), height: '475px', where:requestData, method:(options.method || 'get'), selectMode:(isMuti?table.selectMode.muti:table.selectMode.single), cols:[options.cols] }); var queryColumns =options.queryColumns; that.showSearchHtml(queryColumns,tableId,filter,name,requestData); }; this.showTree = function (classifyItem,filter,name) { var that = this; var tree = layui.tree; var requestData = classifyItem.where || {}; var options = that.getConfig(filter,name); var url = classifyItem.url; //显示tree var treeOptions = { url:url, extraParams:requestData, treeFilter:filter, treeName:name, showSearch:true, backPath:(classifyItem.backPath || options.backPath ||that.backPath), loadType:tree.loadType.all, click:function(item,elem,treeOptions){ that.treeDoClick(item,elem,treeOptions,classifyItem,filter,name); return false; } }; tree.init(classifyItem.filter + "_" + filter+'_'+name,$('[layui-filter="'+ classifyItem.filter + "_" + filter+'_'+name + '"]'),treeOptions); }; this.treeDoClick = function (item,elem,option,classifyItem,filter,name) { var that = this; var tableId = 'referClassify_' + filter + '_' + name; var where = {}; var classifyValueField = classifyItem.classifyValueField?classifyItem.classifyValueField:'oid'; where[classifyItem.queryField] = item[classifyValueField]; var tableUrl = classifyItem.queryByClassifyUrl; layui.table.reload(tableId,{ url:tableUrl, backPath:(classifyItem.queryByClassifyBackPth || classifyItem.backPath ), where:where }); }; this.showSearchHtml = function (queryColumns,tableId,filter,name,requestData) { var that = this; var table = layui.table; var toolbarElem = $('[layui-filter="referClassify_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($('#referClassify_' + filter )){ $('#referClassify_' + filter ).remove(); } }; this.getSelectValue = function (filter,name) { var that = this; var table = layui.table; var selectValue = {}; var checkStatus = table.checkStatus('referClassify_' + 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); });