feat(category): S9 内容管理 IA 切分——栏目页降级为内容概览 + 首页形态误导文案修正
build / build (push) Successful in 2m20s

- 新建 components/category/CategoryContentSummary.vue(194):列表型栏目右侧不再挂文章表格,
  改「共 N 篇 + 最近 5 行 + 查看全部」概览;计数口径=直属+子孙(与门户 collectListDescendantIds
  同语义)、全状态计入,一次 page 请求同时拿 total 与 5 行(零新接口、零后端改动)
- CategoryManage.vue 列表分支换组件 + 头注更新;编辑弹窗「首页展示形态」提示改为
  「展示形态由当前皮肤包的主题化实现决定,未实现的形态回落通用骨架渲染」(v2 §七 验收第 8 条点名项)
- ArticleListPanel.vue +7:setup 读 route.query.categoryId 作为初始筛选(深链回显)
- types/cms.ts 1 行:ArticlePageQuery.categoryIds 放宽为 number|string(逗号串),手册未点名、已在
  audit-D §六 披露为偏差
- categoryWorkbench.spec.ts 15→17 例:T-D-01 按裁决改写旧断言(概览而非表格,并机器证明无操作列)、
  T-D-02 深链回显、T-D-03 查看全部跳转;夹具上提 + beforeEach 复位,默认值与旧硬编码行为逐字一致
- 未动 router/routes.ts 的 meta.subOf(护栏 siteRouter.spec 8 / siteLayer.spec 16 绿)
- 遗留立案:R-43 fixedCategory/extraHeight 无生产调用方(按纪律未删)/ R-44 概览含子孙而深链只筛直属
  需产品定口径 / R-45 菜单名来自平台模块表 / R-46 ?categoryId 仅读一次
- 前端 166/166 绿 + build:base exit=0;S10 复跑同绿
This commit is contained in:
chenxing
2026-09-22 21:55:23 +08:00
parent 5d048abdae
commit 31cbec152a
5 changed files with 311 additions and 22 deletions
+9 -7
View File
@@ -8,7 +8,7 @@ import CategoryTreePanel from "@/components/CategoryTreePanel.vue";
import CategorySortModal from "@/components/CategorySortModal.vue";
import BatchAddCategory from "@/components/BatchAddCategory.vue";
import SvgIcon from "@/components/SvgIcon.vue";
import ArticleListPanel from "@/components/article/ArticleListPanel.vue";
import CategoryContentSummary from "@/components/category/CategoryContentSummary.vue";
import { categoryApi } from "@/api/module/cms";
import { useCmsStore } from "@/store";
import config from "@/assets/config/host.config";
@@ -17,7 +17,9 @@ import { rootLabelOf, wrapTreeWithRoot } from "@/utils/categoryTree";
import { portalUrlOf, adminPathOf } from "@/utils/sitePath";
/* UserBase group/index 同款交互:图标工具栏(新增/编辑/子组排序/删除)+ ztree(W2:搜索/收起展开按钮移除)。
B5 栏目工作台:右侧类型化面板(列表=文章表格 / 单页=富文本预览 / 外链=直达)。 */
B5 栏目工作台:右侧类型化面板(单页=富文本预览 / 外链=直达)。
P-D1 内容管理 IA 切分:列表型栏目右侧降级为「栏目内容概览」(只读统计 + 最近 5 条),
文章的检索与操作统一在 /article(内容视图)。 */
const store = useCmsStore();
const refTreePanel = useTemplateRef("refTreePanel");
@@ -440,13 +442,13 @@ function openLink(url: string) {
</div>
</div>
<!-- 列表型:本栏目文章管理(联动仅经 categoryId watch,拖拽排序不触发) -->
<ArticleListPanel
<!-- 列表型:只读内容概览(P-D1 结构/内容视图切分;文章操作统一在 /article) -->
<CategoryContentSummary
v-if="selected.type === 1"
class="panel-body"
:category-id="selected.id"
:extra-height="78"
fixed-category
:category-name="selected.name"
:tree="treeData"
/>
<!-- 单页型:正文渲染预览 + 元信息 + 编辑入口 -->
@@ -551,7 +553,7 @@ function openLink(url: string) {
<Select v-model="form.homeStyle" placeholder="默认卡片">
<Option v-for="s in homeStyleDict" :key="s.value" :value="s.value">{{ s.label }}</Option>
</Select>
<p class="form-tip">首页该栏目区块的呈现形态;「双栏新闻卡/媒体聚焦列表」需皮肤包支持(如炫彩校园),旧主题按默认卡展示。也可在「站点设置 → 首页布局」里按区块单独指定形态(以那里为准)。</p>
<p class="form-tip">首页该栏目区块的呈现形态;展示形态由当前皮肤包的主题化实现决定,未实现的形态回落通用骨架渲染。也可在「站点设置 → 首页布局」里按区块单独指定形态(以那里为准)。</p>
</FormItem>
<Divider size="small" orientation="left">SEO 设置</Divider>