From d25a69f40c327f8bd72a7a16d5090bc85f6952df Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Sat, 19 Feb 2022 09:20:52 +0800
Subject: [PATCH] Merge branch 'master' of http://s16s652780.51mypc.cn:49896/r/qfqk-android

---
 leafletMapOur/grabOrdersMap/js/move.js |  299 ++++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 170 insertions(+), 129 deletions(-)

diff --git a/leafletMapOur/grabOrdersMap/js/move.js b/leafletMapOur/grabOrdersMap/js/move.js
index b2ac24c..7c6f585 100644
--- a/leafletMapOur/grabOrdersMap/js/move.js
+++ b/leafletMapOur/grabOrdersMap/js/move.js
@@ -1,132 +1,173 @@
-// 使用说明:(需要移动的dom,触摸块dom,跟随改变map dom)
-function myDomMove(dom, div, map) {
-    this.m = $(dom);
-    this.div = $(div);
-    this.mapId = $(map);
-    this.__xx = null; //鼠标实时位置
-    this.__yy = null;
-    this.__sx = null; //鼠标开始位置
-    this.__sy = null;
-    this.__dx = null; //dom位置
-    this.__dy = null;
-    this.mapH = null; //地图高度
-    this.__wy = null; //屏幕高度
-    this.state = "up"; //dom状态默认up
+class $moveWindow {
+	constructor(data) {
+		this.id = data.id;
+		this.start = 0;
+		this.end = 0;
+		this.domHeight = 0;
+		this.domMove = null;
+		this.openValue = false;
+		this.useHeight = data.minHeight;
+		this.maxHeight = data.maxHeight;
+		this.height = data.minHeight;
+		this.critical = data.critical;
+		this.openAnimation = data.openAnimation;
+		let that = this;
+		this.fn =
+			data.fn ? (function(res) {
+				// console.log("回调函数");
+				data.fn(res);
+				that.changeHeight(res);
+				// if (res.state === true) {
+				// 	console.log(that.openValue, res.state)
+				// } else if (res.state === false) {
+				// 	console.log(that.openValue, res.state)
+				// }
+			}) :
+			(function(res) {
+				console.log("未设置回调函数");
+				console.log(res);
+			});
 
-    this.getMosePosition = (x, y) => { //获取鼠标位置
-        this.__sx = x;
-        this.__sy = y;
-        // console.log(this.__sy, '鼠标开始');
-
-    }
-    this.getDomPosition = () => { //获取dom位置
-        this.__dx = this.m.offset().left;
-        this.__dy = this.m.offset().top;
-        this.__wy = document.documentElement.clientHeight;
-        // console.log(this.__dy, 'dom');
-    }
-    this.getMapHeight = () => { //获取地图高度
-        var that = this;
-        this.mapId.css("height", (index, value) => {
-                that.mapH = parseFloat(value);
-            })
-            // console.log(that.mapH, 'map位置');
-    }
-    this.changeDomPosition = (x, y, dy) => { //改变dom位置
-        var that = this;
-        // this.mapId.css("height", (index, value) => {//改变地图高度
-        //     var h = this.mapH + y;
-        //     console.log(h);
-        //     return h ;
-        // })
-        this.m.animate({ top: dy + "px" }, 10);
-
-    }
-
-
-    //begin
-    this.followFinger = (map, state = 14) => { //(地图实例,dom状态判断是向上还是向下)
-        // console.log('开始跟随手指');
-        var that = this;
-        if (state != 14) {
-            that.state = state;
-            // console.log(that.state);
-        }
-        that.getDomPosition(); //获取dom位置
-        that.getMapHeight(); //获取地图高度
-        var once = true;
-        that.div.on('touchmove', function(e) { //获取鼠标位置
-            e = e || window.event;
-            that.__xx = e.touches[0].clientX;
-            that.__yy = e.touches[0].clientY;
-            if (once) { //获取第一次点击的位置
-                once = false;
-                that.getMosePosition(that.__xx, that.__yy);
-            }
-            // console.log(that.__yy, '鼠标');
-            var h = that.__yy - that.__sy //鼠标移动距离y
-
-            if (that.state == 'down') { //两种模式
-                // console.log(that.state);
-                if (h >= 0 && h + that.__dy <= that.__wy - 20) {
-                    that.changeDomPosition(0, h, h + that.__dy); //改变位置
-                    // console.log(that.state,h + that.__dy,112);
-                }
-            } else if (that.state == 'up') {
-                if (h >= -that.__dy && h <= that.__wy - 20) {
-                    that.changeDomPosition(0, h, h + that.__wy - 20); //改变位置
-                    // console.log(that.state,h + that.__wy - 20,112);
-                }
-            }
-
-        });
-        that.div.on('touchend', function() { //抬起重置
-            once = true; //抬起重置鼠标点击位置
-            var chous = null;
-            if (that.state == 'down') { //两种模式
-                // var chous = Math.abs(that.__yy - that.__sy) < that.__wy / 4;
-                chous = (that.__sy - that.__yy) < 0;
-            } else if (that.state == 'up') {
-                // var chous = Math.abs(that.__yy - that.__sy) > that.__wy / 4;
-                chous = (that.__sy - that.__yy) < 0;
-            }
-            if (!chous) {
-                //改变dom位置
-                that.changeDomPosition(0, 0, (parseFloat(that.__wy / 10) * 3.999));
-                // that.getDomPosition();//抬起获取dom位置/持续停留使用
-                that.state = 'down';
-                $('#map').css("height", (index, value) => { //改变地图高度
-                    return '50%';
-                })
-                map.invalidateSize(true); //应用地图高度
-            } else {
-                // that.changeDomPosition(0, 0, that.__wy - 50); //改变位置
-                that.changeDomPosition(0, 0, that.__wy); //改变位置
-                // that.getDomPosition();//抬起获取dom位置/持续停留使用
-                that.state = 'up';
-                $('#map').css("height", (index, value) => { //改变地图高度
-                    return '100%';
-                })
-                map.invalidateSize(true); //应用地图高度
-            }
-            that.getMapHeight(); //抬起获取map高度
-        });
-    }
-    this.destruction = () => { //初始化销毁
-        this.m = $(dom);
-        this.div = $(div);
-        this.mapId = $(map);
-        this.__xx = null; //鼠标实时位置
-        this.__yy = null;
-        this.__sx = null; //鼠标开始位置
-        this.__sy = null;
-        this.__dx = null; //dom位置
-        this.__dy = null;
-        this.mapH = null; //地图高度
-        this.__wy = null; //屏幕高度
-        this.state = "up"; //dom状态默认up
-        this.div.off();
-    }
+		this.ListenerTouchmove = function(window) {
+			let moseHeight = window.changedTouches[0].clientY;
+			//   let windowHeight = document.body.clientHeight; //屏幕宽度
+			let endOn = moseHeight;
+			// console.log(that.domHeight, that.start, endOn)
+			let cha = that.domHeight + (+that.start - +endOn);
+			if (cha >= that.maxHeight) {
+				cha = that.maxHeight;
+			} else if (cha <= that.useHeight) {
+				cha = that.useHeight;
+			}
+			let d = {
+				state: "on",
+				height: cha,
+			};
+			that.fn(d);
+		};
+		this.ListenerTouchstart = function(window) {
+			let moseHeight = window.changedTouches[0].clientY;
+			that.start = moseHeight;
+			// that.domHeight = document
+			// 	.getElementById(that.id)
+			// 	.style.cssText.split("px")[0]
+			// 	.split("height:")[1];
+			that.domHeight = document
+				.getElementById(that.id)
+				.clientHeight;
+		};
+		this.ListenerTouchend = function(window) {
+			let moseHeight = window.changedTouches[0].clientY;
+			that.end = moseHeight;
+			let cha, states;
+			if (that.end >= that.start) {
+				states = false; //方向
+				cha = that.end - that.start;
+			} else {
+				states = true; //方向
+				cha = that.start - that.end;
+			}
+			if (cha >= that.critical) {
+				//高
+				that.opens(states, true); //程度
+			} else if (cha < that.critical) {
+				//低
+				that.opens(states, false); //程度
+			}
+		};
+		return this;
+	}
+	//启动监听事件
+	init() {
+		// this.domMove = document.getElementById(this.id);
+		let that = this;
+		this.checkDom(that.id, (dom) => {
+			//检测是否有dom
+			that.domMove = dom;
+			if (that.openAnimation) {
+				that.domMove.style.transition = 'all 0.2s';
+			}
+			that.domMove.addEventListener("touchmove", that.ListenerTouchmove);
+			// 结束位置靠滑动距离判断
+			that.domMove.addEventListener("touchstart", that.ListenerTouchstart);
+			that.domMove.addEventListener("touchend", that.ListenerTouchend);
+		});
+	}
+	//关闭监听事件
+	closeInit() {
+		this.domMove = document.getElementById(this.id);
+		this.domMove.removeEventListener("touchmove", this.ListenerTouchmove);
+		// 结束位置靠滑动距离判断
+		this.domMove.removeEventListener("touchstart", this.ListenerTouchstart);
+		this.domMove.removeEventListener("touchend", this.ListenerTouchend);
+	}
+	//输出事件
+	opens(val, chengdu) {
+		if (chengdu) {
+			this.openValue = val;
+			if (val) {
+				this.height = this.maxHeight;
+			} else {
+				this.height = this.useHeight;
+			}
+		} else {
+			this.height = this.domHeight;
+		}
+		let d = {
+			state: this.openValue,
+			height: this.height,
+		};
+		this.fn(d);
+	}
+	changeHeight(data) {
+		document
+			.getElementById(this.id).style.height = data.height + "px";
+	}
+	checkDom(name, fn) {
+		//  声明定时器
+		var timer = null;
+		//  检查dom是否执行完成
+		function checkDom() {
+			// let dom = that.$refs[name];
+			let dom = document.getElementById(name);
+			if (dom) {
+				//  执行dom加载完成后的操作
+				//  清除定时器
+				if (!timer) {
+					clearTimeout(timer);
+				}
+				if (fn) {
+					//回调函数
+					fn(dom);
+					return;
+				} else {
+					return dom;
+				}
+			} else {
+				//  自我调用
+				timer = setTimeout(checkDom, 100);
+			}
+		}
+		//  首次执行
+		checkDom();
+	}
+	// 结束位置是一半判断
+	//  domMove.addEventListener("touchend", function (window) {
+	//   let moseHeight = window.changedTouches[0].clientY;
+	//   let windowHeight = document.body.clientHeight;
+	//   let cha = windowHeight - moseHeight;
+	//   console.log(cha, "最后位置");
+	//   let centerPoint =
+	//     (windowHeight / 2 - +that.useHeight) / 2 + +that.useHeight;
+	//   if (cha >= centerPoint) {
+	//     cha = windowHeight / 2;
+	//   } else if (cha < centerPoint) {
+	//     cha = that.useHeight;
+	//   }
+	//   that.height = cha;
+	// });
 }
 
-// export default myDomMove;
\ No newline at end of file
+// export default moveWindow;
+
+// console.log(moveWindow)

--
Gitblit v1.9.3