/**
* Created by 陈熠 on 2017/6/21
* email : 228112142@qq.com
*/
(function ($) {
var selectPages = [];
/*分页默认参数*/
var defaultParam = {
search: false,
nd: new Date().getTime(),
limit: 5,
page: 1,
sidx: '',
order: 'desc',
init: true,
_: new Date().getTime()
};
/* 入口函数 */
$.fn.selectPage = function () {
//参数数据
var cyProps = $(this).attr("cyProps");
if (!cyProps) {
return
}
cyProps = cyProps ? cyProps : "";
//将表格参数转为json
cyProps = eval("({" + cyProps + "})");
//创建节点
createDom($(this), cyProps);
};
/**创建相关dom元素 **/
function createDom(_this, cyProps) {
var _name = $(_this).attr("name") || "";
var _value = $(_this).attr("value") || "";
var showTips = _value === "" ? "cy-show" : "cy-none";
var _tips = cyProps.tips || "请根据用户id搜索";
var _checkbox = cyProps.checkbox || "true";
var ITEM_CLASS = _checkbox==="true"?"":"select-single";
var _search = cyProps.search === "false" ? "none" : "block";
var nowTime = (new Date()).getTime();
var selectId = "multi-select-" + nowTime + $(".multi-select").length;
var pageId = "page-" + nowTime + $(".dd-page").length;
/** 渲染结果**/
var outHtml =
_this.html([
'
',
'
',
'
',
'',
'
',
'
',
'
',
'- ',
'',
'',
'ဆ',
'
',
'',
'- ',
'',
'
',
'
',
'
'
].join(""));
_this.append(outHtml);
selectPages.push($(_this));
//下拉json数据
var R = getSelectData(cyProps.url);
var selectData = dataPage(1, 1000000, R.data || []);
$t.setSessionStorage(selectId, selectData);
$t.setSessionStorage("curr-"+selectId,selectData);
//数据回填
for (var i = 0; i < selectData.length; i++) {
//默认值回选
var _values = _value.split(",") || "";
if (_values.indexOf(selectData[i].code) > -1) {
var _selected = '' + selectData[i].value + '×';
$(_this).find(".multi-select").append(_selected);
}
}
renderPage(_this,pageId,selectId,R.count,_checkbox);
}
function renderPage(_this,pageId,selectId,count,_checkbox){
layui.use(['form', 'laypage'], function () {
var form = layui.form;
var laypage = layui.laypage;
laypage.render({
elem: pageId
, count: count || 0
, first: false
, last: false
, limit: defaultParam.limit
, prev: ''
, next: ''
, layout: ['prev', 'next', 'skip', 'count']
, jump: function (obj, first) {
var _v=$("#"+obj.elem).parents(".select-page").find(".form-input").val();
$(_this).find(".dd-content").html("");
var selectData = dataPage(obj.curr, defaultParam.limit, $t.getSessionStorage("curr-"+selectId) || []);
//数据渲染
for (var i = 0; i < selectData.length; i++) {
var _dd = _checkbox === "true"
? ''
: '' + selectData[i].value + '';
//默认值回选
var _values = _v.split(",") || "";
if (_values.indexOf(selectData[i].code) > -1) {
if (_checkbox === "true") {
_dd = _dd.replace('= array.length) ? array.slice(offset, array.length) : array.slice(offset, offset + pageSize);
}
/**隐藏其他下拉框 **/
function hideOtherSelect(obj) {
$.each(selectPages, function () {
var selectId = $(this).find(".select-page").attr("select-id");
var oldId = $(obj).parent().attr("select-id");
if (selectId === oldId)return;
$("[select-id='" + selectId + "']").removeClass("layui-form-selected");
});
}
/**获取下拉树数据 **/
function getSelectData(url) {
var data = "";
$.ajax({
url: url,
async: false,
data: defaultParam,
dataType: "json",
success: function (R) {
if (R.code == 0) {
data = R
} else {
alert(R.msg);
}
},
error: function () {
alert("系统错误");
}
});
return data;
}
/**获取搜索后的数据 **/
function searchData(selectId, value) {
var selectData = $t.getSessionStorage(selectId);
//显示搜索结果菜单
var k = value;
// if (k == "") return;
var arr = [];
var patt = new RegExp(k);
for (var i = 0; i < selectData.length; i++) {
if (patt.test(selectData[i].code)) {
arr.push({code: selectData[i].code, value: selectData[i].value});
}
}
return arr;
}
/**获取插件配置 **/
function getProps(elem) {
//参数数据
var cyProps = $(elem).parents("[cytype='selectPageTool']").attr("cyProps");
cyProps = cyProps ? cyProps : "";
//将表格参数转为json
cyProps = eval("({" + cyProps + "})");
return cyProps;
}
/**是否显示tips*/
function showTips(selectId) {
var _select = $('[select-id="' + selectId + '"]');
//不显示
if (_select.find(".form-input").val()) {
_select.find(".select-tips").hide();
}
//显示
else {
_select.find(".select-tips").show();
}
}
/**重置面板位置*/
function resetPosition(elem) {
var _height=$(elem).parents(".select-page").height();
$(elem).parents(".select-page").find(".layui-anim").css("top",_height+2+"px");
}
function searchSelect(_this){
var cyProps = getProps($(_this));
var _selectId = $(_this).parents(".select-page").attr("select-id");
var data = searchData(_selectId, $(_this).val());
var pageId= $(_this).parents(".select-page").find(".lay-page").attr("id");
$t.setSessionStorage("curr-"+_selectId, data);
renderPage($(_this).parents(".select-page"),pageId,_selectId,data.length,cyProps.checkbox||"true");
if (data.length === 0) {
$(_this).parents(".select-page").find(".dd-content").html('暂无数据');
}
var selectData = dataPage(1, defaultParam.limit, data);
$(this).parents(".select-page").find(".select-item").remove();
var _checkbox = cyProps.checkbox || "true";
var _value = $(_this).parents(".select-page").find(".form-input").val() || "";
//数据渲染
for (var i = 0; i < selectData.length; i++) {
var _dd = _checkbox === "true"
? ''
: '' + selectData[i].value + '';
//默认值回选
var _values = _value.split(",") || "";
if (_values.indexOf(selectData[i].code) > -1) {
if (_checkbox === "true") {
_dd = _dd.replace('' + 'id:' + _value + ';用户名:' +_title + '×';
$(this).parents(".select-page").find(".multi-select a").remove();
$(this).parents(".select-page").find(".multi-select ").append(_selected);
$(this).parents(".select-page").find(".form-input").val(_value);
$(this).parent().find(".layui-this").removeClass("layui-this");
$(this).parent().find("[lay-value='" + _value + "']").addClass("layui-this");
//是否显示提示语
var selectId = $(this).parents(".select-page").attr("select-id");
showTips(selectId);
});
/**复选点击监听事件**/
layui.use(['form'], function () {
var form = layui.form;
form.on('checkbox(selectPageItem)', function (data) {
var formValue = $(data.elem).parents(".select-page").find(".form-input").val();
var _value=$(data.elem).parents(".select-item").attr("lay-value");
var _values = formValue.split(",");
//如果是勾选
if(data.elem.checked===true){
var _title = $(data.elem).parents(".select-item").attr("lay-title");
// var _selected = '' + 'id:' + _value + ';用户名:' +_title +'×';
var _selected = '' + _title +'×';
$(data.elem).parents(".select-page").find(".multi-select").append(_selected);
//修改隐藏域的值
formValue+=","+_value;
$(data.elem).parents(".select-page").find(".form-input").val(formValue);
}
else{
var _index = _values.indexOf(_value);
//从该数组中删除该元素
_values.splice(_index, 1);
//修改隐藏域的值
$(data.elem).parents(".select-page").find(".form-input").val(_values.join(","));
$(data.elem).parents(".select-page").find(".selected-title[lay-value='"+_value+"']").parents("a").remove();
}
//是否显示提示语
var selectId =$(data.elem).parents(".select-page").attr("select-id");
showTips(selectId);
//重置面板位置
resetPosition(data.elem);
return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
});
})(jQuery);
$(document).ready(function () {
var selectPageTools = $("[cyType='selectPageTool']");
for (var i = 0; i < selectPageTools.length; i++) {
$(selectPageTools[i]).selectPage();
}
});