Files
fitness-coach/miniprogram/pages/collection/collection.wxml
wm ff3a120b55 feat(plan): 新增「加入计划」选择器页 + 增强官方计划浏览,修复返回不刷新
1) 新增 pages/plan-select(加入我的计划选择器,替换详情页 actionSheet)
   - 默认展示我全部计划(浏览,不再强制搜索),支持 最近创建/动作最多 排序 + 名称搜索
   - 点选即把动作加入该计划并返回;无计划时引导新建
   - 入口接在 detail 页「加入计划」(无 planId 时 navigate 至此)
2) 增强 pages/collection(官方训练计划)
   - 默认展示全部分级,新增 等级筛选 chips + 名称搜索(均用现有字段,不改后端)
   - 筛选/搜索纯前端,viewGroups 驱动渲染
3) 修复 plan-detail 从「添加动作」返回后列表不刷新(上轮已单独提交 7ff55a6)
4) app.json 注册 plan-select 页面
2026-07-23 14:15:41 +08:00

55 lines
1.8 KiB
Plaintext

<view class="page">
<navbar title="官方训练计划" show-back />
<view class="section" style="padding-top: 8rpx;">
<view class="intro">
<view class="intro__eyebrow">OFFICIAL PROGRAMS</view>
<view class="intro__title">选择你的训练阶段</view>
<view class="intro__sub">从新手入门到高级挑战,分级规划你的每一次进阶</view>
</view>
<view class="filterbar">
<scroll-view scroll-x class="filterbar__scroll">
<chip
wx:for="{{levels}}"
wx:key="value"
label="{{item.label}}"
value="{{item.value}}"
active="{{filterLevel === item.value}}"
bind:select="onFilter" />
</scroll-view>
</view>
<view class="searchbar">
<view class="searchbar__box">
<fc-icon name="search" size="28" color="var(--text-2)" />
<input
class="searchbar__input"
placeholder="搜索计划名称"
placeholder-class="ph"
value="{{keyword}}"
confirm-type="search"
bindinput="onSearch" />
</view>
</view>
<block wx:if="{{viewGroups.length}}">
<view class="group" wx:for="{{viewGroups}}" wx:for-item="g" wx:key="level">
<section-header eyebrow="LEVEL" title="{{g.label}}" />
<view class="grid">
<view class="grid__item" wx:for="{{g.plans}}" wx:for-item="p" wx:key="slug">
<plan-card
plan="{{p}}"
target="/pages/collection-detail/collection-detail?slug={{p.slug}}" />
</view>
</view>
</view>
</block>
<view wx:elif="{{!loading}}" class="empty">没有匹配的计划</view>
<view wx:else class="empty">加载中…</view>
</view>
<view style="height: 60rpx;"></view>
</view>