From 9ac5c2052ab488551f812e5ed5bad1e9b8e7817d Mon Sep 17 00:00:00 2001 From: caill <815519168@qq.com> Date: Mon, 19 Jan 2026 16:49:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E9=94=AE=E6=A0=87=E5=AE=9A=E3=80=81?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/getData.js | 18 +- src/config/mork.js | 85 +++++ src/i18n/langs/en.js | 17 +- src/i18n/langs/zh.js | 17 +- src/images/new/RF7.png | Bin 0 -> 5221 bytes src/pages/modules/calibration/index.vue | 412 ++++++++++++++++++++++++ src/pages/modules/home.vue | 30 +- src/pages/shells/index.vue | 10 +- src/router/index.js | 4 + 9 files changed, 577 insertions(+), 16 deletions(-) create mode 100644 src/images/new/RF7.png create mode 100644 src/pages/modules/calibration/index.vue diff --git a/src/config/getData.js b/src/config/getData.js index 4675a3e..cd0c44c 100644 --- a/src/config/getData.js +++ b/src/config/getData.js @@ -54,4 +54,20 @@ export const backIoStatus = (type) => post('vehicle/setForkLegsObstacles?backIoS // 获取当前配置的休息点 export const getReturnStation = () => get('station/getReturnStation', {}) // 配置车辆返回点 -export const updateReturnStation = (id) => post('station/updateReturnStation?station_id=' + id, {}) \ No newline at end of file +export const updateReturnStation = (id) => post('station/updateReturnStation?station_id=' + id, {}) + +// 一键标定内容 +export const getCalibrationConfigInfo = () => get('calibration/getCalibrationConfigInfo', {}) +// 一键标定深度相机 +export const calibrationDepthcamera = (id) => post('calibration/calibrationDepthcamera?location=' + id, {}) +// 一键标定激光接口 +export const calibrationLaser = (id, cmd) => post('calibration/calibrationLaser', { + location: id, + cmd: cmd +}) +// 开始标定顶部相机 +export const startCalibrationCamera = (id) => post('calibration/startCalibrationCamera?location=' + id, {}) +// 结束标定顶部相机接口 +export const endCalibrationCamera = (id, params) => post('calibration/endCalibrationCamera?location=' + id + '¶ms=' + params, {}) +// 根据task_id查询对应的标定结果 +export const getCalibrationByTaskId = (id) => get('calibration/getCalibrationByTaskId?task_id=' + id, {}) \ No newline at end of file diff --git a/src/config/mork.js b/src/config/mork.js index 5929124..365b66c 100644 --- a/src/config/mork.js +++ b/src/config/mork.js @@ -891,4 +891,89 @@ export const apiLogs = () => { } ] return res +} + +export const getCalibrationConfigInfo = () => { + let res = { + message: 'ok', + data: { + depthcamera: [ + { + zh_name: '顶部前', + en_name: 'Top front', + location: '9' + }, + { + zh_name: '右前', + en_name: 'Right front', + location: '9' + } + ], + Laser: [ + { + zh_name: '顶部前', + en_name: 'Top front', + location: '9' + }, + { + zh_name: '右前', + en_name: 'Right front', + location: '9' + } + ], + camera: [ + { + zh_name: '右前', + en_name: 'Right front', + location: '9' + } + ] + } + } + return res +} + +export const calibrationDepthcamera = () => { + let res = { + "message": "操作成功!", + "data": { + "task_id": "20260107173429562" + } + } + return res +} +export const calibrationLaser = () => { + let res = { + "message": "操作成功!", + "data": { + "task_id": "20260107173429562" + } + } + return res +} +export const startCalibrationCamera = () => { + let res = { + "message": "操作成功!", + "data": { + "task_id": "20260107173429562" + } + } + return res +} +export const endCalibrationCamera = () => { + let res = { + "message": "操作成功!", + "data": { + "task_id": "20260107173429562" + } + } + return res +} + +export const getCalibrationByTaskId = () => { + let res = { + "message": "操作成功!", + "data": "1" + } + return res } \ No newline at end of file diff --git a/src/i18n/langs/en.js b/src/i18n/langs/en.js index 20ace28..80faee1 100644 --- a/src/i18n/langs/en.js +++ b/src/i18n/langs/en.js @@ -143,5 +143,20 @@ module.exports = { settings: 'Settings', entertaskchainname: 'Please enter the task chain name', taskchainnotempty: 'The task chain name cannot be empty', - taskchainname: 'Task Chain Name' + taskchainname: 'Task Chain Name', + depthcamera: 'Depth Camera', + horizontalandheightcalibration: 'Horizontal and Height Calibration', + laser: 'Laser', + calibrationorientation: 'Calibration Orientation', + calibrationposition: 'Calibration Position', + topviewcamera: 'Top - view Camera', + startcalibration: 'Start Calibration', + endcalibration: 'End Calibration', + ceilingheight: 'Ceiling Height', + collectingdata: 'Collecting Data', + calibrationtimeoutpleasereoperate: 'Calibration Timeout. Please Re - operate', + calibrationsuccessful: 'Calibration Successful', + calibrationfailed: 'Calibration Failed', + calibrationresultabnormal: 'Calibration Result Abnormal', + calibrationprogramabnormal: 'Calibration Program Abnormal' } diff --git a/src/i18n/langs/zh.js b/src/i18n/langs/zh.js index 8cf0666..11ba88b 100644 --- a/src/i18n/langs/zh.js +++ b/src/i18n/langs/zh.js @@ -143,5 +143,20 @@ module.exports = { settings: '设置', entertaskchainname: '请输入任务链名称', taskchainnotempty: '任务链名称不能为空', - taskchainname: '任务链名称' + taskchainname: '任务链名称', + depthcamera: '深度相机', + horizontalandheightcalibration: '水平和高度标定', + laser: '激光', + calibrationorientation: '标定朝向', + calibrationposition: '标定位置', + topviewcamera: '顶视相机', + startcalibration: '开始标定', + endcalibration: '结束标定', + ceilingheight: '天花板高度', + collectingdata: '采集数据中', + calibrationtimeoutpleasereoperate: '标定超时,请重新操作', + calibrationsuccessful: '标定成功', + calibrationfailed: '标定失败', + calibrationresultabnormal: '标定结果异常', + calibrationprogramabnormal: '标定程序异常' } diff --git a/src/images/new/RF7.png b/src/images/new/RF7.png new file mode 100644 index 0000000000000000000000000000000000000000..fa9f03136633aac5e7a55ad6e698fb0f9e778d68 GIT binary patch literal 5221 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 +
+
+
{{$t('depthcamera')}}
+ + +
{{ e.en_name }} {{$t('depthcamera')}}
+
{{ e.zh_name }}{{$t('depthcamera')}}
+ + {{ $t('horizontalandheightcalibration') }} + +
+
+
+
+
{{ $t('laser') }}
+ + +
{{ e.en_name }} {{ $t('laser') }}
+
{{ e.zh_name }}{{ $t('laser') }}
+ + {{ $t('calibrationorientation') }} + {{ $t('calibrationposition') }} + +
+
+
+
+
{{ $t('topviewcamera') }}
+ + +
{{ e.en_name }} {{ $t('topviewcamera') }}
+
{{ e.zh_name }}{{ $t('topviewcamera') }}
+ + {{ $t('startcalibration') }} + {{$t('endcalibration')}} + +
+ {{ $t('ceilingheight') }} + + m +
+
+
+
+
+
+
+ {{ $t('collectingdata') }} + + . + . + . + . + +
+
+
+
+ + + + + \ No newline at end of file diff --git a/src/pages/modules/home.vue b/src/pages/modules/home.vue index e1c3049..2527a8f 100644 --- a/src/pages/modules/home.vue +++ b/src/pages/modules/home.vue @@ -2,7 +2,7 @@ @@ -22,10 +22,11 @@ export default { ...mapGetters(['userRole']), nav () { return [ - { title: '操作', zh_title: '操作', en_title: 'Operate', router: '/index/device', isVisible: true }, - { title: '建图', zh_title: '建图', en_title: 'Map - building', router: '/index/building', isVisible: this.userRole === 1 }, - { title: '地图', zh_title: '地图', en_title: 'Map', router: '/index/map', isVisible: true }, - { title: '重定位', zh_title: '重定位', en_title: 'Relocate', router: '/index/relocation', isVisible: true } + { title: '操作', zh_title: '操作', en_title: 'Operate', router: '/index/device', icon: 'RF1', isVisible: true }, + { title: '建图', zh_title: '建图', en_title: 'Map - building', router: '/index/building', icon: 'RF2', isVisible: this.userRole === 1 }, + { title: '地图', zh_title: '地图', en_title: 'Map', router: '/index/map', icon: 'RF3', isVisible: true }, + { title: '重定位', zh_title: '重定位', en_title: 'Relocate', router: '/index/relocation', icon: 'RF4', isVisible: true }, + { title: '一键标定', zh_title: '一键标定', en_title: 'One - Click Calibration', router: '/index/calibration', icon: 'RF7', isVisible: true } ] }, visibleNav () { @@ -92,26 +93,37 @@ export default { line-height 1 color #F6F9FE font-family 'YouSheBiaoTiHei' + text-align center background linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(49,190,255,0.9) 0%, rgba(239,252,254,1) 40%) -webkit-background-clip: text -webkit-text-fill-color: transparent .nav_icon + position relative width 35% padding-top 35% border-radius 50% margin-bottom 3% + img + position absolute + width 70% + top 50% + left 50% + transform translate(-50%, -50%) .nav_item_1 .nav_icon - background #217872 center center / 70% auto url(../../images/new/RF1.png) no-repeat + background linear-gradient(90deg, rgba(130, 234, 143, 60%), rgba(0, 185, 81, 80%)) .nav_item_2 .nav_icon - background #80732F center center / 70% auto url(../../images/new/RF2.png) no-repeat + background linear-gradient(90deg, rgba(255, 212, 153, 60%), rgba(255, 144, 25, 80%)) .nav_item_3 .nav_icon - background #00a9ff center center / 70% auto url(../../images/new/RF3.png) no-repeat + background linear-gradient(90deg, rgba(120, 173, 255, 60%), rgba(52, 92, 248, 80%)) .nav_item_4 .nav_icon - background #80372D center center / 70% auto url(../../images/new/RF4.png) no-repeat + background linear-gradient(90deg, rgba(255, 125, 119, 60%), rgba(255, 84, 47, 80%)) +.nav_item_5 + .nav_icon + background linear-gradient(90deg, rgba(206, 149, 255, 60%), rgba(124, 47, 255, 80%)) .enClass .nav_item_i p diff --git a/src/pages/shells/index.vue b/src/pages/shells/index.vue index e010bf9..e323f33 100644 --- a/src/pages/shells/index.vue +++ b/src/pages/shells/index.vue @@ -288,10 +288,11 @@ export default { background linear-gradient(0deg, #E64F29, rgba(230, 79, 41, 0.5)) border-color rgba(230, 79, 41, 0.7) .state-item - _wh(1rem, .3rem) + height .3rem _font(.18rem,.3rem,#fff,,center) font-family 'Adobe Heiti Std' margin-right .08rem + padding 0 .06rem background center / 100% 100% url(../../images/new/state-item_bg.png) no-repeat box-shadow inset 0px 0px 3px 2px rgb(149, 221, 253, 70%) overflow hidden @@ -340,11 +341,12 @@ export default { white-space nowrap background-color rgba(253, 246, 236, .4) .scroll-text - display inline-block - text-align center + display flex + align-items center + justify-content center animation none .icon-warning - font-size .18rem + font-size .24rem color #e6bb3c margin-right .05rem .error-tips-t diff --git a/src/router/index.js b/src/router/index.js index ecc1551..4791be0 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,6 +8,7 @@ const Warning = r => require.ensure([], () => r(require('../pages/modules/warn/i const Building = r => require.ensure([], () => r(require('../pages/modules/build/index.vue')), 'Building') const Map = r => require.ensure([], () => r(require('../pages/modules/map/index.vue')), 'Map') const Relocation = r => require.ensure([], () => r(require('../pages/modules/relocation.vue')), 'Relocation') +const Calibration = r => require.ensure([], () => r(require('../pages/modules/calibration/index.vue')), 'Calibration') const Login = r => require.ensure([], () => r(require('../pages/modules/login/index.vue')), 'login') const IndexHub = r => require.ensure([], () => r(require('../pages/modules/hub/index.vue')), 'IndexHub') const Upload = r => require.ensure([], () => r(require('../pages/modules/hub/upload.vue')), 'Upload') @@ -41,6 +42,9 @@ const router = new VueRouter({ }, { path: 'relocation', component: Relocation + }, { + path: 'calibration', + component: Calibration }] }, {