diff --git a/pets-be/internal/handler/community.go b/pets-be/internal/handler/community.go
index 7d448cd..b5367e8 100644
--- a/pets-be/internal/handler/community.go
+++ b/pets-be/internal/handler/community.go
@@ -113,7 +113,8 @@ func (h *Handler) ListComments(c *gin.Context) {
}
type commentReq struct {
- Content string `json:"content"`
+ Content string `json:"content"`
+ Images []string `json:"images"`
}
// CreateComment POST /api/posts/:id/comments
@@ -127,7 +128,7 @@ func (h *Handler) CreateComment(c *gin.Context) {
response.FailParams(c, "评论内容不能为空")
return
}
- comment, err := h.svc.CreateComment(middleware.UserID(c), idParam(c, "id"), req.Content)
+ comment, err := h.svc.CreateComment(middleware.UserID(c), idParam(c, "id"), req.Content, req.Images)
if err != nil {
respondErr(c, err)
return
diff --git a/pets-be/internal/service/community.go b/pets-be/internal/service/community.go
index 077b821..ebb0ec7 100644
--- a/pets-be/internal/service/community.go
+++ b/pets-be/internal/service/community.go
@@ -209,7 +209,7 @@ func (s *Service) ListComments(userID, postID string, offset, limit int) ([]mode
}
// CreateComment 评论
-func (s *Service) CreateComment(userID, postID string, content string) (*model.Comment, error) {
+func (s *Service) CreateComment(userID, postID string, content string, images []string) (*model.Comment, error) {
if _, err := s.GetPost(postID); err != nil {
return nil, err
}
@@ -219,6 +219,10 @@ func (s *Service) CreateComment(userID, postID string, content string) (*model.C
name = user.Nickname
}
comment := model.Comment{PostID: postID, UserID: userID, AuthorName: name, Content: content, Status: "published"}
+ // 配图存 JSON 数组。空数组也要显式写,否则前端拿到 null 还要额外判空
+ if b, err := json.Marshal(images); err == nil && len(images) > 0 {
+ comment.Images = b
+ }
if err := s.db.Transaction(func(tx *gorm.DB) error {
if err := tx.Create(&comment).Error; err != nil {
return err
diff --git a/pets-fe/app.wxss b/pets-fe/app.wxss
index abbe876..ca59719 100644
--- a/pets-fe/app.wxss
+++ b/pets-fe/app.wxss
@@ -357,3 +357,17 @@ page{scrollbar-width:none;-ms-overflow-style:none}
}
.no-pet-b{font-size:var(--fs-lg);font-weight:var(--fw-b)}
.no-pet-p{color:var(--muted);font-size:var(--fs-sm);margin:var(--sp-2) 0 var(--sp-4);line-height:1.6}
+
+/* 宠物切换条固定在导航栏下方。它原本在 scroll-view 里,滚下去就找不到了,
+ 而切宠物是随时要用的动作——尤其多宠用户,看着 A 的数据想切到 B
+ 还得先滚回顶部。移出滚动区,四个主页面通用。 */
+.pet-bar{
+ flex:none;
+ padding:var(--sp-2) var(--pad-x) 0;
+ background:rgba(250,247,242,.92);
+ backdrop-filter:blur(20rpx);
+ -webkit-backdrop-filter:blur(20rpx);
+ border-bottom:1rpx solid rgba(238,230,220,.7);
+}
+/* 条内的 pet-switch 自己带 padding-bottom,这里不再叠加 */
+.pet-bar .pet-switch{padding-bottom:var(--sp-2)}
diff --git a/pets-fe/components/bottom-sheet/bottom-sheet.js b/pets-fe/components/bottom-sheet/bottom-sheet.js
index e69529d..ac93f06 100644
--- a/pets-fe/components/bottom-sheet/bottom-sheet.js
+++ b/pets-fe/components/bottom-sheet/bottom-sheet.js
@@ -416,6 +416,7 @@ Component({
timeText: fmtAgo(c.created_at),
// 没有头像字段,用昵称首字做个色块,比一律显示同一个 emoji 强
initial: (c.author_name || '?').slice(0, 1),
+ imgs: Array.isArray(c.images) ? c.images : [],
})),
}),
)
@@ -954,6 +955,10 @@ Component({
wx.showToast({ title: (e && e.message) || '上传失败', icon: 'none' });
});
},
+ onPreviewCommentImage(e) {
+ const { urls, cur } = e.currentTarget.dataset;
+ if (urls && urls.length) wx.previewImage({ urls, current: cur });
+ },
onRemoveCommentImage(e) {
const list = this.data.commentImages.slice();
list.splice(e.currentTarget.dataset.index, 1);
diff --git a/pets-fe/components/bottom-sheet/bottom-sheet.wxml b/pets-fe/components/bottom-sheet/bottom-sheet.wxml
index 254e776..8be9fb2 100644
--- a/pets-fe/components/bottom-sheet/bottom-sheet.wxml
+++ b/pets-fe/components/bottom-sheet/bottom-sheet.wxml
@@ -330,6 +330,11 @@ module.exports.sel = function (map, key, index, def) {
{{item.timeText}}
{{item.content}}
+
+
+
diff --git a/pets-fe/components/bottom-sheet/bottom-sheet.wxss b/pets-fe/components/bottom-sheet/bottom-sheet.wxss
index f5732a4..360119a 100644
--- a/pets-fe/components/bottom-sheet/bottom-sheet.wxss
+++ b/pets-fe/components/bottom-sheet/bottom-sheet.wxss
@@ -125,3 +125,5 @@
.cm-bar{display:flex;align-items:center;gap:var(--sp-3);margin-top:var(--sp-3)}
.cm-pic{display:flex;align-items:center;gap:var(--sp-1);color:var(--muted);font-size:var(--fs-sm)}
.cm-count{margin-left:auto;color:var(--muted2);font-size:var(--fs-cap)}
+.cm-imgs{display:flex;flex-wrap:wrap;gap:var(--sp-1);margin-top:var(--sp-2)}
+.cm-img{width:150rpx;height:150rpx;border-radius:var(--r-sm)}
diff --git a/pets-fe/pages/home/home.wxml b/pets-fe/pages/home/home.wxml
index aa928af..bd1a877 100644
--- a/pets-fe/pages/home/home.wxml
+++ b/pets-fe/pages/home/home.wxml
@@ -1,5 +1,7 @@
+
+
@@ -13,8 +15,6 @@
-
-
diff --git a/pets-fe/pages/plan/plan.wxml b/pets-fe/pages/plan/plan.wxml
index b1b3270..eada325 100644
--- a/pets-fe/pages/plan/plan.wxml
+++ b/pets-fe/pages/plan/plan.wxml
@@ -1,9 +1,9 @@
+
+
-
-
还没有毛孩子的档案
diff --git a/pets-fe/pages/record/record.wxml b/pets-fe/pages/record/record.wxml
index 87d6d5f..2568598 100644
--- a/pets-fe/pages/record/record.wxml
+++ b/pets-fe/pages/record/record.wxml
@@ -1,9 +1,9 @@
+
+
-
-
还没有毛孩子的档案
diff --git a/pets-fe/pages/report/report.wxml b/pets-fe/pages/report/report.wxml
index 9d14b12..5561f90 100644
--- a/pets-fe/pages/report/report.wxml
+++ b/pets-fe/pages/report/report.wxml
@@ -1,9 +1,9 @@
+
+
-
-
还没有毛孩子的档案