From d8743368ffda9bc0fb2c6818f695a9a6b1079e57 Mon Sep 17 00:00:00 2001
From: cuiqian2004 <cuiqian2004@163.com>
Date: 星期五, 19 九月 2025 18:22:15 +0800
Subject: [PATCH] laster

---
 pages/map/js/ctx.js |  443 +++++++++++++++++++++++++------------------------------
 1 files changed, 203 insertions(+), 240 deletions(-)

diff --git a/pages/map/js/ctx.js b/pages/map/js/ctx.js
index d1b6b1b..837925d 100644
--- a/pages/map/js/ctx.js
+++ b/pages/map/js/ctx.js
@@ -21,6 +21,10 @@
 	Result
 } from "ant-design-vue";
 
+import {
+	session,
+} from "../../../comm/utils.js"
+
 // import okIcon from '../../../static/images/confirm.svg';
 // import cancelIcon from '../../../static/images/remove.svg';
 
@@ -59,8 +63,7 @@
 				img_x: 1,
 				img_y: 1
 			},
-			pressObjTimer: 0
-
+			pressObjTimer: 0,
 		}
 	},
 	mounted() {
@@ -353,7 +356,9 @@
 				mainObj: obj
 			});
 			this.canvas.add(objGroup)
-
+			this.$ownerInstance.callMethod('receiveRenderData', {
+				method: "cancel_positioning_agv",
+			});
 		},
 
 		canvasEventListener() {
@@ -375,7 +380,7 @@
 				_this.canvas.requestRenderAll();
 
 				_this.onSelectionChanage()
-				//_this.selectionChangeCanvas();
+
 			});
 			_this.canvas.on("selection:updated", function(e) {
 				console.log("selection:updated", e);
@@ -409,9 +414,6 @@
 
 			_this.canvas.on("object:modified", function(e) {
 				// console.log("object:modified", e.target);
-
-
-				// _this.resizetCanvas();
 			});
 			_this.canvas.on("object:moving", function(e) {
 				console.log("object:moving", e.target);
@@ -497,41 +499,57 @@
 								const data = activeObj.mainObj?.data
 
 								data.path.push({
-									x: _this.getActualXFromImg(activeObj.left),
-									y: _this.getActualYFromImg(activeObj.top)
+									x: _this.getActualXFromImg(activeObj.left) || 0,
+									y: _this.getActualYFromImg(activeObj.top) || 0
 								})
 								_this.updateRegion(activeObj.mainObj, data)
 							} else if (activeObj.eleType == "cmd") {
 								let data = activeObj.mainObj.data
-								if (activeObj.mainObj.eleType == "edit_teaching") {
+								const objCmdMain = activeObj.mainObj
+								if (objCmdMain.eleType == "edit_teaching") {
 
-									let left = _this.getActualXFromImg(activeObj.left)
-									let top = _this.getActualYFromImg(activeObj.top)
-									let right = _this.getActualXFromImg(activeObj.left + activeObj.width)
-									let bottom = _this.getActualYFromImg(activeObj.top + activeObj.height)
-									data = [
-										[left, top],
-										[left, bottom],
-										[right, bottom],
-										[right, top]
-									]
+									const left = _this.getActualXFromImg(objCmdMain.left)
+									const top = _this.getActualYFromImg(objCmdMain.top)
+									const right = _this.getActualXFromImg(objCmdMain.left + objCmdMain.width)
+									const bottom = _this.getActualYFromImg(objCmdMain.top + objCmdMain.height)
+									data = []
+									if (Number.isNaN(left) || Number.isNaN(top) || Number.isNaN(right) || Number
+										.isNaN(bottom)) {
+										const now = new Date()
+										const date = `${now.getHours()}:${now.getMinutes()}:${now.getSeconds()}`
+										_this.$ownerInstance.callMethod('receiveRenderData', {
+											method: "show_log",
+											data: {
+												date,
+												method: `POST`,
+												url: "app/log/edit_teaching",
+												param: objCmdMain,
+												statusCode: 100,
+												data: _this.mapInfo
+											},
+										});
+									}
+									data.push([left, top])
+									data.push([left, bottom])
+									data.push([right, bottom])
+									data.push([right, top])
 									console.log(data)
 								}
 								_this.$ownerInstance.callMethod('receiveRenderData', {
 									method: "edit_finish",
 									cmd: activeObj.id,
-									type: activeObj.mainObj.eleType,
+									type: objCmdMain.eleType,
 									data: data,
 								});
 								if (activeObj.id == "ok") {
-									if (activeObj.mainObj.eleType == "region") {
+									if (objCmdMain.eleType == "region") {
 										_this.addRegionFinish(activeObj.mainObj)
 									} else if (activeObj.mainObj.eleType == "virtual_wall") {
 										_this.addVirtualWallFinish(activeObj.mainObj)
 									}
 
 								}
-								if (activeObj.mainObj.eleType == "edit_teaching") {
+								if (objCmdMain.eleType == "edit_teaching") {
 									let list = _this.canvas.getObjects() || []
 									for (let i2 in list) {
 										const obj = list[i2]
@@ -539,29 +557,28 @@
 											opacity: 1
 										})
 									}
-									if (activeObj.mainObj?.mainObj) {
-										activeObj.mainObj.mainObj.set({
+									if (objCmdMain?.mainObj) {
+										objCmdMain.mainObj.set({
 											selectable: true
 										})
 									}
-									const ptObjs = activeObj.mainObj.ptObjs || []
-									_this.canvas.remove(activeObj.mainObj)
+									const ptObjs = objCmdMain.ptObjs || []
+									_this.canvas.remove(objCmdMain)
 									for (let i2 in ptObjs) {
 										const obj = ptObjs[i2]
 										_this.canvas.remove(obj)
 									}
 								}
-								if (activeObj.mainObj.eleType == "station") {
+								if (objCmdMain.eleType == "station") {
 
 									_this.setAllObjectSelectable(true)
-									activeObj.mainObj.tipObj.set({
-										left: activeObj.mainObj.left,
-										top: activeObj.mainObj.top - activeObj.mainObj.height / 2 -
-											activeObj.mainObj
-											.tipObj.height / 2,
+									objCmdMain.tipObj.set({
+										left: objCmdMain.left,
+										top: objCmdMain.top - objCmdMain.height / 2 -
+											objCmdMain.tipObj.height / 2,
 										visible: true
 									})
-									activeObj.mainObj.tipObj.setCoords()
+									objCmdMain.tipObj.setCoords()
 								}
 								_this.closeOkCancelControl()
 
@@ -735,7 +752,7 @@
 			const objects = this.canvas.getObjects();
 
 			objects.splice(0, 1);
-			this.canvas.discardActiveObject()
+			const objActive = this.canvas.getActiveObject()
 
 			let pointerList = []
 			let pointerList2 = []
@@ -745,14 +762,14 @@
 				if (obj.selectable && obj.opacity > 0) {
 					if (obj instanceof fabric.Path || obj instanceof fabric.Line) {
 						if (this.isPointOnStroke(obj, pointer)) {
-							console.log(i, obj.eleType)
+							//	console.log(i, obj.eleType)
 							pointerList.unshift(obj)
 
 						}
 					} else {
 						const isHit = obj.containsPoint(pointer);
 						if (isHit) {
-							console.log(i, obj.eleType)
+							//	console.log(i, obj.eleType)
 							pointerList.unshift(obj)
 
 						}
@@ -764,26 +781,35 @@
 				const obj = pointerList[i];
 				if (obj instanceof fabric.Path || obj instanceof fabric.Line) {
 					if (this.isPointOnStroke(obj, pointer, 1)) {
-						this.canvas.discardActiveObject()
-						this.canvas.setActiveObject(obj);
-						this.canvas.requestRenderAll();
+						if (objActive != obj) {
+
+							this.canvas.discardActiveObject()
+							this.canvas.setActiveObject(obj);
+							this.canvas.requestRenderAll();
+						}
 						return
 					}
 					pointerList2.unshift(obj)
 				} else {
-					this.canvas.discardActiveObject()
-					this.canvas.setActiveObject(obj);
-					this.canvas.requestRenderAll();
+					if (objActive != obj) {
+
+						this.canvas.discardActiveObject()
+						this.canvas.setActiveObject(obj);
+						this.canvas.requestRenderAll();
+					}
 					return
 				}
 			}
 
 			if (pointerList2.length > 0) {
 				if (pointerList2.length == 1) {
-					const obj = pointerList2[i];
-					this.canvas.discardActiveObject()
-					this.canvas.setActiveObject(obj);
-					this.canvas.requestRenderAll();
+					const obj = pointerList2[0];
+					if (objActive != obj) {
+
+						this.canvas.discardActiveObject()
+						this.canvas.setActiveObject(obj);
+						this.canvas.requestRenderAll();
+					}
 					return
 				}
 				pointerList = pointerList2
@@ -791,9 +817,12 @@
 				for (let i = pointerList.length - 1; i >= 0; i--) {
 					const obj = pointerList[i];
 					if (this.isPointOnStroke(obj, pointer, 2)) {
-						this.canvas.discardActiveObject()
-						this.canvas.setActiveObject(obj);
-						this.canvas.requestRenderAll();
+						if (objActive != obj) {
+
+							this.canvas.discardActiveObject()
+							this.canvas.setActiveObject(obj);
+							this.canvas.requestRenderAll();
+						}
 						return
 					}
 					pointerList2.unshift(obj)
@@ -801,10 +830,13 @@
 			}
 			if (pointerList2.length > 0) {
 				if (pointerList2.length == 1) {
-					const obj = pointerList2[i];
-					this.canvas.discardActiveObject()
-					this.canvas.setActiveObject(obj);
-					this.canvas.requestRenderAll();
+					const obj = pointerList2[0];
+					if (objActive != obj) {
+
+						this.canvas.discardActiveObject()
+						this.canvas.setActiveObject(obj);
+						this.canvas.requestRenderAll();
+					}
 					return
 				}
 				pointerList = pointerList2
@@ -812,9 +844,12 @@
 				for (let i = pointerList.length - 1; i >= 0; i--) {
 					const obj = pointerList[i];
 					if (this.isPointOnStroke(obj, pointer, 3)) {
-						this.canvas.discardActiveObject()
-						this.canvas.setActiveObject(obj);
-						this.canvas.requestRenderAll();
+						if (objActive != obj) {
+
+							this.canvas.discardActiveObject()
+							this.canvas.setActiveObject(obj);
+							this.canvas.requestRenderAll();
+						}
 						return
 					}
 					pointerList2.unshift(obj)
@@ -822,10 +857,13 @@
 			}
 			if (pointerList2.length > 0) {
 				if (pointerList2.length == 1) {
-					const obj = pointerList2[i];
-					this.canvas.discardActiveObject()
-					this.canvas.setActiveObject(obj);
-					this.canvas.requestRenderAll();
+					const obj = pointerList2[0];
+					if (objActive != obj) {
+
+						this.canvas.discardActiveObject()
+						this.canvas.setActiveObject(obj);
+						this.canvas.requestRenderAll();
+					}
 					return
 				}
 				pointerList = pointerList2
@@ -833,9 +871,12 @@
 				for (let i = pointerList.length - 1; i >= 0; i--) {
 					const obj = pointerList[i];
 					if (this.isPointOnStroke(obj, pointer, 4)) {
-						this.canvas.discardActiveObject()
-						this.canvas.setActiveObject(obj);
-						this.canvas.requestRenderAll();
+						if (objActive != obj) {
+
+							this.canvas.discardActiveObject()
+							this.canvas.setActiveObject(obj);
+							this.canvas.requestRenderAll();
+						}
 						return
 					}
 					pointerList2.unshift(obj)
@@ -844,9 +885,12 @@
 			if (pointerList2.length > 0) {
 
 				const obj = pointerList2[pointerList2.length - 1];
-				this.canvas.discardActiveObject()
-				this.canvas.setActiveObject(obj);
-				this.canvas.requestRenderAll();
+				if (objActive != obj) {
+
+					this.canvas.discardActiveObject()
+					this.canvas.setActiveObject(obj);
+					this.canvas.requestRenderAll();
+				}
 				return
 			}
 			// objects.forEach(obj => {
@@ -1081,40 +1125,7 @@
 		},
 
 		onSelectionChanage() {
-			const _this = this
-			// const list = _this.canvas.getActiveObjects()
-			// if (list.length === 1) {
-			// 	if (list[0].eleType == "station") {
-			// 		_this.$ownerInstance.callMethod('receiveRenderData', {
-			// 			method: "selected_change",
-			// 			type: list[0].eleType,
-			// 			param: list[0].data
-			// 		});
-			// 	} else if (list[0].eleType == "agv") {
-			// 		_this.$ownerInstance.callMethod('receiveRenderData', {
-			// 			method: "selected_change",
-			// 			type: list[0].eleType,
-			// 			param: list[0].data
-			// 		});
-			// 	} else if (list[0].eleType == "agv_line") {
-			// 		_this.$ownerInstance.callMethod('receiveRenderData', {
-			// 			method: "selected_change",
-			// 			type: list[0].eleType,
-			// 			param: list[0].data
-			// 		});
-			// 	} else {
-			// 		_this.$ownerInstance.callMethod('receiveRenderData', {
-			// 			method: "selected_change",
-			// 			type: ""
-			// 		});
-			// 	}
 
-			// } else {
-			// 	_this.$ownerInstance.callMethod('receiveRenderData', {
-			// 		method: "selected_change",
-			// 		type: ""
-			// 	});
-			// }
 		},
 		safeLoadImage(url, maxSize = 2048) {
 			console.log(url)
@@ -1136,49 +1147,6 @@
 					resolve(null);
 				};
 				img.src = url;
-			});
-		},
-		safeLoadImageData(data, maxSize = 2048) {
-			//console.log("safeLoadImageData")
-			const _this = this
-			return new Promise((resolve) => {
-				let base64Image = data
-				if (base64Image.indexOf("data:image/png;base64,") < 0) {
-					base64Image = "data:image/png;base64," + data
-				}
-				// var img = new fabric.Image();
-				// img.setSrc(base64Image, function() {
-				// 	console.log("img", JSON.stringify(img))
-				// 	const scale = Math.min(
-				// 		maxSize / Math.max(img.width, img.height),
-				// 		1
-				// 	);
-				// 	img.set({
-				// 		scaleX: scale,
-				// 		scaleY: scale
-				// 	})
-				// 	resolve(img)
-				// });
-				fabric.Image.fromURL(base64Image, {
-					crossOrigin: 'anonymous' // 閲嶈锛氳缃法鍩�-				}).then((img) => {
-
-					//console.log("img",JSON.stringify(img))
-					const scale = Math.min(
-						maxSize / Math.max(img.width, img.height),
-						1
-					);
-					img.set({
-						scaleX: scale,
-						scaleY: scale,
-					})
-					resolve(img)
-				}).catch((err) => {
-					console.error("鍥剧墖鍔犺浇澶辫触", err)
-					_this.showError("鍥剧墖鍔犺浇澶辫触")
-					resolve(null);
-				})
-
 			});
 		},
 		// 灏�Base64 杞负 Blob锛屽啀鐢熸垚 URL
@@ -1313,19 +1281,19 @@
 			const cantainerEl = document.getElementById("canvasMap")
 			this.eleWidth = cantainerEl.clientWidth
 			this.eleHeight = cantainerEl.clientHeight
-			console.log("client", this.eleWidth, this.eleHeight)
 			this.canvas.setWidth(this.eleWidth);
 			this.canvas.setHeight(this.eleHeight);
 			this.mapInfo = {
-				proportion: info.proportion || 1,
-				img_proportion: info.img_proportion || 1,
-				max_x: info.max_x || 1,
-				max_y: info.max_y || 1,
-				min_x: info.min_x || 0,
-				min_y: info.min_y || 0,
-				img_x: info.img_x || 1,
-				img_y: info.img_y || 1,
+				proportion: parseInt(info.proportion) || 1,
+				img_proportion: parseInt(info.img_proportion) || 1,
+				max_x: parseInt(info.max_x) || 1,
+				max_y: parseInt(info.max_y) || 1,
+				min_x: parseInt(info.min_x) || 0,
+				min_y: parseInt(info.min_y) || 0,
+				img_x: parseInt(info.img_x) || 1,
+				img_y: parseInt(info.img_y) || 1,
 			}
+
 			return new Promise((resolve, reject) => {
 
 				if (info.filedata) {
@@ -1426,13 +1394,15 @@
 			const eleWidth = this.eleWidth - 20
 			const eleHeight = this.eleHeight - 200
 			if (!this.workSpace)
-				return 1
+				return 0.8
 			const width = this.workSpace.width
 			const height = this.workSpace.height
 			if (eleWidth / eleHeight < width / height) {
-				return eleWidth / width;
+				let scale = eleWidth / width;
+				return scale - scale / 10
 			} // 鎸夌収瀹藉害缂╂斁
-			return eleHeight / height;
+			let scale = eleHeight / height;
+			return scale - scale / 10
 		},
 
 		auto() {
@@ -1544,7 +1514,11 @@
 						clearTimeout(this.pressObjTimer);
 						this.pressObjTimer = null
 					}
+					this.$ownerInstance.callMethod('receiveRenderData', {
+						method: "cancel_positioning_agv",
+					});
 				}
+
 				// 绉诲姩瑙嗗彛
 				//	console.log('relativePan', deltaX, deltaY);
 				const vpt = this.canvas.viewportTransform;
@@ -1775,7 +1749,9 @@
 			}
 			//console.log(scale, scaleAuto)
 			this.setZoomAuto(scale, center)
-
+			this.$ownerInstance.callMethod('receiveRenderData', {
+				method: "cancel_positioning_agv",
+			});
 			//	console.log('澶氱偣绉诲姩 - 璺濈:', distance, '瑙掑害:', angle);
 			// 澶氱偣绉诲姩閫昏緫
 		},
@@ -2112,8 +2088,6 @@
 					pos_list.push(item)
 				}
 			})
-
-			console.log(posArr.length, pos_list.length)
 			let path2 = ""
 
 			const theta = 20;
@@ -2212,7 +2186,8 @@
 
 
 			}
-			//console.log(path2)
+			
+			// console.log("addTeachingPath",path2)
 			// path2 += " Z"
 			let strokeWidth = 1
 			let stroke = "#95DE64"
@@ -2248,22 +2223,12 @@
 					lockMovementX: true,
 					lockMovementY: true,
 					selectable: false,
-					opacity: 0,
+					opacity: 1,
 					mainRoad: main_road,
 					data: teachingData
 				})
 			this.canvas.add(objPath)
-
-			// this.canvas.sendObjectToBack(objPath);
-
-			// lenTeaching = 0
-			// for (let i = list.length - 1; i >= 0; i--) {
-			// 	const obj = list[i]
-			// 	if (this.compareOverlap(obj, objPath)) {
-			// 		lenTeaching = i + 1
-			// 		break
-			// 	}
-			// }
+			this.canvas.sendObjectToBack(objPath);
 			this.canvas.moveObjectTo(objPath, lenTeaching + 1);
 
 			return objPath
@@ -2298,7 +2263,8 @@
 
 		},
 		showTeachingPath(show) {
-
+			if (!show)
+				this.canvas.discardActiveObject();
 			let list = this.canvas.getObjects() || []
 			list = list.filter((a) => a.eleType == "station_teaching" || a.eleType == "public_teaching")
 			for (let i2 in list) {
@@ -2366,10 +2332,6 @@
 					left = pt.x - width / 2
 					top = pt.y - height / 2
 				}
-				console.log(left,
-					top,
-					width,
-					height, scale2)
 				const rect = new fabric.Rect({
 					id: `edit_teaching`,
 					eleType: "edit_teaching",
@@ -2434,30 +2396,6 @@
 					oldLeft: rect.left,
 					oldTop: rect.top,
 				})
-				/*const zoom = this.canvas.getZoom();
-				const eleHeight = this.eleHeight - 150
-				const info = {
-					x: rect.left + rect.width / 2,
-					y: rect.top + rect.height / 2
-				}
-				let deltaX = info.x * zoom - this.eleWidth / 2 // * scale;
-				let deltaY = info.y * zoom - eleHeight / 2 //* scale;
-				const vpt = this.canvas.viewportTransform;
-				const oldX = vpt[4]
-				const oldY = vpt[5]
-				if (deltaX + this.eleWidth > this.workSpace.width)
-					deltaX = this.workSpace.width - this.eleWidth
-				if (deltaY + eleHeight > this.workSpace.height)
-					deltaY = this.workSpace.height - eleHeight
-				if (oldX + this.eleWidth >= info.x * zoom && info.x * zoom >= oldX) {
-					deltaX = -oldX
-					//console.log("move_canvas X", oldX)
-				}
-				if (oldY + eleHeight >= info.y * zoom && info.y * zoom >= oldY) {
-					//	console.log("move_canvas Y", oldY)
-					deltaY = -oldY
-				}
-				this.canvas.absolutePan(new fabric.Point(deltaX, deltaY));*/
 
 			} else {
 				for (let i2 in list) {
@@ -3122,7 +3060,7 @@
 			this.canvas.add(ellipse)
 			const offX = 20 * Math.cos(angle)
 			const offY = 20 * Math.sin(angle)
-			console.log("angle", param.angle, offX, offY)
+	
 			if (this.objAgvLaser) {
 				this.canvas.remove(this.objAgvLaser)
 			}
@@ -3205,38 +3143,54 @@
 		ensurePointVisible(pt) {
 			var zoom = this.canvas.getZoom();
 			var vpt = this.canvas.viewportTransform; // 褰撳墠鍙樻崲鐭╅樀
-
-			var newPanX = vpt[4];
-			var newPanY = vpt[5];
-			if (pt.x * zoom < vpt[4] + 80 || pt.x * zoom > vpt[4] + this.eleWidth - 80) {
-				if (pt.x * zoom - this.eleWidth / 2 < 80) {
-					newPanX = -80
-				} else if (pt.x * zoom > this.mapInfo.img_x * zoom - 80) {
-					newPanX = this.mapInfo.img_x * zoom - this.eleWidth + 80
-				} else {
+			
+			var newPanX = -vpt[4];
+			var newPanY = -vpt[5];
+			const  offWidth = pt.width || 20
+			const  offHeight = pt.height || 20
+		//	console.log("ensurePointVisible",pt.x,pt.y,newPanX,newPanY, this.eleWidth,this.eleHeight)
+			if (pt.x * zoom < -vpt[4] + offWidth || pt.x * zoom > -vpt[4] + this.eleWidth - offWidth) {
+				if (pt.x * zoom - this.eleWidth / 2 <offWidth) {
+					newPanX = -offWidth
+				} 
+				// else if (pt.x * zoom > this.mapInfo.img_x * zoom - 20) {
+				// 	newPanX = this.mapInfo.img_x * zoom - this.eleWidth + 20
+				// } 
+				else {
 					newPanX = pt.x * zoom - this.eleWidth / 2
 				}
 			}
-			if (pt.y * zoom < vpt[5] + 80 || pt.y * zoom > vpt[5] + this.eleHeight - 200) {
+			if (pt.y * zoom < -vpt[5] +offHeight || pt.y * zoom > -vpt[5] + this.eleHeight - (120+offHeight)) {
 
-				if (pt.y * zoom - this.eleHeight / 2 < 80) {
-					newPanY = -80
-				} else if (pt.y * zoom > this.mapInfo.img_y * zoom - 200) {
-					newPanY = this.mapInfo.img_y * zoom - this.eleHeight + 200
-				} else {
-					newPanY = pt.y * zoom - this.eleHeight / 2
+				if (pt.y * zoom - this.eleHeight / 2 <offHeight) {
+					newPanY = -offHeight
+				} 
+				// else if (pt.y * zoom > this.mapInfo.img_y * zoom - 180) {
+				// 	newPanY = this.mapInfo.img_y * zoom - this.eleHeight + 180
+				// }
+				 else {
+					newPanY = pt.y * zoom -(this.eleHeight - 120) / 2
 				}
 			}
 
+		//	console.log("ensurePointVisible2",newPanX,newPanY)
 			// 鍙湁鍦ㄩ渶瑕佹椂鎵嶅钩绉�-			if (newPanX !== vpt[4] || newPanY !== vpt[5]) {
+			if (newPanX !== -vpt[4] || newPanY !== -vpt[5]) {
 				this.canvas.absolutePan({
 					x: newPanX,
 					y: newPanY
 				});
 			}
 		},
-
+		ensurePointCenter(pt){
+			var zoom = this.canvas.getZoom();
+			var newPanX = newPanX = pt.x * zoom - this.eleWidth / 2
+			var newPanY =  pt.y * zoom -(this.eleHeight - 150) / 2
+			this.canvas.absolutePan({
+				x: newPanX,
+				y: newPanY
+			});
+		},
 		setAllObjectSelectable(selectable) {
 			let flag = false
 			this.canvas.forEachObject(function(obj) {
@@ -3293,18 +3247,27 @@
 					} else if (item.method == "update_current_teaching") {
 						const info = item.param || []
 						await _this.updateCurrentTeaching(info)
-					} else if (item.method == "move_canvas") {
+					} else if (item.method == "move_pt_visible") {
 						const info2 = item.param || {}
 
 						const pt = {
 							x: this.getXOnImg(info2.x),
-							y: this.getYOnImg(info2.y)
+							y: this.getYOnImg(info2.y),
+							width: 20,
+							height: 20
 						}
 						this.ensurePointVisible(pt)
 
-
-
-					} else if (item.method == "add_station") {
+					} 
+					else if (item.method == "move_pt_center") {
+						const info2 = item.param || {}
+						const pt = {
+							x: this.getXOnImg(info2.x),
+							y: this.getYOnImg(info2.y)
+						}
+						this.ensurePointCenter(pt)
+					} 
+					else if (item.method == "add_station") {
 						const stationList = item.param || []
 						let list = _this.canvas.getObjects() || []
 						for (let i2 in stationList) {
@@ -3509,14 +3472,17 @@
 							}
 						})
 					} else if (item.method == "public_teaching") {
+						_this.setAllObjectSelectable(false)
 						let list = _this.canvas.getObjects() || []
 						list.forEach((obj) => {
-							if (obj.eleType == "public_teaching" || obj.eleType ==
-								"station_teaching") {
+							if (obj.eleType == "public_teaching" || obj.eleType == "station_teaching") {
 								obj.set({
-									hasControls: false,
-									selectable: false,
+									opacity: 1
 								})
+								// obj.set({
+								// 	hasControls: false,
+								// 	selectable: false,
+								// })
 							} else if (obj.eleType == "agv")
 								obj.set({
 									opacity: 1
@@ -3535,34 +3501,31 @@
 						for (let i2 in list) {
 							const obj = list[i2]
 							obj.set({
-								selectable: false,
+								selectable: obj?.canSelect ?true:false,
 								opacity: 1
 							})
-							// if (obj.eleType == "station") {
-							// 	await _this.setMarkStation(obj, false)
-							// }
-
 						}
 						_this.showTeachingPath(_this.showTeachPathFlag ? true : false)
 
-					} else if (item.method == "public_teaching_path") {
+					} 
+					else if (item.method == "clear_teaching_path") {
 						let list = _this.canvas.getObjects() || []
-						list = list.filter((a) => a.eleType == "public_teaching")
+						list = list.filter((a) => a.eleType == "public_teaching" || a.eleType == "station_teaching")
 						for (let i2 in list) {
 							this.canvas.remove(list[i2])
 						}
+					}
+					else if (item.method == "public_teaching_path") {
+					
 						const teachingPathList = item.param || []
+						
 						for (let i2 in teachingPathList) {
 							const teachingPath = teachingPathList[i2]
 							const id = `public_teaching_${teachingPath.name}`
 							await this.addTeachingPath(teachingPath, id, "public_teaching")
 						}
 					} else if (item.method == "station_teaching_path") {
-						let list = _this.canvas.getObjects() || []
-						list = list.filter((a) => a.eleType == "station_teaching")
-						for (let i2 in list) {
-							this.canvas.remove(list[i2])
-						}
+
 						const teachingPathList = item.param || []
 						for (let i2 in teachingPathList) {
 							const teachingPath = teachingPathList[i2]

--
Gitblit v1.9.1