From 12b56e80d67f87517d99599b721697f16ebc7f22 Mon Sep 17 00:00:00 2001 From: kerms Date: Sat, 31 May 2025 19:50:44 +0200 Subject: [PATCH] feat(AT-CMD): init --- package-lock.json | 125 ++++++++++++++++++++++++++++++++ package.json | 1 + src/locales/en.ts | 1 + src/locales/fr.ts | 1 + src/locales/zh.ts | 1 + src/router/index.ts | 5 ++ src/views/AtCommand.vue | 14 ++++ src/views/navigation/NavBar.vue | 7 +- 8 files changed, 153 insertions(+), 2 deletions(-) create mode 100644 src/views/AtCommand.vue diff --git a/package-lock.json b/package-lock.json index fe03b36..6b22e3e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "pinia": "^2.1.7", "vue": "^3.4.21", "vue-draggable-plus": "^0.4.1", + "vue-grid-layout-v3": "^3.1.2", "vue-i18n": "^9.10.2", "vue-router": "^4.3.0", "vuetify": "^3.6.5" @@ -274,6 +275,102 @@ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, + "node_modules/@interactjs/actions": { + "version": "1.10.27", + "resolved": "https://registry.npmjs.org/@interactjs/actions/-/actions-1.10.27.tgz", + "integrity": "sha512-FCRg5KwB+stkPcAMx/Cn0fgGP6p4LyMX9S/Upcn/W+hpYme31bPi54PCqmOebzz6myTthN6zFf9jMyLOqtI/gg==", + "optionalDependencies": { + "@interactjs/interact": "1.10.27" + }, + "peerDependencies": { + "@interactjs/core": "1.10.27", + "@interactjs/utils": "1.10.27" + } + }, + "node_modules/@interactjs/auto-scroll": { + "version": "1.10.27", + "resolved": "https://registry.npmjs.org/@interactjs/auto-scroll/-/auto-scroll-1.10.27.tgz", + "integrity": "sha512-zPg5TnVsZv+9Hnt4qnbxLvBMf+rIWHkoJVoSETEbLNaj90C8hIyr0pVwukSUySSgDhCgQ7np0f3pg4INLq9beQ==", + "optionalDependencies": { + "@interactjs/interact": "1.10.27" + }, + "peerDependencies": { + "@interactjs/utils": "1.10.27" + } + }, + "node_modules/@interactjs/auto-start": { + "version": "1.10.27", + "resolved": "https://registry.npmjs.org/@interactjs/auto-start/-/auto-start-1.10.27.tgz", + "integrity": "sha512-ECLBO/nxmaF1knncJKIE5F7la3KKRgEkn0Cu2JTPOYj9xy/LpfYElo3wkRHsodgOqF651nR70GK2/IzPR2lO9A==", + "optionalDependencies": { + "@interactjs/interact": "1.10.27" + }, + "peerDependencies": { + "@interactjs/core": "1.10.27", + "@interactjs/utils": "1.10.27" + } + }, + "node_modules/@interactjs/core": { + "version": "1.10.27", + "resolved": "https://registry.npmjs.org/@interactjs/core/-/core-1.10.27.tgz", + "integrity": "sha512-SliUr/3ZbLAdED8LokzYzWHWMdCB5Cq+UnpXuRy+BIod1j97m4IUFf/D1iIKUBBjBcucgXbz28z96WnenVCB7Q==", + "peerDependencies": { + "@interactjs/utils": "1.10.27" + } + }, + "node_modules/@interactjs/dev-tools": { + "version": "1.10.27", + "resolved": "https://registry.npmjs.org/@interactjs/dev-tools/-/dev-tools-1.10.27.tgz", + "integrity": "sha512-YolmBwRaKH1gWbvyLeV3m5QSwtD38lOZnCBA87PCAlcd9PQAC2gb03fEPeEyD336bE20oLB8f0WZt4Wre+afiw==", + "optionalDependencies": { + "@interactjs/interact": "1.10.27", + "vue": "3" + }, + "peerDependencies": { + "@interactjs/modifiers": "1.10.27", + "@interactjs/utils": "1.10.27" + } + }, + "node_modules/@interactjs/interact": { + "version": "1.10.27", + "resolved": "https://registry.npmjs.org/@interactjs/interact/-/interact-1.10.27.tgz", + "integrity": "sha512-XdH3A2UUzjEFGGJgFuJlhiz99tE8jB8xNh/DmnoMuL6uOQPxNA+sWRnzEVjG0+zY2P3/dbhEpi4Cn3FLPzydwA==", + "dependencies": { + "@interactjs/core": "1.10.27", + "@interactjs/utils": "1.10.27" + } + }, + "node_modules/@interactjs/modifiers": { + "version": "1.10.27", + "resolved": "https://registry.npmjs.org/@interactjs/modifiers/-/modifiers-1.10.27.tgz", + "integrity": "sha512-ei/qfoQ+9/8k6WzNzdNqHI6cWkIV576N4Ap16r5CoqOWwhA6Xzj3OMHf1g0t1O4eSq2HdJsVJn3eLNfw9HsbeQ==", + "dependencies": { + "@interactjs/snappers": "1.10.27" + }, + "optionalDependencies": { + "@interactjs/interact": "1.10.27" + }, + "peerDependencies": { + "@interactjs/core": "1.10.27", + "@interactjs/utils": "1.10.27" + } + }, + "node_modules/@interactjs/snappers": { + "version": "1.10.27", + "resolved": "https://registry.npmjs.org/@interactjs/snappers/-/snappers-1.10.27.tgz", + "integrity": "sha512-HZLZ0XSi6HI08OmTv/HKG6AltQoaKAALLQ+KDW92utj3XSgw7oren0KsWUKPhaPg3Av7R1jFQd08s+uafqIlLw==", + "optionalDependencies": { + "@interactjs/interact": "1.10.27" + }, + "peerDependencies": { + "@interactjs/utils": "1.10.27" + } + }, + "node_modules/@interactjs/utils": { + "version": "1.10.27", + "resolved": "https://registry.npmjs.org/@interactjs/utils/-/utils-1.10.27.tgz", + "integrity": "sha512-+qfLOio2OxQqg1cXSnRaCl+N8MQDQLDS9w+aOGxH8YLAhIMyt7Asxx/46//sT8orgsi16pmlBPtngPHT9s8zKw==" + }, "node_modules/@intlify/core-base": { "version": "9.10.2", "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.10.2.tgz", @@ -1436,6 +1533,11 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/batch-processor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", + "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==" + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -2098,6 +2200,14 @@ } } }, + "node_modules/element-resize-detector": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz", + "integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==", + "dependencies": { + "batch-processor": "1.0.0" + } + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -5114,6 +5224,21 @@ "eslint": ">=6.0.0" } }, + "node_modules/vue-grid-layout-v3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/vue-grid-layout-v3/-/vue-grid-layout-v3-3.1.2.tgz", + "integrity": "sha512-4VB6pel2OklFNnFSUVg4wXwx/fKuKKvnhleLyscwk5ay7aEFk+HghcVKbComg+EgMvjuPzZ7hgIES3FlxuVK6w==", + "dependencies": { + "@interactjs/actions": "^1.10.27", + "@interactjs/auto-scroll": "^1.10.27", + "@interactjs/auto-start": "^1.10.27", + "@interactjs/dev-tools": "^1.10.27", + "@interactjs/interact": "^1.10.27", + "@interactjs/modifiers": "^1.10.27", + "element-resize-detector": "^1.2.4", + "mitt": "^3.0.1" + } + }, "node_modules/vue-i18n": { "version": "9.10.2", "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.10.2.tgz", diff --git a/package.json b/package.json index de3bf70..4564802 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "pinia": "^2.1.7", "vue": "^3.4.21", "vue-draggable-plus": "^0.4.1", + "vue-grid-layout-v3": "^3.1.2", "vue-i18n": "^9.10.2", "vue-router": "^4.3.0", "vuetify": "^3.6.5" diff --git a/src/locales/en.ts b/src/locales/en.ts index fab8bfc..640aeee 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -37,6 +37,7 @@ export default { wifi: "Wi-Fi", about: "About", uart: "Uart", + at: "AT Command", feedback: "Feedback", close: "Close", update: "Update", diff --git a/src/locales/fr.ts b/src/locales/fr.ts index d3d43fb..8daba3d 100644 --- a/src/locales/fr.ts +++ b/src/locales/fr.ts @@ -37,6 +37,7 @@ export default { wifi: "Wi-Fi", about: "À propos", uart: "Uart", + at: "Commande AT", feedback: "Feedback", close: "Fermer", update: "Mise à jour", diff --git a/src/locales/zh.ts b/src/locales/zh.ts index 74d2c1b..ce1e502 100644 --- a/src/locales/zh.ts +++ b/src/locales/zh.ts @@ -37,6 +37,7 @@ export default { wifi: "Wi-Fi", about: "关于", uart: "UART", + at: "AT命令", feedback: "反馈", close: "关闭", update: "更新", diff --git a/src/router/index.ts b/src/router/index.ts index 06b7b01..a08ad0d 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -5,6 +5,7 @@ import About from '@/views/About.vue' import Uart from '@/views/Uart.vue' import Page404 from '@/views/404.vue' import Update from '@/views/Update.vue' +import AtCommand from '@/views/AtCommand.vue' import {translate} from "@/locales"; import {isOTAEnabled} from "@/composables/buildMode"; import {reactive, watch} from "vue"; @@ -66,6 +67,10 @@ const router = createRouter({ path: '/uart:ext(.*)', meta: { titleKey: 'page.uart' }, component: Uart, + }, { + path: '/at:ext(.*)', + meta: { titleKey: 'page.at' }, + component: AtCommand, }, { path: '/feedback:ext(.*)', meta: { titleKey: 'page.feedback' }, diff --git a/src/views/AtCommand.vue b/src/views/AtCommand.vue new file mode 100644 index 0000000..3572375 --- /dev/null +++ b/src/views/AtCommand.vue @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/src/views/navigation/NavBar.vue b/src/views/navigation/NavBar.vue index d8cb1d2..58f6ca4 100644 --- a/src/views/navigation/NavBar.vue +++ b/src/views/navigation/NavBar.vue @@ -194,11 +194,14 @@ const menuItems: ComputedRef = computed(() => ([ const sideBarItems: ComputedRef = computed(() => { const items: Item[] = [ { + name: translate("page.wifi"), + href: "/wifi", + }, { name: translate("page.uart"), href: "/uart", }, { - name: translate("page.wifi"), - href: "/wifi", + name: translate("page.at"), + href: "/at", }, { name: translate("page.about"), href: "/about",