Files
sundynix-pets/pets-fe/pages/home/home.wxml
T
Blizzard bbc34c5bd6 feat(fe): Step4 门面品牌色带(方案A)+ nav-bar tone
- nav-bar 加 tone="brand":透明底 + 深棕字,压在色带上;默认分支不动
- 首页/记录页顶部加 252rpx 品牌橘色带(下沿大圆角,z-index:-1 垫背后),
  盖住 nav + 切换条,门面卡在色带下方
- 切换条压在色带上:chip 半透明白 + 深棕字,选中实白
- page 加 position:relative 供色带绝对定位锚定
- 新增 --band-a/--band-b/--band-ink token(取自 preview-v3 定稿)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 13:42:11 +08:00

120 lines
5.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- 门面品牌色带(方案 A):盖住 nav + 切换条,门面卡压在接缝上 -->
<view class="brand-band"></view>
<nav-bar title="肉垫计划" tone="brand"></nav-bar>
<view class="top-bar on-band"><pet-switch bind:add="onAddPet"></pet-switch></view>
<scroll-view class="page-scroll" scroll-y="{{true}}" enhanced="{{true}}" show-scrollbar="{{false}}"
bindscrolltolower="loadMore">
<view class="page-body">
<!-- 门面:宠物名片。点进去编辑档案 -->
<view class="card hero-card" bindtap="onHeroTap">
<view class="hero-row">
<view class="hero-av">
<image wx:if="{{pet.avatar_url}}" class="hero-av-img" src="{{pet.avatar_url}}" mode="aspectFill"></image>
<block wx:else>{{pet.emoji || '🐾'}}</block>
<view wx:if="{{sexIcon}}" class="hero-sex {{sexTone}}">{{sexIcon}}</view>
</view>
<view class="hero-main">
<view class="hero-title">{{pet.name || '还没有毛孩子'}}</view>
<view class="hero-meta">
<text wx:if="{{pet.breed}}">{{pet.breed}}</text>
<text wx:if="{{pet.age}}">{{pet.age}}</text>
<text wx:if="{{zodiac}}">{{zodiac}}</text>
</view>
</view>
<view wx:if="{{pet.id}}" class="hero-idcard" catchtap="goIDCard">
<pt-icon name="user" size="{{30}}"></pt-icon>身份卡
</view>
</view>
<!-- 一起生活的天数从到家日算。没填到家日就显示「-」,点一下去补 -->
<view wx:if="{{pet.id}}" class="hero-days {{daysTogether ? '' : 'hero-days-empty'}}" catchtap="onDaysTap">
<block wx:if="{{daysTogether}}">我们一起生活的第 <text class="hd-n">{{daysTogether}}</text> 天</block>
<block wx:else>还没填到家日期,一起生活的天数显示 <text class="hd-n">-</text></block>
</view>
</view>
<!-- 阶段漂移。系统只负责发现,换不换由用户点 —— 偷偷换会让他莫名发现
计划变了却找不到原因,而且已经排好的这个月不该被推翻 -->
<view wx:if="{{drift.drifted}}" class="card drift-card" bindtap="goStageUpdate">
<view class="drift-top">
<pt-icon name="trend" size="{{32}}"></pt-icon>
<view class="drift-b">{{pet.name}}已经 {{drift.age_label}},从{{drift.stored}}进入{{drift.computed}}了</view>
</view>
<view class="drift-p">{{drift.basis}}</view>
<view class="drift-focus">这个阶段的重点:{{drift.focus}}</view>
<view wx:if="{{drift.size}}" class="drift-size">{{drift.size}}</view>
<view class="btn btn-primary btn-block drift-cta">去更新阶段和方案</view>
</view>
<!-- 两个入口。竞品那一排是买商品/上豪车/领猫砂盆,是电商和广告位,去掉 -->
<view class="card entry-card">
<view class="entry" bindtap="goPlan">
<view class="entry-ic tone-1">
<pt-icon name="plan" size="{{48}}"></pt-icon>
<!-- 月底还没排下月计划时提醒。角标做在图标上而不是弹 toast:
每次进首页弹一下会很烦,而这件事不紧急、看见就行 -->
<view wx:if="{{needNextPlan}}" class="entry-dot"></view>
</view>
<view class="entry-b">管理计划</view>
<view class="entry-p {{needNextPlan ? 'warn' : ''}}">{{planHint}}</view>
</view>
<view class="entry" bindtap="goExpense">
<view class="entry-ic tone-2"><pt-icon name="cost" size="{{48}}"></pt-icon></view>
<view class="entry-b">记花销</view>
<view class="entry-p">{{monthCost > 0 ? '本月 ¥' + monthCost : '还没记过'}}</view>
</view>
</view>
<!-- 今日任务 -->
<view wx:if="{{tasks.length}}" class="card">
<view class="section-head">
<view class="sh-title">今日任务</view>
<!-- 任务的增删改都在计划页 —— 合并之后首页这个「管理」不该再开一个弹层 -->
<view class="head-links">
<view class="link" bindtap="goPlan">管理</view>
</view>
</view>
<view class="task-list">
<view wx:for="{{tasks}}" wx:key="id" class="task {{item.done ? 'done' : ''}}" data-index="{{index}}" bindtap="onTapTask">
<view class="circle"><pt-icon wx:if="{{item.done}}" name="check" size="{{22}}"></pt-icon></view>
<view class="task-text"><text class="tt-b">{{item.title}}</text><view wx:if="{{item.sub}}" class="tt-p">{{item.sub}}</view></view>
<view wx:if="{{item.priority}}" class="priority">{{item.priority}}</view>
</view>
</view>
</view>
<!-- 记录时间轴。首页原来是任务/日历/接下来的堆叠,看不到「我记了什么」;
日历挪回计划页了(它本来就属于那儿),这里换成时间轴 —— 首页应该是
一条能往下翻的流水,而不是一屏聚合卡 -->
<view class="tl-head">
<view class="sh-title">最近记录</view>
<view class="link" bindtap="goRecord"> 记一笔</view>
</view>
<view wx:for="{{timeline}}" wx:key="id" class="tl-item">
<view class="tl-rail">
<view class="tl-dot {{item.tone}}"><pt-icon name="{{item.type}}" size="{{28}}" fallback="note"></pt-icon></view>
<view class="tl-line"></view>
</view>
<view class="tl-body">
<view class="tl-when">{{item.timeText}}</view>
<view class="tl-card" data-id="{{item.id}}" bindlongpress="onDeleteRecord">
<view class="tl-title">{{item.title}}</view>
<view wx:if="{{item.description}}" class="tl-desc">{{item.description}}</view>
<image wx:if="{{item.image}}" class="tl-img" src="{{item.image}}" mode="aspectFill"
data-url="{{item.image}}" catchtap="previewImage"></image>
</view>
</view>
</view>
<view wx:if="{{!timeline.length}}" class="card">
<view class="empty lg">还没有记录。点上面的「记一笔」开始,
体重趋势和健康洞察都会从这些记录里长出来。</view>
</view>
<view wx:if="{{hasMore}}" class="tl-more" bindtap="loadMore">加载更多</view>
</view>
</scroll-view>
<fab paw bind:tap="onQuickRecord"></fab>