From 4540dfb3d7a58b25a433bf8c24dd91a78fffe67f Mon Sep 17 00:00:00 2001 From: zhanghao <774378400@qq.com> Date: Tue, 14 Jul 2026 13:49:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AF=AD=E9=9F=B3=E5=AF=B9=E8=AF=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/request.js | 4 +- .../ManualTakeover/VoiceConversation.vue | 966 ++++++++++++++++++ .../components/ManualTakeover/index.vue | 21 + 3 files changed, 989 insertions(+), 2 deletions(-) create mode 100644 src/views/inspection/cockpit/components/ManualTakeover/VoiceConversation.vue diff --git a/src/utils/request.js b/src/utils/request.js index 2b10149..51cab29 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -17,7 +17,7 @@ const service = axios.create({ // axios中请求配置有baseURL选项,表示请求URL公共部分 baseURL: import.meta.env.VITE_APP_BASE_API, // 超时 - timeout: 100000 + timeout: 10000 }) // request拦截器 @@ -117,7 +117,7 @@ service.interceptors.response.use(res => { } else if (message.includes("Request failed with status code")) { message = "系统接口" + message.substr(message.length - 3) + "异常"; } - ElMessage({ message: message, type: 'error', duration: 5 * 1000 }) + ElMessage({ message: message, grouping: true, type: 'error', duration: 5 * 1000 }) return Promise.reject(error) } ) diff --git a/src/views/inspection/cockpit/components/ManualTakeover/VoiceConversation.vue b/src/views/inspection/cockpit/components/ManualTakeover/VoiceConversation.vue new file mode 100644 index 0000000..b597862 --- /dev/null +++ b/src/views/inspection/cockpit/components/ManualTakeover/VoiceConversation.vue @@ -0,0 +1,966 @@ + + + + + diff --git a/src/views/inspection/cockpit/components/ManualTakeover/index.vue b/src/views/inspection/cockpit/components/ManualTakeover/index.vue index 4f611a2..777983e 100644 --- a/src/views/inspection/cockpit/components/ManualTakeover/index.vue +++ b/src/views/inspection/cockpit/components/ManualTakeover/index.vue @@ -102,6 +102,9 @@
语音对话
+
+ +
@@ -114,6 +117,7 @@ import RoboticArm from "./RoboticArm.vue"; import { getRobotList } from '@/api/inspection/robot' import { getJointStateApi, moveJApi, torqueOnApi, speedJApi, stopMotionApi } from '@/api/inspection/cockpit' import { Remove, CirclePlus } from '@element-plus/icons-vue' +import VoiceConversation from "./VoiceConversation.vue"; const robotList = ref([]) @@ -191,6 +195,8 @@ const jointNamsMap = { 'joint_6': 'elfin_joint6', } +const errCount = ref(0) + /** * 获取关节状态 * @param robot @@ -210,9 +216,19 @@ const getJointState = async (robot) => { }) }, 500) } else { + errCount.value += 1 + if (errCount.value > 2) { + clearInterval(animationId.value) + errCount.value = 0 + } console.error('获取关节状态失败:', res.message) } } catch (error) { + errCount.value += 1 + if (errCount.value > 2) { + clearInterval(animationId.value) + errCount.value = 0 + } console.error('获取关节状态失败:', error) } } @@ -440,6 +456,11 @@ onUnmounted(() => { width: 100%; height: 360px; } + + .voice-container { + width: 100%; + height: 400px; + } } }