diff --git a/pets-fe/app.wxss b/pets-fe/app.wxss
index 8ed0c48..519d25d 100644
--- a/pets-fe/app.wxss
+++ b/pets-fe/app.wxss
@@ -180,6 +180,16 @@ page{scrollbar-width:none;-ms-overflow-style:none}
.tone-3{background:var(--blue-soft);color:var(--blue-ink)}
.tone-4{background:var(--purple-soft);color:var(--purple-ink)}
+/* 记录入口宫格。首页(4 列 8 个)和记录页(3 列 9 个)原本是同一个东西的两个副本,
+ 高度/圆角/阴影/字号全不一样,这里合成一套。 */
+.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2)}
+.quick-grid.cols-3{grid-template-columns:repeat(3,1fr)}
+.quick{
+ border-radius:var(--r-md);min-height:128rpx;
+ display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-1);
+ font-weight:var(--fw-b);font-size:var(--fs-sm);
+}
+
/* 空态。原本有 6 套长得差不多的写法散在各页 */
.empty{padding:56rpx var(--sp-1);text-align:center;color:var(--muted);font-size:var(--fs-sm)}
.empty.lg{padding:96rpx 0}
@@ -288,6 +298,8 @@ page{scrollbar-width:none;-ms-overflow-style:none}
/* 统计格 */
.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3);margin:var(--sp-4) 0}
.stat{background:#fff;border:1rpx solid var(--line);border-radius:var(--r-md);padding:var(--sp-4) var(--sp-2);text-align:center}
+.stat-b{display:block;font-size:var(--fs-xl);margin-bottom:6rpx;font-weight:var(--fw-b)}
+.stat-s{font-size:var(--fs-cap);color:var(--muted)}
/* 文章卡 */
.article-card{
diff --git a/pets-fe/components/fab/fab.json b/pets-fe/components/fab/fab.json
index a89ef4d..a88211e 100644
--- a/pets-fe/components/fab/fab.json
+++ b/pets-fe/components/fab/fab.json
@@ -1,4 +1,6 @@
{
"component": true,
- "usingComponents": {}
+ "usingComponents": {
+ "pt-icon": "/components/pt-icon/index"
+ }
}
diff --git a/pets-fe/components/fab/fab.wxml b/pets-fe/components/fab/fab.wxml
index 7e54a8b..d273590 100644
--- a/pets-fe/components/fab/fab.wxml
+++ b/pets-fe/components/fab/fab.wxml
@@ -1 +1 @@
-AI
+
diff --git a/pets-fe/components/fab/fab.wxss b/pets-fe/components/fab/fab.wxss
index 87ab330..638868d 100644
--- a/pets-fe/components/fab/fab.wxss
+++ b/pets-fe/components/fab/fab.wxss
@@ -1,10 +1,10 @@
.fab{
position:fixed;right:36rpx;bottom:calc(190rpx + env(safe-area-inset-bottom));
- width:116rpx;height:116rpx;border-radius:44rpx;
- background:linear-gradient(135deg,#78A6E8,#9FC0F5);
- color:#fff;font-weight:900;font-size:40rpx;
+ width:108rpx;height:108rpx;border-radius:var(--r-md);
+ background:var(--cta);
+ color:#fff;
display:flex;align-items:center;justify-content:center;
- box-shadow:0 28rpx 60rpx rgba(120,166,232,.32);
+ box-shadow:var(--sd-2);
z-index:60;
}
.fab:active{transform:scale(.96)}
diff --git a/pets-fe/components/nav-bar/nav-bar.json b/pets-fe/components/nav-bar/nav-bar.json
index a89ef4d..a88211e 100644
--- a/pets-fe/components/nav-bar/nav-bar.json
+++ b/pets-fe/components/nav-bar/nav-bar.json
@@ -1,4 +1,6 @@
{
"component": true,
- "usingComponents": {}
+ "usingComponents": {
+ "pt-icon": "/components/pt-icon/index"
+ }
}
diff --git a/pets-fe/components/nav-bar/nav-bar.wxml b/pets-fe/components/nav-bar/nav-bar.wxml
index 813387d..230b1ca 100644
--- a/pets-fe/components/nav-bar/nav-bar.wxml
+++ b/pets-fe/components/nav-bar/nav-bar.wxml
@@ -1,6 +1,6 @@
- ‹
+
{{title}}
diff --git a/pets-fe/components/nav-bar/nav-bar.wxss b/pets-fe/components/nav-bar/nav-bar.wxss
index b1320d4..7ca13bc 100644
--- a/pets-fe/components/nav-bar/nav-bar.wxss
+++ b/pets-fe/components/nav-bar/nav-bar.wxss
@@ -9,11 +9,11 @@
position:relative;display:flex;align-items:center;justify-content:center;
}
.nav-title{
- font-size:32rpx;font-weight:900;color:var(--text);
+ font-size:var(--fs-lg);font-weight:var(--fw-b);color:var(--text);
max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.nav-back{
position:absolute;left:20rpx;top:50%;transform:translateY(-50%);
width:64rpx;height:64rpx;display:flex;align-items:center;justify-content:center;
- font-size:52rpx;line-height:1;color:var(--text);
+ color:var(--text);
}
diff --git a/pets-fe/components/pet-switch/pet-switch.json b/pets-fe/components/pet-switch/pet-switch.json
index a89ef4d..a88211e 100644
--- a/pets-fe/components/pet-switch/pet-switch.json
+++ b/pets-fe/components/pet-switch/pet-switch.json
@@ -1,4 +1,6 @@
{
"component": true,
- "usingComponents": {}
+ "usingComponents": {
+ "pt-icon": "/components/pt-icon/index"
+ }
}
diff --git a/pets-fe/components/pet-switch/pet-switch.wxml b/pets-fe/components/pet-switch/pet-switch.wxml
index feea1fb..6889817 100644
--- a/pets-fe/components/pet-switch/pet-switch.wxml
+++ b/pets-fe/components/pet-switch/pet-switch.wxml
@@ -5,6 +5,6 @@
{{item.emoji}}{{item.name}}
- +添加
+ 添加
diff --git a/pets-fe/pages/article/article.json b/pets-fe/pages/article/article.json
index 6c6953c..e8b68a8 100644
--- a/pets-fe/pages/article/article.json
+++ b/pets-fe/pages/article/article.json
@@ -1,6 +1,7 @@
{
"usingComponents": {
- "nav-bar": "/components/nav-bar/nav-bar"
+ "nav-bar": "/components/nav-bar/nav-bar",
+ "pt-icon": "/components/pt-icon/index"
},
"navigationStyle": "custom",
"navigationBarTitleText": "新手知识"
diff --git a/pets-fe/pages/article/article.wxml b/pets-fe/pages/article/article.wxml
index ba0386c..c1a7ec1 100644
--- a/pets-fe/pages/article/article.wxml
+++ b/pets-fe/pages/article/article.wxml
@@ -2,19 +2,19 @@
- 加载中…
- {{error}}
+ 加载中…
+ {{error}}
- {{article.icon}}
+
{{article.title}}
{{article.description}}
{{article.content}}
- 这篇文章还没有正文。
+ 这篇文章还没有正文。
diff --git a/pets-fe/pages/article/article.wxss b/pets-fe/pages/article/article.wxss
index 8453d68..ff5f6af 100644
--- a/pets-fe/pages/article/article.wxss
+++ b/pets-fe/pages/article/article.wxss
@@ -1,13 +1,15 @@
-.hint{padding:60rpx 0;text-align:center;color:var(--muted);font-size:28rpx}
-
-.art-head{padding:12rpx 0 28rpx}
-.art-icon{font-size:72rpx;line-height:1;margin-bottom:16rpx}
-.art-title{font-size:44rpx;font-weight:800;line-height:1.35;letter-spacing:-.5rpx}
-.art-desc{margin-top:14rpx;color:var(--muted);font-size:27rpx;line-height:1.6}
+.art-head{padding:var(--sp-2) 0 var(--sp-4)}
+.art-icon{
+ width:96rpx;height:96rpx;border-radius:var(--r-md);margin-bottom:var(--sp-3);
+ display:flex;align-items:center;justify-content:center;
+ background:var(--primary-soft);color:var(--primary-ink);
+}
+.art-title{font-size:var(--fs-2xl);font-weight:var(--fw-b);line-height:1.35;letter-spacing:-.5rpx}
+.art-desc{margin-top:var(--sp-2);color:var(--muted);font-size:var(--fs-md);line-height:1.6}
.art-content{
- font-size:29rpx;line-height:1.85;color:#3D352E;
+ font-size:var(--fs-md);line-height:1.85;color:var(--text-2);
white-space:pre-line; /* 正文用真实换行排版 */
}
-.art-foot{margin-top:28rpx;text-align:center;color:var(--muted);font-size:23rpx}
+.art-foot{margin-top:var(--sp-4);text-align:center;color:var(--muted);font-size:var(--fs-cap)}
diff --git a/pets-fe/pages/community/community.js b/pets-fe/pages/community/community.js
index 537345f..65bc7b9 100644
--- a/pets-fe/pages/community/community.js
+++ b/pets-fe/pages/community/community.js
@@ -67,8 +67,9 @@ Page({
toastErr(e);
});
},
+ // 来自 seg-tabs 的 change 事件
switchFeedTab(e) {
- this.setData({ feedIdx: e.currentTarget.dataset.index });
+ this.setData({ feedIdx: Number(e.detail.index) });
this.loadPosts();
},
likePost(e) {
diff --git a/pets-fe/pages/community/community.json b/pets-fe/pages/community/community.json
index 24ea6ea..7f17b0c 100644
--- a/pets-fe/pages/community/community.json
+++ b/pets-fe/pages/community/community.json
@@ -2,6 +2,8 @@
"usingComponents": {
"nav-bar": "/components/nav-bar/nav-bar",
"bottom-sheet": "/components/bottom-sheet/bottom-sheet",
- "fab": "/components/fab/fab"
+ "fab": "/components/fab/fab",
+ "pt-icon": "/components/pt-icon/index",
+ "seg-tabs": "/components/seg-tabs/index"
}
}
diff --git a/pets-fe/pages/community/community.wxml b/pets-fe/pages/community/community.wxml
index 06c4830..33d219a 100644
--- a/pets-fe/pages/community/community.wxml
+++ b/pets-fe/pages/community/community.wxml
@@ -5,18 +5,10 @@ module.exports.isUrl = function (s) { return s && s.indexOf('http') === 0; }
-
- 宠友圈
- 和宠友交流、晒宠、求助与经验分享。
-
-
-
- {{item}}
-
+
-
+
@@ -35,17 +27,17 @@ module.exports.isUrl = function (s) { return s && s.indexOf('http') === 0; }
- {{item.liked ? '♥' : '♡'}} {{item.like_count}}
- 💬 {{item.comment_count}}
-
+ {{item.like_count}}
+ {{item.comment_count}}
+
-
+
{{loadErr}}
点击重试
-
+
{{feedTabs[feedIdx] === '关注' ? '还没有关注的人,去「推荐」里关注几个宠友吧 🐾' : '还没有帖子,来发第一条吧 🐾'}}
diff --git a/pets-fe/pages/community/community.wxss b/pets-fe/pages/community/community.wxss
index 936feb7..69d0834 100644
--- a/pets-fe/pages/community/community.wxss
+++ b/pets-fe/pages/community/community.wxss
@@ -1,50 +1,44 @@
-.feed-tabs{white-space:nowrap;padding:0 0 24rpx}
-.feed-tab{
- display:inline-block;border:1rpx solid var(--line);background:#fff;border-radius:999rpx;
- height:68rpx;line-height:68rpx;padding:0 26rpx;color:var(--muted);font-size:26rpx;font-weight:900;
- box-shadow:0 12rpx 32rpx rgba(70,48,25,.05);margin-right:16rpx;
-}
-.feed-tab.active{color:var(--primary-dark);background:#FFF4E4;border-color:#FFD39A}
+.compose-card{margin-bottom:var(--sp-4)}
-.compose-card{margin-bottom:28rpx}
-
-.post-card{background:#fff;border-radius:48rpx;box-shadow:var(--shadow);padding:30rpx;margin-bottom:28rpx}
-.post-head{display:flex;align-items:center;gap:20rpx;margin-bottom:22rpx}
+.post-card{background:#fff;border-radius:var(--r-lg);box-shadow:var(--sd-1);padding:var(--sp-4);margin-bottom:var(--sp-4)}
+.post-head{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3)}
.post-avatar{
- width:84rpx;height:84rpx;border-radius:32rpx;background:#FFF0D8;
- display:flex;align-items:center;justify-content:center;font-size:44rpx;flex:none;
+ width:80rpx;height:80rpx;border-radius:var(--r-sm);background:var(--primary-soft);
+ display:flex;align-items:center;justify-content:center;font-size:40rpx;flex:none;
}
-.post-user{flex:1}
-.pu-b{font-size:28rpx;display:block;font-weight:700}
-.ai-tag{display:inline-block;margin-left:10rpx;padding:0 10rpx;border-radius:8rpx;background:#EAF0FF;color:#3B6BE5;font-size:20rpx;font-weight:700;vertical-align:1rpx}
-.pu-s{font-size:24rpx;color:var(--muted)}
-.post-content{font-size:28rpx;line-height:1.62;color:#443D37;margin-bottom:24rpx}
+.post-user{flex:1;min-width:0}
+.pu-b{font-size:var(--fs-md);display:block;font-weight:var(--fw-b)}
+.ai-tag{
+ display:inline-block;margin-left:var(--sp-1);padding:0 var(--sp-1);border-radius:var(--r-xs);
+ background:var(--blue-soft);color:var(--blue-ink);font-size:var(--fs-cap);font-weight:var(--fw-b);vertical-align:1rpx;
+}
+.pu-s{font-size:var(--fs-sm);color:var(--muted)}
+.post-content{font-size:var(--fs-md);line-height:1.62;color:var(--text-2);margin-bottom:var(--sp-3)}
-.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12rpx;margin-bottom:24rpx}
+.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-1);margin-bottom:var(--sp-3)}
.photo-tile{
- aspect-ratio:1;border-radius:32rpx;background:linear-gradient(135deg,#FFE6BA,#FFF8ED);
- display:flex;align-items:center;justify-content:center;font-size:60rpx;
+ aspect-ratio:1;border-radius:var(--r-sm);background:var(--primary-soft);
+ display:flex;align-items:center;justify-content:center;font-size:56rpx;
}
-.post-actions{display:flex;justify-content:space-around;border-top:1rpx solid var(--line);padding-top:20rpx}
-.pa-btn{color:var(--muted);font-weight:900;font-size:26rpx}
-.pa-btn.liked{color:var(--red)}
-
-.empty-hint{text-align:center;color:var(--muted);font-size:26rpx;padding:80rpx 0}
-
-/* 页面不自身滚动,改由 page-scroll 承载滚动(隐藏滚动条)*/
-
-/* 帖子分享按钮:用微信原生 open-type=share,需抹掉 button 默认外观 */
-.pa-share{
- background:transparent;border:none;padding:0;margin:0;line-height:inherit;
- font-size:26rpx;font-weight:900;color:var(--muted);
+.post-actions{display:flex;justify-content:space-around;border-top:1rpx solid var(--line);padding-top:var(--sp-3)}
+.pa-btn{
+ display:flex;align-items:center;gap:var(--sp-1);
+ color:var(--muted);font-weight:var(--fw-b);font-size:var(--fs-sm);
}
+.pa-btn.liked{color:var(--red-ink)}
+/* 分享用微信原生 open-type=share,得抹掉 button 默认外观 */
+.pa-share{background:transparent;border:none;padding:0;margin:0;line-height:inherit;height:auto}
.pa-share::after{border:none}
/* 关注按钮 */
.follow-btn{
- flex:none;font-size:22rpx;font-weight:700;padding:6rpx 18rpx;border-radius:999rpx;
- color:var(--primary-dark);background:#FFF2DC;border:1rpx solid #FFD39A;
+ flex:none;font-size:var(--fs-cap);font-weight:var(--fw-b);padding:6rpx var(--sp-3);border-radius:var(--r-full);
+ color:var(--primary-dark);background:var(--primary-soft);border:1rpx solid var(--primary-line);
}
.follow-btn.on{color:var(--muted);background:#F4F1EC;border-color:var(--line)}
-.retry-btn{margin-top:20rpx;display:inline-block;padding:12rpx 36rpx;border-radius:999rpx;background:#FFF2DC;color:var(--primary-dark);font-weight:700;font-size:26rpx}
+
+.retry-btn{
+ margin-top:var(--sp-3);display:inline-block;padding:var(--sp-2) var(--sp-6);border-radius:var(--r-full);
+ background:var(--primary-soft);color:var(--primary-dark);font-weight:var(--fw-b);font-size:var(--fs-sm);
+}
diff --git a/pets-fe/pages/home/home.wxss b/pets-fe/pages/home/home.wxss
index e925d76..5b5102b 100644
--- a/pets-fe/pages/home/home.wxss
+++ b/pets-fe/pages/home/home.wxss
@@ -37,13 +37,5 @@
.day.sel{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-dark);box-shadow:0 0 0 2rpx rgba(245,169,71,.35)}
.day.has-dot::after{content:"";display:block;width:8rpx;height:8rpx;border-radius:50%;background:var(--green);margin:6rpx auto 0}
-/* 快速记录:靠颜色分类,不靠 emoji */
-.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2)}
-.quick{
- border-radius:var(--r-md);min-height:128rpx;
- display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-1);
- font-weight:var(--fw-b);font-size:var(--fs-sm);
-}
-
.ai-text{color:var(--text-2);font-size:var(--fs-md);line-height:1.6}
.ai-cta{margin-top:var(--sp-4)}
diff --git a/pets-fe/pages/learn/learn.json b/pets-fe/pages/learn/learn.json
index 24ea6ea..fa34741 100644
--- a/pets-fe/pages/learn/learn.json
+++ b/pets-fe/pages/learn/learn.json
@@ -2,6 +2,7 @@
"usingComponents": {
"nav-bar": "/components/nav-bar/nav-bar",
"bottom-sheet": "/components/bottom-sheet/bottom-sheet",
- "fab": "/components/fab/fab"
+ "fab": "/components/fab/fab",
+ "pt-icon": "/components/pt-icon/index"
}
}
diff --git a/pets-fe/pages/learn/learn.wxml b/pets-fe/pages/learn/learn.wxml
index bd4c476..a4e3dff 100644
--- a/pets-fe/pages/learn/learn.wxml
+++ b/pets-fe/pages/learn/learn.wxml
@@ -3,12 +3,12 @@
- 新手养宠知识
- 新手养宠知识,看完顺手生成你的计划。
+ 看完顺手生成你的计划。
+ 还没有文章
- {{item.icon}}
+
{{item.title}}{{item.desc}}
diff --git a/pets-fe/pages/onboarding/onboarding.json b/pets-fe/pages/onboarding/onboarding.json
index c55f727..c58f7d1 100644
--- a/pets-fe/pages/onboarding/onboarding.json
+++ b/pets-fe/pages/onboarding/onboarding.json
@@ -1,6 +1,7 @@
{
"usingComponents": {
- "nav-bar": "/components/nav-bar/nav-bar"
+ "nav-bar": "/components/nav-bar/nav-bar",
+ "pt-icon": "/components/pt-icon/index"
},
"navigationBarTitleText": "肉垫计划"
}
diff --git a/pets-fe/pages/onboarding/onboarding.wxml b/pets-fe/pages/onboarding/onboarding.wxml
index 35777f8..a95f79f 100644
--- a/pets-fe/pages/onboarding/onboarding.wxml
+++ b/pets-fe/pages/onboarding/onboarding.wxml
@@ -5,7 +5,7 @@
- 🐾
+
肉垫计划
新手养宠的 AI 日历、健康记录和成长报告。先生成计划,再每天照着做。
@@ -24,10 +24,10 @@
目前支持猫和狗,选一个开始。
- 🐱猫猫幼猫、成年猫、老年猫
+ 猫猫幼猫、成年猫、老年猫
- 🐶狗狗幼犬、成年犬、老年犬
+ 狗狗幼犬、成年犬、老年犬
@@ -78,7 +78,7 @@
多选,我们会据此为你定制计划。
- {{item.on ? '✓' : ''}}{{item.label}}
+ {{item.label}}
@@ -89,11 +89,11 @@
正在生成专属养宠计划
正在根据它的信息生成专属计划…
- ✓ 已识别:{{stage}}
- ✓ 已生成:30 天新手计划
- ✓ 已安排:疫苗 / 驱虫提醒
- ✓ 已开启:体重、便便、饮食记录
- ✓ 已准备:首张成长报告卡片
+ 已识别:{{stage}}
+ 已生成:30 天新手计划
+ 已安排:疫苗 / 驱虫提醒
+ 已开启:体重、便便、饮食记录
+ 已准备:首张成长报告卡片
diff --git a/pets-fe/pages/onboarding/onboarding.wxss b/pets-fe/pages/onboarding/onboarding.wxss
index 3655ad6..69f5419 100644
--- a/pets-fe/pages/onboarding/onboarding.wxss
+++ b/pets-fe/pages/onboarding/onboarding.wxss
@@ -1,53 +1,59 @@
.onboard-page{
- padding:0 40rpx 56rpx;
+ padding:0 var(--pad-x) 56rpx;
min-height:100%;
background:
radial-gradient(circle at top right, rgba(245,169,71,.22), transparent 45%),
var(--bg);
}
.step{animation:fade .24s ease}
-.skip-link{text-align:center;margin-top:28rpx;color:var(--muted);font-size:28rpx;padding:12rpx}
+.skip-link{text-align:center;margin-top:var(--sp-4);color:var(--muted);font-size:var(--fs-md);padding:var(--sp-2)}
@keyframes fade{from{opacity:0;transform:translateY(16rpx)}to{opacity:1;transform:none}}
-.hero{text-align:center;padding:60rpx 0 32rpx}
+.hero{text-align:center;padding:60rpx 0 var(--sp-5)}
.pet-logo{
- width:192rpx;height:192rpx;margin:0 auto 36rpx;border-radius:60rpx;
+ width:176rpx;height:176rpx;margin:0 auto var(--sp-5);border-radius:var(--r-lg);
background:linear-gradient(135deg,#FFE0AB,#FDB35C);
- display:flex;align-items:center;justify-content:center;font-size:96rpx;
- box-shadow:0 32rpx 72rpx rgba(245,169,71,.26);
+ display:flex;align-items:center;justify-content:center;font-size:88rpx;
+ box-shadow:var(--sd-2);
}
-.hero-h1{font-size:64rpx;letter-spacing:-1.2rpx;font-weight:800}
-.hero-sub{margin-top:20rpx;line-height:1.65;color:var(--muted);font-size:30rpx}
+.hero-h1{font-size:var(--fs-2xl);letter-spacing:-1.2rpx;font-weight:var(--fw-b)}
+.hero-sub{margin-top:var(--sp-3);line-height:1.65;color:var(--muted);font-size:var(--fs-md)}
-.proof-row{display:grid;grid-template-columns:repeat(3,1fr);gap:16rpx;margin:40rpx 0}
-.proof{background:#fff;border-radius:36rpx;padding:24rpx 16rpx;text-align:center;box-shadow:var(--shadow)}
-.proof-b{display:block;font-size:32rpx;font-weight:800}
-.proof-s{color:var(--muted);font-size:22rpx}
+.proof-row{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3);margin:var(--sp-6) 0}
+.proof{background:#fff;border-radius:var(--r-md);padding:var(--sp-4) var(--sp-3);text-align:center;box-shadow:var(--sd-1)}
+.proof-b{display:block;font-size:var(--fs-lg);font-weight:var(--fw-b)}
+.proof-s{color:var(--muted);font-size:var(--fs-cap)}
-.step-title{font-size:48rpx;letter-spacing:-.8rpx;line-height:1.24;margin:16rpx 0;font-weight:800}
-.step-sub{color:var(--muted);line-height:1.6;font-size:28rpx;margin-bottom:32rpx}
+.step-title{font-size:var(--fs-2xl);letter-spacing:-.8rpx;line-height:1.24;margin:var(--sp-3) 0;font-weight:var(--fw-b)}
+.step-sub{color:var(--muted);line-height:1.6;font-size:var(--fs-md);margin-bottom:var(--sp-5)}
-.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:24rpx;margin-bottom:36rpx}
+.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4);margin-bottom:var(--sp-5)}
.choice-card{
- background:#fff;border:4rpx solid transparent;border-radius:48rpx;min-height:264rpx;
- padding:36rpx 28rpx;box-shadow:var(--shadow);transition:.18s ease;
+ background:#fff;border:4rpx solid transparent;border-radius:var(--r-lg);min-height:248rpx;
+ padding:var(--sp-5) var(--sp-4);box-shadow:var(--sd-1);transition:.18s ease;
+ display:flex;flex-direction:column;align-items:flex-start;
}
-.choice-card.selected{border-color:var(--primary);background:#FFF8EC}
-.choice-card .animal{font-size:88rpx;margin-bottom:20rpx}
-.choice-b{font-size:34rpx;font-weight:900}
-.choice-s{display:block;color:var(--muted);font-size:24rpx;margin-top:12rpx}
+.choice-card.selected{border-color:var(--primary);background:var(--primary-soft)}
+.choice-card .animal{
+ width:96rpx;height:96rpx;border-radius:var(--r-md);margin-bottom:var(--sp-3);
+ display:flex;align-items:center;justify-content:center;
+ background:var(--primary-soft);color:var(--primary-ink);
+}
+.choice-card.selected .animal{background:#fff}
+.choice-b{font-size:var(--fs-lg);font-weight:var(--fw-b)}
+.choice-s{display:block;color:var(--muted);font-size:var(--fs-sm);margin-top:var(--sp-2)}
-.form-card{background:#fff;border-radius:48rpx;padding:32rpx;box-shadow:var(--shadow);margin-bottom:36rpx}
+.form-card{background:#fff;border-radius:var(--r-lg);padding:var(--sp-5);box-shadow:var(--sd-1);margin-bottom:var(--sp-5)}
-.stage-list{display:flex;flex-direction:column;gap:22rpx;margin-bottom:36rpx}
-.stage-card{background:#fff;border-radius:40rpx;border:4rpx solid transparent;padding:30rpx;box-shadow:var(--shadow)}
+.stage-list{display:flex;flex-direction:column;gap:var(--sp-3);margin-bottom:var(--sp-5)}
+.stage-card{background:#fff;border-radius:var(--r-md);border:4rpx solid transparent;padding:var(--sp-4);box-shadow:var(--sd-1)}
.stage-card.selected{border-color:var(--green);background:var(--green-soft)}
-.stage-b{font-size:32rpx;font-weight:900}
-.stage-p{color:var(--muted);font-size:24rpx;margin-top:10rpx}
+.stage-b{font-size:var(--fs-lg);font-weight:var(--fw-b)}
+.stage-p{color:var(--muted);font-size:var(--fs-sm);margin-top:var(--sp-1)}
-.gen-card{margin-top:32rpx;background:#fff;border-radius:56rpx;padding:48rpx;box-shadow:var(--shadow2)}
-.gen-line{display:flex;align-items:center;gap:20rpx;padding:20rpx 0;color:#5F554D;font-size:28rpx}
+.gen-card{margin-top:var(--sp-5);background:#fff;border-radius:var(--r-lg);padding:var(--sp-6);box-shadow:var(--sd-2)}
+.gen-line{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;color:var(--text-2);font-size:var(--fs-md)}
.tick{
- width:48rpx;height:48rpx;border-radius:50%;background:var(--green);color:#fff;
- display:flex;align-items:center;justify-content:center;font-size:28rpx;font-weight:900;flex:none;
+ width:44rpx;height:44rpx;border-radius:50%;background:var(--green);color:#fff;
+ display:flex;align-items:center;justify-content:center;flex:none;
}
diff --git a/pets-fe/pages/plan/plan.js b/pets-fe/pages/plan/plan.js
index f92a611..111159b 100644
--- a/pets-fe/pages/plan/plan.js
+++ b/pets-fe/pages/plan/plan.js
@@ -31,6 +31,11 @@ Page({
data: {
pet: {},
planView: 'timeline',
+ planTabs: [
+ { key: 'timeline', label: '路线图' },
+ { key: 'calendar', label: '日历' },
+ { key: 'aiPlan', label: 'AI 计划' },
+ ],
plan: null,
calCells: [],
calLabel: '',
@@ -117,8 +122,9 @@ Page({
})
.catch(() => {});
},
+ // 来自 seg-tabs 的 change 事件,key 即 planView
switchPlanView(e) {
- const view = e.currentTarget.dataset.view;
+ const view = e.detail.key;
this.setData({ planView: view });
if (view === 'calendar' && !this.data.calLoaded) this.loadCalendar();
},
diff --git a/pets-fe/pages/plan/plan.json b/pets-fe/pages/plan/plan.json
index 075a8b2..58b7029 100644
--- a/pets-fe/pages/plan/plan.json
+++ b/pets-fe/pages/plan/plan.json
@@ -3,6 +3,8 @@
"nav-bar": "/components/nav-bar/nav-bar",
"pet-switch": "/components/pet-switch/pet-switch",
"bottom-sheet": "/components/bottom-sheet/bottom-sheet",
- "fab": "/components/fab/fab"
+ "fab": "/components/fab/fab",
+ "pt-icon": "/components/pt-icon/index",
+ "seg-tabs": "/components/seg-tabs/index"
}
}
diff --git a/pets-fe/pages/plan/plan.wxml b/pets-fe/pages/plan/plan.wxml
index 001a365..edcc95f 100644
--- a/pets-fe/pages/plan/plan.wxml
+++ b/pets-fe/pages/plan/plan.wxml
@@ -2,18 +2,9 @@
-
- 养宠计划
- 按宠物查看路线图、日历与 AI 计划。
-
-
-
- 路线图
- 日历
- AI 计划
-
+
@@ -29,13 +20,13 @@
{{item.day_label}}{{item.dateLabel}}
- {{item.done ? '✓' : ''}}
+
{{item.title}}{{item.description}}
- 暂无计划
+ 暂无计划
@@ -64,7 +55,7 @@
提醒{{item.title}}
- 这天没有安排
+ 这天没有安排
diff --git a/pets-fe/pages/plan/plan.wxss b/pets-fe/pages/plan/plan.wxss
index a865891..179cd70 100644
--- a/pets-fe/pages/plan/plan.wxss
+++ b/pets-fe/pages/plan/plan.wxss
@@ -1,58 +1,55 @@
-.inline-tabs{display:flex;padding:8rpx;gap:8rpx;border-radius:32rpx;background:#EFE8DE;margin-bottom:28rpx}
-.it-btn{
- flex:1;height:68rpx;line-height:68rpx;text-align:center;border-radius:24rpx;
- color:var(--muted);font-weight:900;font-size:26rpx;
-}
-.it-btn.active{background:#fff;color:var(--primary-dark);box-shadow:0 12rpx 28rpx rgba(0,0,0,.06)}
-
-.timeline{padding-left:36rpx;position:relative}
+/* 竖线时间轴 */
+.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:28rpx}
-.time-label{font-weight:900;color:var(--primary-dark);font-size:26rpx;margin-bottom:16rpx;position:relative}
-.time-date{margin-left:12rpx;font-weight:600;color:var(--muted);font-size:22rpx}
+.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 #F5D5A8;
+ 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{background:#fff;border-radius:36rpx;padding:26rpx;box-shadow:var(--shadow);border:1rpx solid transparent;display:flex;gap:18rpx;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;font-size:24rpx;font-weight:900;
+ 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:28rpx;font-weight:700}
-.pk-p{color:var(--muted);font-size:24rpx;line-height:1.45;margin-top:10rpx}
-.ai-plan-tip{color:var(--muted);font-size:26rpx;line-height:1.6;margin-bottom:16rpx}
+.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)}
-.calendar{background:#fff;border-radius:44rpx;padding:28rpx;box-shadow:var(--shadow)}
-.cal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20rpx;font-weight:900;font-size:30rpx}
-.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:12rpx;text-align:center}
-.cal-w{font-size:22rpx;color:var(--muted);padding:8rpx 0}
+/* 日历 */
+.calendar{background:#fff;border-radius:var(--r-lg);padding:var(--sp-4);box-shadow:var(--sd-1)}
+.cal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--sp-3);font-weight:var(--fw-b);font-size:var(--fs-lg)}
+.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--sp-2);text-align:center}
+.cal-w{font-size:var(--fs-cap);color:var(--muted);padding:var(--sp-1) 0}
.cal-cell{
- height:76rpx;border-radius:24rpx;display:flex;align-items:center;justify-content:center;
- font-weight:800;font-size:26rpx;background:#FBFAF8;position:relative;
+ height:76rpx;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;
+ font-weight:var(--fw-b);font-size:var(--fs-sm);background:var(--surface-2);position:relative;
}
.cal-cell.blank{background:transparent}
-.cal-cell.today{background:#FFF3DF;color:var(--primary-dark)}
-.cal-cell.tasked::after{content:"";position:absolute;bottom:10rpx;width:10rpx;height:10rpx;border-radius:50%;background:var(--green)}
+.cal-cell.today{background:var(--primary-soft);color:var(--primary-dark)}
+.cal-cell.tasked::after{content:"";position:absolute;bottom:8rpx;width:8rpx;height:8rpx;border-radius:50%;background:var(--green)}
.cal-cell.sel{background:var(--primary);color:#fff}
.cal-cell.sel.tasked::after{background:#fff}
-.day-detail{margin-top:24rpx;border-top:1rpx solid var(--line);padding-top:24rpx}
-.dd-title{font-weight:900;font-size:28rpx;margin-bottom:16rpx}
-.dd-item{display:flex;align-items:center;gap:16rpx;padding:14rpx 0}
-.dd-tag{flex:none;font-size:20rpx;font-weight:700;padding:2rpx 12rpx;border-radius:999rpx}
-.dd-tag.plan{background:#FFF2DC;color:var(--primary-dark)}
-.dd-tag.task{background:#E6F4EA;color:#2E7D5B}
-.dd-tag.rem{background:#EAF0FF;color:#3B6BE5}
-.dd-b{font-size:27rpx;color:var(--text)}
+/* 某天的安排 */
+.day-detail{margin-top:var(--sp-4);border-top:1rpx solid var(--line);padding-top:var(--sp-4)}
+.dd-title{font-weight:var(--fw-b);font-size:var(--fs-md);margin-bottom:var(--sp-3)}
+.dd-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0}
+.dd-tag{flex:none;font-size:var(--fs-cap);font-weight:var(--fw-b);padding:2rpx var(--sp-2);border-radius:var(--r-full)}
+.dd-tag.plan{background:var(--primary-soft);color:var(--primary-ink)}
+.dd-tag.task{background:var(--green-soft);color:var(--green-ink)}
+.dd-tag.rem{background:var(--blue-soft);color:var(--blue-ink)}
+.dd-b{font-size:var(--fs-md);color:var(--text)}
.dd-b.done{text-decoration:line-through;color:var(--muted)}
-.dd-empty{padding:20rpx 0;color:var(--muted);font-size:26rpx;text-align:center}
-.extracted{display:grid;grid-template-columns:1fr 1fr;gap:16rpx;margin:24rpx 0}
-.extract{background:#FBFAF8;border-radius:30rpx;padding:20rpx;font-size:24rpx}
-.ex-b{display:block;font-size:26rpx;margin-bottom:6rpx;font-weight:700}
-
-/* 页面不自身滚动,改由 page-scroll 承载滚动(隐藏滚动条)*/
+/* 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)}
diff --git a/pets-fe/pages/profile/profile.json b/pets-fe/pages/profile/profile.json
index 24ea6ea..fa34741 100644
--- a/pets-fe/pages/profile/profile.json
+++ b/pets-fe/pages/profile/profile.json
@@ -2,6 +2,7 @@
"usingComponents": {
"nav-bar": "/components/nav-bar/nav-bar",
"bottom-sheet": "/components/bottom-sheet/bottom-sheet",
- "fab": "/components/fab/fab"
+ "fab": "/components/fab/fab",
+ "pt-icon": "/components/pt-icon/index"
}
}
diff --git a/pets-fe/pages/profile/profile.wxml b/pets-fe/pages/profile/profile.wxml
index cbdde59..881e725 100644
--- a/pets-fe/pages/profile/profile.wxml
+++ b/pets-fe/pages/profile/profile.wxml
@@ -6,27 +6,27 @@
{{pet.emoji}}
- 📷
+
{{pet.name}}
{{pet.age}}|{{pet.weight}}|{{pet.stage}}
{{pet.breed}}{{pet.breed && pet.color ? ' · ' : ''}}{{pet.color}}
-
+
- 宠物档案(编辑)已完善 {{profilePct}}% ›
- 提醒设置 {{summary.reminders}} 条 ›
- 健康记录 {{summary.records}} 条 ›
- 多宠物管理 {{summary.pets}} 只 ›
+ 宠物档案(编辑)已完善 {{profilePct}}%
+ 提醒设置{{summary.reminders}} 条
+ 健康记录{{summary.records}} 条
+ 多宠物管理{{summary.pets}} 只
- 会员权益 {{summary.pro_status === 'active' ? '已开通' : '未开通'}} ›
- 数据导出 文本 ›
- 意见反馈 去填写 ›
- 关于我们 v0.2 ›
+ 会员权益{{summary.pro_status === 'active' ? '已开通' : '未开通'}}
+ 数据导出文本
+ 意见反馈去填写
+ 关于我们v0.2
diff --git a/pets-fe/pages/profile/profile.wxss b/pets-fe/pages/profile/profile.wxss
index 4cf2b0a..8684038 100644
--- a/pets-fe/pages/profile/profile.wxss
+++ b/pets-fe/pages/profile/profile.wxss
@@ -1,16 +1,25 @@
-.profile-header{text-align:center;padding:24rpx 0 32rpx}
-.ph-avatar{margin:0 auto 20rpx;width:152rpx;height:152rpx;font-size:76rpx;border-radius:56rpx;position:relative;overflow:visible}
-.ph-avatar-img{width:100%;height:100%;border-radius:56rpx}
-.ph-avatar-cam{position:absolute;right:-6rpx;bottom:-6rpx;width:52rpx;height:52rpx;line-height:52rpx;text-align:center;font-size:26rpx;background:#fff;border-radius:50%;box-shadow:var(--shadow)}
-.ph-name{font-size:44rpx;font-weight:800}
-.ph-meta{font-size:26rpx;margin-top:10rpx}
+.profile-header{text-align:center;padding:var(--sp-4) 0 var(--sp-5)}
+.ph-avatar{margin:0 auto var(--sp-3);width:152rpx;height:152rpx;font-size:76rpx;border-radius:var(--r-lg);position:relative;overflow:visible}
+.ph-avatar-img{width:100%;height:100%;border-radius:var(--r-lg)}
+.ph-avatar-cam{
+ position:absolute;right:-6rpx;bottom:-6rpx;width:52rpx;height:52rpx;
+ display:flex;align-items:center;justify-content:center;color:var(--text-2);
+ background:#fff;border-radius:50%;box-shadow:var(--sd-1);
+}
+.ph-name{font-size:var(--fs-2xl);font-weight:var(--fw-b)}
+.ph-meta{font-size:var(--fs-sm);margin-top:var(--sp-1)}
-.profile-list{background:#fff;border-radius:48rpx;box-shadow:var(--shadow);overflow:hidden;margin-bottom:28rpx}
+.profile-list{background:#fff;border-radius:var(--r-lg);box-shadow:var(--sd-1);overflow:hidden;margin-bottom:var(--sp-4)}
.profile-row{
- display:flex;align-items:center;justify-content:space-between;min-height:104rpx;padding:0 32rpx;
- border-bottom:1rpx solid var(--line);font-size:28rpx;font-weight:800;
+ display:flex;align-items:center;gap:var(--sp-3);min-height:104rpx;padding:0 var(--sp-4);
+ border-bottom:1rpx solid var(--line);font-size:var(--fs-md);font-weight:var(--fw-b);
}
.profile-row:last-child{border-bottom:0}
-.pr-val{color:var(--muted);font-weight:700;font-size:26rpx}
-
-/* 页面不自身滚动,改由 page-scroll 承载滚动(隐藏滚动条)*/
+.pr-ic{
+ width:56rpx;height:56rpx;border-radius:var(--r-xs);flex:none;
+ display:flex;align-items:center;justify-content:center;
+ background:var(--primary-soft);color:var(--primary-ink);
+}
+.pr-label{flex:1;min-width:0}
+.pr-val{color:var(--muted);font-weight:var(--fw);font-size:var(--fs-sm)}
+.pr-arrow{color:var(--muted2);display:flex;align-items:center;flex:none}
diff --git a/pets-fe/pages/record/record.js b/pets-fe/pages/record/record.js
index 45bae8b..6adc7a2 100644
--- a/pets-fe/pages/record/record.js
+++ b/pets-fe/pages/record/record.js
@@ -15,10 +15,34 @@ function fmtTime(iso) {
if (d.toDateString() === y.toDateString()) return '昨天 ' + hm;
return d.getMonth() + 1 + '月' + d.getDate() + '日';
}
+// 记录类型 → 配色。和首页快速记录入口用同一套分组:
+// 体重/疫苗=橙、便便/饮食=绿、异常/用药=蓝、消费/照片=紫
+const TYPE_TONE = {
+ weight: 'tone-1', vaccine: 'tone-1', deworm: 'tone-1',
+ poop: 'tone-2', food: 'tone-2',
+ symptom: 'tone-3', medicine: 'tone-3',
+ cost: 'tone-4', photo: 'tone-4',
+};
+
+// 记一笔的九个入口
+const RECORD_ITEMS = [
+ { type: 'weight', icon: 'weight', label: '体重', tone: 'tone-1' },
+ { type: 'food', icon: 'food', label: '饮食', tone: 'tone-2' },
+ { type: 'poop', icon: 'poop', label: '便便', tone: 'tone-2' },
+ { type: 'symptom', icon: 'symptom', label: '异常', tone: 'tone-3' },
+ { type: 'medicine', icon: 'medicine', label: '用药', tone: 'tone-3' },
+ { type: 'cost', icon: 'cost', label: '消费', tone: 'tone-4' },
+ { type: 'vaccine', icon: 'vaccine', label: '疫苗', tone: 'tone-1' },
+ { type: 'deworm', icon: 'deworm', label: '驱虫', tone: 'tone-1' },
+ { type: 'photo', icon: 'photo', label: '照片', tone: 'tone-4' },
+];
+
function mapRecord(r) {
return {
id: r.id,
- icon: r.icon || '✍️',
+ // 图标按 type 取(9 值枚举,可靠);老数据 icon 字段里的 emoji 只作兜底
+ type: r.type || r.icon || '',
+ tone: TYPE_TONE[r.type] || 'tone-1',
title: r.title,
desc: fmtTime(r.occurred_at) + (r.description ? '|' + r.description : ''),
image: r.image_url || '',
@@ -80,6 +104,7 @@ Page({
recHasMore: false,
recFilters: REC_FILTERS,
recFilterIdx: 0,
+ recordItems: RECORD_ITEMS,
trendSvg: '',
trendStats: null,
trendDots: [],
@@ -114,8 +139,9 @@ Page({
curFilter() {
return this.data.recFilters[this.data.recFilterIdx].key;
},
+ // 来自 seg-tabs 的 change 事件
onFilterTap(e) {
- const i = Number(e.currentTarget.dataset.index);
+ const i = Number(e.detail.index);
if (i === this.data.recFilterIdx) return;
this.setData({ recFilterIdx: i }, () => this.loadRecords());
},
diff --git a/pets-fe/pages/record/record.json b/pets-fe/pages/record/record.json
index 075a8b2..58b7029 100644
--- a/pets-fe/pages/record/record.json
+++ b/pets-fe/pages/record/record.json
@@ -3,6 +3,8 @@
"nav-bar": "/components/nav-bar/nav-bar",
"pet-switch": "/components/pet-switch/pet-switch",
"bottom-sheet": "/components/bottom-sheet/bottom-sheet",
- "fab": "/components/fab/fab"
+ "fab": "/components/fab/fab",
+ "pt-icon": "/components/pt-icon/index",
+ "seg-tabs": "/components/seg-tabs/index"
}
}
diff --git a/pets-fe/pages/record/record.wxml b/pets-fe/pages/record/record.wxml
index 554392c..68a12ec 100644
--- a/pets-fe/pages/record/record.wxml
+++ b/pets-fe/pages/record/record.wxml
@@ -2,23 +2,15 @@
-
- 快速记录
- 先选择宠物,再记录体重、饮食、异常和消费。
-
-
-
- ⚖️体重
- 🍽️饮食
- 💩便便
- 🤒异常
- 💊用药
- 💰消费
- 💉疫苗
- 🛡️驱虫
- 📷照片
+
+ 记一笔
+
+
+ {{item.label}}
+
+
@@ -40,32 +32,28 @@
{{selDot.value}}kg
{{selDot.delta > 0 ? '+' : ''}}{{selDot.delta}}kg
- 📝 {{selDot.note}}
+ {{selDot.note}}
这次没有填备注
点击圆点查看每次记录
- 先记录几次体重,这里会自动画出趋势曲线
+ 先记录几次体重,这里会自动画出趋势曲线
健康时间轴摘要
-
- {{item.label}}
-
+
- {{item.icon}}
+
{{item.title}}{{item.desc}}
- 这个分类下还没有记录
+ 这个分类下还没有记录
长按任意一条可删除
查看更多(共 {{recTotal}} 条)
diff --git a/pets-fe/pages/record/record.wxss b/pets-fe/pages/record/record.wxss
index 6d2c273..33a0db1 100644
--- a/pets-fe/pages/record/record.wxss
+++ b/pets-fe/pages/record/record.wxss
@@ -1,13 +1,5 @@
-.record-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24rpx;margin-bottom:28rpx}
-.record-item{
- height:184rpx;background:#fff;border-radius:44rpx;box-shadow:var(--shadow);
- display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16rpx;
- font-weight:900;color:var(--text);font-size:28rpx;
-}
-.ri-ic{font-size:56rpx}
-
.mini-chart{
- height:256rpx;border-radius:36rpx;margin-top:24rpx;position:relative;overflow:hidden;
+ height:256rpx;border-radius:var(--r-md);margin-top:var(--sp-4);position:relative;overflow:hidden;
background:
linear-gradient(180deg,rgba(115,190,157,.16),rgba(115,190,157,0)),
repeating-linear-gradient(0deg,#fff,#fff 60rpx,#EFE8DE 62rpx);
@@ -15,41 +7,38 @@
.chart-line{position:absolute;left:36rpx;right:36rpx;top:44rpx;bottom:44rpx;width:auto;height:auto}
.dot-layer{position:absolute;left:36rpx;right:36rpx;top:44rpx;bottom:44rpx}
.dot{position:absolute;width:40rpx;height:40rpx;margin:-20rpx 0 0 -20rpx;border-radius:50%;}
-.dot::after{content:'';position:absolute;left:50%;top:50%;width:18rpx;height:18rpx;margin:-9rpx 0 0 -9rpx;border-radius:50%;background:#fff;border:4rpx solid #73BE9D;box-sizing:border-box}
-.dot.on::after{width:26rpx;height:26rpx;margin:-13rpx 0 0 -13rpx;background:#73BE9D;box-shadow:0 0 0 6rpx rgba(115,190,157,.25)}
-.trend-stats{margin-top:16rpx;font-size:26rpx;color:var(--muted)}
-.point-detail{margin-top:20rpx;padding:24rpx 28rpx;border-radius:32rpx;background:#F3FAF6;border:1rpx solid #DCEFE4}
-.pd-main{display:flex;align-items:baseline;gap:20rpx}
-.pd-date{font-size:26rpx;color:var(--muted)}
-.pd-weight{font-size:40rpx;font-weight:800;color:#2E7D5B}
-.pd-delta{font-size:26rpx;font-weight:700}
-.pd-delta.up{color:var(--red)}
-.pd-delta.down{color:#2E7D5B}
-.pd-note{margin-top:12rpx;font-size:28rpx;color:#4A4A46;line-height:1.5}
+.dot::after{content:'';position:absolute;left:50%;top:50%;width:18rpx;height:18rpx;margin:-9rpx 0 0 -9rpx;border-radius:50%;background:#fff;border:4rpx solid var(--green);box-sizing:border-box}
+.dot.on::after{width:26rpx;height:26rpx;margin:-13rpx 0 0 -13rpx;background:var(--green);box-shadow:0 0 0 6rpx rgba(115,190,157,.25)}
+.trend-stats{margin-top:var(--sp-3);font-size:var(--fs-sm);color:var(--muted)}
+
+.point-detail{
+ margin-top:var(--sp-3);padding:var(--sp-4);border-radius:var(--r-md);
+ background:var(--green-soft);border:1rpx solid #DCEFE4;
+}
+.pd-main{display:flex;align-items:baseline;gap:var(--sp-3)}
+.pd-date{font-size:var(--fs-sm);color:var(--muted)}
+.pd-weight{font-size:var(--fs-xl);font-weight:var(--fw-b);color:var(--green-ink)}
+.pd-delta{font-size:var(--fs-sm);font-weight:var(--fw-b)}
+.pd-delta.up{color:var(--red-ink)}
+.pd-delta.down{color:var(--green-ink)}
+.pd-note{margin-top:var(--sp-2);font-size:var(--fs-md);color:var(--text-2);line-height:1.5}
.pd-note.muted{color:var(--muted)}
-.chart-hint{margin-top:12rpx;font-size:22rpx;color:var(--muted);text-align:center}
-.chart-empty{margin-top:24rpx;padding:48rpx 24rpx;border-radius:36rpx;background:#FBFAF8;color:var(--muted);font-size:26rpx;text-align:center}
+.chart-hint{margin-top:var(--sp-2);font-size:var(--fs-cap);color:var(--muted);text-align:center}
-.health-timeline{display:flex;flex-direction:column;gap:20rpx}
-.tl-empty{padding:36rpx 8rpx;text-align:center;color:var(--muted);font-size:26rpx}
-.tl-more{margin-top:20rpx;padding:20rpx;text-align:center;color:var(--primary-dark);background:#FBFAF8;border-radius:28rpx;font-size:26rpx;font-weight:700}
-.health-event{display:flex;gap:20rpx;background:#FBFAF8;border-radius:32rpx;padding:24rpx}
+.health-timeline{display:flex;flex-direction:column;gap:var(--sp-2)}
+.health-event{display:flex;gap:var(--sp-3);background:var(--surface-2);border-radius:var(--r-md);padding:var(--sp-4)}
+/* 底色和文字色由 .tone-N 提供(记录类型决定),这里只管形状 */
.event-dot{
- width:68rpx;height:68rpx;border-radius:26rpx;flex:none;
- display:flex;align-items:center;justify-content:center;background:#FFF0D7;font-size:34rpx;
+ width:64rpx;height:64rpx;border-radius:var(--r-sm);flex:none;
+ display:flex;align-items:center;justify-content:center;
}
-.he-b{font-size:28rpx;font-weight:700}
-.he-p{color:var(--muted);font-size:24rpx;line-height:1.45;margin-top:6rpx}
+.he-b{font-size:var(--fs-md);font-weight:var(--fw-b)}
+.he-p{color:var(--muted);font-size:var(--fs-sm);line-height:1.45;margin-top:6rpx}
.he-body{flex:1;min-width:0}
-.he-img{margin-top:14rpx;width:220rpx;height:220rpx;border-radius:20rpx}
+.he-img{margin-top:var(--sp-2);width:220rpx;height:220rpx;border-radius:var(--r-sm)}
-/* 页面不自身滚动,改由 page-scroll 承载滚动(隐藏滚动条)*/
-
-/* 时间轴类型筛选 */
-.rec-filter{white-space:nowrap;margin-bottom:20rpx}
-.rf-chip{
- display:inline-block;padding:10rpx 26rpx;margin-right:14rpx;border-radius:999rpx;
- background:#fff;border:1rpx solid var(--line);color:var(--muted);font-size:24rpx;font-weight:700;
+.tl-tip{margin-top:var(--sp-3);text-align:center;color:var(--muted);font-size:var(--fs-cap)}
+.tl-more{
+ margin-top:var(--sp-3);padding:var(--sp-3);text-align:center;color:var(--primary-dark);
+ background:var(--surface-2);border-radius:var(--r-md);font-size:var(--fs-sm);font-weight:var(--fw-b);
}
-.rf-chip.on{background:#FFF2DC;color:var(--primary-dark);border-color:#FFD39A}
-.tl-tip{margin-top:16rpx;text-align:center;color:var(--muted);font-size:22rpx}
diff --git a/pets-fe/pages/report/report.json b/pets-fe/pages/report/report.json
index 075a8b2..cfab932 100644
--- a/pets-fe/pages/report/report.json
+++ b/pets-fe/pages/report/report.json
@@ -3,6 +3,7 @@
"nav-bar": "/components/nav-bar/nav-bar",
"pet-switch": "/components/pet-switch/pet-switch",
"bottom-sheet": "/components/bottom-sheet/bottom-sheet",
- "fab": "/components/fab/fab"
+ "fab": "/components/fab/fab",
+ "pt-icon": "/components/pt-icon/index"
}
}
diff --git a/pets-fe/pages/report/report.wxml b/pets-fe/pages/report/report.wxml
index 5e175f6..be7b06a 100644
--- a/pets-fe/pages/report/report.wxml
+++ b/pets-fe/pages/report/report.wxml
@@ -2,11 +2,6 @@
-
- 成长报告
- 每只宠物的成长报告、账单与健康摘要。
-
-
@@ -50,7 +45,7 @@
Pro 会员
解锁 365 天计划、PDF 健康档案、月度报告、多宠物管理与年度账单。
-
+
diff --git a/pets-fe/pages/report/report.wxss b/pets-fe/pages/report/report.wxss
index b99f71a..2106ca1 100644
--- a/pets-fe/pages/report/report.wxss
+++ b/pets-fe/pages/report/report.wxss
@@ -1,13 +1,10 @@
.report-card{background:linear-gradient(135deg,#FFFFFF,#F2FAF6)}
-.rc-text{color:var(--muted);font-size:28rpx;line-height:1.6}
-.stat-b{display:block;font-size:36rpx;margin-bottom:8rpx;font-weight:800}
-.stat-s{font-size:22rpx;color:var(--muted)}
+.rc-text{color:var(--text-2);font-size:var(--fs-md);line-height:1.6}
-.bill-bars{display:flex;flex-direction:column;gap:20rpx;margin-top:24rpx}
-.bill-row{display:grid;grid-template-columns:88rpx 1fr 108rpx;gap:16rpx;align-items:center;font-size:24rpx}
+.bill-bars{display:flex;flex-direction:column;gap:var(--sp-3);margin-top:var(--sp-4)}
+.bill-row{display:grid;grid-template-columns:88rpx 1fr 108rpx;gap:var(--sp-3);align-items:center;font-size:var(--fs-sm)}
.bill-cat{color:var(--text)}
-.bill-amt{font-weight:900;text-align:right}
-.mini-bar{height:18rpx;border-radius:999rpx;background:#F0E7DD;overflow:hidden}
-.mini-bar-fill{display:block;height:100%;border-radius:999rpx;background:linear-gradient(90deg,var(--blue),#A9C8F6)}
-
-/* 页面不自身滚动,改由 page-scroll 承载滚动(隐藏滚动条)*/
+.bill-amt{font-weight:var(--fw-b);text-align:right}
+/* 账单条比全局 .bar 细一档,蓝色是「花费」的语义色 */
+.mini-bar{height:var(--sp-2);border-radius:var(--r-full);background:#F0E7DD;overflow:hidden}
+.mini-bar-fill{display:block;height:100%;border-radius:var(--r-full);background:var(--blue)}