一、超管端设计优化 - 文档管理SOP体系建立,docs目录重组 - 统一用户管理:跨租户全局视角,合并用户管理+公众用户 - 活动监管全模块重构:全部活动(统计卡片+阶段筛选+SuperDetail详情页)、报名数据/作品数据/评审进度(两层合一扁平列表)、成果发布(去Tab+统计+隐藏写操作) - 菜单精简:移除评委管理/评审规则/通知管理 - Bug修复:租户编辑丢失隐藏菜单、pageSize限制、主色统一 二、UGC绘本创作社区P0 - 数据库:10张新表(user_works/user_work_pages/work_tags等) - 子女账号独立化:Child升级为独立User,家长切换+独立登录 - 用户作品库:CRUD+发布审核,8个API - AI创作流程:提交→生成→保存到作品库,4个API - 作品广场:首页改造为推荐流,标签+搜索+排序 - 内容审核(超管端):作品审核+作品管理+标签管理 - 活动联动:WorkSelector作品选择器 - 布局改造:底部5Tab(发现/创作/活动/作品库/我的) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
136 lines
5.8 KiB
Markdown
136 lines
5.8 KiB
Markdown
# 成果发布模块优化 — 设计方案
|
||
|
||
> 所属端:超管端
|
||
> 状态:已实现(待验收)
|
||
> 创建日期:2026-03-27
|
||
> 最后更新:2026-03-27
|
||
|
||
---
|
||
|
||
## 1. 背景与问题
|
||
|
||
成果发布是活动全生命周期的最后一环,超管需要监控"哪些活动发布了成果、哪些还没有"。当前模块保留两层结构合理(第一层看活动维度的发布状态,第二层看获奖名单),但存在以下问题:
|
||
|
||
| 问题 | 说明 |
|
||
|------|------|
|
||
| 第一层有冗余的个人/团队 Tab | 成果发布不需要按参与方式分 Tab,发布状态是活动级别的 |
|
||
| 缺少统计概览 | 没有已发布/未发布的数量统计 |
|
||
| 写操作未隔离 | 详情页有"发布成果/撤回发布"按钮,超管不应有 |
|
||
| 搜索能力不足 | 只有活动名称,缺少发布状态筛选 |
|
||
| 样式不一致 | 主色 `#1890ff` |
|
||
|
||
---
|
||
|
||
## 2. 现状分析
|
||
|
||
### 2.1 第一层:成果发布列表(results/Index.vue)
|
||
|
||
- 个人/团队 Tab(冗余)
|
||
- 数据来源:`contestsApi.getList()` 按活动类型过滤
|
||
- 搜索:仅活动名称
|
||
- 表格列:序号/活动名称/主办机构/报名人数/提交作品数/发布状态/操作
|
||
- 操作:详情 → 跳转 Detail
|
||
|
||
### 2.2 第二层:成果详情(results/Detail.vue)
|
||
|
||
- 数据来源:`resultsApi.getResults(contestId)`
|
||
- 搜索:作品编号/报名账号
|
||
- 表格列:序号/作品编号/评委评分/姓名/账号/机构信息/指导老师
|
||
- 写操作:"发布成果"/"撤回发布"按钮
|
||
|
||
---
|
||
|
||
## 3. 设计方案
|
||
|
||
### 3.1 整体思路
|
||
|
||
保留两层结构(活动维度 → 获奖名单),但优化超管视角:第一层去掉 Tab + 增加统计卡片 + 增加发布状态筛选,第二层隐藏写操作。机构端保持不变。
|
||
|
||
### 3.2 第一层优化
|
||
|
||
```
|
||
┌─ 标题卡片 ──────────────────────────────────────────────┐
|
||
│ 成果发布 │
|
||
└─────────────────────────────────────────────────────────┘
|
||
|
||
┌─ 统计卡片 ──────────────────────────────────────────────┐
|
||
│ [全部 12] [已发布 8] [未发布 4] │
|
||
└─────────────────────────────────────────────────────────┘
|
||
|
||
┌─ 筛选栏 ────────────────────────────────────────────────┐
|
||
│ 活动名称:[______] 发布状态:[下拉] 主办机构:[下拉] │
|
||
│ [搜索] [重置] │
|
||
└─────────────────────────────────────────────────────────┘
|
||
|
||
┌─ 数据表格 ──────────────────────────────────────────────┐
|
||
│ 活动名称 | 主办机构 | 活动类型 | 报名人数 | 作品数 | │
|
||
│ 发布状态 | 发布时间 | 操作 │
|
||
└─────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
**统计卡片**(3 张):
|
||
|
||
| 卡片 | 数据 | 颜色 |
|
||
|------|------|------|
|
||
| 全部 | 所有已发布状态的活动数 | 主色 |
|
||
| 已发布 | resultState='published' | 绿色 |
|
||
| 未发布 | resultState!='published' | 灰色 |
|
||
|
||
统计基于 contests 列表的 resultState 在前端计算即可,无需新增后端接口。
|
||
|
||
**筛选栏**:
|
||
|
||
| 筛选项 | 组件 | 说明 |
|
||
|--------|------|------|
|
||
| 活动名称 | Input | 模糊搜索 |
|
||
| 发布状态 | Select | 已发布 / 未发布 |
|
||
| 主办机构 | Select | 下拉搜索,复用租户列表 |
|
||
|
||
**表格列**(超管端):
|
||
|
||
| 列 | 宽度 | 说明 |
|
||
|----|------|------|
|
||
| 序号 | 60 | |
|
||
| 活动名称 | 200 | |
|
||
| 主办机构 | 120 | creatorTenant.name |
|
||
| 活动类型 | 90 | Tag 个人/团队 |
|
||
| 报名人数 | 80 | _count.registrations |
|
||
| 作品数 | 80 | _count.works |
|
||
| 发布状态 | 90 | Tag 已发布(绿)/ 未发布(灰)|
|
||
| 发布时间 | 150 | resultPublishTime,未发布显示"-" |
|
||
| 操作 | 100 | 查看详情 |
|
||
|
||
去掉个人/团队 Tab,所有活动放在一个列表中。
|
||
|
||
### 3.3 第二层优化
|
||
|
||
超管进入成果详情页时:
|
||
- **隐藏"发布成果/撤回发布"按钮**(通过 isSuperAdmin 判断)
|
||
- 其他保持不变(获奖列表 + 搜索 + 作品详情弹框)
|
||
- 样式修复为 `#6366f1`
|
||
|
||
### 3.4 后端改动
|
||
|
||
无新增接口。现有 `contestsApi.getList()` 返回的数据已包含 `resultState` 和 `resultPublishTime`。
|
||
|
||
---
|
||
|
||
## 4. 前端改动
|
||
|
||
| 文件 | 操作 | 说明 |
|
||
|------|------|------|
|
||
| `frontend/src/views/contests/results/Index.vue` | 修改 | 超管端去掉 Tab + 增加统计卡片 + 发布状态/机构筛选 + 优化表格列 + 样式修复 |
|
||
| `frontend/src/views/contests/results/Detail.vue` | 修改 | 超管端隐藏"发布/撤回"按钮 + 样式修复 |
|
||
|
||
---
|
||
|
||
## 5. 实施记录
|
||
|
||
### 2026-03-27 — 首次实现
|
||
|
||
**后端改动:无**
|
||
|
||
**前端改动(2 个文件):**
|
||
- `frontend/src/views/contests/results/Index.vue` — 超管端去掉个人/团队 Tab,改为统计卡片(全部/已发布/未发布)+ 发布状态和机构筛选 + 优化表格列(增加活动类型、发布时间),机构端保持不变;样式修复为 #6366f1
|
||
- `frontend/src/views/contests/results/Detail.vue` — 超管端隐藏"发布成果/撤回发布"按钮(v-if="!isSuperAdmin");样式修复为 #6366f1
|