Files
jiapu/dist/public/js/lay-module/tableSelect/tableSelect.js
T

2 lines
4.7 KiB
JavaScript

layui.define(["table","jquery","form"],function(g){"use strict";var p="tableSelect",h=layui.jquery,i=layui.table,m=layui.form,s=function(){this.v="1.1.0"};s.prototype.render=function(t){var u=h(t.elem),x=t.table.done||function(){};t.searchKey=t.searchKey||"keyword",t.searchPlaceholder=t.searchPlaceholder||"关键词搜索",t.checkedKey=t.checkedKey,t.table.page=t.table.page||!0,t.table.height=t.table.height||315,u.off("click").on("click",function(S){if(S.stopPropagation(),h("div.tableSelect").length>=1)return!1;var w=u.offset().top+u.outerHeight()+"px",K=u.offset().left+"px",l="tableSelect_table_"+new Date().getTime(),r='<div class="tableSelect layui-anim layui-anim-upbit" style="left:'+K+";top:"+w+';border: 1px solid #d2d2d2;background-color: #fff;box-shadow: 0 2px 4px rgba(0,0,0,.12);padding:10px 10px 0 10px;position: absolute;z-index:66666666;margin: 5px 0;border-radius: 2px;min-width:530px;">';r+='<div class="tableSelectBar">',r+='<form class="layui-form" action="" style="display:inline-block;">',r+='<input style="display:inline-block;width:190px;height:30px;vertical-align:middle;margin-right:-1px;border: 1px solid #C9C9C9;" type="text" name="'+t.searchKey+'" placeholder="'+t.searchPlaceholder+'" autocomplete="off" class="layui-input"><button class="layui-btn layui-btn-sm layui-btn-primary tableSelect_btn_search" lay-submit lay-filter="tableSelect_btn_search"><i class="layui-icon layui-icon-search"></i></button>',r+="</form>",r+='<button style="float:right;" class="layui-btn layui-btn-sm tableSelect_btn_select">选择<span></span></button>',r+="</div>",r+='<table id="'+l+'" lay-filter="'+l+'"></table>',r+="</div>",r=h(r),h("body").append(r);var n=[];t.table.elem="#"+l,t.table.id=l,t.table.done=function(e,a,d){A(e,a,d),C(e,a,d),x(e,a,d)};var _=i.render(t.table);i.on("radio("+l+")",function(e){t.checkedKey&&(n=i.checkStatus(l).data),y(i.checkStatus(l).data.length)}),i.on("checkbox("+l+")",function(e){if(t.checkedKey){if(e.checked)for(var a=0;a<i.checkStatus(l).data.length;a++)n.push(i.checkStatus(l).data[a]);else if(e.type=="all")for(var d=0;d<i.cache[l].length;d++)for(var a=0;a<n.length;a++)n[a][t.checkedKey]==i.cache[l][d][t.checkedKey]&&n.splice(a,1);else{let c=function(){for(var f="",b=0;b<i.cache[l].length;b++)i.cache[l][b].LAY_CHECKED||(f=i.cache[l][b][t.checkedKey]);return f};for(var o=e.data[t.checkedKey]||c(),a=0;a<n.length;a++)n[a][t.checkedKey]==o&&n.splice(a,1)}n=v(n,t.checkedKey),y(n.length)}else y(i.checkStatus(l).data.length)});function C(e,a,d){for(var o=0;o<e.data.length;o++)for(var c=0;c<n.length;c++)if(e.data[o][t.checkedKey]==n[c][t.checkedKey]){e.data[o].LAY_CHECKED=!0;var f=e.data[o].LAY_TABLE_INDEX,b=h("#"+l).next().find("tr[data-index="+f+'] input[type="checkbox"]');b.prop("checked",!0).next().addClass("layui-form-checked");var H=h("#"+l).next().find("tr[data-index="+f+'] input[type="radio"]');H.prop("checked",!0).next().addClass("layui-form-radioed").find("i").html("&#xe643;")}var B=i.checkStatus(l);B.isAll&&(h("#"+l).next().find('.layui-table-header th[data-field="0"] input[type="checkbox"]').prop("checked",!0),h("#"+l).next().find('.layui-table-header th[data-field="0"] input[type="checkbox"]').next().addClass("layui-form-checked")),y(n.length)}function A(e,a,d){if(t.checkedKey&&u.attr("ts-selected")){for(var o=u.attr("ts-selected").split(","),c=0;c<e.data.length;c++)for(var f=0;f<o.length;f++)e.data[c][t.checkedKey]==o[f]&&(n.push(e.data[c]),i.setRowChecked(l,{index:c,type:t.table.cols[0][0].type}));n=v(n,t.checkedKey)}}function y(e){r.find(".tableSelect_btn_select span").html(e==0?"":"("+e+")")}function v(e,a){var d=[],o=[];if(e.length==0)return e;if(a){for(var c=0;c<e.length;c++)o[e[c][a]]||(d.push(e[c]),o[e[c][a]]=!0);return d}else{for(var c=0;c<e.length;c++)o[e[c]]||(d.push(e[c]),o[e[c]]=!0);return d}}var D=u.offset().top+u.outerHeight()+r.outerHeight()-h(window).scrollTop()>h(window).height(),E=u.offset().left+r.outerWidth()>h(window).width();D&&r.css({top:"auto",bottom:"0px"}),E&&r.css({left:"auto",right:"5px"}),m.on("submit(tableSelect_btn_search)",function(e){return _.reload({where:e.field,page:{curr:1}}),!1}),i.on("rowDouble("+l+")",function(e){var a={data:[e.data]};k(a)}),r.find(".tableSelect_btn_select").on("click",function(){var e=i.checkStatus(l);n.length>1&&(e.data=n),k(e)});function k(e){if(t.checkedKey){for(var a=[],d=0;d<e.data.length;d++)a.push(e.data[d][t.checkedKey]);u.attr("ts-selected",a.join(","))}t.done(u,e),r.remove(),delete i.cache[l],n=[]}h(document).mouseup(function(e){var a=h(""+t.elem+",.tableSelect");!a.is(e.target)&&a.has(e.target).length===0&&(r.remove(),delete i.cache[l],n=[])})})},s.prototype.hide=function(t){h(".tableSelect").remove()};var s=new s;window.top==window.self&&h(window).scroll(function(){s.hide()}),g(p,s)});