新增「未公开」状态;待审核改列表式,只留通过并公开
用户要求:
1. 待审核/全部问题都用列表形式
2. 待审核去掉「关闭说明」整块,后面只加一个「通过并公开」按钮
3. 标题本身就是进管理页的链接,去掉「进入管理」
4. 「未公开」应当是一种状态:提交后初始状态不是「待处理」而是「未公开」
状态流转(用户定义):
提交 → 未公开
├─ 通过并公开 → 待处理 → 处理中 → 已解决 → 已关闭
└─ 直接关闭 → 已关闭(不经过待处理)
每次状态变更、每次有人回复,都给提问人发信
实现:
- statuses 新增 hidden「未公开」,sort=0 排最前,其余顺延
幂等迁移:老库检测到没有 hidden 就整体后移一位再插入,
并把 visible=0 且 status=open 的存量数据归到 hidden
- new.php 初始状态按可见性决定:未公开→hidden,公开→open
(以前一律写 open,后台「待审核」里显示的全是「待处理」,状态反映不出事实)
- approve 动作:visible=1 且 hidden→open,并用更新后的行渲染邮件
- 详情页「通过并公开」按钮原来传原状态(未公开时通过后仍是未公开),改为固定传 open
- 待审核查询改为 status=hidden(兼容老数据 visible=0 且 open),
不再用 visible=0 AND status<>closed —— 那个条件会把「已关闭但未公开」也收进来
- 新增 fb_admin_pending_row() 列表行渲染:标题即链接、右侧单个按钮
- 删除 fb_admin_thread_card() 及「关闭说明」表单
- 新增 .plist/.prow 列表样式与 .st-hidden 状态徽标(中性灰)
- mailer 补 hidden 状态的文案,避免落到兜底
验证(线上真实数据):6 个状态齐全、提交落 hidden、
待审核能查到且不含已公开、通过后转 open 并移出待审核、
后续 doing/resolved/closed 推进正常、6 个状态邮件均能渲染、
待审核行结构 10 项断言全过(无关闭说明/无 note/无进入管理/标题可点)。
测试数据已清理,用户原有 4 条数据完好。
This commit is contained in:
+38
-4
@@ -189,10 +189,11 @@ main.wrap{padding-top:24px; padding-bottom:40px; min-height:60vh}
|
||||
overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
|
||||
}
|
||||
.sw-badge-sm .sw-badge-nm{font-size:14px}
|
||||
.sw-badge-md .sw-badge-nm{font-size:19px}
|
||||
.sw-badge-lg .sw-badge-nm{font-size:22px; font-weight:700}
|
||||
/* 顶栏主标题:比「选择软件」标签(13.5px)大两号 = 17px。
|
||||
* 之前给到 26px 反而比内容区标题还小,主次颠倒;这里保持克制。 */
|
||||
.sw-badge-md .sw-badge-nm{font-size:16px; font-weight:600}
|
||||
/* 内容区:只是软件标识,字号刻意小于顶栏标题(17px),
|
||||
* 避免「上面的字比下面的小」这种主次颠倒。 */
|
||||
.sw-badge-lg .sw-badge-nm{font-size:15px; font-weight:600}
|
||||
/* 顶栏主标题:比「选择软件」标签(13.5px)大两号 = 17px,且大于内容区的 15px */
|
||||
.sw-badge-brand .sw-badge-nm{font-size:17px; font-weight:700; letter-spacing:.2px}
|
||||
/* 页头副行:图标 + 软件名 */
|
||||
.page-sw-id{margin:0; display:flex; align-items:center}
|
||||
@@ -368,6 +369,37 @@ main.wrap{padding-top:24px; padding-bottom:40px; min-height:60vh}
|
||||
.item-ex{color:var(--muted); font-size:14px; margin:8px 0 8px; word-break:break-word}
|
||||
.item-meta{display:flex; flex-wrap:wrap; align-items:center; gap:6px; font-size:13px; color:var(--muted)}
|
||||
.item-meta .who{color:#3a424d; font-weight:600}
|
||||
|
||||
/* ---------- 后台「待审核」列表 ----------
|
||||
* 列表式:一屏能看多条,右侧固定一个「通过并公开」。
|
||||
* 详情/关闭说明留在管理页里填,列表页不塞表单。 */
|
||||
.plist{display:flex; flex-direction:column; gap:10px}
|
||||
.prow{
|
||||
display:flex; align-items:flex-start; gap:16px;
|
||||
background:var(--card); border:1px solid var(--line);
|
||||
border-radius:12px; padding:13px 16px;
|
||||
}
|
||||
.prow:hover{border-color:var(--line-strong)}
|
||||
.prow-main{flex:1; min-width:0}
|
||||
.prow-top{display:flex; align-items:center; flex-wrap:wrap; gap:8px}
|
||||
.prow-title{
|
||||
font-weight:600; font-size:15.5px; color:var(--fg);
|
||||
flex:1; min-width:160px; word-break:break-word;
|
||||
}
|
||||
.prow-title:hover{color:var(--brand); text-decoration:underline}
|
||||
.prow-ex{
|
||||
color:var(--muted); font-size:13.5px; margin:6px 0;
|
||||
word-break:break-word; display:-webkit-box; -webkit-line-clamp:2;
|
||||
-webkit-box-orient:vertical; overflow:hidden;
|
||||
}
|
||||
.prow-meta{display:flex; flex-wrap:wrap; align-items:center; gap:6px; font-size:12.5px; color:var(--muted)}
|
||||
.prow-meta .who{color:#3a424d; font-weight:600}
|
||||
.prow-act{flex:none; padding-top:2px}
|
||||
.prow-act .btn{white-space:nowrap}
|
||||
@media (max-width:600px){
|
||||
.prow{flex-direction:column; gap:10px}
|
||||
.prow-act{align-self:flex-start}
|
||||
}
|
||||
/* 问题编号:便于按 id 逐条跟进与引用 */
|
||||
.item-id{
|
||||
flex:none; font-size:12.5px; font-weight:600; color:var(--muted);
|
||||
@@ -383,6 +415,8 @@ main.wrap{padding-top:24px; padding-bottom:40px; min-height:60vh}
|
||||
}
|
||||
.badge.st{background:#f1f3f5; color:#5b636e}
|
||||
.badge.st-open{background:var(--warn-soft); color:var(--warn)}
|
||||
/* 「未公开」= 还没审过,用中性灰,不要和「已关闭」混淆 */
|
||||
.badge.st-hidden{background:#eef0f3; color:#6b7684}
|
||||
.badge.st-doing{background:var(--brand-soft); color:var(--brand)}
|
||||
.badge.st-resolved{background:var(--ok-soft); color:var(--ok)}
|
||||
.badge.st-closed{background:#f1f3f5; color:#8a929c}
|
||||
|
||||
Reference in New Issue
Block a user