feat(plan): 新增「加入计划」选择器页 + 增强官方计划浏览,修复返回不刷新

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

View File

@@ -8,8 +8,33 @@
<view class="intro__sub">从新手入门到高级挑战,分级规划你的每一次进阶</view>
</view>
<block wx:if="{{groups.length}}">
<view class="group" wx:for="{{groups}}" wx:for-item="g" wx:key="level">
<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">
@@ -21,7 +46,7 @@
</view>
</block>
<view wx:elif="{{!loading}}" class="empty">暂无官方计划</view>
<view wx:elif="{{!loading}}" class="empty">没有匹配的计划</view>
<view wx:else class="empty">加载中…</view>
</view>