From 9efd4a80aae58cf36266e774d3c820cc8e115028 Mon Sep 17 00:00:00 2001
From: cuiqian2004 <cuiqian2004@163.com>
Date: 星期四, 25 九月 2025 17:33:45 +0800
Subject: [PATCH] test
---
pages/map/index.vue | 340 ++++++++++++++++++++++++++++++++++---------------------
1 files changed, 209 insertions(+), 131 deletions(-)
diff --git a/pages/map/index.vue b/pages/map/index.vue
index 98e8b78..b76665c 100644
--- a/pages/map/index.vue
+++ b/pages/map/index.vue
@@ -33,7 +33,9 @@
v-model:opSceneType="opSceneType" @create-ok="onCreateSceneOk"></SceneCreateInfo> -->
<view class="map-content" v-show="mapOperationType !='scene_create'">
<view class="content">
- <view class="fabric" :message="ctxDataStr" :change:message="ctx.receiveMsg" id="canvasMap"></view>
+ <view ref="canvasCtx" class="fabric" id="canvasMap" :message="ctxDataStr"
+ :change:message="ctx.receiveMsg">
+ </view>
<view class="loading-overlay" v-if="bgLoading">
<view class="loading-content">
<view class="loading-spinner"></view>
@@ -386,13 +388,16 @@
</view>
</template>
<script src="./js/ctx.js" module="ctx" lang="renderjs"></script>
-
-
<script>
+ import {
+ ref
+ } from "vue";
import {
showToast,
showModal,
session,
+ showError,
+ showInfo
} from "@/comm/utils.js"
// import OIFabric from "@/components/oi-fabric/index.vue"
import {
@@ -438,6 +443,7 @@
list: []
},
sceneList: [],
+
ctxDataStr: "[]",
mapOperationType: "",
mapOperationStatus: "",
@@ -480,6 +486,9 @@
img_x: 1,
img_y: 1
},
+ positioningAgv: false,
+ isPageVisible: true,
+ destroyFlag: false,
}
},
computed: {
@@ -536,10 +545,29 @@
},
onHide() {
this.isPageVisible = false
+
},
- onUnload() {
+ async onUnload() {
+
this.isPageVisible = false
+
+ console.log("onUnload")
+
+
},
+ onBackPress() {
+ this.isPageVisible = false
+ if (this.destroyFlag)
+ return false
+ else {
+ this.ctxDataStr = JSON.stringify([{
+ method: "destroy",
+ }])
+ return true
+ }
+
+ },
+
methods: {
setData(obj) {
let that = this;
@@ -575,11 +603,15 @@
this.setData({
unlinked: true
})
- this.showError(ex)
+ showError(ex)
}
},
clickShowMenu() {
+ // const list = [...this.sceneList]
+ // for(let i =0; i < 20;i++){
+ // list.push("test" + i)
+ // }
this.menuPopup = {
type: "scene",
list: this.sceneList,
@@ -719,11 +751,12 @@
showModal("宸茶褰曠殑璺緞灏嗕細琚垹闄ゃ�", "鏄惁瑕侀�鍑虹ず鏁欙紵").then(async (res) => {
if (res) {
- if (mapOperationStatus == 'end' || mapOperationStatus == 'save') {
+ if (this.mapOperationStatus == 'end' || this.mapOperationStatus ==
+ 'save') {
try {
- await delTeachingMode(this.vehicleIp, [_this.teachingModeCur])
+ await delTeachingMode(this.vehicleIp, [this.teachingModeCur])
} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
}
@@ -782,7 +815,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}`,
events: {
// 涓烘寚瀹氫簨浠舵坊鍔犱竴涓洃鍚櫒锛岃幏鍙栬鎵撳紑椤甸潰浼犻�鍒板綋鍓嶉〉闈㈢殑鏁版嵁
create_finish: function(data) {
@@ -806,7 +839,7 @@
const info = await getAgvState(this.vehicleIp)
return info
} catch (ex) {
- this.showError(ex)
+ showError(ex)
return {}
}
},
@@ -815,7 +848,7 @@
const paths = await getCurrentTeachingData(this.vehicleIp) || []
return paths
} catch (ex) {
- this.showError(ex)
+ showError(ex)
return []
}
},
@@ -825,7 +858,7 @@
const info = await stations(this.vehicleIp)
return info.station_list || []
} catch (ex) {
- this.showError(ex)
+ showError(ex)
return []
}
},
@@ -834,7 +867,7 @@
const info = await getMapUrl(this.vehicleIp, id)
return info
} catch (ex) {
- this.showError(ex)
+ showError(ex)
return {}
}
},
@@ -864,20 +897,21 @@
try {
this.setData({
bgProgressPercent: 0,
+ bgLoading: true
})
const infoAgv = await this.loadAgvState()
const stationLst = await this.loadStations()
const infoMap = await this.loadMapInfo(id)
this.curMapInfo = {
- proportion: infoMap.proportion || 1,
- img_proportion: infoMap.img_proportion || 1,
- max_x: infoMap.max_x || 1,
- max_y: infoMap.max_y || 1,
- min_x: infoMap.min_x || 0,
- min_y: infoMap.min_y || 0,
- img_x: infoMap.img_x || 1,
- img_y: infoMap.img_y || 1
+ proportion: parseInt(infoMap.proportion) || 1,
+ img_proportion: parseInt(infoMap.img_proportion) || 1,
+ max_x: parseInt(infoMap.max_x) || 1,
+ max_y: parseInt(infoMap.max_y) || 1,
+ min_x: parseInt(infoMap.min_x) || 0,
+ min_y: parseInt(infoMap.min_y) || 0,
+ img_x: parseInt(infoMap.img_x) || 1,
+ img_y: parseInt(infoMap.img_y) || 1
}
// getApp().globalData.curScene = infoMap
this.setData({
@@ -905,35 +939,49 @@
},
{
method: "public_teaching_path",
- param: this.teachingMode.Public || []
+ param: {
+ list: this.teachingMode.Public || [],
+ show: this.showTeachingPathFlag
+ }
},
{
method: "station_teaching_path",
- param: this.teachingMode.Stations || []
+ param: {
+ list: this.teachingMode.Stations || [],
+ show: this.showTeachingPathFlag
+ }
},
{
- method: "move_canvas",
+ method: "move_pt_center",
param: {
x: infoAgv.x,
y: infoAgv.y
}
}
])
+ this.positioningAgv = true
this.mapShowAgv = true
} catch (ex) {
this.setData({
bgProgressPercent: 0,
bgLoading: false
})
- this.showError(ex)
+ showError(ex)
}
},
receiveRenderData(param) {
console.log('鎺ユ敹鍒拌鍥惧眰鐨勬暟鎹細', param);
- if (param.method == "set_backgroud_progress") {
+ if (param.method === "destroy_complete") {
+ if (param.param) {
+ this.destroyFlag = true
+ uni.navigateBack({
+ delta: 1
+ })
+ }
+ } else if (param.method == "set_backgroud_progress") {
if (param.type == "start") {
this.setData({
bgProgressPercent: 50,
@@ -1086,7 +1134,14 @@
}
this.$refs.refPopupOperateTeaching.open("bottom")
+ } else if (param.method == "cancel_positioning_agv") {
+ 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() {
@@ -1116,6 +1171,7 @@
this.mapOperationType = "edit_map"
},
clickExtendMap() {
+ const _this = this
uni.navigateTo({
url: `/pages/map/scene?ip=${this.vehicleIp}&opType=extend&sceneId=${this.sceneId}`,
events: {
@@ -1138,11 +1194,9 @@
mode: "Public",
main_road: 1,
}
+ this.positioningAgv = true
this.mapOperationType = "public_teaching"
this.ctxDataStr = JSON.stringify([{
- method: "set_selectable",
- param: false,
- }, {
method: "public_teaching",
}])
@@ -1159,6 +1213,7 @@
},
async loadSceneList() {
try {
+
uni.showLoading({
title: "鍔犺浇鍦烘櫙涓�
})
@@ -1190,7 +1245,7 @@
}
} catch (ex) {
- this.showError(ex)
+ showError(ex)
} finally {
uni.hideLoading()
}
@@ -1208,7 +1263,7 @@
if (this.sceneList.length > 0)
this.changeMap(this.sceneList[0])
} catch (ex) {
- this.showError(ex)
+ showError(ex)
} finally {
uni.hideLoading()
}
@@ -1263,7 +1318,7 @@
param: [this.regionEdit]
},
{
- method: "move_canvas",
+ method: "move_pt_center",
param: {
x: agv.x,
y: agv.y
@@ -1272,7 +1327,7 @@
])
}
} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
},
async clickPlanProhibitionRegion() {
@@ -1309,7 +1364,7 @@
param: [this.regionEdit]
},
{
- method: "move_canvas",
+ method: "move_pt_center",
param: {
x: agv.x,
y: agv.y
@@ -1318,7 +1373,7 @@
])
}
} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
},
@@ -1350,7 +1405,7 @@
param: [this.wallEdit]
},
{
- method: "move_canvas",
+ method: "move_pt_center",
param: {
x: agv.x,
y: agv.y
@@ -1358,7 +1413,7 @@
}
])
} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
},
@@ -1387,7 +1442,7 @@
showToast("鍦烘櫙閲嶅懡鍚嶆垚鍔燂紒")
} catch (ex) {
this.mapOperationType = "edit_scene_name"
- this.showError(ex)
+ showError(ex)
} finally {
uni.hideLoading()
this.loading = false
@@ -1416,12 +1471,13 @@
this.mapOperationType = ""
},
clickStationDelete() {
- const _this = this
- showModal("璇ョ珯鐐瑰凡缁戝畾浠诲姟锛屽垹闄ょ珯鐐瑰悗缁戝畾鐨勪换鍔′細鍋滄骞跺垹闄�, "鏄惁纭鍒犻櫎锛�).then((res) => {
- if (res) {
- this.stationDelete(this.stationEdit)
- }
- })
+ this.stationDelete(this.stationEdit)
+ // const _this = this
+ // showModal("璇ョ珯鐐瑰凡缁戝畾浠诲姟锛屽垹闄ょ珯鐐瑰悗缁戝畾鐨勪换鍔′細鍋滄骞跺垹闄�, "鏄惁纭鍒犻櫎锛�).then((res) => {
+ // if (res) {
+
+ // }
+ // })
},
async stationAdd(item) {
try {
@@ -1440,7 +1496,7 @@
} catch (ex) {
- this.showError(ex)
+ showError(ex)
} finally {
uni.hideLoading()
}
@@ -1463,7 +1519,7 @@
}
} catch (ex) {
- this.showError(ex)
+ showError(ex)
} finally {
uni.hideLoading()
}
@@ -1477,6 +1533,7 @@
this.stationAdd(this.stationEdit)
this.mapOperationType = "public_teaching"
this.mapOperationStatus = "teaching"
+ this.positioningAgv = true
return
} else if (this.mapOperationType == "edit_station") {
this.stationUpdate(this.stationEdit)
@@ -1487,7 +1544,7 @@
}])
this.mapOperationType = ''
} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
},
async stationDelete(item) {
@@ -1514,7 +1571,7 @@
}])
} catch (ex) {
- this.showError(ex)
+ showError(ex)
} finally {
uni.hideLoading()
}
@@ -1559,14 +1616,14 @@
},
async clickStationNameOK() {
try {
- this.loading = true
+
const name = this.stationEdit.name.trim()
if (!name) {
showToast("绔欑偣鍚嶇О杩樻湭杈撳叆")
return
}
- if (this.mapOperationType == 'add_station' || this
- .mapOperationType == "teaching_add_station") {
+ this.loading = true
+ if (this.mapOperationType == 'add_station' || this.mapOperationType == "teaching_add_station") {
const agv = await this.loadAgvState()
this.stationEdit = {
stationID: this.getMaxStationNo + 1,
@@ -1589,7 +1646,7 @@
method: "edit_station_pos",
param: this.stationEdit
}, {
- method: "move_canvas",
+ method: "move_pt_center",
param: {
x: agv.x,
y: agv.y
@@ -1613,7 +1670,7 @@
}
} catch (ex) {
- this.showError(ex)
+ showError(ex)
} finally {
this.loading = false
}
@@ -1639,7 +1696,7 @@
method: "update_station",
param: [this.stationEdit]
}, {
- method: "move_canvas",
+ method: "move_pt_center",
param: {
x: this.stationEdit.x,
y: this.stationEdit.y
@@ -1654,7 +1711,7 @@
method: "update_station",
param: [this.stationEdit]
}, {
- method: "move_canvas",
+ method: "move_pt_center",
param: {
x: this.stationEdit.x,
y: this.stationEdit.y
@@ -1667,7 +1724,7 @@
method: "update_station",
param: [this.stationEdit]
}, {
- method: "move_canvas",
+ method: "move_pt_center",
param: {
x: this.stationEdit.x,
y: this.stationEdit.y
@@ -1680,7 +1737,7 @@
method: "update_station",
param: [this.stationEdit]
}, {
- method: "move_canvas",
+ method: "move_pt_center",
param: {
x: this.stationEdit.x,
y: this.stationEdit.y
@@ -1766,19 +1823,20 @@
async clickVehiclePosition() {
try {
+ this.positioningAgv = true
const infoAgv = await this.loadAgvState()
this.ctxDataStr = JSON.stringify([{
method: "update_agv_state",
param: infoAgv
}, {
- method: "move_canvas",
+ method: "move_pt_center",
param: {
x: infoAgv.x,
y: infoAgv.y
}
}])
} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
},
async clickPositionStation() {
@@ -1801,7 +1859,7 @@
param: [this.stationEdit]
},
{
- method: "move_canvas",
+ method: "move_pt_center",
param: {
x: infoAgv.x,
y: infoAgv.y
@@ -1811,7 +1869,7 @@
])
} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
},
async loadTeachingMode() {
@@ -1825,33 +1883,50 @@
}
} catch (ex) {
- this.showError(ex)
+ showError(ex)
return {
Public: [],
Stations: []
}
}
},
- async reloadTeachingMode() {
+ async reloadTeachingMode(finish) {
try {
this.teachingMode = await this.loadTeachingMode()
- this.ctxDataStr = JSON.stringify([{
+
+ const list = [{
+ method: "clear_teaching_path",
+ },
+ {
method: "public_teaching_path",
- param: this.teachingMode.Public || []
+ param: {
+ list: this.teachingMode.Public || [],
+ show: this.showTeachingPathFlag
+ }
},
{
method: "station_teaching_path",
- param: this.teachingMode.Stations || []
- }, {
- method: "show_teaching_path",
param: {
+ list: this.teachingMode.Stations || [],
show: this.showTeachingPathFlag
}
}
- ])
+ // , {
+ // method: "show_teaching_path",
+ // param: {
+ // show: this.showTeachingPathFlag
+ // }
+ // }
+ ]
+ if (finish) {
+ list.push({
+ method: "teaching_finish",
+ })
+ }
+ this.ctxDataStr = JSON.stringify(list)
} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
},
@@ -1893,14 +1968,13 @@
}
])
} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
},
async refreshAgvPosition() {
try {
if (this.isPageVisible && this.mapShowAgv) {
const agv = await this.loadAgvState()
-
const listCtrData = [{
method: "update_agv_state",
param: agv
@@ -1917,13 +1991,28 @@
}
})
}
+ if (this.positioningAgv) {
+ 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);
} catch (ex) {
- this.showError(ex)
+ showError(ex).then((res) => {
+ setTimeout(this.refreshAgvPosition, 1000);
+ })
} finally {
// 鏃犺鎴愬姛澶辫触锛� 绉掑悗鍐嶆潵
- setTimeout(this.refreshAgvPosition, 1000);
+
}
},
@@ -1946,12 +2035,11 @@
uni.showLoading({
title: "绀烘暀缁撴潫"
})
- await teachingModeFlag(this.vehicleIp,
- teachingMode)
+ await teachingModeFlag(this.vehicleIp, teachingMode)
this.mapOperationStatus = "end"
} catch (ex) {
- this.showError(ex)
+ showError(ex)
} finally {
uni.hideLoading()
}
@@ -1969,7 +2057,7 @@
await _this.teachingStart("Public")
} catch (ex) {
- this.showError(ex)
+ showError(ex)
} finally {
this.loading = false
uni.hideLoading()
@@ -1996,7 +2084,7 @@
_this.mapOperationStatus = ""
} catch (ex) {
- this.showError(ex)
+ showError(ex)
} finally {
this.loading = false
}
@@ -2013,16 +2101,14 @@
this.mapOperationStatus = "save"
try {} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
},
clickTeachingFinish() {
this.mapOperationType = ""
- this.ctxDataStr = JSON.stringify([{
- method: "teaching_finish",
- }])
- this.reloadTeachingMode()
+
+ this.reloadTeachingMode(true)
},
async teachingStart(mode) {
@@ -2071,7 +2157,7 @@
}
} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
},
@@ -2094,41 +2180,27 @@
.teachingModeCur
)
} catch (ex) {
- this.showError(ex)
+ showError(ex)
} finally {
this.loading = false
}
},
- async onTeachingModeMainRoad(
- val) {
+ async onTeachingModeMainRoad(val) {
try {
- if (this
- .mapOperationStatus
- ) {
+ if (this.mapOperationStatus) {
- if (this
- .teachingModeCur
- .main_road ==
- val) {
+ if (this.teachingModeCur.main_road == val) {
return
}
- this.teachingModeCur
- .main_road =
- val
- this.teachingModeCur
- .teaching_flag =
- 1
- this.teachingModeCur
- .mode =
- "Public"
- const res =
- await teachingModeFlag(
- this
- .vehicleIp,
- this
- .teachingModeCur
- )
+ this.teachingModeCur.teaching_flag = 0
+ const oldName = this.teachingModeCur.name
+ await teachingModeFlag(this.vehicleIp, this.teachingModeCur)
+ this.teachingModeCur.main_road = val
+ this.teachingModeCur.teaching_flag = 1
+ this.teachingModeCur.mode = "Public"
+ this.teachingModeCur.name = ""
+ const res = await teachingModeFlag(this.vehicleIp, this.teachingModeCur)
if (val == 0)
showToast(
"宸插皢璇ヨ矾娈佃矾寰勪繚瀛樹负涓昏矾绀烘暀璺嚎"
@@ -2138,10 +2210,27 @@
"宸插皢璇ヨ矾娈佃矾寰勪繚瀛樹负鏀矾绀烘暀璺嚎"
)
if (res?.name)
- this
- .teachingModeCur
- .name = res
- .name
+ this.teachingModeCur.name = res.name
+
+ const {
+ data
+ } = await getTeachingMode(this.vehicleIp)
+
+ const publicList = data.Public || []
+ const curIndex = publicList.findIndex((a) => a.name == oldName)
+
+ if (curIndex > -1) {
+ this.ctxDataStr = JSON.stringify([{
+ method: "public_teaching_path",
+ param: {
+ list: [publicList[curIndex]],
+ show: true
+ }
+ }])
+
+ }
+
+
} else {
this.teachingModeCur
.main_road =
@@ -2149,7 +2238,7 @@
}
} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
},
clickTeachingDelete() {
@@ -2188,7 +2277,7 @@
param: item,
}])
} catch (ex) {
- this.showError(
+ showError(
ex)
} finally {
uni.hideLoading()
@@ -2202,24 +2291,11 @@
await delTeachingModeData(this.vehicleIp, data)
this.reloadTeachingMode()
} catch (ex) {
- this.showError(
- ex)
+ showError(ex)
} finally {
uni.hideLoading()
}
},
-
- showError(ex) {
- let exStr = JSON.stringify(ex)
- if (exStr == "{}")
- exStr = ex
- let tip = typeof ex.msg == "string" ? ex.msg : typeof ex.errMsg == "string" ? ex.errMsg : exStr
- showModal(tip,
- "閿欒",
- false,
- "纭畾")
- },
-
}
}
@@ -2687,6 +2763,8 @@
margin-top: 140rpx;
margin-left: 225rpx;
width: 300rpx;
+ max-height: 50vh;
+ overflow: auto;
align-items: center;
justify-content: center;
flex-direction: column;
--
Gitblit v1.9.1