feat: 用户可见自己帖子的审核状态

- 发帖后若未直接过审,弹窗明确「审核中,通过后才出现在社区」,
  不再让用户以为发失败/是 bug
- 后端 ListUserPosts:看自己主页时返回待审核/未通过的帖子(带状态),
  看别人仍只返回已发布
- 个人主页帖子加「审核中/未通过」状态标 + 说明
- 我的页加「我的帖子」入口,进自己主页看审核状态

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Blizzard
2026-07-31 08:49:20 +08:00
parent b01effaf5e
commit 603bd5773e
7 changed files with 52 additions and 3 deletions
+4
View File
@@ -3,6 +3,8 @@ const store = require('../../utils/store.js');
const { toastErr } = require('../../utils/ui.js');
const TAG_CLASS = { 求助: 'warn', 经验: 'blue', 精选: 'purple', 避坑: 'red', 晒宠: '' };
// 审核状态 → 展示文案(只在看自己主页时出现)
const STATUS_TEXT = { pending: '审核中', rejected: '未通过' };
function fmtAgo(iso) {
if (!iso) return '';
@@ -47,6 +49,8 @@ Page({
author_emoji: p.author_emoji || '🐾',
tag,
tagClass: TAG_CLASS[tag] || '',
// 只有看自己主页才会拿到非「已发布」的帖子,给个审核状态标
statusText: STATUS_TEXT[p.status] || '',
};
});
const merged = page === 1 ? list : this.data.posts.concat(list);
+3
View File
@@ -20,8 +20,11 @@ module.exports.isUrl = function (s) { return s && s.indexOf('http') === 0; }
<view class="pu-b">{{item.author_name}}</view>
<view class="pu-s">{{item.timeText}}</view>
</view>
<view wx:if="{{item.statusText}}" class="post-status st-{{item.status}}">{{item.statusText}}</view>
<view wx:if="{{item.tag}}" class="tag {{item.tagClass}}">{{item.tag}}</view>
</view>
<view wx:if="{{item.status === 'pending'}}" class="status-note">内容审核中,通过后其他人才能看到</view>
<view wx:elif="{{item.status === 'rejected'}}" class="status-note st-note-red">未通过内容安全审核,仅你可见</view>
<view class="post-content">{{item.content}}</view>
<view wx:if="{{item.images.length}}" class="photo-grid">
<block wx:for="{{item.images}}" wx:for-item="img" wx:key="*this">
+13
View File
@@ -1,2 +1,15 @@
/* 头部整块(头像/昵称/签名/计数/养宠数据/宠物墙)已抽成 components/profile-head
帖子卡走 app.wxss 的 .post-card。这里没有页面独有样式了。 */
/* 审核状态标(只在看自己主页出现) */
.post-status{
padding:2rpx var(--sp-2);border-radius:var(--r-full);
font-size:var(--fs-cap);font-weight:var(--fw-b);margin-right:var(--sp-2);
}
.post-status.st-pending{background:#FDECC8;color:#B26A00}
.post-status.st-rejected{background:var(--red-soft);color:var(--red-ink)}
.status-note{
margin:0 0 var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);
background:var(--surface-2);color:var(--muted);font-size:var(--fs-cap);line-height:1.5;
}
.status-note.st-note-red{background:var(--red-soft);color:var(--red-ink)}