/** * 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(); } });