From fb026e6052b4d843d327312db398cf791ac57ab9 Mon Sep 17 00:00:00 2001
From: cyy <cuiqian2004@163.com>
Date: 星期日, 28 九月 2025 22:43:29 +0800
Subject: [PATCH] test

---
 pages/map/index.vue |  307 ++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 216 insertions(+), 91 deletions(-)

diff --git a/pages/map/index.vue b/pages/map/index.vue
index b76665c..9240203 100644
--- a/pages/map/index.vue
+++ b/pages/map/index.vue
@@ -10,22 +10,22 @@
 						alt="SVG 鍥剧墖" @click="clickShowMenu" />
 				</view>
 				<template v-slot:left>
-					<view>
-						<uni-icons type="left" size="24" @click="clickBack"></uni-icons>
+					<view @click="clickBack">
+						<uni-icons type="left" size="24"></uni-icons>
 					</view>
 
 				</template>
-				<template v-slot:right>
+				<!-- <template v-slot:right>
 					<view v-if="sceneList.length > 0 && !mapOperationType">
 						<a @click="clickMore">
 							<uni-icons class="uni-panel-bar-icon" type="more-filled" size="24"></uni-icons>
 						</a>
 					</view>
 
-				</template>
+				</template> -->
 			</uni-nav-bar>
 			<view class="no-content" v-if="unlinked">
-				<image class="img" src="/images/image 25.png" alt=" 鍥剧墖" mode="aspectFit" />
+				<image class="img" src="/images/image_25.png" alt=" 鍥剧墖" mode="aspectFit" />
 				<view class="title">杞﹁締杩炴帴澶辫触</view>
 				<view class="space">璇锋鏌ヤ綘鐨勭綉缁滆缃垨閲嶆柊鍔犺浇</view>
 			</view>
@@ -89,7 +89,7 @@
 				<view class="tip">璇疯緭鍏ュ満鏅悕绉�/view>
 				<view class="name-input">
 					<input ref="refInputName" :focus="true" placeholder="璇疯緭鍏ュ満鏅悕绉� :value="sceneInputName"
-						@input="onInputName"></input>
+						@input="onInputName" />
 					<uni-icons class="clear" color="#ccc" type="clear" size="20" v-if="sceneInputName"
 						@click="clickClearName"></uni-icons>
 				</view>
@@ -108,14 +108,14 @@
 						<view class="coordinate">
 							<text class="name">妯潗鏍�</text>
 							<input ref="refInputX" class="number-input" type="number" :value="stationEdit.x"
-								@input="onInputStationX" :maxlength="4"></input>
+								@input="onInputStationX" :maxlength="4" />
 							<uni-icons class="clear" color="#ccc" type="clear" size="20"
 								v-if="stationEdit.x && stationEdit.x!='0'" @click="clickClearStationX"></uni-icons>
 						</view>
 						<view class="coordinate">
 							<text class="name">绔栧潗鏍�</text>
 							<input ref="refInputX" class="number-input" type="number" :value="stationEdit.y"
-								@input="onInputStationY" :maxlength="4"></input>
+								@input="onInputStationY" :maxlength="4" />
 							<uni-icons class="clear" color="#ccc" type="clear" size="20"
 								v-if="stationEdit.y&& stationEdit.y!='0'" @click="clickClearStationY"></uni-icons>
 						</view>
@@ -124,7 +124,7 @@
 					<view class="tip">璋冭妭鏈濆悜</view>
 					<view class="angle-group">
 						<image class="img-angle" :src="angleSvg" alt="SVG 鍥剧墖" />
-						<image class="img-angle-pos" src="/images/Frame 153.svg" alt="SVG 鍥剧墖"
+						<image class="img-angle-pos" src="/images/Frame_153.svg" alt="SVG 鍥剧墖"
 							@touchstart="handleAngleTouchStart" @touchmove="handleAngleTouchMove" />
 					</view>
 				</view>
