Brak opisu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

selectpage.min.js 31KB

123456789
  1. layui.define(['jquery'],function(exports) {
  2. var jQuery=layui.$;
  3. !function(k){"use strict";function r(e,o){k.each({data:"source",keyField:"primaryKey",showField:"field",pageSize:"perPage"},function(e,t){void 0!==o[t]&&(o[e]=o[t],delete o[t])}),this.setOption(o),this.setLanguage(),this.setCssClass(),this.setProp(),this.setElem(e),this.setButtonAttrDefault(),this.setInitRecord(),this.eDropdownButton(),this.eInput(),this.eWhole()}var n={data:void 0,lang:"cn",multiple:!1,pagination:!0,dropButton:!0,listSize:10,multipleControlbar:!0,maxSelectLimit:0,selectToCloseList:!1,initRecord:void 0,dbTable:"tbl",keyField:"id",showField:"name",searchField:void 0,andOr:"OR",separator:",",orderBy:void 0,pageSize:10,params:void 0,formatItem:void 0,autoFillResult:!1,autoSelectFirst:!1,noResultClean:!0,selectOnly:!1,inputDelay:.5,eSelect:void 0,eOpen:void 0,eAjaxSuccess:void 0,eTagRemove:void 0,eClear:void 0};function a(e){return k(e).closest("div.sp_container").find("input.sp_input")}r.version="2.19",r.dataKey="selectPageObject",r.prototype.setOption=function(e){e.searchField=e.searchField||e.showField,e.andOr=e.andOr.toUpperCase(),"AND"!==e.andOr&&"OR"!==e.andOr&&(e.andOr="AND");for(var o,t=["searchField"],a=0;a<t.length;a++)e[t[a]]=this.strToArray(e[t[a]]);e.orderBy=e.orderBy||e.showField,!1!==e.orderBy&&(e.orderBy=this.setOrderbyOption(e.orderBy,e.showField)),e.multiple&&!e.selectToCloseList&&(e.autoFillResult=!1,e.autoSelectFirst=!1),e.pagination||(e.pageSize=200),("number"!==k.type(e.listSize)||e.listSize<0)&&(e.listSize=10),"string"==typeof e.formatItem&&(o=e.formatItem,e.formatItem=function(t){return"function"==typeof Template&&o.match(/\#([a-zA-Z0-9_\-]+)$/)?Template(o.substring(1),t):o.replace(/\{(.*?)\}/gi,function(e){return e=e.substring(1,e.length-1),void 0!==t[e]?t[e]:""})}),this.option=e},r.prototype.strToArray=function(e){return e?e.replace(/[\s ]+/g,"").split(","):""},r.prototype.setOrderbyOption=function(e,t){var o=[],a=[];if("object"==typeof e)for(var n=0;n<e.length;n++)(a=k.trim(e[n]).split(" ")).length&&o.push(2===a.length?a.concat():[a[0],"ASC"]);else a=k.trim(e).split(" "),o[0]=2===a.length?a.concat():a[0].toUpperCase().match(/^(ASC|DESC)$/i)?[t,a[0].toUpperCase()]:[a[0],"ASC"];return o},r.prototype.setLanguage=function(){var e,t=this.option;switch(t.lang){case"en":e={add_btn:"Add button",add_title:"add a box",del_btn:"Del button",del_title:"delete a box",next:"Next",next_title:"Next"+t.pageSize+" (Right key)",prev:"Prev",prev_title:"Prev"+t.pageSize+" (Left key)",first_title:"First (Shift + Left key)",last_title:"Last (Shift + Right key)",get_all_btn:"Get All (Down key)",get_all_alt:"(button)",close_btn:"Close (Tab key)",close_alt:"(button)",loading:"loading...",loading_alt:"(loading)",page_info:"page_num of page_count",select_ng:"Attention : Please choose from among the list.",select_ok:"OK : Correctly selected.",not_found:"not found",ajax_error:"An error occurred while connecting to server.",clear:"Clear content",select_all:"Select current page",unselect_all:"Clear current page",clear_all:"Clear all selected",max_selected:"You can only select up to max_selected_limit items"};break;case"cn":default:e={add_btn:"添加按钮",add_title:"添加区域",del_btn:"删除按钮",del_title:"删除区域",next:"下一页",next_title:"下"+t.pageSize+" (→)",prev:"上一页",prev_title:"上"+t.pageSize+" (←)",first_title:"首页 (Shift + ←)",last_title:"尾页 (Shift + →)",get_all_btn:"获得全部 (↓)",get_all_alt:"(按钮)",close_btn:"关闭 (Tab键)",close_alt:"(按钮)",loading:"读取中...",loading_alt:"(读取中)",page_info:"第 page_num 页(共page_count页)",select_ng:"请注意:请从列表中选择.",select_ok:"OK : 已经选择.",not_found:"无查询结果",ajax_error:"连接到服务器时发生错误!",clear:"清除内容",select_all:"选择当前页项目",unselect_all:"取消选择当前页项目",clear_all:"清除全部已选择项目",max_selected:"最多只能选择 max_selected_limit 个项目"}}this.message=e},r.prototype.setCssClass=function(){this.css_class={container:"sp_container",container_open:"sp_container_open",re_area:"sp_result_area",result_open:"sp_result_area_open",control_box:"sp_control_box",element_box:"sp_element_box",navi:"sp_navi",results:"sp_results",re_off:"sp_results_off",select:"sp_over",select_ok:"sp_select_ok",select_ng:"sp_select_ng",selected:"sp_selected",input_off:"sp_input_off",message_box:"sp_message_box",disabled:"sp_disabled",button:"sp_button",caret_open:"sp_caret_open",btn_on:"sp_btn_on",btn_out:"sp_btn_out",input:"sp_input",clear_btn:"sp_clear_btn",align_right:"sp_align_right"}},r.prototype.setProp=function(){this.prop={disabled:!1,current_page:1,max_page:1,is_loading:!1,xhr:!1,key_paging:!1,key_select:!1,prev_value:"",selected_text:"",last_input_time:void 0,init_set:!1},this.template={tag:{content:'<li class="selected_tag" itemvalue="#item_value#">#item_text#<span class="tag_close"><i class="spfont sp-close"></i></span></li>',textKey:"#item_text#",valueKey:"#item_value#"},page:{current:"page_num",total:"page_count"},msg:{maxSelectLimit:"max_selected_limit"}}},r.prototype.elementRealSize=function(e,t){var o,a={absolute:!1,clone:!1,includeMargin:!1,display:"block"},n=e.eq(0),l=[],i="",e=function(){o.each(function(e){var t=k(this),e=l[e];void 0===e?t.removeAttr("style"):t.attr("style",e)})};(function(){o=n.parents().addBack().filter(":hidden"),i+="visibility: hidden !important; display: "+a.display+" !important; ",!0===a.absolute&&(i+="position: absolute !important;"),o.each(function(){var e=k(this),t=e.attr("style");l.push(t),e.attr("style",t?t+";"+i:i)})})();t=/(outer)/.test(t)?n[t](a.includeMargin):n[t]();return e(),t},r.prototype.setElem=function(e){var t={},o=this.option,a=this.css_class,n=this.message,l=k(e),i=l.css("width"),e=l.outerWidth();-1<i.indexOf("%")||0<l.parent().length&&l.parent().width()==e?e="100%":(e<=0&&(e=this.elementRealSize(l,"outerWidth")),e<150&&(e=150)),t.combo_input=l.attr({autocomplete:"off"}).addClass(a.input).wrap("<div>"),o.selectOnly&&t.combo_input.prop("readonly",!0),t.container=t.combo_input.parent().addClass(a.container),t.combo_input.prop("disabled")&&(o.multiple?t.container.addClass(a.disabled):t.combo_input.addClass(a.input_off)),t.container.width(e),t.button=k("<div>").addClass(a.button),t.dropdown=k('<span class="sp_caret"></span>'),t.clear_btn=k("<div>").html(k("<i>").addClass("spfont sp-close")).addClass(a.clear_btn).attr("title",n.clear),o.dropButton||t.clear_btn.addClass(a.align_right),t.element_box=k("<ul>").addClass(a.element_box),o.multiple&&o.multipleControlbar&&(t.control=k("<div>").addClass(a.control_box)),t.result_area=k("<div>").addClass(a.re_area),o.pagination&&(t.navi=k("<div>").addClass("sp_pagination").append("<ul>")),t.results=k("<ul>").addClass(a.results);i=t.combo_input.attr("id")||t.combo_input.attr("name"),e=t.combo_input.attr("name")||"selectPage",n=e,a=i;t.hidden=k('<input type="hidden" class="sp_hidden" />').attr({name:n,id:a}).val(""),t.combo_input.attr({name:void 0!==l.data("name")?l.data("name"):e+"_text",id:i+"_text"}),t.container.append(t.hidden),o.dropButton&&(t.container.append(t.button),t.button.append(t.dropdown)),k(document.body).append(t.result_area),t.result_area.append(t.results),o.pagination&&t.result_area.append(t.navi),o.multiple&&(o.multipleControlbar&&(t.control.append('<button type="button" class="btn btn-default sp_clear_all" ><i class="spfont sp-clear"></i></button>'),t.control.append('<button type="button" class="btn btn-default sp_unselect_all" ><i class="spfont sp-unselect-all"></i></button>'),t.control.append('<button type="button" class="btn btn-default sp_select_all" ><i class="spfont sp-select-all"></i></button>'),t.control_text=k("<p>"),t.control.append(t.control_text),t.result_area.prepend(t.control)),t.container.addClass("sp_container_combo"),t.combo_input.addClass("sp_combo_input").before(t.element_box),(o=k("<li>").addClass("input_box")).append(t.combo_input),t.element_box.append(o),t.combo_input.attr("placeholder")&&t.combo_input.attr("placeholder_bak",t.combo_input.attr("placeholder"))),this.elem=t},r.prototype.setButtonAttrDefault=function(){this.option.dropButton&&this.elem.button.attr("title",this.message.close_btn)},r.prototype.setInitRecord=function(e){var a,t,o,n=this,l=n.option,i=n.elem,s="";"undefined"!=k.type(i.combo_input.data("init"))&&(l.initRecord=String(i.combo_input.data("init"))),e||l.initRecord||!i.combo_input.val()||(l.initRecord=i.combo_input.val()),i.combo_input.val(""),e||i.hidden.val(l.initRecord),(s=e&&i.hidden.val()?i.hidden.val():l.initRecord)&&("object"==typeof l.data?(a=new Array,o=s.split(","),k.each(o,function(e,t){for(var o=0;o<l.data.length;o++)if(l.data[o][l.keyField]==t){a.push(l.data[o]);break}}),!l.multiple&&1<a.length&&(a=[a[0]]),n.afterInit(n,a)):(i=l.params,o={},l.searchField,s={searchTable:l.dbTable,searchKey:l.keyField,searchValue:s,orderBy:l.orderBy,showField:l.showField,keyField:l.keyField,keyValue:s,searchField:l.searchField},o=i&&(t=k.isFunction(i)?i(n):i)&&k.isPlainObject(t)?k.extend({},s,t):s,k.ajax({dataType:"json",type:"POST",url:l.data,data:o,success:function(e){var t=null;l.eAjaxSuccess&&k.isFunction(l.eAjaxSuccess)&&(t=l.eAjaxSuccess(e)),n.afterInit(n,t.list)},error:function(e,t,o){n.ajaxErrorNotify(n,o)}})))},r.prototype.afterInit=function(a,e){var n,t,o;!e||k.isArray(e)&&0===e.length||(k.isArray(e)||(e=[e]),n=a.option,t=a.css_class,a.data=e,n.multiple?(a.prop.init_set=!0,a.clearAll(a),k.each(e,function(e,t){var o=t[n.keyField],o={text:t[n.showField],value:o};a.isAlreadySelected(a,o)||a.addNewTag(a,t,o)}),a.tagValuesSet(a),a.inputResize(a),a.elem.hidden.blur(),a.prop.init_set=!1):(e=(o=e[0])[n.keyField],o=o[n.showField],a.elem.combo_input.val(o),a.elem.hidden.val(e),a.prop.prev_value=o,a.prop.selected_text=o,n.selectOnly&&a.elem.combo_input.attr("title",a.message.select_ok).removeClass(t.select_ng).addClass(t.select_ok),a.putClearButton()))},r.prototype.eDropdownButton=function(){var t=this;t.option.dropButton&&t.elem.button.mouseup(function(e){e.stopPropagation(),t.elem.result_area.is(":hidden")&&!t.elem.combo_input.prop("disabled")?t.elem.combo_input.focus():t.hideResults(t)})},r.prototype.eInput=function(){function o(){a.prop.page_move=!1,a.suggest(a),a.setCssFocusedInput(a)}var a=this,n=a.option,t=a.elem,e=a.message;t.combo_input.keyup(function(e){a.processKey(a,e)}).keydown(function(e){a.processControl(a,e)}).focus(function(e){t.result_area.is(":hidden")&&(e.stopPropagation(),a.prop.first_show=!0,o())}),t.container.on("click.SelectPage","div."+a.css_class.clear_btn,function(e){e.stopPropagation(),a.disabled(a)||(a.clearAll(a,!0),a.elem.hidden.change(),n.eClear&&k.isFunction(n.eClear)&&n.eClear(a))}),t.result_area.on("mousedown.SelectPage",function(e){e.stopPropagation()}),n.multiple&&(n.multipleControlbar&&(t.control.find(".sp_select_all").on("click.SelectPage",function(e){a.selectAllLine(a)}).hover(function(){t.control_text.html(e.select_all)},function(){t.control_text.html("")}),t.control.find(".sp_unselect_all").on("click.SelectPage",function(e){a.unSelectAllLine(a)}).hover(function(){t.control_text.html(e.unselect_all)},function(){t.control_text.html("")}),t.control.find(".sp_clear_all").on("click.SelectPage",function(e){a.clearAll(a,!0)}).hover(function(){t.control_text.html(e.clear_all)},function(){t.control_text.html("")})),t.element_box.on("click.SelectPage",function(e){e=e.target||e.srcElement;k(e).is("ul")&&t.combo_input.focus()}),t.element_box.on("click.SelectPage","span.tag_close",function(){var e=k(this).closest("li"),t=e.data("dataObj");a.removeTag(a,e),o(),n.eTagRemove&&k.isFunction(n.eTagRemove)&&n.eTagRemove([t])}),a.inputResize(a))},r.prototype.eWhole=function(){function o(e){e.elem.combo_input.val(""),e.option.multiple||e.elem.hidden.val(""),e.prop.selected_text=""}var a=this.css_class;k(document.body).off("mousedown.selectPage").on("mousedown.selectPage",function(e){var e=e.target||e.srcElement,t=k(e).closest("div."+a.container);k("div."+a.container+"."+a.container_open).each(function(){if(this!=t[0]){var e=k(this).find("input."+a.input).data(r.dataKey);if(!e.elem.combo_input.val()&&e.elem.hidden.val()&&!e.option.multiple)return e.prop.current_page=1,o(e),e.hideResults(e),!0;e.elem.results.find("li").not("."+a.message_box).length?!e.option.autoFillResult||e.elem.hidden.val()?e.hideResults(e):e.elem.results.find("li.sp_over").length?e.selectCurrentLine(e,!0):e.option.autoSelectFirst?(e.nextLine(e),e.selectCurrentLine(e,!0)):e.hideResults(e):(e.option.noResultClean?o(e):e.option.multiple||e.elem.hidden.val(""),e.hideResults(e))}})})},r.prototype.eResultList=function(){var t=this,o=this.css_class;t.elem.results.children("li").hover(function(){t.prop.key_select?t.prop.key_select=!1:k(this).hasClass(o.selected)||k(this).hasClass(o.message_box)||(k(this).addClass(o.select),t.setCssFocusedResults(t))},function(){k(this).removeClass(o.select)}).click(function(e){t.prop.key_select?t.prop.key_select=!1:(e.preventDefault(),e.stopPropagation(),k(this).hasClass(o.selected)||t.selectCurrentLine(t,!1))})},r.prototype.eScroll=function(){var s=this.css_class;k(window).on("scroll.SelectPage",function(e){k("div."+s.container+"."+s.container_open).each(function(){var e=k(this).find("input."+s.input).data(r.dataKey),t=e.elem.result_area.offset(),o=k(window).scrollTop(),a=k(document).height(),n=k(window).height(),l=e.elem.result_area.outerHeight(),i=t.top+l,l=n<a,a=e.elem.result_area.hasClass("shadowDown");l&&(a?n+o<i&&e.calcResultsSize(e):t.top<o&&e.calcResultsSize(e))})})},r.prototype.ePaging=function(){var t=this;t.option.pagination&&(t.elem.navi.find("li.csFirstPage").off("click").on("click",function(e){e.preventDefault(),t.firstPage(t)}),t.elem.navi.find("li.csPreviousPage").off("click").on("click",function(e){e.preventDefault(),t.prevPage(t)}),t.elem.navi.find("li.csNextPage").off("click").on("click",function(e){e.preventDefault(),t.nextPage(t)}),t.elem.navi.find("li.csLastPage").off("click").on("click",function(e){e.preventDefault(),t.lastPage(t)}))},r.prototype.ajaxErrorNotify=function(e,t){e.showMessage(e.message.ajax_error)},r.prototype.showMessage=function(e,t){t&&(t='<li class="'+e.css_class.message_box+'"><i class="spfont sp-warning"></i> '+t+"</li>",e.elem.results.empty().append(t).show(),e.calcResultsSize(e),e.setOpenStatus(e,!0),e.elem.control.hide(),e.option.pagination&&e.elem.navi.hide())},r.prototype.scrollWindow=function(e,t){var o,a=e.getCurrentLine(e),n=(a&&!t?a:e.elem.container).offset().top;e.prop.size_li=e.elem.results.children("li:first").outerHeight(),o=e.prop.size_li;var l,i=k(window).height(),t=k(window).scrollTop(),e=t+i-o;if(a.length)if(n<t||i<o)l=n-t;else{if(!(e<n))return;l=n-e}else n<t&&(l=n-t);window.scrollBy(0,l)},r.prototype.setOpenStatus=function(e,t){var o=e.elem,e=e.css_class;t?(o.container.addClass(e.container_open),o.result_area.addClass(e.result_open)):(o.container.removeClass(e.container_open),o.result_area.removeClass(e.result_open))},r.prototype.setCssFocusedInput=function(e){},r.prototype.setCssFocusedResults=function(e){},r.prototype.checkValue=function(e){var t=e.elem.combo_input.val();t!=e.prop.prev_value&&(e.prop.prev_value=t,e.prop.first_show=!1,e.option.selectOnly&&e.setButtonAttrDefault(),e.option.multiple||t||(e.elem.combo_input.val(""),e.elem.hidden.val(""),e.elem.clear_btn.remove()),e.suggest(e))},r.prototype.processKey=function(e,t){-1===k.inArray(t.keyCode,[37,38,39,40,27,9,13])&&(16!=t.keyCode&&e.setCssFocusedInput(e),e.inputResize(e),"string"===k.type(e.option.data)?(e.prop.last_input_time=t.timeStamp,setTimeout(function(){t.timeStamp-e.prop.last_input_time==0&&e.checkValue(e)},1e3*e.option.inputDelay)):e.checkValue(e))},r.prototype.processControl=function(e,t){if(-1<k.inArray(t.keyCode,[37,38,39,40,27,9])&&e.elem.result_area.is(":visible")||-1<k.inArray(t.keyCode,[13,9])&&e.getCurrentLine(e))switch(t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0,t.returnValue=!1,t.keyCode){case 37:t.shiftKey?e.firstPage(e):e.prevPage(e);break;case 38:e.prop.key_select=!0,e.prevLine(e);break;case 39:t.shiftKey?e.lastPage(e):e.nextPage(e);break;case 40:e.elem.results.children("li").length?(e.prop.key_select=!0,e.nextLine(e)):e.suggest(e);break;case 9:e.prop.key_paging=!0,e.selectCurrentLine(e,!0);break;case 13:e.selectCurrentLine(e,!0);break;case 27:e.prop.key_paging=!0,e.hideResults(e)}},r.prototype.abortAjax=function(e){e.prop.xhr&&(e.prop.xhr.abort(),e.prop.xhr=!1)},r.prototype.suggest=function(e){var t=k.trim(e.elem.combo_input.val()),o=!e.option.multiple&&t&&t==e.prop.selected_text?"":t;o=o.split(e.option.separator),e.option.eOpen&&k.isFunction(e.option.eOpen)&&e.option.eOpen.call(e),e.abortAjax(e);t=e.prop.current_page||1;"object"==typeof e.option.data?e.searchForJson(e,o,t):e.searchForDb(e,o,t)},r.prototype.setLoading=function(e){""===e.elem.results.html()&&e.setOpenStatus(e,!0)},r.prototype.searchForDb=function(l,i,s){var r=l.option;r.eAjaxSuccess&&k.isFunction(r.eAjaxSuccess)||l.hideResults(l);var e=r.params,t={},o=r.searchField;i.length&&i[0]&&i.join(l.option.separator)!==l.prop.prev_value&&(s=1);var a,n={q_word:i,pageNumber:s,pageSize:r.pageSize,andOr:r.andOr,orderBy:r.orderBy,searchTable:r.dbTable,showField:l.option.showField,keyField:l.option.keyField,searchField:l.option.searchField};!1!==r.orderBy&&(n.orderBy=r.orderBy),n[o]=i[0],t=e&&(a=k.isFunction(e)?e(l):e)&&k.isPlainObject(a)?k.extend({},n,a):n,l.prop.xhr=k.ajax({dataType:"json",url:r.data,type:"POST",data:t,success:function(e){if(!e||!k.isPlainObject(e))return l.hideResults(l),void l.ajaxErrorNotify(l,errorThrown);var t,o={};try{t=r.eAjaxSuccess(e),o.originalResult=t.list,o.cnt_whole=t.totalRow}catch(e){return void l.showMessage(l,l.message.ajax_error)}if(l.elem.navi&&k(l.elem.navi).toggleClass("hide",o.cnt_whole<=o.originalResult.length),o.candidate=[],o.keyField=[],"object"!=typeof o.originalResult)return l.prop.xhr=null,void l.notFoundSearch(l);o.cnt_page=o.originalResult.length;for(var a=0;a<o.cnt_page;a++)for(var n in o.originalResult[a])n==r.keyField&&o.keyField.push(o.originalResult[a][n]),n==r.showField&&o.candidate.push(o.originalResult[a][n]);l.prepareResults(l,o,i,s)},error:function(e,t,o){"abort"!=t&&(l.hideResults(l),l.ajaxErrorNotify(l,o))},complete:function(){l.prop.xhr=null}})},r.prototype.searchForJson=function(e,t,o){for(var a=e.option,n=[],l=[],i=[],s={},r=0,p=[];l[r]=t[r].replace(/\W/g,"\\$&").toString(),p[r]=new RegExp(l[r],"gi"),r++,r<t.length;);for(var c,u,r=0;r<a.data.length;r++){for(var d,m=!1,_=a.data[r],h=0;h<p.length;h++)if(d=_[a.searchField],a.formatItem&&k.isFunction(a.formatItem)&&(d=a.formatItem(_)),d.match(p[h])){if(m=!0,"OR"==a.andOr)break}else if(m=!1,"AND"==a.andOr)break;m&&n.push(_)}if(!1===a.orderBy)i=n.concat();else{for(var f=new RegExp("^"+l[0]+"$","gi"),g=new RegExp("^"+l[0],"gi"),v=[],y=[],b=[],r=0;r<n.length;r++){var x=a.orderBy[0][0],x=String(n[r][x]);(x.match(f)?v:x.match(g)?y:b).push(n[r])}b=a.orderBy[0][1].match(/^asc$/i)?(v=e.sortAsc(e,v),y=e.sortAsc(e,y),e.sortAsc(e,b)):(v=e.sortDesc(e,v),y=e.sortDesc(e,y),e.sortDesc(e,b)),i=i.concat(v).concat(y).concat(b)}s.cnt_whole=i.length,e.prop.page_move?i.length<=(o-1)*a.pageSize&&(o=1,e.prop.current_page=1):a.multiple||(c=e.elem.hidden.val(),"undefined"!==k.type(c)&&""!==k.trim(c)&&(u=0,k.each(i,function(e,t){if(t[a.keyField]==c)return u=e+1,!1}),(o=Math.ceil(u/a.pageSize))<1&&(o=1),e.prop.current_page=o));var C=(o-1)*a.pageSize,S=C+a.pageSize;s.originalResult=[];for(r=C;r<S&&void 0!==i[r];r++)for(var w in s.originalResult.push(i[r]),i[r])w==a.keyField&&(void 0===s.keyField&&(s.keyField=[]),s.keyField.push(i[r][w])),w==a.showField&&(void 0===s.candidate&&(s.candidate=[]),s.candidate.push(i[r][w]));void 0===s.candidate&&(s.candidate=[]),s.cnt_page=s.candidate.length,e.prepareResults(e,s,t,o)},r.prototype.sortAsc=function(o,e){return e.sort(function(e,t){e=e[o.option.orderBy[0][0]],t=t[o.option.orderBy[0][0]];return"number"===k.type(e)?e-t:String(e).localeCompare(String(t))}),e},r.prototype.sortDesc=function(o,e){return e.sort(function(e,t){e=e[o.option.orderBy[0][0]],t=t[o.option.orderBy[0][0]];return"number"===k.type(e)?t-e:String(t).localeCompare(String(e))}),e},r.prototype.notFoundSearch=function(e){e.elem.results.empty(),e.calcResultsSize(e),e.setOpenStatus(e,!0),e.setCssFocusedInput(e)},r.prototype.prepareResults=function(e,t,o,a){e.data=t.originalResult,e.option.pagination&&e.setNavi(e,t.cnt_whole,t.cnt_page,a),t.keyField||(t.keyField=!1),e.option.selectOnly&&1===t.candidate.length&&t.candidate[0]==o[0]&&(e.elem.hidden.val(t.keyField[0]),this.setButtonAttrDefault());a=!1;o&&o.length&&o[0]&&(a=!0),e.displayResults(e,t,a)},r.prototype.setNavi=function(e,t,o,a){var n,l,i,s,r=e.message,p=e.elem.navi.find("ul"),c=Math.ceil(t/e.option.pageSize);function u(){return r.page_info.replace(n.template.page.current,i).replace(n.template.page.total,s)}0===c?a=0:c<a?a=c:0===a&&(a=1),e.prop.current_page=a,e.prop.max_page=c,n=e,i=a,s=c,0===(l=p).find("li").length?(l.hide().empty(),l.append('<li class="csFirstPage" title="'+r.first_title+'" ><a href="javascript:void(0);"> <i class="spfont sp-first"></i> </a></li>'),l.append('<li class="csPreviousPage" title="'+r.prev_title+'" ><a href="javascript:void(0);"><i class="spfont sp-previous"></i></a></li>'),l.append('<li class="pageInfoBox"><a href="javascript:void(0);"> '+u()+" </a></li>"),l.append('<li class="csNextPage" title="'+r.next_title+'" ><a href="javascript:void(0);"><i class="spfont sp-next"></i></a></li>'),l.append('<li class="csLastPage" title="'+r.last_title+'" ><a href="javascript:void(0);"> <i class="spfont sp-last"></i> </a></li>'),l.show()):l.find("li.pageInfoBox a").html(u());var d="disabled",m=p.find("li.csFirstPage"),_=p.find("li.csPreviousPage"),h=p.find("li.csNextPage"),t=p.find("li.csLastPage");1===a||0===a?(m.hasClass(d)||m.addClass(d),_.hasClass(d)||_.addClass(d)):(m.hasClass(d)&&m.removeClass(d),_.hasClass(d)&&_.removeClass(d)),a===c||0===c?(h.hasClass(d)||h.addClass(d),t.hasClass(d)||t.addClass(d)):(h.hasClass(d)&&h.removeClass(d),t.hasClass(d)&&t.removeClass(d)),1<c&&e.ePaging()},r.prototype.displayResults=function(e,t,o){var a=e.option,n=e.elem;if(n.results.hide().empty(),a.multiple&&"number"===k.type(a.maxSelectLimit)&&0<a.maxSelectLimit){var l=n.element_box.find("li.selected_tag").length;if(0<l&&l>=a.maxSelectLimit){l=e.message.max_selected;return void e.showMessage(e,l.replace(e.template.msg.maxSelectLimit,a.maxSelectLimit))}}if(t.candidate.length)for(var i=t.candidate,s=t.keyField,r=n.hidden.val(),p=r?r.split(","):new Array,c="",u=0;u<i.length;u++){if(a.formatItem&&k.isFunction(a.formatItem))try{c=a.formatItem(t.originalResult[u])}catch(e){console.error("formatItem内容格式化函数内容设置不正确!"),c=i[u]}else c=i[u];var d=k("<li>").html(c).attr({pkey:s[u],index:u});a.formatItem||d.attr("title",c),-1!==k.inArray(s[u].toString(),p)&&d.addClass(e.css_class.selected),d.data("dataObj",t.originalResult[u]),n.results.append(d)}else{r='<li class="'+e.css_class.message_box+'"><i class="spfont sp-warning"></i> '+e.message.not_found+"</li>";n.results.append(r)}n.results.show(),a.multiple&&a.multipleControlbar&&n.control.show(),a.pagination&&n.navi.show(),e.calcResultsSize(e),e.setOpenStatus(e,!0),e.eResultList(),e.eScroll(),o&&t.candidate.length&&a.autoSelectFirst&&e.nextLine(e)},r.prototype.calcResultsSize=function(e){function t(){if("static"!==u.container.css("position")){c.pagination||(i=u.results.find("li:first").outerHeight(!0)*c.listSize,u.results.css({"max-height":i,"overflow-y":"auto"}));var e=k(document).width(),t=k(document).height(),o=k(window).height(),a=u.container.offset(),n=k(window).scrollTop(),l=u.result_area.outerWidth(),i=u.result_area.outerHeight(),s=a.left,r=u.container.outerHeight(),p=a.left+l>e?s-(l-u.container.outerWidth()):s,e=a.top,l=0,s=e+r+i+5,t=o<t;return i<e-n-5&&t&&o+n<s||!t&&o<s&&e+i+5<=e?(l=a.top-i-5,u.result_area.removeClass("shadowUp shadowDown").addClass("shadowUp")):(l=a.top+(c.multiple?u.container.outerHeight():r),u.result_area.removeClass("shadowUp shadowDown").addClass("shadowDown"),l+=5),{top:l+"px",left:p+"px"}}var a=u.combo_input.offset();u.result_area.css({top:a.top+u.combo_input.outerHeight()+"px",left:a.left+"px"})}var o,c=e.option,u=e.elem;u.result_area.is(":visible")?u.result_area.css(t()):(o=t(),u.result_area.css(o).show(1,function(){var e=t();o.top===e.top&&o.left===e.left||u.result_area.css(e)}))},r.prototype.hideResults=function(e){e.prop.key_paging&&(e.scrollWindow(e,!0),e.prop.key_paging=!1),e.setCssFocusedInput(e),e.option.autoFillResult,e.elem.results.empty(),e.elem.result_area.hide(),e.setOpenStatus(e,!1),k(window).off("scroll.SelectPage"),e.abortAjax(e),e.setButtonAttrDefault()},r.prototype.disabled=function(e,t){e.option;var o=e.elem;if("undefined"===k.type(t))return o.combo_input.prop("disabled");"boolean"===k.type(t)&&(o.combo_input.prop("disabled",t),t?o.container.addClass(e.css_class.disabled):o.container.removeClass(e.css_class.disabled))},r.prototype.firstPage=function(e){1<e.prop.current_page&&(e.prop.current_page=1,e.prop.page_move=!0,e.suggest(e))},r.prototype.prevPage=function(e){1<e.prop.current_page&&(e.prop.current_page--,e.prop.page_move=!0,e.suggest(e))},r.prototype.nextPage=function(e){e.prop.current_page<e.prop.max_page&&(e.prop.current_page++,e.prop.page_move=!0,e.suggest(e))},r.prototype.lastPage=function(e){e.prop.current_page<e.prop.max_page&&(e.prop.current_page=e.prop.max_page,e.prop.page_move=!0,e.suggest(e))},r.prototype.afterAction=function(e,t){e.inputResize(e),e.elem.combo_input.change(),e.setCssFocusedInput(e),e.prop.init_set||(e.option.multiple?(e.option.selectToCloseList&&(e.hideResults(e),e.elem.combo_input.blur()),!e.option.selectToCloseList&&t&&(e.suggest(e),e.elem.combo_input.focus())):(e.hideResults(e),e.elem.combo_input.blur()))},r.prototype.selectCurrentLine=function(e,t){e.scrollWindow(e,!0);var o,a,n,l=e.option,i=e.getCurrentLine(e);i&&(a=(o=i.data("dataObj"))[l.showField]||i.text(),n=i.attr("pkey"),l.multiple?(e.elem.combo_input.val(""),i={text:a,value:n},e.isAlreadySelected(e,i)||(e.addNewTag(e,o,i),e.tagValuesSet(e))):(e.elem.combo_input.val(a),e.elem.hidden.val(n)),l.selectOnly&&e.setButtonAttrDefault(),l.eSelect&&k.isFunction(l.eSelect)&&l.eSelect(o,e),e.prop.prev_value=e.elem.combo_input.val(),e.prop.selected_text=e.elem.combo_input.val(),e.putClearButton()),e.afterAction(e,!0)},r.prototype.putClearButton=function(){this.option.multiple||this.elem.combo_input.prop("disabled")||this.elem.container.append(this.elem.clear_btn)},r.prototype.selectAllLine=function(a){var n=a.option,l=new Array;a.elem.results.find("li").each(function(e,t){var o=k(t),t=o.data("dataObj"),o={text:t[n.showField]||o.text(),value:o.attr("pkey")};if(a.isAlreadySelected(a,o)||(a.addNewTag(a,t,o),a.tagValuesSet(a)),l.push(t),"number"===k.type(n.maxSelectLimit)&&0<n.maxSelectLimit&&n.maxSelectLimit===a.elem.element_box.find("li.selected_tag").length)return!1}),n.eSelect&&k.isFunction(n.eSelect)&&n.eSelect(l,a),a.afterAction(a,!0)},r.prototype.unSelectAllLine=function(o){var e=o.option,a=(o.elem.results.find("li").length,[]);o.elem.results.find("li").each(function(e,t){t=k(t).attr("pkey"),t=o.elem.element_box.find('li.selected_tag[itemvalue="'+t+'"]');t.length&&a.push(t.data("dataObj")),o.removeTag(o,t)}),o.afterAction(o,!0),e.eTagRemove&&k.isFunction(e.eTagRemove)&&e.eTagRemove(a)},r.prototype.clearAll=function(e,t){var o=e.option,a=[];o.multiple&&(e.elem.element_box.find("li.selected_tag").each(function(e,t){a.push(k(t).data("dataObj")),t.remove()}),e.elem.element_box.find("li.selected_tag").remove()),e.reset(e),e.afterAction(e,t),o.multiple?o.eTagRemove&&k.isFunction(o.eTagRemove)&&o.eTagRemove(a):e.elem.clear_btn.remove()},r.prototype.reset=function(e){e.elem.combo_input.val(""),e.elem.hidden.val(""),e.prop.prev_value="",e.prop.selected_text="",e.prop.current_page=1},r.prototype.getCurrentLine=function(e){if(e.elem.result_area.is(":hidden"))return!1;e=e.elem.results.find("li."+e.css_class.select);return!!e.length&&e},r.prototype.isAlreadySelected=function(e,t){var o=!1;return t.value&&(!(e=e.elem.hidden.val())||(e=e.split(","))&&e.length&&-1!=k.inArray(t.value,e)&&(o=!0)),o},r.prototype.addNewTag=function(e,t,o){var a;e.option.multiple&&t&&o&&(a=(a=(a=e.template.tag.content).replace(e.template.tag.textKey,o.text)).replace(e.template.tag.valueKey,o.value),(a=k(a)).data("dataObj",t),e.elem.combo_input.prop("disabled")&&a.find("span.tag_close").hide(),e.elem.combo_input.closest("li").before(a))},r.prototype.removeTag=function(e,t){var o=k(t).attr("itemvalue"),a=e.elem.hidden.val();"undefined"!=k.type(o)&&a&&(a=a.split(","),-1!=(o=k.inArray(o.toString(),a))&&(a.splice(o,1),e.elem.hidden.val(a.toString()).trigger("change"))),k(t).remove(),e.inputResize(e)},r.prototype.tagValuesSet=function(e){var t,o;!e.option.multiple||(t=e.elem.element_box.find("li.selected_tag"))&&t.length&&(o=new Array,k.each(t,function(e,t){t=k(t).attr("itemvalue");"undefined"!==k.type(t)&&o.push(t)}),o.length&&e.elem.hidden.val(o.join(",")).trigger("change"))},r.prototype.inputResize=function(e){var t,o,a;e.option.multiple&&(t=e.elem.combo_input.closest("li"),0===e.elem.element_box.find("li.selected_tag").length?(t.hasClass("full_width")||t.addClass("full_width"),e.elem.combo_input.attr("placeholder_bak")&&e.elem.combo_input.attr("placeholder",e.elem.combo_input.attr("placeholder_bak")).removeAttr("style")):(o=e,(a=t).removeClass("full_width"),a=.75*(o.elem.combo_input.val().length+1)+"em",o.elem.combo_input.css("width",a).removeAttr("placeholder")))},r.prototype.nextLine=function(e){var t,o=e.getCurrentLine(e);o?(t=e.elem.results.children("li").index(o),o.removeClass(e.css_class.select)):t=-1,++t<e.elem.results.children("li").length?(e.elem.results.children("li").eq(t).addClass(e.css_class.select),e.setCssFocusedResults(e)):e.setCssFocusedInput(e),e.scrollWindow(e,!1)},r.prototype.prevLine=function(e){var t,o=e.getCurrentLine(e);o?(t=e.elem.results.children("li").index(o),o.removeClass(e.css_class.select)):t=e.elem.results.children("li").length,-1<--t?(e.elem.results.children("li").eq(t).addClass(e.css_class.select),e.setCssFocusedResults(e)):e.setCssFocusedInput(e),e.scrollWindow(e,!1)};var e=k.fn.selectPage;k.fn.selectPage=function(a){return this.each(function(){var e=k(this),t=e.data(r.dataKey),o=k.extend({},n,e.data(),t&&t.option,"object"==typeof a&&a);t||e.data(r.dataKey,t=new r(this,o))})},k.fn.selectPage.Constructor=r,k.fn.selectPageClear=function(){return this.each(function(){var e=a(this).data(r.dataKey);e&&(e.prop.init_set=!0,e.clearAll(e),e.prop.init_set=!1)})},k.fn.selectPageRefresh=function(){return this.each(function(){var e=a(this).data(r.dataKey);e&&e.elem.hidden.val()&&e.setInitRecord(!0)})},k.fn.selectPageData=function(t){return this.each(function(){var e;t&&k.isArray(t)&&((e=a(this).data(r.dataKey))&&(e.clearAll(e),e.option.data=t))})},k.fn.selectPageDisabled=function(t){var o=!1;return this.each(function(){var e=a(this).data(r.dataKey);e&&("undefined"!==k.type(t)?e.disabled(e,t):o=e.disabled(e))}),o},k.fn.selectPageText=function(){var t="";return this.each(function(){var o,e=a(this).data(r.dataKey);e&&(e.option.multiple?(o=[],e.elem.element_box.find("li.selected_tag").each(function(e,t){o.push(k(t).text())}),t+=o.toString()):t+=e.elem.combo_input.val())}),t},k.fn.selectPage.noConflict=function(){return k.fn.selectPage=e,this}}(window.jQuery);
  4. //加载组件所需样式
  5. layui.link(layui.cache.base + 'selectPage/selectpage.css?v=v2.19');
  6. exports('selectPage',{});
  7. });