- 建立 Lucide 子集 iconfont(49 字形),全站 emoji 替换为 fc-icon 组件 - 重塑 Design Token(冷中性近黑底 + Volt 荧光绿 #B6F24E),消除硬编码颜色 - 首页登录后个性化:我的计划 / 我的收藏 / 今日推荐(纯前端复用现有 API) - 后端 DEFAULT_EMOJI→Lucide 名,PALETTE 对齐 Kinetic Dark 语义色板 - 修复 person-standing 缺失字形;14 个官方组合 seed emoji 全部映射到现有字形
40 lines
2.0 KiB
Plaintext
40 lines
2.0 KiB
Plaintext
<view class="page" wx:if="{{plan}}">
|
||
<navbar title="{{plan.name}}" show-back />
|
||
|
||
<view class="header" style="background: linear-gradient(135deg, {{plan.color}}26, var(--surface));">
|
||
<view class="header__emoji" style="background: {{plan.color}}22; color: {{plan.color}};"><fc-icon name="{{plan.icon}}" size="48" color="{{plan.color}}" /></view>
|
||
<view class="header__name" style="color: {{plan.color}};">{{plan.name}}</view>
|
||
<view wx:if="{{plan.description}}" class="header__desc">{{plan.description}}</view>
|
||
<view class="header__meta">共 {{exercises.length}} 个动作<text wx:if="{{plan.updatedAtText}}"> · 更新于 {{plan.updatedAtText}}</text></view>
|
||
</view>
|
||
|
||
<view class="section" style="padding-top: 8rpx;">
|
||
<section-header eyebrow="EXERCISES" title="动作列表" subtitle="点击查看详情 · 可在动作页加入本计划" />
|
||
|
||
<view class="list" wx:if="{{exercises.length}}">
|
||
<view class="list__item" wx:for="{{exercises}}" wx:key="id">
|
||
<view class="list__card">
|
||
<exercise-card exercise="{{item}}" catch:tap="onExercise" />
|
||
</view>
|
||
<view class="list__remove" data-id="{{item.id}}" catchtap="onRemoveExercise">移除</view>
|
||
</view>
|
||
</view>
|
||
<view wx:elif="{{!loading}}" class="empty-box">
|
||
<view class="empty-box__emoji"><fc-icon name="dumbbell" size="64" color="var(--text-3)" /></view>
|
||
<view class="empty-box__t">这个计划还没有动作,去添加吧</view>
|
||
<view class="empty-box__btn" bindtap="onAdd">+ 添加动作</view>
|
||
</view>
|
||
<view wx:else class="empty">加载中…</view>
|
||
</view>
|
||
|
||
<view class="actionbar">
|
||
<view class="btn btn--gold" bindtap="onAdd">+ 添加动作</view>
|
||
<view class="btn btn--ghost" bindtap="onEdit">编辑</view>
|
||
<view class="btn btn--del" bindtap="onDelete">删除计划</view>
|
||
</view>
|
||
</view>
|
||
|
||
<view wx:else class="empty-page">
|
||
<view class="empty">{{ loading ? '加载中…' : '未找到该计划' }}</view>
|
||
</view>
|