98 lines
7.3 KiB
Markdown
98 lines
7.3 KiB
Markdown
# 发展首页重构计划(对照老系统 /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 应用,本期无)
|