This commit is contained in:
Your Name
2026-08-11 17:41:36 +08:00
parent cfe4c82c90
commit 03fe4ddf9d
18771 changed files with 3617239 additions and 0 deletions
File diff suppressed because one or more lines are too long
@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}
@@ -0,0 +1 @@
<view class="crush-canvas-container data-v-ecab95cd"><canvas type="2d" id="crush" class="crush-canvas data-v-ecab95cd"></canvas></view>
@@ -0,0 +1 @@
.crush-canvas-container.data-v-ecab95cd{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:10}.crush-canvas.data-v-ecab95cd{display:block;width:100%;height:100%;background:transparent}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}
@@ -0,0 +1 @@
<view class="walker-canvas-container data-v-06b6a3c2"><block wx:if="{{r0}}"><canvas canvas-id="walker" id="walker" class="walker-canvas data-v-06b6a3c2" style="{{'width:' + a + ';' + ('height:' + b)}}" bindtouchstart="{{c}}" bindtouchmove="{{d}}" bindtouchend="{{e}}" bindtouchcancel="{{f}}"></canvas></block></view>
@@ -0,0 +1 @@
.walker-canvas-container.data-v-06b6a3c2{width:100%;height:100%;position:absolute;top:0;left:0;right:0;bottom:0}.walker-canvas.data-v-06b6a3c2{display:block;width:100%;height:100%;background:transparent}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,7 @@
{
"navigationBarTitleText": "哑铃训练",
"navigationBarBackgroundColor": "#f8fafc",
"navigationBarTextStyle": "black",
"backgroundColor": "#f8fafc",
"usingComponents": {}
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,7 @@
{
"navigationBarTitleText": "脚蹬器训练",
"navigationBarBackgroundColor": "#f8fafc",
"navigationBarTextStyle": "black",
"backgroundColor": "#f8fafc",
"usingComponents": {}
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,9 @@
{
"navigationBarTitleText": "握力环训练",
"navigationBarBackgroundColor": "#f8fafc",
"navigationBarTextStyle": "black",
"backgroundColor": "#f8fafc",
"usingComponents": {
"crush-canvas": "./components/crush-canvas"
}
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js");Math||a();const a=()=>"./components/walker-canvas.js",o=e.defineComponent({__name:"metronome",setup(a){const o=[{id:"slow",bpm:110,label:"慢走",desc:"热身 · 恢复"},{id:"normal",bpm:130,label:"健走",desc:"日常 · 通勤"},{id:"brisk",bpm:150,label:"快走",desc:"提速 · 燃脂"}],n=e.ref(!1),c=e.ref("normal"),l=e.ref("crisp"),t=e.ref(null),u={crisp:{normal:"https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/uploads/file/20260527/202605271539371ebe13672.mp3",accent:"https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/uploads/file/20260527/202605271539376ff628472.mp3"},wood:{normal:"https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/uploads/file/20260526/202605261051282a0a94508.mp3",accent:"https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/uploads/file/20260526/202605261051282a0a94508.mp3"}},p=e.useMetronome({initialBpm:130,accentEvery:2,clickSrc:u.crisp.normal,accentSrc:u.crisp.accent,poolSize:4,onBeat:(e,a)=>{t.value&&t.value.triggerBeat&&t.value.triggerBeat()}}),s=e.computed(()=>p.isPlaying.value),r=e.computed(()=>p.bpm.value),d=e.computed(()=>p.accentEvery.value),i=e.computed(()=>6e4/p.bpm.value),m=()=>{p.isPlaying.value?(p.stop(),e.index.setKeepScreenOn({keepScreenOn:!1})):(p.start(),e.index.setKeepScreenOn({keepScreenOn:!0}))},v=()=>{if(n.value=!n.value,n.value)p.preload();else{const e=o.find(e=>e.bpm===p.bpm.value);c.value=e?e.id:null}},f=e=>{p.setBpm(p.bpm.value+e),c.value=null},g=e=>{l.value=e;const a=u[e];p.updateAudioSrc(a.normal,a.accent)},b=e.computed(()=>({"--beat-duration":`${i.value}ms`}));function S(){p.stop(),e.index.setKeepScreenOn({keepScreenOn:!1})}return e.onShow(()=>{p.preload()}),e.onHide(S),e.onUnload(S),e.onUnmounted(S),(a,u)=>e.e({a:e.sr(t,"a9d4f6cc-0",{k:"walkerCanvasRef"}),b:e.o(m),c:e.p({bpm:r.value,"is-playing":s.value}),d:"crisp"===l.value?1:"",e:e.o(e=>g("crisp")),f:"wood"===l.value?1:"",g:e.o(e=>g("wood")),h:e.f(o,(a,n,l)=>({a:e.t(a.label),b:e.t(a.bpm),c:e.t(a.desc),d:a.id,e:c.value===a.id?1:"",f:e.o(n=>(a=>{const n=o.find(e=>e.id===a);n&&(c.value=a,p.setBpm(n.bpm),p.isPlaying.value||(p.start(),e.index.setKeepScreenOn({keepScreenOn:!0})))})(a.id),a.id)})),i:e.t(n.value?"✕ 收起自定义":"⚙ 自定义节奏"),j:e.o(v),k:n.value},n.value?{l:e.o(e=>f(-5)),m:e.o(e=>f(-1)),n:e.t(r.value),o:e.o(e=>f(1)),p:e.o(e=>f(5)),q:e.f([2,3,4],(a,o,n)=>({a:e.t(a),b:a,c:d.value===a?1:"",d:e.o(e=>(e=>{p.setAccentEvery(e)})(a),a)}))}:{},{r:e.s(b.value)})}}),n=e._export_sfc(o,[["__scopeId","data-v-a9d4f6cc"]]);wx.createPage(n);
@@ -0,0 +1,9 @@
{
"navigationBarTitleText": "耗糖节拍器",
"navigationBarBackgroundColor": "#f8fafc",
"navigationBarTextStyle": "black",
"backgroundColor": "#f8fafc",
"usingComponents": {
"walker-canvas": "./components/walker-canvas"
}
}
@@ -0,0 +1 @@
<view class="page data-v-a9d4f6cc" style="{{r}}"><view class="stage-canvas-wrapper data-v-a9d4f6cc"><walker-canvas wx:if="{{c}}" class="r data-v-a9d4f6cc" u-r="walkerCanvasRef" bindtogglePlay="{{b}}" u-i="a9d4f6cc-0" bind:__l="__l" u-p="{{c}}"/></view><view class="sound-selector data-v-a9d4f6cc"><view class="{{['sound-option', 'data-v-a9d4f6cc', d && 'active']}}" bindtap="{{e}}"><text class="sound-icon data-v-a9d4f6cc">✨</text><text class="sound-label data-v-a9d4f6cc">清脆</text></view><view class="{{['sound-option', 'data-v-a9d4f6cc', f && 'active']}}" bindtap="{{g}}"><text class="sound-icon data-v-a9d4f6cc">🪵</text><text class="sound-label data-v-a9d4f6cc">木鱼</text></view></view><view class="presets data-v-a9d4f6cc"><view wx:for="{{h}}" wx:for-item="p" wx:key="d" class="{{['preset', 'data-v-a9d4f6cc', p.e && 'active']}}" bindtap="{{p.f}}"><text class="preset-name data-v-a9d4f6cc">{{p.a}}</text><text class="preset-bpm data-v-a9d4f6cc">{{p.b}} BPM</text><text class="preset-desc data-v-a9d4f6cc">{{p.c}}</text></view></view><view class="custom-section data-v-a9d4f6cc"><view class="custom-header data-v-a9d4f6cc" bindtap="{{j}}"><text class="custom-title data-v-a9d4f6cc">{{i}}</text></view><view wx:if="{{k}}" class="custom-content data-v-a9d4f6cc"><view class="row data-v-a9d4f6cc"><text class="row-label data-v-a9d4f6cc">BPM</text><view class="bpm-stepper data-v-a9d4f6cc"><view class="step-btn data-v-a9d4f6cc" bindtap="{{l}}">−5</view><view class="step-btn data-v-a9d4f6cc" bindtap="{{m}}">−1</view><view class="step-val data-v-a9d4f6cc">{{n}}</view><view class="step-btn data-v-a9d4f6cc" bindtap="{{o}}">+1</view><view class="step-btn data-v-a9d4f6cc" bindtap="{{p}}">+5</view></view></view><view class="row data-v-a9d4f6cc"><text class="row-label data-v-a9d4f6cc">拍号</text><view class="meter-tabs data-v-a9d4f6cc"><view wx:for="{{q}}" wx:for-item="n" wx:key="b" class="{{['meter-tab', 'data-v-a9d4f6cc', n.c && 'active']}}" bindtap="{{n.d}}">{{n.a}}/4</view></view></view></view></view></view>
@@ -0,0 +1 @@
.page.data-v-a9d4f6cc{position:relative;min-height:100vh;box-sizing:border-box;padding:30rpx 28rpx 50rpx;background:#f8fafc;display:flex;flex-direction:column;align-items:center;gap:20rpx;color:#0f172a}.stage-canvas-wrapper.data-v-a9d4f6cc{width:100vw;margin-left:-28rpx;margin-right:-28rpx;flex-shrink:0;height:600rpx;display:flex;justify-content:center;align-items:center;margin-bottom:24rpx;position:relative}.sound-selector.data-v-a9d4f6cc{width:100%;display:flex;gap:14rpx;margin-bottom:20rpx}.sound-option.data-v-a9d4f6cc{flex:1;background:#fff;border:2rpx solid rgba(15,23,42,.06);border-radius:24rpx;padding:20rpx 16rpx;display:flex;align-items:center;justify-content:center;gap:10rpx;box-shadow:0 4rpx 12rpx rgba(15,23,42,.04);transition:all .18s}.sound-option .sound-icon.data-v-a9d4f6cc{font-size:32rpx}.sound-option .sound-label.data-v-a9d4f6cc{font-size:26rpx;font-weight:600;color:#475569;letter-spacing:1rpx}.sound-option.data-v-a9d4f6cc:active{transform:scale(.97)}.sound-option.active.data-v-a9d4f6cc{background:linear-gradient(135deg,#d1fae5,#a7f3d0);border-color:#10b981;box-shadow:0 8rpx 20rpx rgba(16,185,129,.18),inset 0 0 0 2rpx rgba(16,185,129,.4)}.sound-option.active .sound-label.data-v-a9d4f6cc{color:#047857}.presets.data-v-a9d4f6cc{width:100%;display:flex;gap:14rpx}.preset.data-v-a9d4f6cc{flex:1;background:#fff;border:2rpx solid rgba(15,23,42,.06);border-radius:24rpx;padding:26rpx 8rpx;display:flex;flex-direction:column;align-items:center;gap:8rpx;box-shadow:0 4rpx 12rpx rgba(15,23,42,.04);transition:all .18s}.preset .preset-name.data-v-a9d4f6cc{font-size:28rpx;font-weight:700;color:#0f172a;letter-spacing:2rpx}.preset .preset-bpm.data-v-a9d4f6cc{font-size:22rpx;color:#475569;font-weight:600;font-variant-numeric:tabular-nums}.preset .preset-desc.data-v-a9d4f6cc{font-size:18rpx;color:#94a3b8;letter-spacing:1rpx;margin-top:2rpx}.preset.data-v-a9d4f6cc:active{transform:scale(.97)}.preset.active.data-v-a9d4f6cc{background:#d1fae5;border-color:#10b981;box-shadow:0 8rpx 20rpx rgba(16,185,129,.18),inset 0 0 0 2rpx rgba(16,185,129,.4)}.preset.active .preset-name.data-v-a9d4f6cc,.preset.active .preset-bpm.data-v-a9d4f6cc{color:#047857}.preset.active .preset-desc.data-v-a9d4f6cc{color:#10b981}.custom-section.data-v-a9d4f6cc{width:100%;margin-top:12rpx}.custom-header.data-v-a9d4f6cc{width:100%;padding:16rpx 6rpx;display:flex;align-items:center;justify-content:center}.custom-header .custom-title.data-v-a9d4f6cc{font-size:22rpx;color:#94a3b8;letter-spacing:.5rpx}.custom-header .custom-title.data-v-a9d4f6cc:active{color:#475569}.custom-content.data-v-a9d4f6cc{width:100%;background:#fff;border:2rpx solid rgba(245,158,11,.25);border-radius:24rpx;box-shadow:0 6rpx 18rpx rgba(245,158,11,.08);padding:20rpx 24rpx 22rpx;display:flex;flex-direction:column;gap:16rpx;margin-top:8rpx}.custom-warn.data-v-a9d4f6cc{display:flex;align-items:center;gap:8rpx;margin-bottom:4rpx}.custom-warn .warn-dot.data-v-a9d4f6cc{font-size:18rpx;color:#f59e0b}.custom-warn .warn-text.data-v-a9d4f6cc{font-size:22rpx;color:#b45309;letter-spacing:.5rpx;font-weight:600}.row.data-v-a9d4f6cc{display:flex;align-items:center;justify-content:space-between;gap:12rpx}.row .row-label.data-v-a9d4f6cc{font-size:24rpx;color:#475569;font-weight:600;letter-spacing:1rpx;flex-shrink:0;width:70rpx}.bpm-stepper.data-v-a9d4f6cc{display:flex;align-items:center;gap:6rpx;flex:1;justify-content:flex-end}.bpm-stepper .step-btn.data-v-a9d4f6cc{min-width:56rpx;height:52rpx;line-height:52rpx;text-align:center;font-size:22rpx;color:#475569;background:#f1f5f9;border-radius:10rpx;font-weight:600;padding:0 10rpx;font-variant-numeric:tabular-nums}.bpm-stepper .step-btn.data-v-a9d4f6cc:active{background:#e2e8f0;transform:scale(.94)}.bpm-stepper .step-val.data-v-a9d4f6cc{min-width:84rpx;height:52rpx;line-height:52rpx;text-align:center;font-size:30rpx;font-weight:800;color:#0f172a;font-variant-numeric:tabular-nums;background:#fef3c7;border-radius:10rpx}.meter-tabs.data-v-a9d4f6cc{display:flex;gap:8rpx}.meter-tabs .meter-tab.data-v-a9d4f6cc{height:52rpx;line-height:52rpx;padding:0 18rpx;font-size:22rpx;color:#475569;background:#f1f5f9;border-radius:10rpx;font-weight:600;letter-spacing:1rpx}.meter-tabs .meter-tab.active.data-v-a9d4f6cc{background:#f59e0b;color:#fff;box-shadow:0 4rpx 10rpx rgba(245,158,11,.3)}.meter-tabs .meter-tab.data-v-a9d4f6cc:active{transform:scale(.94)}.bottom-row.data-v-a9d4f6cc{width:100%;margin-top:6rpx;display:flex;align-items:center;justify-content:space-between;padding:0 6rpx}.bottom-link.data-v-a9d4f6cc{font-size:22rpx;color:#94a3b8;letter-spacing:.5rpx;padding:8rpx 4rpx}.bottom-link.data-v-a9d4f6cc:active{color:#475569}.bottom-hint.data-v-a9d4f6cc{font-size:22rpx;color:#94a3b8;letter-spacing:.5rpx}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,7 @@
{
"navigationBarTitleText": "瑜伽环训练",
"navigationBarBackgroundColor": "#f8fafc",
"navigationBarTextStyle": "black",
"backgroundColor": "#f8fafc",
"usingComponents": {}
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long