|  | @@ -1,57 +1,211 @@
 | 
											
												
													
														|  | -import { cos } from "mathjs";
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | - //定义变量储存div的宽高
 |  | 
 | 
											
												
													
														|  | - var obj_w, obj_h;
 |  | 
 | 
											
												
													
														|  | - //定义一个变量判断是否执行移动函数
 |  | 
 | 
											
												
													
														|  | - var mouseDown = false;
 |  | 
 | 
											
												
													
														|  |  export default {
 |  |  export default {
 | 
											
												
													
														|  |      data() {
 |  |      data() {
 | 
											
												
													
														|  |          return {
 |  |          return {
 | 
											
												
													
														|  |              /**  多选  */
 |  |              /**  多选  */
 | 
											
												
													
														|  |              selectList: [],
 |  |              selectList: [],
 | 
											
												
													
														|  |              selectTabelList: [],
 |  |              selectTabelList: [],
 | 
											
												
													
														|  | -            multipleSelection_1: []
 |  | 
 | 
											
												
													
														|  | 
 |  | +            multipleSelection_1: [],
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            moveSelected: null,
 | 
											
												
													
														|  | 
 |  | +            moveSelected1: null,
 | 
											
												
													
														|  | 
 |  | +            flag: false,//是搜开启拖拽的标志
 | 
											
												
													
														|  | 
 |  | +            oldLeft: 0,//鼠标按下时的left,top
 | 
											
												
													
														|  | 
 |  | +            oldTop: 0,
 | 
											
												
													
														|  | 
 |  | +            selectedList: [],//拖拽多选选中的块集合
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            isToLeft: true,
 | 
											
												
													
														|  | 
 |  | +            isToTop: true,
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |      },
 |  |      },
 | 
											
												
													
														|  | 
 |  | +    mounted() {
 | 
											
												
													
														|  | 
 |  | +        this.moveSelected = document.getElementById('moveSelected')
 | 
											
												
													
														|  | 
 |  | +        this.moveSelected1 = document.getElementById('sm-scroll-box')
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  |      methods: {
 |  |      methods: {
 | 
											
												
													
														|  | -        //鼠标按下函数
 |  | 
 | 
											
												
													
														|  | -        downDiv(obj) {
 |  | 
 | 
											
												
													
														|  | -            //获取div的宽高
 |  | 
 | 
											
												
													
														|  | -            obj_w = obj.offsetWidth;
 |  | 
 | 
											
												
													
														|  | -            obj_h = obj.offsetHeight;
 |  | 
 | 
											
												
													
														|  | -            //鼠标
 |  | 
 | 
											
												
													
														|  | -            var e = event || window.event;
 |  | 
 | 
											
												
													
														|  | -            //e.clientX/Y 是获取鼠标相对浏览器的位置;将div中心自动居中到鼠标
 |  | 
 | 
											
												
													
														|  | -           
 |  | 
 | 
											
												
													
														|  | -            let left = (e.clientX - obj_w / 2) + "px";
 |  | 
 | 
											
												
													
														|  | -            let top = (e.clientY - obj_h / 2) + "px";
 |  | 
 | 
											
												
													
														|  | -            console.log('鼠标按下===',mouseDown,left, top)
 |  | 
 | 
											
												
													
														|  | -            //按下时为ture,松开时为false,以判断是否执行执行mouveDiv
 |  | 
 | 
											
												
													
														|  | -            mouseDown = true;
 |  | 
 | 
											
												
													
														|  | -        
 |  | 
 | 
											
												
													
														|  | 
 |  | +        // 鼠标按下时开启拖拽多选,将遮罩定位并展现
 | 
											
												
													
														|  | 
 |  | +        mousedownFun(event) {
 | 
											
												
													
														|  | 
 |  | +            if(event.button != 0) return
 | 
											
												
													
														|  | 
 |  | +            this.selectedList = []
 | 
											
												
													
														|  | 
 |  | +            this.selectList = []
 | 
											
												
													
														|  | 
 |  | +            if(event.srcElement.getAttribute('dragSelectId')){
 | 
											
												
													
														|  | 
 |  | +                console.log("鼠标开始的的元素=====",event.srcElement)
 | 
											
												
													
														|  | 
 |  | +                let obj = {
 | 
											
												
													
														|  | 
 |  | +                    Id: event.srcElement.getAttribute('dragSelectId'),
 | 
											
												
													
														|  | 
 |  | +                    index: event.srcElement.getAttribute('dragSelectIndex'),
 | 
											
												
													
														|  | 
 |  | +                    key: event.srcElement.getAttribute('dragSelectKey'),
 | 
											
												
													
														|  | 
 |  | +                    current: event.srcElement.getAttribute('dragSelectCurrent'),
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +                this.selectedList.push(obj)
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            this.flag=true;
 | 
											
												
													
														|  | 
 |  | +            let offsetTop = this.moveSelected1.getBoundingClientRect().y
 | 
											
												
													
														|  | 
 |  | +            let offsetLeft = this.moveSelected1.getBoundingClientRect().x 
 | 
											
												
													
														|  | 
 |  | +            this.moveSelected.style.top=(event.pageY-offsetTop)+'px';
 | 
											
												
													
														|  | 
 |  | +            this.moveSelected.style.left=(event.pageX-offsetLeft)+'px';
 | 
											
												
													
														|  | 
 |  | +            this.oldLeft=event.pageX;
 | 
											
												
													
														|  | 
 |  | +            this.oldTop=event.pageY;
 | 
											
												
													
														|  | 
 |  | +            event.preventDefault(); // 阻止默认行为
 | 
											
												
													
														|  | 
 |  | +            event.stopPropagation(); // 阻止事件冒泡
 | 
											
												
													
														|  |          },
 |  |          },
 | 
											
												
													
														|  | -        
 |  | 
 | 
											
												
													
														|  | -        //鼠标移动函数
 |  | 
 | 
											
												
													
														|  | -        moveDiv(obj) {
 |  | 
 | 
											
												
													
														|  | -            obj_w = obj.offsetWidth;
 |  | 
 | 
											
												
													
														|  | -            obj_h = obj.offsetHeight;
 |  | 
 | 
											
												
													
														|  | -            var e = event || window.event;
 |  | 
 | 
											
												
													
														|  | -            // console.log(e.clientX, e.clientY);
 |  | 
 | 
											
												
													
														|  | -            // console.log(obj_w, obj_h);
 |  | 
 | 
											
												
													
														|  | -            if (mouseDown) {
 |  | 
 | 
											
												
													
														|  | -                obj.style.left = (e.clientX - obj_w / 2) + "px";
 |  | 
 | 
											
												
													
														|  | -                obj.style.top = (e.clientY - obj_h / 2) + "px";
 |  | 
 | 
											
												
													
														|  | -                console.log('鼠标移动===',obj.style.left, obj.style.top)
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -        
 |  | 
 | 
											
												
													
														|  | 
 |  | +        // 鼠标移动时计算遮罩的位置,宽 高
 | 
											
												
													
														|  | 
 |  | +        mousemoveFun(event) {
 | 
											
												
													
														|  | 
 |  | +            if(!this.flag) return;//只有开启了拖拽,才进行mouseover操作
 | 
											
												
													
														|  | 
 |  | +            //console.log("经过的元素=====",event.srcElement)
 | 
											
												
													
														|  | 
 |  | +            if(event.srcElement.getAttribute('dragSelectId')){
 | 
											
												
													
														|  | 
 |  | +                let obj = {
 | 
											
												
													
														|  | 
 |  | +                    Id: event.srcElement.getAttribute('dragSelectId'),
 | 
											
												
													
														|  | 
 |  | +                    index: event.srcElement.getAttribute('dragSelectIndex'),
 | 
											
												
													
														|  | 
 |  | +                    key: event.srcElement.getAttribute('dragSelectKey'),
 | 
											
												
													
														|  | 
 |  | +                    current: event.srcElement.getAttribute('dragSelectCurrent'),
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +                this.selectedList.push(obj)
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            let offsetTop = this.moveSelected1.getBoundingClientRect().y
 | 
											
												
													
														|  | 
 |  | +            let offsetLeft = this.moveSelected1.getBoundingClientRect().x 
 | 
											
												
													
														|  | 
 |  | +            if(event.pageX<this.oldLeft){//向左拖
 | 
											
												
													
														|  | 
 |  | +              this.isToLeft = true
 | 
											
												
													
														|  | 
 |  | +              this.moveSelected.style.left=(event.pageX-offsetLeft)+'px';
 | 
											
												
													
														|  | 
 |  | +              this.moveSelected.style.width=(this.oldLeft-event.pageX)+'px';
 | 
											
												
													
														|  | 
 |  | +            }else{
 | 
											
												
													
														|  | 
 |  | +                this.isToLeft = false
 | 
											
												
													
														|  | 
 |  | +              this.moveSelected.style.width=(event.pageX-this.oldLeft)+'px';
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            if(event.pageY<this.oldTop){//向上
 | 
											
												
													
														|  | 
 |  | +              this.isToTop = true
 | 
											
												
													
														|  | 
 |  | +              this.moveSelected.style.top=(event.pageY-offsetTop)+'px';
 | 
											
												
													
														|  | 
 |  | +              this.moveSelected.style.height=(this.oldTop-event.pageY)+'px';
 | 
											
												
													
														|  | 
 |  | +            }else{
 | 
											
												
													
														|  | 
 |  | +                this.isToTop = false
 | 
											
												
													
														|  | 
 |  | +              this.moveSelected.style.height=(event.pageY-this.oldTop)+'px';
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            event.preventDefault(); // 阻止默认行为
 | 
											
												
													
														|  | 
 |  | +            event.stopPropagation(); // 阻止事件冒泡
 | 
											
												
													
														|  |          },
 |  |          },
 | 
											
												
													
														|  | -        
 |  | 
 | 
											
												
													
														|  | -        //鼠标松开函数
 |  | 
 | 
											
												
													
														|  | -        upDiv(obj) {
 |  | 
 | 
											
												
													
														|  | -            mouseDown = false;
 |  | 
 | 
											
												
													
														|  | -            console.log('鼠标鼠标所开===',mouseDown)
 |  | 
 | 
											
												
													
														|  | 
 |  | +        //鼠标抬起时计算遮罩的right 和 bottom,找出遮罩覆盖的块,关闭拖拽选中开关,清除遮罩数据
 | 
											
												
													
														|  | 
 |  | +        mouseupFun(event) {
 | 
											
												
													
														|  | 
 |  | +            if(event.button != 0) return
 | 
											
												
													
														|  | 
 |  | +            if(event.srcElement.getAttribute('dragSelectId')){
 | 
											
												
													
														|  | 
 |  | +                console.log("鼠标结束的的元素=====",event,event.srcElement)
 | 
											
												
													
														|  | 
 |  | +                let obj = {
 | 
											
												
													
														|  | 
 |  | +                    Id: event.srcElement.getAttribute('dragSelectId'),
 | 
											
												
													
														|  | 
 |  | +                    index: event.srcElement.getAttribute('dragSelectIndex'),
 | 
											
												
													
														|  | 
 |  | +                    key: event.srcElement.getAttribute('dragSelectKey'),
 | 
											
												
													
														|  | 
 |  | +                    current: event.srcElement.getAttribute('dragSelectCurrent'),
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +                this.selectedList.push(obj)
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            this.moveSelected.style.bottom=Number(this.moveSelected.style.top.split('px')[0])+Number(this.moveSelected.style.height.split('px')[0]) + 'px';
 | 
											
												
													
														|  | 
 |  | +            this.moveSelected.style.right=Number(this.moveSelected.style.left.split('px')[0])+Number(this.moveSelected.style.width.split('px')[0])+'px';
 | 
											
												
													
														|  | 
 |  | +            this.findSelected();
 | 
											
												
													
														|  | 
 |  | +            this.flag=false;
 | 
											
												
													
														|  | 
 |  | +            this.clearDragData();
 | 
											
												
													
														|  | 
 |  | +            event.preventDefault(); // 阻止默认行为
 | 
											
												
													
														|  | 
 |  | +            event.stopPropagation(); // 阻止事件冒泡
 | 
											
												
													
														|  | 
 |  | +        },
 | 
											
												
													
														|  | 
 |  | +        mouseleaveFun(event) {
 | 
											
												
													
														|  | 
 |  | +            this.flag=false;
 | 
											
												
													
														|  | 
 |  | +            this.moveSelected.style.width=0;
 | 
											
												
													
														|  | 
 |  | +            this.moveSelected.style.height=0;
 | 
											
												
													
														|  | 
 |  | +            this.moveSelected.style.top=0;
 | 
											
												
													
														|  | 
 |  | +            this.moveSelected.style.left=0;
 | 
											
												
													
														|  | 
 |  | +            event.preventDefault(); // 阻止默认行为
 | 
											
												
													
														|  | 
 |  | +            event.stopPropagation(); // 阻止事件冒泡
 | 
											
												
													
														|  | 
 |  | +        },
 | 
											
												
													
														|  | 
 |  | +        findSelected(){
 | 
											
												
													
														|  | 
 |  | +            let list = []
 | 
											
												
													
														|  | 
 |  | +            if(this.selectedList && this.selectedList.length >= 2) {
 | 
											
												
													
														|  | 
 |  | +                let firstObj = this.selectedList[0]
 | 
											
												
													
														|  | 
 |  | +                let lastObj = this.selectedList[this.selectedList.length-1]
 | 
											
												
													
														|  | 
 |  | +                this.tableData.forEach((item,index)=>{
 | 
											
												
													
														|  | 
 |  | +                    if(!this.isToLeft&&!this.isToTop){ // 向右下
 | 
											
												
													
														|  | 
 |  | +                        if(index>=firstObj.index && index<=lastObj.index) {
 | 
											
												
													
														|  | 
 |  | +                            item[firstObj.key].forEach((item1,index1)=>{
 | 
											
												
													
														|  | 
 |  | +                                if(index1>=firstObj.current && index1<=lastObj.current) {
 | 
											
												
													
														|  | 
 |  | +                                    list.push(item1.tableId)
 | 
											
												
													
														|  | 
 |  | +                                }
 | 
											
												
													
														|  | 
 |  | +                            })
 | 
											
												
													
														|  | 
 |  | +                        }
 | 
											
												
													
														|  | 
 |  | +                    }else if(this.isToLeft&&!this.isToTop){ // 向左下
 | 
											
												
													
														|  | 
 |  | +                        if(index>=firstObj.index && index<=lastObj.index) {
 | 
											
												
													
														|  | 
 |  | +                            item[firstObj.key].forEach((item1,index1)=>{
 | 
											
												
													
														|  | 
 |  | +                                if(index1<=firstObj.current && index1>=lastObj.current) {
 | 
											
												
													
														|  | 
 |  | +                                    list.push(item1.tableId)
 | 
											
												
													
														|  | 
 |  | +                                }
 | 
											
												
													
														|  | 
 |  | +                            })
 | 
											
												
													
														|  | 
 |  | +                        }
 | 
											
												
													
														|  | 
 |  | +                    }else if(this.isToLeft&&this.isToTop){ // 向左上
 | 
											
												
													
														|  | 
 |  | +                        if(index<=firstObj.index && index>=lastObj.index) {
 | 
											
												
													
														|  | 
 |  | +                            item[firstObj.key].forEach((item1,index1)=>{
 | 
											
												
													
														|  | 
 |  | +                                if(index1<=firstObj.current && index1>=lastObj.current) {
 | 
											
												
													
														|  | 
 |  | +                                    list.push(item1.tableId)
 | 
											
												
													
														|  | 
 |  | +                                }
 | 
											
												
													
														|  | 
 |  | +                            })
 | 
											
												
													
														|  | 
 |  | +                        }
 | 
											
												
													
														|  | 
 |  | +                    }else if(!this.isToLeft&&this.isToTop){ // 向右上
 | 
											
												
													
														|  | 
 |  | +                        if(index<=firstObj.index && index>=lastObj.index) {
 | 
											
												
													
														|  | 
 |  | +                            item[firstObj.key].forEach((item1,index1)=>{
 | 
											
												
													
														|  | 
 |  | +                                if(index1>=firstObj.current && index1<=lastObj.current) {
 | 
											
												
													
														|  | 
 |  | +                                    list.push(item1.tableId)
 | 
											
												
													
														|  | 
 |  | +                                }
 | 
											
												
													
														|  | 
 |  | +                            })
 | 
											
												
													
														|  | 
 |  | +                        }
 | 
											
												
													
														|  | 
 |  | +                    }
 | 
											
												
													
														|  | 
 |  | +                    
 | 
											
												
													
														|  | 
 |  | +                })
 | 
											
												
													
														|  | 
 |  | +            }else if(this.selectedList && this.selectedList.length == 1){
 | 
											
												
													
														|  | 
 |  | +                list = this.selectedList[0].id
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            this.selectList = [...new Set(list)]
 | 
											
												
													
														|  | 
 |  | +            console.log("e===",this.selectList)
 | 
											
												
													
														|  | 
 |  | +            if(this.activeName=='select'){
 | 
											
												
													
														|  | 
 |  | +                this.addSelectTabelList()
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        },
 | 
											
												
													
														|  | 
 |  | +        findSelectedCopy(){
 | 
											
												
													
														|  | 
 |  | +            return
 | 
											
												
													
														|  | 
 |  | +            let blockList= document.getElementsByClassName('row-item');
 | 
											
												
													
														|  | 
 |  | +            let selectedList = []
 | 
											
												
													
														|  | 
 |  | +            for(let i=0;i<blockList.length;i++){
 | 
											
												
													
														|  | 
 |  | +              //计算每个块的定位信息
 | 
											
												
													
														|  | 
 |  | +            //   let left=blockList[i].offsetLeft;
 | 
											
												
													
														|  | 
 |  | +            //   let right=blockList[i].style.width+left;
 | 
											
												
													
														|  | 
 |  | +            //   let top=blockList[i].offsetTop;
 | 
											
												
													
														|  | 
 |  | +            //   let bottom=blockList[i].style.height()+top;
 | 
											
												
													
														|  | 
 |  | +            let left=$(blockList[i]).offset().left;
 | 
											
												
													
														|  | 
 |  | +            let right=$(blockList[i]).width()+left;
 | 
											
												
													
														|  | 
 |  | +            let top=$(blockList[i]).offset().top;
 | 
											
												
													
														|  | 
 |  | +            let bottom=$(blockList[i]).height()+top;
 | 
											
												
													
														|  | 
 |  | +              
 | 
											
												
													
														|  | 
 |  | +              //判断每个块是否被遮罩盖住(即选中)
 | 
											
												
													
														|  | 
 |  | +              let leftFlag=this.moveSelected.style.left.split('px')[0]<=left && left<=this.moveSelected.style.right.split('px')[0];
 | 
											
												
													
														|  | 
 |  | +              let rightFlag=this.moveSelected.style.left.split('px')[0]<=right && right<=this.moveSelected.style.right.split('px')[0];
 | 
											
												
													
														|  | 
 |  | +              let topFlag=this.moveSelected.style.top.split('px')[0]<=top && top<=this.moveSelected.style.bottom.split('px')[0];
 | 
											
												
													
														|  | 
 |  | +              let bottomFlag=this.moveSelected.style.top.split('px')[0]<=bottom && bottom<=this.moveSelected.style.bottom.split('px')[0];
 | 
											
												
													
														|  | 
 |  | +              if((leftFlag || rightFlag) && (topFlag || bottomFlag)){
 | 
											
												
													
														|  | 
 |  | +                console.log("位置===",left,right,top,bottom)
 | 
											
												
													
														|  | 
 |  | +                selectedList.push(blockList[i]);
 | 
											
												
													
														|  | 
 |  | +              }
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            let list = []
 | 
											
												
													
														|  | 
 |  | +            for(let i=0; i < selectedList.length; i++) {
 | 
											
												
													
														|  | 
 |  | +                list.push(selectedList[i].getAttribute('dragSelectId'))
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            this.selectList = [...new Set(list)]
 | 
											
												
													
														|  | 
 |  | +            console.log("e===",this.selectList)
 | 
											
												
													
														|  | 
 |  | +            if(this.activeName=='select'){
 | 
											
												
													
														|  | 
 |  | +                this.addSelectTabelList()
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            console.log("selectedList====",selectedList);
 | 
											
												
													
														|  | 
 |  | +            console.log("list====",list);
 | 
											
												
													
														|  | 
 |  | +        },
 | 
											
												
													
														|  | 
 |  | +        clearDragData(){
 | 
											
												
													
														|  | 
 |  | +            this.moveSelected.style.width=0;
 | 
											
												
													
														|  | 
 |  | +            this.moveSelected.style.height=0;
 | 
											
												
													
														|  | 
 |  | +            this.moveSelected.style.top=0;
 | 
											
												
													
														|  | 
 |  | +            this.moveSelected.style.left=0;
 | 
											
												
													
														|  | 
 |  | +            this.moveSelected.style.bottom=0;
 | 
											
												
													
														|  | 
 |  | +            this.moveSelected.style.right=0;
 | 
											
												
													
														|  |          },
 |  |          },
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |          /**  当前选择  开始   */
 |  |          /**  当前选择  开始   */
 | 
											
												
													
														|  |          /**  多选  */
 |  |          /**  多选  */
 | 
											
												
													
														|  |          dragSelectChange(e){
 |  |          dragSelectChange(e){
 |