7.3 KiB
发展首页重构计划(对照老系统 /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 重写(核心)
- 轮播图:Carousel 两张本地占位图(assets/skin 静态资源),纯展示
- 横向栏目条:启用栏目横向排列;≤10 全显,>10 折叠「更多栏目」Dropdown;点击 →
/module/list?mouid= - 主体三栏(左 5 / 中 14 / 右 5):
- 左:学科组树(Tree 组件或递归列表,节点显示
组名 count),叶子(无 children)点击 →/timeline?userid=;组节点可展开/收起 - 中:栏目文章块墙(两列 Card 流):块头
栏目名(N 篇)+「更多 »」(→ 栏目列表);行 =· 标题 【作者】+ 右浮日期;点击 →/record/detail?serid=;recordCount=0 的栏目不渲染块 - 右:发布排行(名次徽标+姓名+篇数,点击 → 个人空间)+ 我的积分卡(保留现版:总分/发布/评论/查看我的空间)
- 左:学科组树(Tree 组件或递归列表,节点显示
- 空态:无启用栏目/无记录的兜底提示
- modId 100、路由不变
任务 4:验证
npm run build通过;mvn compile通过- 浏览器走查:首页渲染轮播/栏目条折叠/组树/文章块/排行;点击各入口跳转正确;数据库核对组树篇数
四、不做 / 后续
- 轮播图真实运营图源(本期本地占位图)
- 隐藏的标题搜索面板(老页面 display:none,弃用)
- 档案袋入口图(老站独立 /ArchivesPage 应用,本期无)