diff --git a/package.json b/package.json index db47c8a..5708686 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@microsoft/clarity": "^1.0.2", "@sentry/vue": "^10.36.0", "@vueuse/core": "^14.1.0", + "@wydev/noise-core": "^0.1.0", "axios": "^1.13.2", "idb": "^8.0.3", "js-base64": "^3.7.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eef1efb..fd87ea4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,9 @@ importers: '@vueuse/core': specifier: ^14.1.0 version: 14.1.0(vue@3.5.25(typescript@5.9.3)) + '@wydev/noise-core': + specifier: ^0.1.0 + version: 0.1.0 axios: specifier: ^1.13.2 version: 1.13.2 @@ -1469,6 +1472,9 @@ packages: peerDependencies: vue: ^3.5.0 + '@wydev/noise-core@0.1.0': + resolution: {integrity: sha512-gHPDPasN8Iy3lHjv/3yhev3rpkMUd/o4iIQQKAKwK2Sewqu76dXMxqCsw9gGEf5ZZBf0YhwClsS7lcDlRo0Qxw==} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -5083,6 +5089,10 @@ snapshots: dependencies: vue: 3.5.25(typescript@5.9.3) + '@wydev/noise-core@0.1.0': + dependencies: + uuid: 13.0.0 + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 diff --git a/src/components/NoiseMonitorCard.vue b/src/components/NoiseMonitorCard.vue new file mode 100644 index 0000000..758a81d --- /dev/null +++ b/src/components/NoiseMonitorCard.vue @@ -0,0 +1,284 @@ + + + + + diff --git a/src/components/NoiseMonitorDetail.vue b/src/components/NoiseMonitorDetail.vue new file mode 100644 index 0000000..9e674b3 --- /dev/null +++ b/src/components/NoiseMonitorDetail.vue @@ -0,0 +1,1392 @@ + + + + + diff --git a/src/components/TimeCard.vue b/src/components/TimeCard.vue index baa6b04..48ecf6e 100644 --- a/src/components/TimeCard.vue +++ b/src/components/TimeCard.vue @@ -12,25 +12,89 @@ class="pa-6 d-flex flex-column" style="height: 100%" > - -
- {{ timeString }}{{ secondsString }} -
+
+ +
+
+ {{ timeString }}{{ secondsString }} +
+ +
- -
- {{ dateString }} {{ weekdayString }} {{ periodOfDay }} + +
+ +
+ {{ noiseDisplayDb }} +
+
+ {{ noiseStatusText }} +
+
+ 点击开启 +
+
+ + + @@ -487,6 +551,13 @@ @@ -885,6 +1368,22 @@ export default { letter-spacing: 1px; } +/* 噪音侧栏 */ +.noise-side { + padding: 8px 12px; + border-radius: 12px; + background: rgba(var(--v-theme-surface-variant), 0.25); + transition: background 0.2s ease; + cursor: pointer; +} +.noise-side:hover { + background: rgba(var(--v-theme-surface-variant), 0.5); +} +.noise-side-db { + line-height: 1; + font-variant-numeric: tabular-nums; +} + /* 全屏样式 */ .fullscreen-time-card { position: relative; diff --git a/src/components/home/HomeActions.vue b/src/components/home/HomeActions.vue index f517616..620d38b 100644 --- a/src/components/home/HomeActions.vue +++ b/src/components/home/HomeActions.vue @@ -7,10 +7,11 @@ color="error" size="large" @click="$emit('upload')" + rounded="xl" > 上传 - + 同步完成 diff --git a/src/utils/settings.js b/src/utils/settings.js index 6b3ae8f..9322da7 100644 --- a/src/utils/settings.js +++ b/src/utils/settings.js @@ -100,6 +100,20 @@ const settingsDefinitions = { icon: "mdi-card-outline", }, + // 噪音监测设置 + "noiseMonitor.enabled": { + type: "boolean", + default: false, + description: "启用环境噪音监测卡片", + icon: "mdi-microphone", + }, + "noiseMonitor.autoStart": { + type: "boolean", + default: false, + description: "打开页面时自动开始监测", + icon: "mdi-play-circle-outline", + }, + // 时间卡片设置 "timeCard.enabled": { type: "boolean",