From 9505e81dd4d394e6fe5e47d740834b79dc776f0a Mon Sep 17 00:00:00 2001 From: xhf <1424913779@qq.com> Date: Wed, 2 Apr 2025 16:13:47 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BD=A6=E8=BE=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.local | 4 +- src/api/map/map.ts | 7 +++ src/views/board/carBoard/index.vue | 12 ++--- src/views/board/device/index.vue | 8 +-- src/views/mapPage/locationList/index.vue | 17 ++++++- .../realTimeMap/components/indexPage.vue | 49 +++++++++++++++++-- 6 files changed, 80 insertions(+), 17 deletions(-) diff --git a/.env.local b/.env.local index c8407918..8eb2bb63 100644 --- a/.env.local +++ b/.env.local @@ -4,9 +4,9 @@ NODE_ENV=development VITE_DEV=true # 请求路径 -# VITE_BASE_URL='http://192.168.0.74:48080' +VITE_BASE_URL='http://192.168.0.74:48080' # VITE_BASE_URL='http://192.168.0.153:48080' -VITE_BASE_URL='http://192.168.0.45:48080' +# VITE_BASE_URL='http://192.168.0.45:48080' # 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务 VITE_UPLOAD_TYPE=server diff --git a/src/api/map/map.ts b/src/api/map/map.ts index 3776bcf2..81a47a1d 100644 --- a/src/api/map/map.ts +++ b/src/api/map/map.ts @@ -161,3 +161,10 @@ export const updateBatchHouseLocation = async (data) => { data }) } + +// 获取楼层区域对应的机器人编号 +export const getRobotByFloorAndArea = async (params) => { + return await request.post({ url: `/system/robot/information/getRobotByFloorAndArea`, params }) +} + + diff --git a/src/views/board/carBoard/index.vue b/src/views/board/carBoard/index.vue index c290ae78..a340e48a 100644 --- a/src/views/board/carBoard/index.vue +++ b/src/views/board/carBoard/index.vue @@ -96,7 +96,7 @@ class="new-top-box-right-input-icon" /> -
新增车辆
+
新增车辆
@@ -131,13 +131,13 @@ diff --git a/src/views/board/device/index.vue b/src/views/board/device/index.vue index a4e24fa6..75bab912 100644 --- a/src/views/board/device/index.vue +++ b/src/views/board/device/index.vue @@ -31,7 +31,7 @@ - 新增设备 + 新增设备 @@ -54,11 +54,11 @@ diff --git a/src/views/mapPage/locationList/index.vue b/src/views/mapPage/locationList/index.vue index b9278b60..d930eb39 100644 --- a/src/views/mapPage/locationList/index.vue +++ b/src/views/mapPage/locationList/index.vue @@ -109,7 +109,8 @@ @@ -170,7 +171,21 @@ const editFormDialogRef = ref() const editItem = (item) => { editFormDialogRef.value.open(item.id) } +const handleLock = (item) => { + ElMessageBox.confirm('是否确认' + (item.locationLock === 0 ? '解锁' : '锁定') + '?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(async () => { + let data = JSON.parse(JSON.stringify(item)) + data.locationLock = item.locationLock === 0 ? 1 : 0 + await BinLocationAPi.updateHouseLocation(data) + message.success('操作成功') + getList() + }).catch(() => {}) + +} const submitSuccess = () => { getList() } diff --git a/src/views/mapPage/realTimeMap/components/indexPage.vue b/src/views/mapPage/realTimeMap/components/indexPage.vue index 901762b3..b30b94a6 100644 --- a/src/views/mapPage/realTimeMap/components/indexPage.vue +++ b/src/views/mapPage/realTimeMap/components/indexPage.vue @@ -715,8 +715,8 @@ const linkWebSocket = (url) => { } // testCarList.value = JSON.parse(JSON.stringify(dataList)) - testCarList.value = mergeCarArrays(testCarList.value, dataList) - // testCarList.value = mergeArraysWithoutDelete(testCarList.value, dataList) + // testCarList.value = mergeCarArrays(testCarList.value, dataList) + testCarList.value = mergeArraysWithoutDelete(testCarList.value, dataList) // if (testCarList.value.length) { // testCarList.value.forEach((item) => { // item.originWidth = width @@ -727,6 +727,15 @@ const linkWebSocket = (url) => { // item.robotNo =item.data.pose2d.robotNo // }) // } + testCarList.value.forEach((item) => { + item.originWidth = imgBgObj.width + item.originHeight = imgBgObj.height + item.origin = imgBgObj.origin + item.realX = convertActualToBrowser(item.data.pose2d.x, item.data.pose2d.y).x + item.realY = convertActualToBrowser(item.data.pose2d.x, item.data.pose2d.y).y + }) + + // console.log(testCarList.value) } //告警信息 if (jsonMsg.type == 'agv_warn') { @@ -766,13 +775,44 @@ const linkWebSocket = (url) => { // console.log('======规划路线======', JSON.parse(data).data) let dataList = JSON.parse(data).data if (lineList.value.length > 0) { - console.log(lineList.value) + // console.log(lineList.value) lineList.value = setIsSelect(lineList.value, dataList) } } }) } } +// 现在车辆的逻辑是这样 websoket map_push类型推送消息 每次推送新车 我就添加到车辆列表中 testCarList 不删除车辆 +// 每几秒轮询调用查看当前楼层区域的在线车辆 如果不存在 则再把testCarList 中的车辆删除 +const robotByFloorAndAreaList = ref([]) // 机器人列表 +const robotListTimer = ref(5) //轮询时间 +const robotListTimerRef = ref(null) //轮询定时器 +const getRobotByFloorAndAreaList = () => { + if(robotListTimerRef.value){ + clearInterval(robotListTimerRef.value) + robotListTimerRef.value = null + } + // robotByFloorAndAreaList.value = [] + robotListTimerRef.value = setInterval(() => { + MapApi.getRobotByFloorAndArea({ floor: imgBgObj.floor, area: imgBgObj.area }).then((res) => { + // console.log(res) + robotByFloorAndAreaList.value = res + if(testCarList.value.length){ + testCarList.value = filterArrayByRobotNo(testCarList.value, robotByFloorAndAreaList.value) + } + }) + }, robotListTimer.value * 1000) +} + +// 删掉不在线的车辆 +const filterArrayByRobotNo = (arr1, arr2) =>{ + return arr1.filter(item => { + const robotNo = item.data.pose2d.robotNo; + return arr2.includes(robotNo); + }); +} + + const mergeCarArrays = (arr1, arr2) => { const result = [] const macAddressSet = new Set() @@ -894,6 +934,7 @@ const getMapDownloadPng = async (mapInfo) => { await getAllNodeList() await getAllMapRoute() await computedRatio() + await getRobotByFloorAndAreaList() } const initWebsocket = () => { let websocketUrl = `${replaceHttpWithWs(import.meta.env.VITE_BASE_URL)}/infra/ws?type=map&floor=${imgBgObj.floor}&area=${imgBgObj.area}` @@ -916,7 +957,7 @@ const computedRatio = () => { imgBgObj.width = imgBgObj.width * radio.value imgBgObj.height = imgBgObj.height * radio.value - console.log(imgBgObj) + // console.log("====",testCarList.value) } }) } From 0ff06e8b596a18749e8080b620bae7985209e892 Mon Sep 17 00:00:00 2001 From: xhf <1424913779@qq.com> Date: Wed, 2 Apr 2025 16:58:11 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../realTimeMap/components/indexPage.vue | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/src/views/mapPage/realTimeMap/components/indexPage.vue b/src/views/mapPage/realTimeMap/components/indexPage.vue index b30b94a6..8da1325f 100644 --- a/src/views/mapPage/realTimeMap/components/indexPage.vue +++ b/src/views/mapPage/realTimeMap/components/indexPage.vue @@ -113,11 +113,11 @@ >
{{ item.robotNo || '' }} @@ -717,22 +717,14 @@ const linkWebSocket = (url) => { // testCarList.value = JSON.parse(JSON.stringify(dataList)) // testCarList.value = mergeCarArrays(testCarList.value, dataList) testCarList.value = mergeArraysWithoutDelete(testCarList.value, dataList) - // if (testCarList.value.length) { - // testCarList.value.forEach((item) => { - // item.originWidth = width - // item.originHeight = height - // item.origin = JSON.parse(imgBgObj.yamlJson).origin - // item.realX = convertActualToBrowser(item.data.pose2d.x, item.data.pose2d.y).x - // item.realY = convertActualToBrowser(item.data.pose2d.x, item.data.pose2d.y).y - // item.robotNo =item.data.pose2d.robotNo - // }) - // } + testCarList.value.forEach((item) => { item.originWidth = imgBgObj.width item.originHeight = imgBgObj.height item.origin = imgBgObj.origin item.realX = convertActualToBrowser(item.data.pose2d.x, item.data.pose2d.y).x item.realY = convertActualToBrowser(item.data.pose2d.x, item.data.pose2d.y).y + item.robotNo =item.data.pose2d.robotNo }) // console.log(testCarList.value) From 69a238366549767df58702270c9f555a888448f5 Mon Sep 17 00:00:00 2001 From: xhf <1424913779@qq.com> Date: Wed, 2 Apr 2025 17:04:41 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BD=A6=E8=BE=86?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/mapPage/realTimeMap/components/indexPage.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/mapPage/realTimeMap/components/indexPage.vue b/src/views/mapPage/realTimeMap/components/indexPage.vue index 8da1325f..0875d36e 100644 --- a/src/views/mapPage/realTimeMap/components/indexPage.vue +++ b/src/views/mapPage/realTimeMap/components/indexPage.vue @@ -383,8 +383,8 @@ const emit = defineEmits(['transmitMapId']) const storeDialogRef = ref(null) // 仓库信息弹窗 const list = ref([]) const testCarList = ref([]) //小车数组 -const carWidth = ref(60) -const carHeight = ref(32) +const carWidth = ref(200) +const carHeight = ref(100) // 定义属性 const props = defineProps({ From c857c2ff8813051a7b6e2674ca9a0317b30e426a Mon Sep 17 00:00:00 2001 From: xhf <1424913779@qq.com> Date: Wed, 2 Apr 2025 17:09:15 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BD=A6=E8=BE=86?= =?UTF-8?q?=E7=BC=96=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/mapPage/realTimeMap/components/indexPage.vue | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/views/mapPage/realTimeMap/components/indexPage.vue b/src/views/mapPage/realTimeMap/components/indexPage.vue index 0875d36e..2a50297b 100644 --- a/src/views/mapPage/realTimeMap/components/indexPage.vue +++ b/src/views/mapPage/realTimeMap/components/indexPage.vue @@ -113,11 +113,12 @@ >
{{ item.robotNo || '' }} From a6052cfe12e878329a2cfb8dab2618de368e7374 Mon Sep 17 00:00:00 2001 From: xhf <1424913779@qq.com> Date: Wed, 2 Apr 2025 17:21:32 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/mapPage/realTimeMap/components/indexPage.vue | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/views/mapPage/realTimeMap/components/indexPage.vue b/src/views/mapPage/realTimeMap/components/indexPage.vue index 2a50297b..fff5a3ab 100644 --- a/src/views/mapPage/realTimeMap/components/indexPage.vue +++ b/src/views/mapPage/realTimeMap/components/indexPage.vue @@ -1093,6 +1093,13 @@ const carDbClick = (item, index) => { defineExpose({ getMapData }) // 提供 open 方法,用于打开弹窗 onMounted(() => {}) +onBeforeUnmount(() => { + // console.log('onBeforeUnmount') + if(robotListTimerRef.value){ + clearInterval(robotListTimerRef.value) + robotListTimerRef.value = null + } +})