@@ -132,7 +132,7 @@
 					<view class="tip">璇疯緭鍏ョ珯鐐瑰悕绉�/view>
 					<view class="name-input">
 						<input ref="refInputName" :focus="true" placeholder="杈撳叆绔欑偣鍚嶇О" :value="stationEdit.name"
-							@input="onInputStationName"></input>
+							@input="onInputStationName" />
 						<uni-icons class="clear" color="#ccc" type="clear" size="20" v-if="stationEdit.name"
 							@click="clickClearStationName"></uni-icons>
 					</view>
@@ -211,8 +211,8 @@
 				<view class="bottom-content" v-if="mapOperationStatus =='teaching'">
 					<view class="tip">璺緞璁板綍涓�..</view>
 					<view v-if="mapOperationType =='public_teaching'">
-						<view>姝e湪璁板綍鎼繍杞﹁杩涜矾寰勶紝鍙殢鏃跺垏鎹富璺�鏀矾绀烘暀锛屽畬鎴愬悗鐐规寜閽互缁撴潫绀烘暀銆傚湪绀烘暀杩囩▼涓彲浠ユ坊鍔犵珯鐐广�</view>
-						<view class="switch-type">
+						<view>姝e湪璁板綍鎼繍杞﹁杩涜矾寰勶紝瀹屾垚鍚庣偣鎸夐挳浠ョ粨鏉熺ず鏁欍�鍦ㄧず鏁欒繃绋嬩腑鍙互娣诲姞绔欑偣銆�/view>
+						<!-- 		<view class="switch-type">鍙殢鏃跺垏鎹富璺�鏀矾绀烘暀锛� 							<view class="switch-button-group">
 								<view class="switch-button"
 									:class="teachingModeCur.main_road ==1?'switch-button-checked':''"
@@ -221,7 +221,7 @@
 									:class="teachingModeCur.main_road ==0?'switch-button-checked':''"
 									@click="onTeachingModeMainRoad(0)">鏀矾绀烘暀</view>
 							</view>
-						</view>
+						</view> -->
 					</view>
 
 					<view v-else>
@@ -347,7 +347,7 @@
 						<view class="img-button-group">
 							<view fill="none" class="button" @click.stop="clickStationDelete">
 								<text class="ico delete-outline"></text>
-								<view class="text"> 鍒犻櫎绔欑偣</view>
+								<view class="text"> 鎵归噺鍒犻櫎</view>
 							</view>
 							<view type="text" class="button" @click.stop="clickStationPostion">
 								<text class="ico edit-line"></text>
@@ -475,7 +475,8 @@
 				wallList: [],
 				regionList: [],
 				unlinked: false,
