diff --git a/TUICallKit-Vue3/components/dev-training-entry/index.vue b/TUICallKit-Vue3/components/dev-training-entry/index.vue index dab2b80c..cb3217b7 100644 --- a/TUICallKit-Vue3/components/dev-training-entry/index.vue +++ b/TUICallKit-Vue3/components/dev-training-entry/index.vue @@ -3,7 +3,7 @@ - + diff --git a/TUICallKit-Vue3/pages.json b/TUICallKit-Vue3/pages.json index 885c1cd9..8fe89074 100644 --- a/TUICallKit-Vue3/pages.json +++ b/TUICallKit-Vue3/pages.json @@ -69,22 +69,6 @@ "style": { "navigationBarTitleText": "付款" } - }, - { - "path": "pages/training/index", - "style": { - "navigationBarTitleText": "练一练" - } - }, - { - "path": "pages/training/metronome", - "style": { - "navigationBarTitleText": "节拍器", - "navigationBarBackgroundColor": "#f8fafc", - "navigationBarTextStyle": "black", - "backgroundColor": "#f8fafc", - "disableScroll": true - } } ], "subPackages": [ @@ -121,6 +105,27 @@ } } ] + }, + { + "root": "training", + "pages": [ + { + "path": "pages/index", + "style": { + "navigationBarTitleText": "练一练" + } + }, + { + "path": "pages/metronome", + "style": { + "navigationBarTitleText": "节拍器", + "navigationBarBackgroundColor": "#f8fafc", + "navigationBarTextStyle": "black", + "backgroundColor": "#f8fafc", + "disableScroll": true + } + } + ] } ], "tabBar": { diff --git a/TUICallKit-Vue3/scripts/generate-voice.mjs b/TUICallKit-Vue3/scripts/generate-voice.mjs index e34090c6..ece61c83 100644 --- a/TUICallKit-Vue3/scripts/generate-voice.mjs +++ b/TUICallKit-Vue3/scripts/generate-voice.mjs @@ -16,9 +16,9 @@ * node scripts/generate-voice.mjs --voice 茉莉 * node scripts/generate-voice.mjs --force # 已存在的也重新生成 * - * 输出: - * src/static/training/voice/numbers/{1..30}.mp3 - * src/static/training/voice/prompts/{key}.mp3 + * 输出(分包): + * training/static/voice/numbers/{1..30}.mp3 + * training/static/voice/prompts/{key}.mp3 * * 需要 Node 18+(用内置 fetch) */ @@ -32,7 +32,7 @@ const __filename = fileURLToPath(import.meta.url) const __dirname = dirname(__filename) const ROOT = join(__dirname, '..') -const VOICE_DIR = join(ROOT, 'src/static/training/voice') +const VOICE_DIR = join(ROOT, 'training/static/voice') const NUMBERS_DIR = join(VOICE_DIR, 'numbers') const PROMPTS_DIR = join(VOICE_DIR, 'prompts') @@ -202,9 +202,9 @@ async function main() { } console.log('\n下一步:') - console.log(' 1. 准备 click 音 → src/static/training/audio/click.mp3') - console.log(' 2. 准备 BGM → src/static/training/bgm/{train-light,rest-meditation}.mp3') - console.log(' 3. npm run dev:mp-weixin → 进入 /pages/training/index') + console.log(' 1. 准备 click 音 → training/static/audio/click.mp3') + console.log(' 2. 准备 BGM → training/static/bgm/{train-light,rest-meditation}.mp3') + console.log(' 3. 编译运行 → 进入 /training/pages/index') } main().catch((e) => { diff --git a/TUICallKit-Vue3/hooks/useMetronome.ts b/TUICallKit-Vue3/training/hooks/useMetronome.ts similarity index 99% rename from TUICallKit-Vue3/hooks/useMetronome.ts rename to TUICallKit-Vue3/training/hooks/useMetronome.ts index d68a616f..0f4bc2f2 100644 --- a/TUICallKit-Vue3/hooks/useMetronome.ts +++ b/TUICallKit-Vue3/training/hooks/useMetronome.ts @@ -93,7 +93,7 @@ export function useMetronome(options: MetronomeOptions = {}) { initialBpm = 80, bpmMin = 40, bpmMax = 240, - clickSrc = '/static/training/audio/click.mp3', + clickSrc = '/training/static/audio/click.mp3', accentSrc, poolSize = 4, onBeat, diff --git a/TUICallKit-Vue3/hooks/useTrainingBgm.ts b/TUICallKit-Vue3/training/hooks/useTrainingBgm.ts similarity index 98% rename from TUICallKit-Vue3/hooks/useTrainingBgm.ts rename to TUICallKit-Vue3/training/hooks/useTrainingBgm.ts index 13dfc585..0bbdc48c 100644 --- a/TUICallKit-Vue3/hooks/useTrainingBgm.ts +++ b/TUICallKit-Vue3/training/hooks/useTrainingBgm.ts @@ -1,6 +1,6 @@ import { ref, onUnmounted } from 'vue' -const BGM_BASE = '/static/training/bgm' +const BGM_BASE = '/training/static/bgm' export type BgmMode = 'none' | 'training' | 'resting' diff --git a/TUICallKit-Vue3/hooks/useTrainingSession.ts b/TUICallKit-Vue3/training/hooks/useTrainingSession.ts similarity index 100% rename from TUICallKit-Vue3/hooks/useTrainingSession.ts rename to TUICallKit-Vue3/training/hooks/useTrainingSession.ts diff --git a/TUICallKit-Vue3/hooks/useVoiceCoach.ts b/TUICallKit-Vue3/training/hooks/useVoiceCoach.ts similarity index 97% rename from TUICallKit-Vue3/hooks/useVoiceCoach.ts rename to TUICallKit-Vue3/training/hooks/useVoiceCoach.ts index c17c26d9..bc27bbae 100644 --- a/TUICallKit-Vue3/hooks/useVoiceCoach.ts +++ b/TUICallKit-Vue3/training/hooks/useVoiceCoach.ts @@ -1,6 +1,6 @@ import { onUnmounted } from 'vue' -const VOICE_BASE = '/static/training/voice' +const VOICE_BASE = '/training/static/voice' export type VoicePromptKey = | 'start' diff --git a/TUICallKit-Vue3/pages/training/components/exercise-anim.vue b/TUICallKit-Vue3/training/pages/components/exercise-anim.vue similarity index 100% rename from TUICallKit-Vue3/pages/training/components/exercise-anim.vue rename to TUICallKit-Vue3/training/pages/components/exercise-anim.vue diff --git a/TUICallKit-Vue3/pages/training/exercises.ts b/TUICallKit-Vue3/training/pages/exercises.ts similarity index 100% rename from TUICallKit-Vue3/pages/training/exercises.ts rename to TUICallKit-Vue3/training/pages/exercises.ts diff --git a/TUICallKit-Vue3/pages/training/index.vue b/TUICallKit-Vue3/training/pages/index.vue similarity index 98% rename from TUICallKit-Vue3/pages/training/index.vue rename to TUICallKit-Vue3/training/pages/index.vue index 36577310..6552e37b 100644 --- a/TUICallKit-Vue3/pages/training/index.vue +++ b/TUICallKit-Vue3/training/pages/index.vue @@ -151,10 +151,10 @@ import { onShow, onHide } from '@dcloudio/uni-app' import ExerciseAnim from './components/exercise-anim.vue' import { EXERCISE_PRESETS, getPresetById } from './exercises' import type { ExercisePreset } from './exercises' -import { useMetronome } from '@/hooks/useMetronome' -import { useTrainingSession } from '@/hooks/useTrainingSession' -import { useVoiceCoach } from '@/hooks/useVoiceCoach' -import { useTrainingBgm } from '@/hooks/useTrainingBgm' +import { useMetronome } from '../hooks/useMetronome' +import { useTrainingSession } from '../hooks/useTrainingSession' +import { useVoiceCoach } from '../hooks/useVoiceCoach' +import { useTrainingBgm } from '../hooks/useTrainingBgm' const equipmentList = ['哑铃', '握力环', '健身环', '徒手'] as const type Equipment = (typeof equipmentList)[number] @@ -286,7 +286,7 @@ const onSkipRest = () => { } const goMetronome = () => { - uni.navigateTo({ url: '/pages/training/metronome' }) + uni.navigateTo({ url: '/training/pages/metronome' }) } onHide(() => { diff --git a/TUICallKit-Vue3/pages/training/metronome.vue b/TUICallKit-Vue3/training/pages/metronome.vue similarity index 99% rename from TUICallKit-Vue3/pages/training/metronome.vue rename to TUICallKit-Vue3/training/pages/metronome.vue index 225fd9b5..5e633c69 100644 --- a/TUICallKit-Vue3/pages/training/metronome.vue +++ b/TUICallKit-Vue3/training/pages/metronome.vue @@ -89,7 +89,7 @@