diff --git a/public/assets/js/require-backend.js b/public/assets/js/require-backend.js
index 4a2bfc4c..36383dac 100644
--- a/public/assets/js/require-backend.js
+++ b/public/assets/js/require-backend.js
@@ -6,14 +6,12 @@ require.config({
main: 'moment'
}],
//在打包压缩时将会把include中的模块合并到主文件中
- include: ['css', 'layer', 'toastr', 'fast', 'backend', 'backend-init', 'table', 'form', 'dragsort', 'drag', 'drop', 'addtabs', 'selectpage'],
+ include: ['css', 'layer', 'toastr', 'fast', 'backend', 'backend-init', 'table', 'form', 'dragsort', 'addtabs', 'selectpage'],
paths: {
'lang': "empty:",
'form': 'require-form',
'table': 'require-table',
'upload': 'require-upload',
- 'drag': 'jquery.drag.min',
- 'drop': 'jquery.drop.min',
'dropzone': 'dropzone.min',
'echarts': 'echarts.min',
'echarts-theme': 'echarts-theme',
diff --git a/public/assets/js/require-backend.min.js b/public/assets/js/require-backend.min.js
index 07214637..196fddfe 100644
--- a/public/assets/js/require-backend.min.js
+++ b/public/assets/js/require-backend.min.js
@@ -17,14 +17,12 @@ require.config({
main: 'moment'
}],
//在打包压缩时将会把include中的模块合并到主文件中
- include: ['css', 'layer', 'toastr', 'fast', 'backend', 'backend-init', 'table', 'form', 'dragsort', 'drag', 'drop', 'addtabs', 'selectpage'],
+ include: ['css', 'layer', 'toastr', 'fast', 'backend', 'backend-init', 'table', 'form', 'dragsort', 'addtabs', 'selectpage'],
paths: {
'lang': "empty:",
'form': 'require-form',
'table': 'require-table',
'upload': 'require-upload',
- 'drag': 'jquery.drag.min',
- 'drop': 'jquery.drop.min',
'dropzone': 'dropzone.min',
'echarts': 'echarts.min',
'echarts-theme': 'echarts-theme',
@@ -11711,6 +11709,7 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr
checkOnInit: true, //是否在初始化时判断
escape: true, //是否对内容进行转义
fixDropdownPosition: true, //是否修复下拉的定位
+ dragCheckboxMultiselect: true, //拖拽时复选框是否多选模式
selectedIds: [],
selectedData: [],
extend: {
@@ -11880,37 +11879,82 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr
table.on('post-body.bs.table', function (e, data) {
$(Table.config.refreshbtn, toolbar).find(".fa").removeClass("fa-spin");
if ($(Table.config.checkboxtd + ":first", table).find("input[type='checkbox'][data-index]").length > 0) {
- // 拖拽选择,需要重新绑定事件
- require(['drag', 'drop'], function () {
- var checkboxtd = $(Table.config.checkboxtd, table);
- checkboxtd.drag("start", function (ev, dd) {
- return $('
').css('opacity', .65).appendTo(document.body);
- }).drag(function (ev, dd) {
- $(dd.proxy).css({
- top: Math.min(ev.pageY, dd.startY),
- left: Math.min(ev.pageX, dd.startX),
- height: Math.abs(ev.pageY - dd.startY),
- width: Math.abs(ev.pageX - dd.startX)
- });
- }).drag("end", function (ev, dd) {
- $(dd.proxy).remove();
- });
- checkboxtd.drop("start", function () {
- Table.api.toggleattr(this);
- }).drop(function () {
- // Table.api.toggleattr(this);
- }).drop("end", function (e) {
- var that = this;
- setTimeout(function () {
- if (e.type === 'mousemove') {
- Table.api.toggleattr(that);
+ //拖拽选择复选框
+ var posx, posy, dragdiv, drag = false, prepare = false;
+ var mousemove = function (e) {
+ if (drag) {
+ var left = Math.min(e.pageX, posx);
+ var top = Math.min(e.pageY, posy);
+ var width = Math.abs(posx - e.pageX);
+ var height = Math.abs(posy - e.pageY);
+ dragdiv.css({left: left + "px", top: top + "px", width: width + "px", height: height + "px"});
+ var dragrect = {x: left, y: top, width: width, height: height};
+ $(Table.config.checkboxtd, table).each(function () {
+ var checkbox = $("input:checkbox", this);
+ var tdrect = this.getBoundingClientRect();
+ tdrect.x += document.documentElement.scrollLeft;
+ tdrect.y += document.documentElement.scrollTop;
+
+ var td_min_x = tdrect.x;
+ var td_min_y = tdrect.y;
+ var td_max_x = tdrect.x + tdrect.width;
+ var td_max_y = tdrect.y + tdrect.height;
+
+ var drag_min_x = dragrect.x;
+ var drag_min_y = dragrect.y;
+ var drag_max_x = dragrect.x + dragrect.width;
+ var drag_max_y = dragrect.y + dragrect.height;
+ var overlapped = td_min_x <= drag_max_x && td_max_x >= drag_min_x && td_min_y <= drag_max_y && td_max_y >= drag_min_y;
+ if (overlapped) {
+ if (!$(this).hasClass("overlaped")) {
+ $(this).addClass("overlaped");
+ checkbox.prop("checked", !checkbox.prop("checked"));
+ }
+ } else {
+ if ($(this).hasClass("overlaped")) {
+ $(this).removeClass("overlaped");
+ checkbox.prop("checked", !checkbox.prop("checked"));
+ }
}
- }, 0);
- });
- $.drop({
- multi: true
- });
+ });
+ }
+ };
+ var selectstart = function () {
+ return false;
+ };
+ var mouseup = function () {
+ if (drag) {
+ $(document).off("mousemove", mousemove);
+ $(document).off("selectstart", selectstart);
+ dragdiv.remove();
+ }
+ drag = false;
+ prepare = false;
+ $(document.body).css({'MozUserSelect': '', 'webkitUserSelect': ''}).attr('unselectable', 'off');
+ };
+
+ $(Table.config.checkboxtd, table).on("mousedown", function (e) {
+ //禁止鼠标右键事件
+ if (e.button === 2) {
+ return false;
+ }
+ posx = e.pageX;
+ posy = e.pageY;
+ prepare = true;
+ }).on("mousemove", function (e) {
+ if (prepare && !drag) {
+ drag = true;
+ dragdiv = $("");
+ dragdiv.css({position: 'absolute', width: 0, height: 0, border: "1px dashed blue", background: "#0029ff", left: e.pageX + "px", top: e.pageY + "px", opacity: .1});
+ dragdiv.appendTo(document.body);
+ $(document.body).css({'MozUserSelect': 'none', 'webkitUserSelect': 'none'}).attr('unselectable', 'on');
+ $(document).on("mousemove", mousemove).on("mouseup", mouseup).on("selectstart", selectstart);
+ if (options.dragCheckboxMultiselect) {
+ $(Table.config.checkboxtd, table).removeClass("overlaped");
+ }
+ }
});
+
}
});
var exportDataType = options.exportDataType;
@@ -12576,7 +12620,7 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr
row.ids = ids ? ids : (typeof row.ids !== 'undefined' ? row.ids : 0);
url = url == null || url.length === 0 ? '' : url.toString();
//自动添加ids参数
- url = !url.match(/(?=([?&]ids=)|(\/ids\/)|(\{ids}))/i) ?
+ url = !url.match(/(?=([?&]ids=)|(\/ids\/)|(\{ids}))/i) ?
url + (url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + '{ids}' : url;
url = url.replace(/\{(.*?)\}/gi, function (matched) {
matched = matched.substring(1, matched.length - 1);
@@ -13029,22 +13073,6 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr
define("dragsort", function(){});
-/*!
- * jquery.event.drag - v 2.2
- * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com
- * Open Source MIT License - http://threedubmedia.com/code/license
- */
-;(function(e){e.fn.drag=function(k,g,j){var i=typeof k=="string"?k:"",h=e.isFunction(k)?k:e.isFunction(g)?g:null;if(i.indexOf("drag")!==0){i="drag"+i}j=(k==h?g:j)||{};return h?this.bind(i,j,h):this.trigger(i)};var b=e.event,a=b.special,d=a.drag={defaults:{which:1,distance:0,not:":input",handle:null,relative:false,drop:true,click:false},datakey:"dragdata",noBubble:true,add:function(i){var h=e.data(this,d.datakey),g=i.data||{};h.related+=1;e.each(d.defaults,function(j,k){if(g[j]!==undefined){h[j]=g[j]}})},remove:function(){e.data(this,d.datakey).related-=1},setup:function(){if(e.data(this,d.datakey)){return}var g=e.extend({related:0},d.defaults);e.data(this,d.datakey,g);b.add(this,"touchstart mousedown",d.init,g);if(this.attachEvent){this.attachEvent("ondragstart",d.dontstart)}},teardown:function(){var g=e.data(this,d.datakey)||{};if(g.related){return}e.removeData(this,d.datakey);b.remove(this,"touchstart mousedown",d.init);d.textselect(true);if(this.detachEvent){this.detachEvent("ondragstart",d.dontstart)}},init:function(i){if(d.touched){return}var g=i.data,h;if(i.which!=0&&g.which>0&&i.which!=g.which){return}if(e(i.target).is(g.not)){return}if(g.handle&&!e(i.target).closest(g.handle,i.currentTarget).length){return}d.touched=i.type=="touchstart"?this:null;g.propagates=1;g.mousedown=this;g.interactions=[d.interaction(this,g)];g.target=i.target;g.pageX=i.pageX;g.pageY=i.pageY;g.dragging=null;h=d.hijack(i,"draginit",g);if(!g.propagates){return}h=d.flatten(h);if(h&&h.length){g.interactions=[];e.each(h,function(){g.interactions.push(d.interaction(this,g))})}g.propagates=g.interactions.length;if(g.drop!==false&&a.drop){a.drop.handler(i,g)}d.textselect(false);if(d.touched){b.add(d.touched,"touchmove touchend",d.handler,g)}else{b.add(document,"mousemove mouseup",d.handler,g)}if(!d.touched||g.live){return false}},interaction:function(h,g){var i=e(h)[g.relative?"position":"offset"]()||{top:0,left:0};return{drag:h,callback:new d.callback(),droppable:[],offset:i}},handler:function(h){var g=h.data;switch(h.type){case !g.dragging&&"touchmove":h.preventDefault();case !g.dragging&&"mousemove":if(Math.pow(h.pageX-g.pageX,2)+Math.pow(h.pageY-g.pageY,2)0){e.removeData(this,"suppress."+g.type);return}return f.apply(this,arguments)};if(b.fixHooks!==undefined){var c=b.fixHooks.touchstart=b.fixHooks.touchmove=b.fixHooks.touchend=b.fixHooks.touchcancel={props:"clientX clientY pageX pageY screenX screenY".split(" "),filter:function(h,i){if(i){var g=(i.touches&&i.touches[0])||(i.changedTouches&&i.changedTouches[0])||null;if(g){e.each(c.props,function(j,k){h[k]=g[k]})}}return h}};}a.draginit=a.dragstart=a.dragend=d})(jQuery);
-define("drag", function(){});
-
-/*!
- * jquery.event.drop - v 2.2
- * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com
- * Open Source MIT License - http://threedubmedia.com/code/license
- */
-;(function(d){d.fn.drop=function(i,e,h){var g=typeof i=="string"?i:"",f=d.isFunction(i)?i:d.isFunction(e)?e:null;if(g.indexOf("drop")!==0){g="drop"+g}h=(i==f?e:h)||{};return f?this.bind(g,h,f):this.trigger(g)};d.drop=function(e){e=e||{};b.multi=e.multi===true?Infinity:e.multi===false?1:!isNaN(e.multi)?e.multi:b.multi;b.delay=e.delay||b.delay;b.tolerance=d.isFunction(e.tolerance)?e.tolerance:e.tolerance===null?null:b.tolerance;b.mode=e.mode||b.mode||"intersect"};var c=d.event,a=c.special,b=d.event.special.drop={multi:1,delay:20,mode:"overlap",targets:[],datakey:"dropdata",noBubble:true,add:function(f){var e=d.data(this,b.datakey);e.related+=1},remove:function(){d.data(this,b.datakey).related-=1},setup:function(){if(d.data(this,b.datakey)){return}var e={related:0,active:[],anyactive:0,winner:0,location:{}};d.data(this,b.datakey,e);b.targets.push(this);return false},teardown:function(){var f=d.data(this,b.datakey)||{};if(f.related){return}d.removeData(this,b.datakey);var e=this;b.targets=d.grep(b.targets,function(g){return(g!==e)})},handler:function(g,e){var f,h;if(!e){return}switch(g.type){case"mousedown":case"touchstart":h=d(b.targets);if(typeof e.drop=="string"){h=h.filter(e.drop)}h.each(function(){var i=d.data(this,b.datakey);i.active=[];i.anyactive=0;i.winner=0});e.droppable=h;a.drag.hijack(g,"dropinit",e);break;case"mousemove":case"touchmove":b.event=g;if(!b.timer){b.tolerate(e)}break;case"mouseup":case"touchend":b.timer=clearTimeout(b.timer);if(e.propagates){a.drag.hijack(g,"drop",e);a.drag.hijack(g,"dropend",e)}break}},locate:function(k,h){var l=d.data(k,b.datakey),g=d(k),i=g.offset()||{},e=g.outerHeight(),j=g.outerWidth(),f={elem:k,width:j,height:e,top:i.top,left:i.left,right:i.left+j,bottom:i.top+e};if(l){l.location=f;l.index=h;l.elem=k}return f},contains:function(e,f){return((f[0]||f.left)>=e.left&&(f[0]||f.right)<=e.right&&(f[1]||f.top)>=e.top&&(f[1]||f.bottom)<=e.bottom)},modes:{intersect:function(f,e,g){return this.contains(g,[f.pageX,f.pageY])?1000000000:this.modes.overlap.apply(this,arguments)},overlap:function(f,e,g){return Math.max(0,Math.min(g.bottom,e.bottom)-Math.max(g.top,e.top))*Math.max(0,Math.min(g.right,e.right)-Math.max(g.left,e.left))},fit:function(f,e,g){return this.contains(g,e)?1:0},middle:function(f,e,g){return this.contains(g,[e.left+e.width*0.5,e.top+e.height*0.5])?1:0}},sort:function(f,e){return(e.winner-f.winner)||(f.index-e.index)},tolerate:function(q){var k,e,n,j,l,m,g,p=0,f,h=q.interactions.length,r=[b.event.pageX,b.event.pageY],o=b.tolerance||b.modes[b.mode];do{if(f=q.interactions[p]){if(!f){return}f.drop=[];l=[];m=f.droppable.length;if(o){n=b.locate(f.proxy)}k=0;do{if(g=f.droppable[k]){j=d.data(g,b.datakey);e=j.location;if(!e){continue}j.winner=o?o.call(b,b.event,n,e):b.contains(e,r)?1:0;l.push(j)}}while(++k 0) {
- // 拖拽选择,需要重新绑定事件
- require(['drag', 'drop'], function () {
- var checkboxtd = $(Table.config.checkboxtd, table);
- checkboxtd.drag("start", function (ev, dd) {
- return $('').css('opacity', .65).appendTo(document.body);
- }).drag(function (ev, dd) {
- $(dd.proxy).css({
- top: Math.min(ev.pageY, dd.startY),
- left: Math.min(ev.pageX, dd.startX),
- height: Math.abs(ev.pageY - dd.startY),
- width: Math.abs(ev.pageX - dd.startX)
- });
- }).drag("end", function (ev, dd) {
- $(dd.proxy).remove();
- });
- checkboxtd.drop("start", function () {
- Table.api.toggleattr(this);
- }).drop(function () {
- // Table.api.toggleattr(this);
- }).drop("end", function (e) {
- var that = this;
- setTimeout(function () {
- if (e.type === 'mousemove') {
- Table.api.toggleattr(that);
+ //拖拽选择复选框
+ var posx, posy, dragdiv, drag = false, prepare = false;
+ var mousemove = function (e) {
+ if (drag) {
+ var left = Math.min(e.pageX, posx);
+ var top = Math.min(e.pageY, posy);
+ var width = Math.abs(posx - e.pageX);
+ var height = Math.abs(posy - e.pageY);
+ dragdiv.css({left: left + "px", top: top + "px", width: width + "px", height: height + "px"});
+ var dragrect = {x: left, y: top, width: width, height: height};
+ $(Table.config.checkboxtd, table).each(function () {
+ var checkbox = $("input:checkbox", this);
+ var tdrect = this.getBoundingClientRect();
+ tdrect.x += document.documentElement.scrollLeft;
+ tdrect.y += document.documentElement.scrollTop;
+
+ var td_min_x = tdrect.x;
+ var td_min_y = tdrect.y;
+ var td_max_x = tdrect.x + tdrect.width;
+ var td_max_y = tdrect.y + tdrect.height;
+
+ var drag_min_x = dragrect.x;
+ var drag_min_y = dragrect.y;
+ var drag_max_x = dragrect.x + dragrect.width;
+ var drag_max_y = dragrect.y + dragrect.height;
+ var overlapped = td_min_x <= drag_max_x && td_max_x >= drag_min_x && td_min_y <= drag_max_y && td_max_y >= drag_min_y;
+ if (overlapped) {
+ if (!$(this).hasClass("overlaped")) {
+ $(this).addClass("overlaped");
+ checkbox.prop("checked", !checkbox.prop("checked"));
+ }
+ } else {
+ if ($(this).hasClass("overlaped")) {
+ $(this).removeClass("overlaped");
+ checkbox.prop("checked", !checkbox.prop("checked"));
+ }
}
- }, 0);
- });
- $.drop({
- multi: true
- });
+ });
+ }
+ };
+ var selectstart = function () {
+ return false;
+ };
+ var mouseup = function () {
+ if (drag) {
+ $(document).off("mousemove", mousemove);
+ $(document).off("selectstart", selectstart);
+ dragdiv.remove();
+ }
+ drag = false;
+ prepare = false;
+ $(document.body).css({'MozUserSelect': '', 'webkitUserSelect': ''}).attr('unselectable', 'off');
+ };
+
+ $(Table.config.checkboxtd, table).on("mousedown", function (e) {
+ //禁止鼠标右键事件
+ if (e.button === 2) {
+ return false;
+ }
+ posx = e.pageX;
+ posy = e.pageY;
+ prepare = true;
+ }).on("mousemove", function (e) {
+ if (prepare && !drag) {
+ drag = true;
+ dragdiv = $("");
+ dragdiv.css({position: 'absolute', width: 0, height: 0, border: "1px dashed blue", background: "#0029ff", left: e.pageX + "px", top: e.pageY + "px", opacity: .1});
+ dragdiv.appendTo(document.body);
+ $(document.body).css({'MozUserSelect': 'none', 'webkitUserSelect': 'none'}).attr('unselectable', 'on');
+ $(document).on("mousemove", mousemove).on("mouseup", mouseup).on("selectstart", selectstart);
+ if (options.dragCheckboxMultiselect) {
+ $(Table.config.checkboxtd, table).removeClass("overlaped");
+ }
+ }
});
+
}
});
var exportDataType = options.exportDataType;
@@ -12424,7 +12468,7 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr
row.ids = ids ? ids : (typeof row.ids !== 'undefined' ? row.ids : 0);
url = url == null || url.length === 0 ? '' : url.toString();
//自动添加ids参数
- url = !url.match(/(?=([?&]ids=)|(\/ids\/)|(\{ids}))/i) ?
+ url = !url.match(/(?=([?&]ids=)|(\/ids\/)|(\{ids}))/i) ?
url + (url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + '{ids}' : url;
url = url.replace(/\{(.*?)\}/gi, function (matched) {
matched = matched.substring(1, matched.length - 1);
@@ -12877,22 +12921,6 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr
define("dragsort", function(){});
-/*!
- * jquery.event.drag - v 2.2
- * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com
- * Open Source MIT License - http://threedubmedia.com/code/license
- */
-;(function(e){e.fn.drag=function(k,g,j){var i=typeof k=="string"?k:"",h=e.isFunction(k)?k:e.isFunction(g)?g:null;if(i.indexOf("drag")!==0){i="drag"+i}j=(k==h?g:j)||{};return h?this.bind(i,j,h):this.trigger(i)};var b=e.event,a=b.special,d=a.drag={defaults:{which:1,distance:0,not:":input",handle:null,relative:false,drop:true,click:false},datakey:"dragdata",noBubble:true,add:function(i){var h=e.data(this,d.datakey),g=i.data||{};h.related+=1;e.each(d.defaults,function(j,k){if(g[j]!==undefined){h[j]=g[j]}})},remove:function(){e.data(this,d.datakey).related-=1},setup:function(){if(e.data(this,d.datakey)){return}var g=e.extend({related:0},d.defaults);e.data(this,d.datakey,g);b.add(this,"touchstart mousedown",d.init,g);if(this.attachEvent){this.attachEvent("ondragstart",d.dontstart)}},teardown:function(){var g=e.data(this,d.datakey)||{};if(g.related){return}e.removeData(this,d.datakey);b.remove(this,"touchstart mousedown",d.init);d.textselect(true);if(this.detachEvent){this.detachEvent("ondragstart",d.dontstart)}},init:function(i){if(d.touched){return}var g=i.data,h;if(i.which!=0&&g.which>0&&i.which!=g.which){return}if(e(i.target).is(g.not)){return}if(g.handle&&!e(i.target).closest(g.handle,i.currentTarget).length){return}d.touched=i.type=="touchstart"?this:null;g.propagates=1;g.mousedown=this;g.interactions=[d.interaction(this,g)];g.target=i.target;g.pageX=i.pageX;g.pageY=i.pageY;g.dragging=null;h=d.hijack(i,"draginit",g);if(!g.propagates){return}h=d.flatten(h);if(h&&h.length){g.interactions=[];e.each(h,function(){g.interactions.push(d.interaction(this,g))})}g.propagates=g.interactions.length;if(g.drop!==false&&a.drop){a.drop.handler(i,g)}d.textselect(false);if(d.touched){b.add(d.touched,"touchmove touchend",d.handler,g)}else{b.add(document,"mousemove mouseup",d.handler,g)}if(!d.touched||g.live){return false}},interaction:function(h,g){var i=e(h)[g.relative?"position":"offset"]()||{top:0,left:0};return{drag:h,callback:new d.callback(),droppable:[],offset:i}},handler:function(h){var g=h.data;switch(h.type){case !g.dragging&&"touchmove":h.preventDefault();case !g.dragging&&"mousemove":if(Math.pow(h.pageX-g.pageX,2)+Math.pow(h.pageY-g.pageY,2)0){e.removeData(this,"suppress."+g.type);return}return f.apply(this,arguments)};if(b.fixHooks!==undefined){var c=b.fixHooks.touchstart=b.fixHooks.touchmove=b.fixHooks.touchend=b.fixHooks.touchcancel={props:"clientX clientY pageX pageY screenX screenY".split(" "),filter:function(h,i){if(i){var g=(i.touches&&i.touches[0])||(i.changedTouches&&i.changedTouches[0])||null;if(g){e.each(c.props,function(j,k){h[k]=g[k]})}}return h}};}a.draginit=a.dragstart=a.dragend=d})(jQuery);
-define("drag", function(){});
-
-/*!
- * jquery.event.drop - v 2.2
- * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com
- * Open Source MIT License - http://threedubmedia.com/code/license
- */
-;(function(d){d.fn.drop=function(i,e,h){var g=typeof i=="string"?i:"",f=d.isFunction(i)?i:d.isFunction(e)?e:null;if(g.indexOf("drop")!==0){g="drop"+g}h=(i==f?e:h)||{};return f?this.bind(g,h,f):this.trigger(g)};d.drop=function(e){e=e||{};b.multi=e.multi===true?Infinity:e.multi===false?1:!isNaN(e.multi)?e.multi:b.multi;b.delay=e.delay||b.delay;b.tolerance=d.isFunction(e.tolerance)?e.tolerance:e.tolerance===null?null:b.tolerance;b.mode=e.mode||b.mode||"intersect"};var c=d.event,a=c.special,b=d.event.special.drop={multi:1,delay:20,mode:"overlap",targets:[],datakey:"dropdata",noBubble:true,add:function(f){var e=d.data(this,b.datakey);e.related+=1},remove:function(){d.data(this,b.datakey).related-=1},setup:function(){if(d.data(this,b.datakey)){return}var e={related:0,active:[],anyactive:0,winner:0,location:{}};d.data(this,b.datakey,e);b.targets.push(this);return false},teardown:function(){var f=d.data(this,b.datakey)||{};if(f.related){return}d.removeData(this,b.datakey);var e=this;b.targets=d.grep(b.targets,function(g){return(g!==e)})},handler:function(g,e){var f,h;if(!e){return}switch(g.type){case"mousedown":case"touchstart":h=d(b.targets);if(typeof e.drop=="string"){h=h.filter(e.drop)}h.each(function(){var i=d.data(this,b.datakey);i.active=[];i.anyactive=0;i.winner=0});e.droppable=h;a.drag.hijack(g,"dropinit",e);break;case"mousemove":case"touchmove":b.event=g;if(!b.timer){b.tolerate(e)}break;case"mouseup":case"touchend":b.timer=clearTimeout(b.timer);if(e.propagates){a.drag.hijack(g,"drop",e);a.drag.hijack(g,"dropend",e)}break}},locate:function(k,h){var l=d.data(k,b.datakey),g=d(k),i=g.offset()||{},e=g.outerHeight(),j=g.outerWidth(),f={elem:k,width:j,height:e,top:i.top,left:i.left,right:i.left+j,bottom:i.top+e};if(l){l.location=f;l.index=h;l.elem=k}return f},contains:function(e,f){return((f[0]||f.left)>=e.left&&(f[0]||f.right)<=e.right&&(f[1]||f.top)>=e.top&&(f[1]||f.bottom)<=e.bottom)},modes:{intersect:function(f,e,g){return this.contains(g,[f.pageX,f.pageY])?1000000000:this.modes.overlap.apply(this,arguments)},overlap:function(f,e,g){return Math.max(0,Math.min(g.bottom,e.bottom)-Math.max(g.top,e.top))*Math.max(0,Math.min(g.right,e.right)-Math.max(g.left,e.left))},fit:function(f,e,g){return this.contains(g,e)?1:0},middle:function(f,e,g){return this.contains(g,[e.left+e.width*0.5,e.top+e.height*0.5])?1:0}},sort:function(f,e){return(e.winner-f.winner)||(f.index-e.index)},tolerate:function(q){var k,e,n,j,l,m,g,p=0,f,h=q.interactions.length,r=[b.event.pageX,b.event.pageY],o=b.tolerance||b.modes[b.mode];do{if(f=q.interactions[p]){if(!f){return}f.drop=[];l=[];m=f.droppable.length;if(o){n=b.locate(f.proxy)}k=0;do{if(g=f.droppable[k]){j=d.data(g,b.datakey);e=j.location;if(!e){continue}j.winner=o?o.call(b,b.event,n,e):b.contains(e,r)?1:0;l.push(j)}}while(++k 0) {
- // 拖拽选择,需要重新绑定事件
- require(['drag', 'drop'], function () {
- var checkboxtd = $(Table.config.checkboxtd, table);
- checkboxtd.drag("start", function (ev, dd) {
- return $('').css('opacity', .65).appendTo(document.body);
- }).drag(function (ev, dd) {
- $(dd.proxy).css({
- top: Math.min(ev.pageY, dd.startY),
- left: Math.min(ev.pageX, dd.startX),
- height: Math.abs(ev.pageY - dd.startY),
- width: Math.abs(ev.pageX - dd.startX)
- });
- }).drag("end", function (ev, dd) {
- $(dd.proxy).remove();
- });
- checkboxtd.drop("start", function () {
- Table.api.toggleattr(this);
- }).drop(function () {
- // Table.api.toggleattr(this);
- }).drop("end", function (e) {
- var that = this;
- setTimeout(function () {
- if (e.type === 'mousemove') {
- Table.api.toggleattr(that);
+ //拖拽选择复选框
+ var posx, posy, dragdiv, drag = false, prepare = false;
+ var mousemove = function (e) {
+ if (drag) {
+ var left = Math.min(e.pageX, posx);
+ var top = Math.min(e.pageY, posy);
+ var width = Math.abs(posx - e.pageX);
+ var height = Math.abs(posy - e.pageY);
+ dragdiv.css({left: left + "px", top: top + "px", width: width + "px", height: height + "px"});
+ var dragrect = {x: left, y: top, width: width, height: height};
+ $(Table.config.checkboxtd, table).each(function () {
+ var checkbox = $("input:checkbox", this);
+ var tdrect = this.getBoundingClientRect();
+ tdrect.x += document.documentElement.scrollLeft;
+ tdrect.y += document.documentElement.scrollTop;
+
+ var td_min_x = tdrect.x;
+ var td_min_y = tdrect.y;
+ var td_max_x = tdrect.x + tdrect.width;
+ var td_max_y = tdrect.y + tdrect.height;
+
+ var drag_min_x = dragrect.x;
+ var drag_min_y = dragrect.y;
+ var drag_max_x = dragrect.x + dragrect.width;
+ var drag_max_y = dragrect.y + dragrect.height;
+ var overlapped = td_min_x <= drag_max_x && td_max_x >= drag_min_x && td_min_y <= drag_max_y && td_max_y >= drag_min_y;
+ if (overlapped) {
+ if (!$(this).hasClass("overlaped")) {
+ $(this).addClass("overlaped");
+ checkbox.prop("checked", !checkbox.prop("checked"));
+ }
+ } else {
+ if ($(this).hasClass("overlaped")) {
+ $(this).removeClass("overlaped");
+ checkbox.prop("checked", !checkbox.prop("checked"));
+ }
}
- }, 0);
- });
- $.drop({
- multi: true
- });
+ });
+ }
+ };
+ var selectstart = function () {
+ return false;
+ };
+ var mouseup = function () {
+ if (drag) {
+ $(document).off("mousemove", mousemove);
+ $(document).off("selectstart", selectstart);
+ dragdiv.remove();
+ }
+ drag = false;
+ prepare = false;
+ $(document.body).css({'MozUserSelect': '', 'webkitUserSelect': ''}).attr('unselectable', 'off');
+ };
+
+ $(Table.config.checkboxtd, table).on("mousedown", function (e) {
+ //禁止鼠标右键事件
+ if (e.button === 2) {
+ return false;
+ }
+ posx = e.pageX;
+ posy = e.pageY;
+ prepare = true;
+ }).on("mousemove", function (e) {
+ if (prepare && !drag) {
+ drag = true;
+ dragdiv = $("");
+ dragdiv.css({position: 'absolute', width: 0, height: 0, border: "1px dashed blue", background: "#0029ff", left: e.pageX + "px", top: e.pageY + "px", opacity: .1});
+ dragdiv.appendTo(document.body);
+ $(document.body).css({'MozUserSelect': 'none', 'webkitUserSelect': 'none'}).attr('unselectable', 'on');
+ $(document).on("mousemove", mousemove).on("mouseup", mouseup).on("selectstart", selectstart);
+ if (options.dragCheckboxMultiselect) {
+ $(Table.config.checkboxtd, table).removeClass("overlaped");
+ }
+ }
});
+
}
});
var exportDataType = options.exportDataType;
@@ -914,7 +960,7 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table
row.ids = ids ? ids : (typeof row.ids !== 'undefined' ? row.ids : 0);
url = url == null || url.length === 0 ? '' : url.toString();
//自动添加ids参数
- url = !url.match(/(?=([?&]ids=)|(\/ids\/)|(\{ids}))/i) ?
+ url = !url.match(/(?=([?&]ids=)|(\/ids\/)|(\{ids}))/i) ?
url + (url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + '{ids}' : url;
url = url.replace(/\{(.*?)\}/gi, function (matched) {
matched = matched.substring(1, matched.length - 1);