/**
|
* 分类+档案的参照页面
|
* @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:'<div id="referClassify_' + referFilter + '" layui-filter="referClassify_' + referFilter + '" class="layui-table-toolbar" style="height:545px;"></div>',
|
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:'<div id="referClassify_' + filter + '" layui-filter="referClassify_' + filter + '" class="layui-table-toolbar referClassify_toolbar_'+filter+'" style="height:545px;"></div>',
|
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=['<div style="width:' + (options.onlyTable?'0':(options.classifyWidth?options.classifyWidth:'350')) +'px;float: left;overflow-y:auto;background-color:#ffffff;display:',options.onlyTable?'none':'block','">',
|
'<div lay-filter="referTree_' + contentFilter + '" class="layui-tab layui-tab-card" lay-allowClose="false">',
|
'<ul class="layui-tab-title" lay-allowClose="false">'];
|
var tabHtml = [];
|
var tabContentHtml = [];
|
if(options.classifys) {
|
layui.each(options.classifys, function (_index, _item) {
|
tabHtml.push('<li ' + ((_index == 0)?' class="layui-this" ':'') + '>' + _item.title + '</li>');
|
tabContentHtml.push([
|
'<div class="layui-tab-item',((_index == 0)?' layui-show':''),'">',
|
'<ul layui-filter="', _item.filter, '_', contentFilter, '" style="border:1px 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" style="margin-left:5px;height:100%;overflow-y:hidden;">',
|
typeHtml.join(''),
|
'<div class="layui-layout" style="margin-left:',options.onlyTable?'5':(options.classifyWidth?(options.classifyWidth+5):'355'),'px;">',
|
'<div layui-filter="referClassify_toolbar_',contentFilter, '" class="layui-btn-container">',//主列表的按钮
|
'</div>',
|
'<div class="layui-center" style="margin-left: 10px;">',
|
'<table class="layui-table layui-referGrid" lay-size="sm" lay-even layui-filter="referClassify_' + contentFilter + '" id="referClassify_' + contentFilter + '" ></table>',//主列表
|
'</div>',
|
'</div>',
|
];
|
$("#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 = '<div class="layui-form-item" style="height:24px;display:inline-block"> '
|
+ '<div class="layui-input-inline" style="height:24px;line-height:24px;width:150px"><select name="referGrid_search_'+ filter + '_' + name +'" style="height:24px;width:120px;padding-right:30px;font-size:15px;">';
|
layui.each(queryColumns,function(_index,queryRecord){
|
toolbarHtml += '<option value="' + queryRecord.field + '" >' + queryRecord.title + '</option>';
|
});
|
toolbarHtml += '</select></div>';
|
toolbarHtml += '<div class="layui-input-inline"><input type="text" style="height:24px;font-size:14px;" name="referGrid_searchvalue_'+ filter + '_' + name +'" placeholder="输入值后回车进行模糊查询" class="layui-input" ></div>';
|
toolbarHtml += '<div class="layui-input-inline" ><button class="layui-btn" style="height:24px;line-height:24px" name="referGrid_searchbtn_'+ filter + '_' + name +'" >查询</button></div>';
|
toolbarHtml += '</div>';
|
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);
|
});
|