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:
72
miniprogram/pages/detail/detail.wxml
Normal file
72
miniprogram/pages/detail/detail.wxml
Normal file
@@ -0,0 +1,72 @@
|
||||
<view class="page" wx:if="{{exercise}}">
|
||||
<navbar title="{{exercise.name}}" show-back />
|
||||
|
||||
<view class="hero">
|
||||
<image
|
||||
wx:if="{{exercise.gifUrl || exercise.image}}"
|
||||
class="hero__img"
|
||||
src="{{exercise.gifUrl || exercise.image}}"
|
||||
mode="aspectFill" />
|
||||
<view wx:else class="hero__ph">🏋️</view>
|
||||
</view>
|
||||
|
||||
<view class="body section">
|
||||
<view class="name">{{exercise.name}}</view>
|
||||
|
||||
<view class="metas">
|
||||
<view class="meta"><view class="meta__k">部位</view><view class="meta__v">{{exercise.bodyPartLabel}}</view></view>
|
||||
<view class="meta"><view class="meta__k">器械</view><view class="meta__v">{{exercise.equipmentLabel}}</view></view>
|
||||
<view class="meta"><view class="meta__k">目标</view><view class="meta__v gold-text">{{exercise.targetLabel}}</view></view>
|
||||
<view class="meta"><view class="meta__k">类型</view><view class="meta__v">{{exercise.typeLabel}}</view></view>
|
||||
</view>
|
||||
|
||||
<view class="block" wx:if="{{exercise.muscleGroupLabel}}">
|
||||
<view class="block__h eyebrow">主要肌群</view>
|
||||
<view class="chips">
|
||||
<text class="tag tag--gold">{{exercise.muscleGroupLabel}}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="block" wx:if="{{exercise.secondaryMusclesLabels.length}}">
|
||||
<view class="block__h eyebrow">协同肌群</view>
|
||||
<view class="chips">
|
||||
<text wx:for="{{exercise.secondaryMusclesLabels}}" wx:key="*this" class="tag">{{item}}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="block" wx:if="{{exercise.instructionSteps.zh.length}}">
|
||||
<view class="block__h eyebrow">动作步骤</view>
|
||||
<view class="steps">
|
||||
<view class="step" wx:for="{{exercise.instructionSteps.zh}}" wx:key="index">
|
||||
<view class="step__n">{{index + 1}}</view>
|
||||
<view class="step__t">{{item}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="block" wx:if="{{exercise.instructions.zh}}">
|
||||
<view class="block__h eyebrow">要点提示</view>
|
||||
<view class="tips">{{exercise.instructions.zh}}</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="section" wx:if="{{related.length}}">
|
||||
<view class="block__h eyebrow">相关推荐</view>
|
||||
<scroll-view scroll-x class="hscroll">
|
||||
<view class="hscroll__item" wx:for="{{related}}" wx:key="id">
|
||||
<exercise-card exercise="{{item}}" compact bind:tap="onExercise" />
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
|
||||
<view class="addbar">
|
||||
<view class="cta" bindtap="onAdd">加入今日训练</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view wx:else class="empty-page">
|
||||
<view class="topbar" style="padding-top: {{statusBarHeight}}px;">
|
||||
<view class="topbar__back" bindtap="onBack">‹</view>
|
||||
</view>
|
||||
<view class="empty">{{ loading ? '加载中…' : '未找到该动作' }}</view>
|
||||
</view>
|
||||
Reference in New Issue
Block a user