From 2183cc9c31ac5980f3d44b61c065fabe70f0852c Mon Sep 17 00:00:00 2001 From: blaze <1063796544@qq.com> Date: Sun, 29 Jun 2025 17:44:29 +0800 Subject: [PATCH 01/65] =?UTF-8?q?feat(=E8=AF=AD=E9=9F=B3=E5=AF=B9=E8=AE=B2?= =?UTF-8?q?):=20=E6=B7=BB=E5=8A=A0=E8=AF=AD=E9=9F=B3=E5=AF=B9=E8=AE=B2?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=8F=8A=E7=9B=B8=E5=85=B3=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增语音对讲功能,包含以下主要变更: - 添加语音对讲弹窗组件talk.vue - 新增talkRequest.ts和talk.ts处理对讲API请求 - 添加对讲相关图标资源 - 在App.vue中集成对讲功能 - 添加md5依赖用于密码加密 --- package-lock.json | 50 ++++++++++ package.json | 1 + src/App.vue | 62 +++++------- src/api/talk.ts | 29 ++++++ src/assets/images/icon_gb.png | Bin 0 -> 342 bytes src/assets/images/icon_ht.png | Bin 0 -> 7966 bytes src/components/talk.vue | 173 ++++++++++++++++++++++++++++++++++ src/http/talkRequest.ts | 12 +++ 8 files changed, 291 insertions(+), 36 deletions(-) create mode 100644 src/api/talk.ts create mode 100644 src/assets/images/icon_gb.png create mode 100644 src/assets/images/icon_ht.png create mode 100644 src/components/talk.vue create mode 100644 src/http/talkRequest.ts diff --git a/package-lock.json b/package-lock.json index 1e2d48f..c68a971 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@vueuse/core": "^13.4.0", "axios": "^1.10.0", "dayjs": "^1.11.13", + "md5": "^2.3.0", "pinia": "^3.0.3", "primevue": "^4.3.5", "vue": "^3.5.13", @@ -20,6 +21,7 @@ }, "devDependencies": { "@types/node": "^24.0.3", + "@vitejs/plugin-basic-ssl": "^2.0.0", "@vitejs/plugin-vue": "^5.2.3", "@vue/tsconfig": "^0.7.0", "sass-loader": "^16.0.5", @@ -1395,6 +1397,19 @@ "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0" } }, + "node_modules/@vitejs/plugin-basic-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.0.0.tgz", + "integrity": "sha512-gc9Tjg8bUxBVSTzeWT3Njc0Cl3PakHFKdNfABnZWiUgbxqmHDEn7uECv3fHVylxoYgNzAcmU7ZrILz+BwSo3sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "peerDependencies": { + "vite": "^6.0.0" + } + }, "node_modules/@vitejs/plugin-vue": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", @@ -1790,6 +1805,15 @@ "node": ">= 0.4" } }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -1866,6 +1890,15 @@ "url": "https://github.com/sponsors/mesqueeb" } }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, "node_modules/css-tree": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", @@ -2304,6 +2337,12 @@ "node": ">=8" } }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "license": "MIT" + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2402,6 +2441,17 @@ "node": ">= 0.4" } }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "license": "BSD-3-Clause", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, "node_modules/mdn-data": { "version": "2.12.2", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", diff --git a/package.json b/package.json index 45a5d77..95dbc00 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@vueuse/core": "^13.4.0", "axios": "^1.10.0", "dayjs": "^1.11.13", + "md5": "^2.3.0", "pinia": "^3.0.3", "primevue": "^4.3.5", "vue": "^3.5.13", diff --git a/src/App.vue b/src/App.vue index acdce28..b92f658 100644 --- a/src/App.vue +++ b/src/App.vue @@ -5,9 +5,11 @@ import { onMounted, ref } from "vue"; import { WebSocketClient } from "./utils/websocket"; import { logger } from "./utils/logger/Logger"; import { lockDoorApi, openDoorApi } from "@/api/api"; +import talkVue from "@/components/talk.vue"; // import {useAppStore} from "@/store/__APP__store" // const appStore = useAppStore() const token = ref(""); +const isTalking = ref(false) const ws = new WebSocketClient("ws://127.0.0.1:9090", "instruction"); const startPlay = async () => { const player = new ZLMRTCClient.Endpoint({ @@ -82,15 +84,21 @@ const openDoor = async (port: number) => { const lockDoor = async (type: number, sid: number) => { await lockDoorApi(type, sid, token.value); }; + + +//点击对讲按钮 +const talkHandle = () => { + console.log('开始对讲') + isTalking.value = true; +} -