feat: init fitness-coach (backend + miniprogram)

- backend: NestJS service with exercise/plan data
- miniprogram: WeChat mini program client
- exclude node_modules, dist, runtime data-store, local env
This commit is contained in:
2026-07-22 00:35:40 +08:00
commit b3b58e66fb
103 changed files with 154759 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
const app = getApp();
Component({
properties: {
title: { type: String, value: '' },
showBack: { type: Boolean, value: false }
},
data: {
statusBarHeight: 20
},
lifetimes: {
attached() {
const h = (app.globalData && app.globalData.statusBarHeight) || 20;
this.setData({ statusBarHeight: h });
}
},
methods: {
onBack() {
const pages = getCurrentPages();
if (pages.length > 1) {
wx.navigateBack();
} else {
wx.reLaunch({ url: '/pages/index/index' });
}
}
}
});

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1,7 @@
<view class="navbar">
<view class="navbar__status" style="height: {{statusBarHeight}}px;"></view>
<view class="navbar__bar">
<view wx:if="{{showBack}}" class="navbar__back" bindtap="onBack"></view>
<view wx:if="{{title}}" class="navbar__title">{{title}}</view>
</view>
</view>

View File

@@ -0,0 +1,29 @@
.navbar {
background: linear-gradient(180deg, rgba(22,32,27,0.96) 0%, rgba(14,17,16,0.55) 100%);
position: sticky;
top: 0;
z-index: 50;
}
.navbar__status { width: 100%; }
.navbar__bar {
height: 88rpx;
display: flex;
align-items: center;
position: relative;
padding: 0 28rpx;
}
.navbar__back {
font-size: 56rpx;
color: var(--gold);
line-height: 1;
width: 60rpx;
}
.navbar__title {
position: absolute;
left: 0; right: 0;
text-align: center;
font-size: 34rpx;
font-weight: 700;
letter-spacing: 2rpx;
color: var(--text);
}