From dbfb3c08c9184782c259247627b7e9255ef38390 Mon Sep 17 00:00:00 2001 From: lanyuanxiaoyao Date: Sat, 21 Mar 2026 14:36:02 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E6=88=91?= =?UTF-8?q?=E7=9A=84=E6=8A=80=E8=83=BD=E9=A1=B5=E9=9D=A2=E8=A1=A8=E6=A0=BC?= =?UTF-8?q?=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除版本、安装量、评分三列 - 将技能名称和描述分为两列显示 - 移除技能名称加粗样式 - 修复状态显示逻辑,只显示技能整体状态,不再额外显示审核中徽章 - 同步下架按钮禁用逻辑,详情页也添加 hasPendingReview 检查 - 移除技能描述字体特殊样式 --- .../specs/developer-my-skills-table/spec.md | 62 +++++++++++++++++++ src/pages/developer/MySkillsPage.jsx | 32 ++++------ src/pages/developer/SkillEditorPage.jsx | 27 +++++--- 3 files changed, 90 insertions(+), 31 deletions(-) create mode 100644 openspec/specs/developer-my-skills-table/spec.md diff --git a/openspec/specs/developer-my-skills-table/spec.md b/openspec/specs/developer-my-skills-table/spec.md new file mode 100644 index 0000000..4df2be0 --- /dev/null +++ b/openspec/specs/developer-my-skills-table/spec.md @@ -0,0 +1,62 @@ +# 开发者我的技能列表 - 规格说明 + +## 功能描述 + +展示开发者自己创建的技能列表,支持筛选和操作,提供清晰的表格布局。 + +## 表格列定义 + +表格必须包含以下列: + +| 列名 | 内容 | 显示要求 | +|------|------|----------| +| 技能名称 | `skill.name` | 普通字重,不加粗 | +| 技能描述 | `skill.desc` | 正常显示 | +| 分类 | `skill.category` | 正常显示 | +| 状态 | `skill.status` | 使用 `skillStatusMap` 映射显示中文状态和对应样式,**只显示技能整体状态** | +| 操作 | 编辑/下架/删除按钮 | 保持按钮组布局 | + +**移除以下列:** +- 版本 (`version`) +- 安装量 (`installs`) +- 评分 (`rating`) + +## 状态显示规则 + +1. **只显示技能的整体状态**,使用 `skillStatusMap` 映射: + - `dev` → 开发中 + - `published` → 已上架 + - `unlisting` → 下架审核中 + - `unlisted` → 已下架 + +2. **不再额外显示** `skill.hasPendingReview` 的"审核中"徽章。版本审核状态在技能详情页展示即可。 + +## 操作按钮规则 + +### 下架按钮 +- 只在 `skill.status === 'published'` 时显示 +- 当 `skill.hasPendingReview === true` 时禁用,提示"存在审核中的版本,请先撤回后再下架" +- 点击触发出下架操作 + +### 删除按钮 +- 当 `skill.status === 'published'` 时禁用,提示"已上架的技能需要先下架才能删除" +- 点击触发确认删除弹框 +- 确认后执行删除操作 + +### 编辑按钮 +- 始终显示 +- 点击跳转到技能详情编辑页 + +以上规则必须与**技能详情页**的按钮逻辑保持完全一致。 + +## 交互行为 + +- 点击表格行任意位置跳转到技能详情编辑页(保持不变) +- 筛选功能保持不变,支持关键词、分类、状态筛选 +- 分页保持不变 + +## 样式要求 + +- 保持现有表格样式体系 +- 不引入新的样式类名 +- 技能名称使用正常字重(移除 `fontWeight: 600`) diff --git a/src/pages/developer/MySkillsPage.jsx b/src/pages/developer/MySkillsPage.jsx index 6f79b14..136e618 100644 --- a/src/pages/developer/MySkillsPage.jsx +++ b/src/pages/developer/MySkillsPage.jsx @@ -110,33 +110,23 @@ function MySkillsPage({ onSkillClick }) { 技能名称 + 技能描述 分类 - 版本 状态 - 安装量 - 评分 操作 - {filteredList.map(skill => ( - onSkillClick(skill.id)} style={{ cursor: 'pointer' }}> - -
{skill.name}
-
{skill.desc}
- - {skill.category} - {skill.version} - - - {skillStatusMap[skill.status]?.text || skill.status} - - {skill.hasPendingReview && ( - 审核中 - )} - - {skill.installs} - {skill.rating || '-'} + {filteredList.map(skill => ( + onSkillClick(skill.id)} style={{ cursor: 'pointer' }}> + {skill.name} + {skill.desc} + {skill.category} + + + {skillStatusMap[skill.status]?.text || skill.status} + +
-
- {skill.status === 'published' && ( - - )} - + )} +