Files
profession-front/发展首页重构计划.md

98 lines
7.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 发展首页重构计划(对照老系统 /ProfessionPage/)
> 创建日期:2026-09-26
> **执行状态(2026-09-26):任务 1~4 全部完成并浏览器验证。**
> 后端新增 `GET /{platform}/profession/SubjectGroupTree`(用户中心组树 + 教师篇数,组节点 count=子树合计,mvn 编译通过、8107 已重启);
> Home.vue 已按老首页重写:轮播占位图、横向栏目条(>10 折叠「更多栏目」下拉,实测展开正确)、
> 学科组树(递归组件 GroupTreeNode.vue,任意层级,叶子点击跳个人空间)、栏目文章块墙
> (老样式"栏目名[ N篇 ]+更多»",行=·标题【作者】+右浮日期,空栏目隐藏)、发布排行+我的积分卡;
> `npm run build` 通过,浏览器实测全部通过。
> 已知数据项:本地用户中心(schId=3 云海中学)未配置组/教师树,首页组树仅显示学校根节点——接口逻辑已验证,
> 真实环境配置组树后即完整显示。
> 待办:轮播图真实运营图源(当前渐变占位)。
> 参考页面:https://oa.bestsch.com/ProfessionPage/(账号 jcbx / jcbx@146,已实测登录:上海市进才中学北校,真实业务数据)
> 目标文件:`E:\YHXT\view\ProfessionView\src\views\profession\Home.vue`(重写)
> 配套:`src/api/module/profession.ts`(加组树接口)、后端 `ProfessionController`(新增 SubjectGroupTree)
---
## 一、老首页逻辑实录(jcbx 实测)
### 1.1 整体布局
```
┌────────────────────────────────────────────────────┐
│ 顶栏:上海市进才中学北校 你好,进北管理员 │
│ (我的空间 | 个人信息 | 应用列表 | 退出登录) │
├────────────────────────────────────────────────────┤
│ ① 轮播图(ivu-carousel,2 张) │
├────────────────────────────────────────────────────┤
│ ② 横向栏目条:网站首页 | 教学设计 | 发展规划 | … │
│ (>10 个折叠为「更多栏目▼」下拉,每项带 Tooltip) │
├──────┬──────────────────────────────┬──────────────┤
│ ③ 左 │ ④ 中:栏目文章块 × N │ ⑤ 右 │
│ 学科 │ ┌ 教学设计[1869篇] 更多» ┐ │ 发布排行 │
│ 组树 │ │ ·标题 【作者】 日期 │ │ 许蓉 │
│ 体育 │ └─────────────────────┘ │ 陆佳俊 │
│ 组 20│ ┌ 数学… ┐ ┌ 语文… ┐ │ 孙微 … │
│ … │ (每栏目一块,块内 6 行) │ (点击跳空间) │
│ 语文 │ │ │
│ 教研 │ (另有隐藏的标题搜索表格, │ │
│ 组 55│ 老页面 display:none) │ │
└──────┴──────────────────────────────┴──────────────┘
```
### 1.2 实测交互与数据
- **横向栏目条**:仅显示启用栏目;超过 10 个折叠进「更多栏目」(Dropdown),解决长列表溢出;点击栏目 → `/ProfessionPage/?mouid=` 栏目文章列表页
- **学科组树**(GetSubjectGroupTree):节点 = `组名 + 空格 + 篇数`(体育组 20 / 语文组 49 / 语文教研组 55 …,篇数=子树教师发布合计);叶子=教师;**点击叶子 → 教师个人空间**(TeachMyselfTimer?userid=)
- **栏目文章块**(Getdatemodulelist):块头 = `栏目名[ N篇 ]` + 右侧"更多»"(→ 栏目列表页);块内最新 6 行 = `· 标题 【作者姓名】 …… 日期(右浮)`,点击行 → 记录详情(mouid+pid+userid);**无记录的栏目不显示块**
- **发布排行**(ReleaseRankingList):教师姓名列表(按发布数),点击 → 个人空间
- **轮播图**:静态 2 张图,纯展示
- 首页**无**积分卡/最近访客(那些在"我的空间"页)
---
## 二、新版现状 vs 老首页差距
| 方面 | 老首页 | 新版现状 | 结论 |
|---|---|---|---|
| 轮播图 | 顶部 2 张静态图 | 无 | **新增占位轮播** |
| 栏目条 | 横向 + 超过 10 个折叠「更多栏目」 | Tag 流平铺 | **改为横向条+折叠** |
| 学科组树 | 左栏组树(组=篇数,叶子=教师,点击跳空间) | 无 | **新增(需后端新接口)** |
| 文章块 | 栏目名[N篇]+更多»,行=·标题【作者】日期右浮 | 栏目名+更多,行=标题/作者/时间 | **样式对齐**,数据已有 |
| 发布排行 | 人名列表(点击跳空间) | 有(含篇数) | 保留增强 |
| 我的积分 | 首页无积分卡 | 右栏积分卡 | 保留(新版增强,放右栏底部) |
| 空栏目 | 无记录的栏目不显示块 | 显示"暂无记录"块 | **对齐:隐藏空块** |
---
## 三、修改任务
### 任务 1:后端新增学科组树接口
`GET /{platform}/profession/SubjectGroupTree`:
- 复用 `UserCenterService.getSchoolAllTree(schId)`(用户中心组树:组→教师,type 1/2 节点)
- 叠加 `recordRepository.countGroupByTeacher(schId)`(教师篇数)
- 输出节点 `{ id, name, count, children }`:教师节点 count=个人篇数;组节点 count=子树合计;count=0 的教师/组不裁剪(保持树形),树按原顺序
- 验收:`mvn compile` 通过,Postman 返回树形 JSON
### 任务 2:前端 API
`profession.ts` 增加 `groupTree()` → `GET /api/profession/SubjectGroupTree`,类型 `GroupNode { id:number; name:string; count:number; children?:GroupNode[] }`
### 任务 3:Home.vue 重写(核心)
1. **轮播图**:Carousel 两张本地占位图(assets/skin 静态资源),纯展示
2. **横向栏目条**:启用栏目横向排列;≤10 全显,>10 折叠「更多栏目」Dropdown;点击 → `/module/list?mouid=`
3. **主体三栏**(左 5 / 中 14 / 右 5):
- 左:学科组树(Tree 组件或递归列表,节点显示 `组名 count`),叶子(无 children)点击 → `/timeline?userid=`;组节点可展开/收起
- 中:栏目文章块墙(两列 Card 流):块头 `栏目名(N 篇)`+「更多 »」(→ 栏目列表);行 = `· 标题 【作者】` + 右浮日期;点击 → `/record/detail?serid=`;**recordCount=0 的栏目不渲染块**
- 右:发布排行(名次徽标+姓名+篇数,点击 → 个人空间)+ 我的积分卡(保留现版:总分/发布/评论/查看我的空间)
4. 空态:无启用栏目/无记录的兜底提示
5. modId 100、路由不变
### 任务 4:验证
- `npm run build` 通过;`mvn compile` 通过
- 浏览器走查:首页渲染轮播/栏目条折叠/组树/文章块/排行;点击各入口跳转正确;数据库核对组树篇数
## 四、不做 / 后续
- 轮播图真实运营图源(本期本地占位图)
- 隐藏的标题搜索面板(老页面 display:none,弃用)
- 档案袋入口图(老站独立 /ArchivesPage 应用,本期无)