-				showTeachingPathFlag: false,
+				showTeachingPathFlag: true,
+				curTeachingPathFlag: false,
 				curMapInfo: {
 					proportion: 1,
 					img_proportion: 1,
@@ -556,7 +557,7 @@
 
 		},
 		onBackPress() {
-				this.isPageVisible = false
+			this.isPageVisible = false
 			if (this.destroyFlag)
 				return false
 			else {
@@ -597,6 +598,10 @@
 						this.mapOperationType = ''
 						const scene = this.sceneList[0]
 						this.changeMap(scene)
+					} else {
+						uni.navigateBack({
+							delta: 1, //杩斿洖灞傛暟锛�鍒欎笂涓婇〉
+						})
 					}
 					this.refreshAgvPosition()
 				} catch (ex) {
@@ -751,19 +756,26 @@
 
 						showModal("宸茶褰曠殑璺緞灏嗕細琚垹闄ゃ�", "鏄惁瑕侀�鍑虹ず鏁欙紵").then(async (res) => {
 							if (res) {
+								const listDataStr = []
 								if (this.mapOperationStatus == 'end' || this.mapOperationStatus ==
 									'save') {
 									try {
 										await delTeachingMode(this.vehicleIp, [this.teachingModeCur])
+										listDataStr.push({
+											method: "remove_teaching_path",
+											param: {
+												name: this.teachingModeCur.name,
+												mode: "Public"
+											},
+										})
 									} catch (ex) {
 										showError(ex)
 									}
-
 								}
-								this.ctxDataStr = JSON.stringify([{
+								listDataStr.push({
 									method: "teaching_finish",
-								}])
-
+								})
+								this.ctxDataStr = JSON.stringify(listDataStr)
 								this.mapOperationType = ""
 							}
 						})
@@ -776,11 +788,7 @@
 					}
 
 				} else {
-					// const eventChannel = this.getOpenerEventChannel();
-					// eventChannel.emit('udapte_station', this.unlinked);
-					// uni.navigateBack({
-					// 	delta: 1
-					// })
+				
 					const eventChannel = this.getOpenerEventChannel();
 					eventChannel.emit('check_connect', !this.unlinked);
 					uni.navigateBack({
@@ -815,7 +823,7 @@
 						// this.mapOperationType = 'scene_create'
 						// this.opSceneType = 'add_name'
 						uni.navigateTo({
-							url: `/pages/map/scene?ip=${_this.vehicleIp}`,
+							url: `/pages/map/scene?ip=${_this.vehicleIp}&opType=create`,
 							events: {
 								// 涓烘寚瀹氫簨浠舵坊鍔犱竴涓洃鍚櫒锛岃幏鍙栬鎵撳紑椤甸潰浼犻�鍒板綋鍓嶉〉闈㈢殑鏁版嵁
 								create_finish: function(data) {
@@ -831,15 +839,13 @@
 						this.clickDelete()
 					}
 				}
-
-
 			},
 			async loadAgvState() {
 				try {
 					const info = await getAgvState(this.vehicleIp)
 					return info
 				} catch (ex) {
-					showError(ex)
+					showToast(ex)
 					return {}
 				}
 			},
@@ -848,7 +854,7 @@
 					const paths = await getCurrentTeachingData(this.vehicleIp) || []
 					return paths
 				} catch (ex) {
-					showError(ex)
+					showToast(ex)
 					return []
 				}
 			},
@@ -913,7 +919,6 @@
 						img_x: parseInt(infoMap.img_x) || 1,
 						img_y: parseInt(infoMap.img_y) || 1
 					}
-					// getApp().globalData.curScene = infoMap
 					this.setData({
 						bgProgressPercent: 30,
 						bgLoading: infoMap.filedata ? true : false
@@ -936,6 +941,12 @@
 						{
 							method: "add_station",
 							param: stationLst
+						},
+						{
+							method: "show_teaching_path",
+							param: {
+								show: this.showTeachingPathFlag
+							}
 						},
 						{
 							method: "public_teaching_path",
@@ -1017,6 +1028,9 @@
 						width: param.view?.width || 0,
 						height: param.view?.height || 0,
 					}
+					const angle = this.getStantardAngle(this.stationEdit.angle * 180 / Math.PI)
+					
+					this.angleSvg = `/static/images/angle${angle}.svg`
 					this.mapOperationType = ""
 
 					this.$refs.refPopupOperateStation.open("bottom")
@@ -1043,6 +1057,9 @@
 							const angle = this.getStantardAngle(this.stationEdit.angle * 180 / Math.PI)
 
 							this.angleSvg = `/static/images/angle${angle}.svg`
+							if (this.mapOperationType == "teaching_add_station") {
+								this.positioningAgv = true
+							}
 							this.clickStationPositonOk()
 						} else if (param.type == "edit_teaching") {
 							// console.log(param.type,JSON.stringify(param.data))
@@ -1090,7 +1107,7 @@
 							this.stationEdit.stationID = ""
 							this.mapOperationType = "public_teaching"
 							this.mapOperationStatus = "teaching"
-
+							this.positioningAgv = true
 						} else if (this.mapOperationType == "edit_station") {
 							this.mapOperationType = ""
 							this.mapOperationStatus = ""
@@ -1112,12 +1129,10 @@
 								param: true
 							}])
 						}
