').css("max-height", options.maxHeight);;
$.each(options.data, function () {
var item = this, text = item[options.textField],
value = item[options.valueField], icon = '';
if (this.icon) { icon = ''; }
var $element_li = $('
' + icon + text + '
');
$element_li.click(function () {
//options.btn按钮组下拉框不需要执行后面的选中项
if (options.btn) { item.handler && item.handler(); return false; }
if (item.onSelect && !item.onSelect()) { return false; }
dropEvenBind.click.call(this, {
textField: options.textField,
valueField: options.valueField,
options: options,
input: $element_input,
item: item,
selected: selected,
dropGroup: $element_dropGroup
});
options.onSelect && options.onSelect(this, item[options.valueField], item[options.textField], item, options);
});
$element_ul.append($element_li);
});
var $search_input;
if (options.search) {
$search_input = $('');
$element_ul.addClass('ul-search');
$element_dropGroup.append($search_input).append($element_ul)
.append('');
$search_input.keyup(function () {
dropEvenBind.searchKeyup.call(this, $element_ul);
});
}
$element_dropGroup.append($element_ul);
$drop_this.append($element_dropGroup);
$element_input.click(function () { dropEvenBind.showDrop($element_dropGroup, $search_input); })
$element_span.click(function () { dropEvenBind.showDrop($element_dropGroup, $search_input); });
$drop_this.mouseleave(function () {
$element_dropGroup.hide();
if (!options.search) { return; }
$('li', $element_dropGroup).show();
$search_input.val('');
});
$.data(this, 'data', options);
});
}
var dropEvenBind = {
hideDrop: function () {
},
showDrop: function ($element_dropGroup, $search_input) {
$element_dropGroup.show(); $search_input && $search_input.focus();
},
searchKeyup: function ($element_ul) {
var $this = $(this);
var searchVal = $(this).val().toLocaleLowerCase();
if (searchVal == '') {
$('li', $element_ul).show();
return;
}
$('li', $element_ul).each(function () {
$(this)[$(this).text().toLocaleLowerCase().indexOf(searchVal) != -1 ? 'show' : 'hide']();
});
},
click: function (args) {
var text = args.item[args.textField];
//单选直接赋值
if (text == '全部') {
args.selected.splice(0);
args.input.val('');
}
for (var i = 0; i < args.selected.length; i++) {
if (args.selected[i][args.textField] == '全部') {
args.selected.splice(i, 1);
break;
}
}
//$.each(args.select,function());
//多选,如果当前选中的是全部或已经选择过的是全部直接清空数据
if ((args.selected.length == 1 && args.selected[0][args.valueField] == -1)
|| args.item[args.valueField] == -1) {
args.selected.splice(0, args.selected.length)
}
//单选或第一次选中值,直接返回
var multiple = !args.options.multiple;
if (multiple || args.selected.length == 0) {
args.input.val(text);
//单选,如果有选中值,直接替换第一个的值
if (multiple && args.selected.length > 0) {
args.selected[0] = args.item;
} else {
args.selected.push(args.item);
}
args.dropGroup.hide();
return;
}
var selectOptions = { text: [], values: [], contains: false };
var count = args.selected.length;
var index = 0;
//多选,如果已经选中过,删除已选的项,没有选中的添加
while (count > 0) {
if (args.selected[index][args.valueField] == args.item[args.valueField]) {
args.selected.splice(index, 1);
selectOptions.contains = true;
index = index && index - 1;
} else {
selectOptions.text.push(args.selected[index][args.textField]);
index++;
}
count--;
}
if (!selectOptions.contains) {
args.selected.push(args.item);
selectOptions.text.push(text);
}
args.input.val(selectOptions.text.join(','));
}
}
$.fn.jqDropMethods = {
getOptions: function () {
return $.data(this[0], 'data');
},
getData: function () {
return this.jqDrop('getOptions').data;
},
getSelected: function () {
return this[0].select;
},
getValue: function () {
return this.jqDrop('getValueArray').join(',');
},
getText: function () {
return this.jqDrop('getTextArray').join(',');
},
getValueArray: function () {
return (this.jqDrop('getResult', 'valueField') || []).filterSelect();
},
getTextArray: function () {
return (this.jqDrop('getResult', 'textField') || []).filterSelect();
},
getResult: function (property) {
var selected = this.jqDrop('getSelected');
if (!selected) { return ''; }
var field = this.jqDrop('getOptions')[property];
if (typeof selected == 'object' && selected.length > 0) {
return $.map(selected, function (d) {
return d[field];
});
}
return selected[field];
},
setValue: function (val) {
var dropObject = this[0];
val == "-1" ? dropObject.select.splice() : dropObject.select.splice(0, this[0].select.length);
if (val || val == '0') {
var valArr, dropText = [], dropOptions = this.jqDrop('getOptions');
valArr = dropOptions.multiple ? val.split(',') : [val + ''];
$.each(dropOptions.data, function () {
if (valArr.indexOf(this[dropOptions.valueField] + '') != -1) {
dropObject.select.push(this);
dropText.push(this[dropOptions.textField] + '');
}
});
//如果设置的值没有在下拉绑定的值中,直接设置为空;
val = dropText.join(',');
}
this.find('input:eq(0)').val(val);
}
};
})(jQuery);
(function ($) {
//添加全部项
Array.prototype.pushDefault = function (valueField, textField) {
if (!valueField || !textField) {
return [];
}
var defaultItem = {};
defaultItem[valueField] = -1;
defaultItem[textField] = '全部';
this.splice(0, 0, defaultItem);
}
Array.prototype.filterSelect = function () {
if (this.length == 0 || this[0] == '-1' || this[0] == '全部') {
return [];
}
return this;
};
})(jQuery);
(function ($) {
$.fn.layOutFileDefault = {
data: [],
handler: {
fileChange: function () {
},
browse: function () {
}
}
};
$.fn.layOutFile = function (options, data) {
if (typeof options == 'string') {
return $.fn.layOutFile.methods[options].call(this, data);
}
var options = $.extend({}, $.fn.layOutFileDefault, options);
return this.each(function () {
var $this_file = $(this).addClass('select-upload-group'),
$btn_group = $(''),
$browseLibrary = $(''),
$ul_items = $('
');
$btn_group.append($browseLibrary);
$this_file.append($btn_group).append($ul_items);
$this_file.append($ul_items).append($btn_group);
$browseLibrary.click(function () {
options.browse.call(this, $this_file);
});
if (options.data && options.data.length > 0) {
$this_file.layOutFile('createFile', options.data);
}
$.data($this_file[0], 'data', options);
return $this_file;
});
};
$.fn.layOutFile.methods = {
fileOptions: {
append: false,
data: [],
saveImage: false,
fileType: 'image',
foots: null,//[{ text: '', handler: function () { }}],
addFileUrls: '/Sys_ImageLibrary/AddImage'
},
createImage: function ($file_items, _options) {
var fileData = _options.data;
var $this_file = this;
for (var i = 0; i < fileData.length; i++) {
var imageSrc = fileData[i];
if (!imageSrc) {
continue;
}
if (imageSrc.indexOf('bcebos.com') != -1 && imageSrc.indexOf('@w_') == -1) {
imageSrc += '@w_500';
}
var $file = $('
');
$file_items.append($file);
var $footerGroup = $('');
$file[0].src = imageSrc;
if (_options.foots) {
$.fn.layOutFile.methods.createFoot($footerGroup, imageSrc, $this_file, _options);
}
$file.append($footerGroup);
$file_items.append($file);
}
},
createVideo: function ($file_items, _options) {
var fileData = typeof _options.data == 'string' ? JSON.parse(_options.data) : _options.data;
var $this_file = this;
for (var i = 0; i < fileData.length; i++) {
var fileInfo = typeof fileData[i] == 'string' ? { Id: 0, Cover: '', ImageUrls: fileData[i] } : fileData[i];
var $videos = $('
');
$.data($videos[0], 'data', fileInfo);
if (_options.foots) {
$.fn.layOutFile.methods.createFoot($videos.find('.video-footer'), fileData[i], $this_file, _options);
}
$file_items.append($videos);
}
},
createFoot: function ($footerGroup, _scr, $this_file,_options) {
var _fileEventData = { fileType: $.fn.layOutFile.methods.fileOptions.fileType };
_options.foots && $.each(_options.foots, function () {
var $footObj = $(this.text), handler = this.handler;
$footObj.src = _scr;
$footerGroup.append($footObj);
handler && $footObj.click(function () {
_fileEventData.src = $footObj.src;
handler.call(this, $this_file, _fileEventData);
});
});
},
createFile: function (options) {
var _options = $.extend({}, $.fn.layOutFile.methods.fileOptions, options);
var $this_file = $(this), $file_items = $('.ul-item-group', $this_file);
if (_options.append && $file_items.length == 0) {
if (_options.fileType == "image") {
$this_file.append('
\
\
');
} else {
$this_file.append('
\
\
');
}
$file_items = $('.ul-item-group', $this_file);
}
if (_options.saveImage && _options.data) {
$.post(_options.addFileUrls, {
imageUrls: _options.data.join(','),
table: gridParameters && gridParameters.queryParams.TableName
}, function () { });
}
//不是追加,直接清空数据
!_options.append && $file_items.text('');
var fileData = _options.data;
if (!fileData || fileData.length == 0)
return;
if (_options.fileType == "image") {
$.fn.layOutFile.methods.createImage.call($this_file,$file_items, _options);
return;
}
$.fn.layOutFile.methods.createVideo.call($this_file,$file_items, _options);
}
}
})(jQuery);
var helper = {
active: true,
appnedFilter: function () {
this.filterBox = $('