cecc7f4cbb
## 日期条 → 可展开日历 首页那条七天日期带下面加了「展开整月」。展开后是整月网格(有安排的 日子带绿点),点任意一天,任务卡跟着切到那天。收起来还是七天,默认 不拉日历接口。 这块原来是计划页的「日历」tab,现在从计划页整个摘掉了——「哪天要做 什么」和「今天要做什么」本来就是一件事,分在两个 tab 里只是让人多点 两下。日历样式(.cal-* / .day-detail / .dd-*)跟着从 plan.wxss 搬到 home.wxss,plan.wxss 里没留死规则。 ## 任务卡下面挂当天的计划节点和提醒 day-plan 接口本来就返回 plan_nodes / reminders / tasks 三份。这里只取 前两份,任务列表仍然走 /tasks——因为 /tasks 会补生成当天任务而 day-plan 不会,拿它的 tasks 覆盖列表会让今天的任务凭空少掉。 ## 「接下来」卡 30 天计划里最近 3 个还没做的节点,日期显示成「今天/明天/3 天后」而不是 7月31日。带完成度进度条,右上角「完整计划」进计划页。 计划页降级成二级页之后,这张卡是它在首页的唯一露出;没有它,计划这个 功能对用户来说就等于消失了。 ## AI 计划入口 AI 页快捷区加了「生成养护计划」,直达 /pages/plan/plan?tab=aiPlan。 没有把这个表单搬进 AI 聊天页:它要渲染 extracted 四宫格和可勾选的任务 节点,塞进聊天流意味着同一个页面维护两套完全不同的渲染,收益只是少跳 一次。原本要解决的是「计划页降级后 AI 计划找不到了」,一个入口就够了。 顺带:iconfont 补了 up / down 两个 chevron(展开收起用)。 联调验证(本地 9090,新建幼犬档案): day-plan 今天 → plan_nodes=['确认免疫与驱虫计划'] plan → completion_pct=0,4 个节点,date 字段齐全 接下来筛出 → 07-29 确认免疫与驱虫计划 / 08-01 观察饮水与排便 / 08-05 体重趋势检查 calendar → 2026-7,today=29,tasked_days=[29] day-plan 未来日 → 08-01、08-05 各自返回对应节点 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
31 lines
1.7 KiB
Plaintext
31 lines
1.7 KiB
Plaintext
/* 竖线时间轴 */
|
|
.timeline{padding-left:var(--sp-6);position:relative}
|
|
.timeline::before{content:"";position:absolute;left:12rpx;top:12rpx;bottom:16rpx;width:4rpx;background:#E8DED0}
|
|
.time-block{position:relative;margin-bottom:var(--sp-4)}
|
|
.time-label{font-weight:var(--fw-b);color:var(--primary-dark);font-size:var(--fs-sm);margin-bottom:var(--sp-3);position:relative}
|
|
.time-date{margin-left:var(--sp-2);font-weight:var(--fw);color:var(--muted);font-size:var(--fs-cap)}
|
|
.time-label::before{
|
|
content:"";position:absolute;left:-34rpx;top:8rpx;width:24rpx;height:24rpx;border-radius:50%;
|
|
background:var(--primary);border:6rpx solid #fff;box-shadow:0 0 0 4rpx var(--primary-line);
|
|
}
|
|
.plan-task{
|
|
background:#fff;border-radius:var(--r-md);padding:var(--sp-4);box-shadow:var(--sd-1);
|
|
border:1rpx solid transparent;display:flex;gap:var(--sp-3);align-items:flex-start;
|
|
}
|
|
.plan-task.done{opacity:.55}
|
|
.pk-check{
|
|
width:44rpx;height:44rpx;border-radius:50%;border:4rpx solid #DED1C4;flex:none;margin-top:2rpx;
|
|
display:flex;align-items:center;justify-content:center;color:#fff;
|
|
}
|
|
.plan-task.done .pk-check{background:var(--green);border-color:var(--green)}
|
|
.pk-body{flex:1}
|
|
.pk-b{font-size:var(--fs-md);font-weight:var(--fw-b)}
|
|
.pk-p{color:var(--muted);font-size:var(--fs-sm);line-height:1.45;margin-top:var(--sp-1)}
|
|
.ai-plan-tip{color:var(--muted);font-size:var(--fs-sm);line-height:1.6;margin-bottom:var(--sp-3)}
|
|
|
|
/* 日历 */
|
|
/* AI 提取信息 */
|
|
.extracted{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);margin:var(--sp-4) 0}
|
|
.extract{background:var(--surface-2);border-radius:var(--r-sm);padding:var(--sp-3);font-size:var(--fs-sm)}
|
|
.ex-b{display:block;font-size:var(--fs-sm);margin-bottom:6rpx;font-weight:var(--fw-b);color:var(--muted)}
|