-
 					}
 				} else if (param.method == "select_teaching_path") {
 					console.log("point", param.point)
 					if (param.type == "station") {
-
 						this.selectTeachingMode = {
 							mode: "Stations",
 							name: param.data?.name || "",
@@ -1132,17 +1147,18 @@
 							point: param.point
 						}
 					}
-
 					this.$refs.refPopupOperateTeaching.open("bottom")
 				} else if (param.method == "cancel_positioning_agv") {
-					this.positioningAgv = false
+					if (this.mapOperationType == "public_teaching" 
+					&& this.mapOperationStatus == "teaching") {
+						this.positioningAgv = true
+					} else
+						this.positioningAgv = false
 				} else if (param.method == "show_log") {
 					const listLog = session.getValue("request_log") || []
 					listLog.unshift(param.data)
 					session.setValue("request_log", listLog)
 				}
-
-
 			},
 			clickMapStation() {
 				this.stationEdit = {
@@ -1214,9 +1230,7 @@
 			async loadSceneList() {
 				try {
 
-					uni.showLoading({
-						title: "鍔犺浇鍦烘櫙涓�
-					})
+					
 					const _this = this
 					const res = await getAllScene(this.vehicleIp) || []
 					const list = res?.sceneList || []
@@ -1232,25 +1246,27 @@
 						// 	sceneId: "",
 						// 	navigationBarTitle: "鍦板浘"
 						// })
-						uni.navigateTo({
-							url: `/pages/map/scene?ip=${this.vehicleIp}&opType=create`,
-							events: {
-								// 涓烘寚瀹氫簨浠舵坊鍔犱竴涓洃鍚櫒锛岃幏鍙栬鎵撳紑椤甸潰浼犻�鍒板綋鍓嶉〉闈㈢殑鏁版嵁
-								create_finish: function(data) {
-									_this.onCreateSceneOk(data)
-								},
-							}
+						// uni.navigateTo({
+						// 	url: `/pages/map/scene?ip=${this.vehicleIp}`,
+						// 	events: {
+						// 		// 涓烘寚瀹氫簨浠舵坊鍔犱竴涓洃鍚櫒锛岃幏鍙栬鎵撳紑椤甸潰浼犻�鍒板綋鍓嶉〉闈㈢殑鏁版嵁
+						// 		create_finish: function(data) {
+						// 			_this.onCreateSceneOk(data)
+						// 		},
+						// 	}
+						// })
+						uni.navigateBack({
+							delta: 1, //杩斿洖灞傛暟锛�鍒欎笂涓婇〉
 						})
 						return
 					}
 
 				} catch (ex) {
 					showError(ex)
-				} finally {
-					uni.hideLoading()
-				}
+				} 
 			},
 			clickDelete() {
+				const _this = this
 				showModal(`鍒犻櫎鍦烘櫙[${this.sceneId}]浼氭妸鍦烘櫙瀵瑰簲鐨勫湴鍥句换鍔′俊鎭兘浼氬垹闄わ紝鏄惁纭鍒犻櫎锛焋, "鍒犻櫎鍦烘櫙").then(async (res) => {
 					if (res) {
 						try {
@@ -1262,6 +1278,15 @@
 							await this.loadSceneList()
 							if (this.sceneList.length > 0)
 								this.changeMap(this.sceneList[0])
+							// else {
+							// 	_this.mapOperationType = ""
+							// 	setTimeout(() => {
+							// 		uni.navigateBack({
+							// 			delta: 1, //杩斿洖灞傛暟锛�鍒欎笂涓婇〉
+							// 		})
+							// 	}, 500)
+
+							// }
 						} catch (ex) {
 							showError(ex)
 						} finally {
@@ -1431,14 +1456,23 @@
 						showToast("鍦烘櫙鍚嶇О涓嶈兘涓虹┖锛�)
 						return
 					}
-					console.log(name, this.sceneId)
+					// console.log(name, this.sceneId)
 					if (name == this.sceneId) {
 						showToast("鍦烘櫙鍚嶇О鏈彉鍖栵紒")
 						return
 					}
+					const curIndex = this.sceneList.findIndex((param) => param == this.sceneId)
 					this.mapOperationType = ""
 					await updateScene(this.vehicleIp, this.sceneId, name)
+
+
 					this.sceneId = name
+					if (curIndex > -1) {
+						this.sceneList[curIndex] = name
+					}
+					this.setData({
+						navigationBarTitle: name
+					})
 					showToast("鍦烘櫙閲嶅懡鍚嶆垚鍔燂紒")
 				} catch (ex) {
 					this.mapOperationType = "edit_scene_name"
@@ -1471,7 +1505,27 @@
 				this.mapOperationType = ""
 			},
 			clickStationDelete() {
-				this.stationDelete(this.stationEdit)
+				const _this = this
+				uni.navigateTo({
+					url: `/pages/station/delete?ip=${ this.vehicleIp}`,
+					events: {
+						// 涓烘寚瀹氫簨浠舵坊鍔犱竴涓洃鍚櫒锛岃幏鍙栬鎵撳紑椤甸潰浼犻�鍒板綋鍓嶉〉闈㈢殑鏁版嵁
+						delete_finish: function(data) {
+							console.log(data)
+							const list = data.map((a) => {
+								return {
+									stationID: a
+								}
+
+							})
+							_this.ctxDataStr = JSON.stringify([{
+								method: "remove_station",
+								param: list
+							}])
+						}
+					}
+				})
+				//this.stationDelete(this.stationEdit)
 				// const _this = this
 				// showModal("璇ョ珯鐐瑰凡缁戝畾浠诲姟锛屽垹闄ょ珯鐐瑰悗缁戝畾鐨勪换鍔′細鍋滄骞跺垹闄�, "鏄惁纭鍒犻櫎锛�).then((res) => {
 				// 	if (res) {
@@ -1770,10 +1824,8 @@
 				return resAngle
 
 			},
-
 			touchAngleChange(e) {
 				let angle = 0
-
 				const ptX = e.touches[0].clientX
 
 				const offX = ptX // ptX - e.target.offsetLeft
@@ -1911,12 +1963,7 @@
 								show: this.showTeachingPathFlag
 							}
 						}
-						// , {
-						// 	method: "show_teaching_path",
-						// 	param: {
-						// 		show: this.showTeachingPathFlag
-						// 	}
-						// }
+
 					]
 					if (finish) {
 						list.push({
@@ -1979,40 +2026,110 @@
 							method: "update_agv_state",
 							param: agv
 						}]
+						// if (this.mapOperationType === "public_teaching" && this.mapOperationStatus ===
+						// 	"teaching") {
+						const list = await this.loadCurrentTeachingData()
 
-						if (this.mapOperationType === "public_teaching" && this.mapOperationStatus ===
-							"teaching") {
-							const list = await this.loadCurrentTeachingData()
-							listCtrData.push({
-								method: "update_current_teaching",
-								param: {
-									main_road: this.teachingModeCur.main_road,
-									pos_list: list
+						listCtrData.push({
+							method: "update_current_teaching",
+							param: {
+								main_road: 1, //this.teachingModeCur.main_road,
+								pos_list: list
+							}
+						})
+						if (list.length > 0) {
+							this.curTeachingPathFlag = true
+						} else {
+							if (this.curTeachingPathFlag) {
+								this.curTeachingPathFlag = false
+								const teaching = await this.loadTeachingMode()
+
+								const publicOld = this.teachingMode.Public || []
+								const stationOld = this.teachingMode.Stations || []
+								const publicNew = teaching.Public || []
+								const stationNew = teaching.Stations || []
+								const publicAdd = []
+								const stationAdd = []
+								for (let i in publicNew) {
+									const item = publicNew[i]
+									const curIndex = publicOld.findIndex((a) => a.name == item.name)
+									console.log(curIndex, item)
+									if (curIndex < 0) {
+										publicAdd.push(item)
+										publicOld.push(item)
+									}
+
 								}
-							})
+								for (let i in stationNew) {
+									const item = stationNew[i]
+									const curIndex = stationOld.findIndex((a) => a.name == item.name)
+									if (curIndex < 0) {
+										stationAdd.push(item)
+										stationOld.push(item)
+									}
+
+								}
+								this.teachingMode.Public = publicOld
+								this.teachingMode.Stations = stationOld
+
+								if (publicAdd.length > 0) {
+									listCtrData.push({
+										method: "public_teaching_path",
+										param: {
+											list: publicAdd,
+											show: this.showTeachingPathFlag
+										}
+									})
+								}
+								if (stationAdd.length > 0) {
+									listCtrData.push({
+										method: "station_teaching_path",
+										param: {
+											list: stationAdd,
+											show: this.showTeachingPathFlag
+										}
+									})
+								}
+							}
 						}
+
+						// }
+
 						if (this.positioningAgv) {
-							listCtrData.push({
-								method: "move_pt_visible",
-								param: {
-									x: agv.x,
-									y: agv.y,
-									width: 80,
-									height: 80,
-								}
-							})
+							if (this.curTeachingPathFlag) {
+								listCtrData.push({
+									method: "move_pt_center",
+									param: {
+										x: agv.x,
+										y: agv.y,
+									}
+								})
 
+							} else {
+								listCtrData.push({
+									method: "move_pt_visible",
+									param: {
+										x: agv.x,
+										y: agv.y,
+										width: 80,
+										height: 80,
+									}
+								})
+
+							}
 						}
+
 						this.ctxDataStr = JSON.stringify(listCtrData)
 					}
-					setTimeout(this.refreshAgvPosition, 1000);
+					//setTimeout(this.refreshAgvPosition, 1000);
 				} catch (ex) {
-					showError(ex).then((res) => {
-						setTimeout(this.refreshAgvPosition, 1000);
-					})
+					// showError(ex).then((res) => {
+
+					// })
+					showToast(ex)
 				} finally {
 					// 鏃犺鎴愬姛澶辫触锛� 绉掑悗鍐嶆潵
-
+					setTimeout(this.refreshAgvPosition, 1000);
 				}
 
 			},
@@ -2044,7 +2161,6 @@
 					uni.hideLoading()
 				}
 			},
-
 			async clickTeachingStart() {
 
 				const _this = this
@@ -2082,6 +2198,16 @@
 								this.loading = true
 								await delTeachingMode(_this.vehicleIp, [_this.teachingModeCur])
 								_this.mapOperationStatus = ""
+								const listDataStr = []
+								listDataStr.push({
+									method: "remove_teaching_path",
+									param: {
+										name: _this.teachingModeCur.name,
+										mode: "Public"
+									},
+								})
+								_this.ctxDataStr = JSON.stringify(listDataStr)
+
 
 							} catch (ex) {
 								showError(ex)
@@ -2090,8 +2216,7 @@
 							}
 						} else {
 
-							_this.mapOperationStatus =
-								"save"
+							_this.mapOperationStatus = "save"
 
 						}
 					})
@@ -2108,7 +2233,7 @@
 			clickTeachingFinish() {
 				this.mapOperationType = ""
 
-				this.reloadTeachingMode(true)
+				//this.reloadTeachingMode(true)
 
 			},
 			async teachingStart(mode) {
@@ -2267,7 +2392,7 @@
 			async removeTeachingMode(item) {
 				try {
 					uni.showLoading({
-						title: "鍒犻櫎鍦烘櫙涓�
+						title: "鍒犻櫎绀烘暀涓�
 					})
 					await delTeachingMode(this.vehicleIp, [item])
 					this.ctxDataStr =
@@ -2286,7 +2411,7 @@
 			async removeTeachingModeData(data) {
 				try {
 					uni.showLoading({
-						title: "鍒犻櫎鍦烘櫙鏁版嵁涓�
+						title: "鍒犻櫎绀烘暀鏁版嵁涓�
 					})
 					await delTeachingModeData(this.vehicleIp, data)
 					this.reloadTeachingMode()

--
Gitblit v1.9.1