add vConsole debug

This commit is contained in:
Timi
2026-09-22 15:41:28 +08:00
parent 5465fb7b27
commit e35a76437b
4 changed files with 86 additions and 1 deletions
+1
View File
@@ -33,6 +33,7 @@
"timi-web": "link:E:/WebProject/timi-web",
"timi-web-api": "link:E:/WebProject/timi-web-api",
"ts-node": "^10.9.2",
"vconsole": "^3.15.1",
"vue": "^3.5.16",
"vue-draggable-next": "^2.3.0",
"vue-echarts": "^8.0.1",
+29
View File
@@ -44,6 +44,9 @@ importers:
ts-node:
specifier: ^10.9.2
version: 10.9.2(@types/node@24.13.3)(typescript@5.8.3)
vconsole:
specifier: ^3.15.1
version: 3.15.1
vue:
specifier: ^3.5.16
version: 3.5.40(typescript@5.8.3)
@@ -904,6 +907,13 @@ packages:
resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==}
engines: {node: '>=18'}
copy-text-to-clipboard@3.2.2:
resolution: {integrity: sha512-T6SqyLd1iLuqPA90J5N4cTalrtovCySh58iiZDGJ6FGznbclKh4UI+FGacQSgFzwKG77W7XT5gwbVEbd9cIH1A==}
engines: {node: '>=12'}
core-js@3.50.0:
resolution: {integrity: sha512-BRWgOLKkFeCgRudR6zrs8p9XJZcE14grzKMMssoYrk6krtuEZ7MTKPIY5RzOnqsEKIR9kst7wNzphttraT+Yqw==}
cors@2.8.6:
resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==}
engines: {node: '>= 0.10'}
@@ -1439,6 +1449,9 @@ packages:
muggle-string@0.4.1:
resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==}
mutation-observer@1.0.3:
resolution: {integrity: sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==}
nanoid@3.3.16:
resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -1871,6 +1884,9 @@ packages:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'}
vconsole@3.15.1:
resolution: {integrity: sha512-KH8XLdrq9T5YHJO/ixrjivHfmF2PC2CdVoK6RWZB4yftMykYIaXY1mxZYAic70vADM54kpMQF+dYmvl5NRNy1g==}
vite@6.4.3:
resolution: {integrity: sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
@@ -2763,6 +2779,10 @@ snapshots:
dependencies:
is-what: 5.5.0
copy-text-to-clipboard@3.2.2: {}
core-js@3.50.0: {}
cors@2.8.6:
dependencies:
object-assign: 4.1.1
@@ -3333,6 +3353,8 @@ snapshots:
muggle-string@0.4.1: {}
mutation-observer@1.0.3: {}
nanoid@3.3.16: {}
natural-compare@1.4.0: {}
@@ -3818,6 +3840,13 @@ snapshots:
vary@1.1.2: {}
vconsole@3.15.1:
dependencies:
'@babel/runtime': 7.29.7
copy-text-to-clipboard: 3.2.2
core-js: 3.50.0
mutation-observer: 1.0.3
vite@6.4.3(@types/node@24.13.3)(less@4.8.0)(terser@5.49.0):
dependencies:
esbuild: 0.25.12
+26 -1
View File
@@ -1,7 +1,7 @@
<template>
<div class="about-page">
<section class="brand" v-entrance-transition>
<logo />
<logo @click="handleLogoClick" />
<h1 v-text="appName" />
<p v-text="appDescription" />
</section>
@@ -37,6 +37,7 @@ import { SettingAPI } from "timi-web-api";
import Logo from "@/pages/user/component/Logo.vue";
import { getErrorMessage } from "@/utils/error";
import { Message } from "@/utils/message";
import { toggleVConsole } from "@/utils/vConsole";
type AgreementItem = {
icon: string;
@@ -55,6 +56,30 @@ const router = useRouter();
const agreementItemList = ref<AgreementItem[]>([]);
const isLoading = ref(false);
let debugClickCount = 0;
let debugClickTimer: number | undefined;
async function handleLogoClick(): Promise<void> {
debugClickCount++;
if (debugClickTimer !== undefined) {
window.clearTimeout(debugClickTimer);
}
debugClickTimer = window.setTimeout(() => {
debugClickCount = 0;
debugClickTimer = undefined;
}, 1_500);
if (debugClickCount < 5) {
return;
}
debugClickCount = 0;
window.clearTimeout(debugClickTimer);
debugClickTimer = undefined;
await toggleVConsole();
}
async function openAgreement(item: AgreementItem): Promise<void> {
await router.push({
name: "Agreement",
+30
View File
@@ -0,0 +1,30 @@
import type VConsole from "vconsole";
let vConsoleInstance: VConsole | undefined;
let isVConsoleLoading = false;
/**
* 切换移动端调试控制台。
*/
export async function toggleVConsole(): Promise<void> {
if (vConsoleInstance) {
vConsoleInstance.destroy();
vConsoleInstance = undefined;
console.warn("[调试] vConsole 已关闭");
return;
}
if (isVConsoleLoading) {
return;
}
isVConsoleLoading = true;
try {
const { default: VConsole } = await import("vconsole");
vConsoleInstance = new VConsole();
console.warn("[调试] vConsole 已启用");
} catch (error) {
console.error("[调试] vConsole 启用失败", error);
} finally {
isVConsoleLoading = false;
}
}