Commit Graph

48 Commits

Author SHA1 Message Date
神码-方晓辉 57b171503d refactor: 前端目录重命名 pangu-ui -> frontend
- 统一前端目录命名规范
- 更新相关文档引用
2026-02-03 20:56:15 +08:00
神码-方晓辉 086c0a0988 refactor: 前端目录重命名及配置优化
- frontend/ruoyi-ui 重命名为 frontend/pangu-ui
- 修改系统标题为"盘古用户认证中心"
- 开启验证码功能
- 移除登录页默认账号密码
2026-02-03 20:37:48 +08:00
神码-方晓辉 0c607378e9 chore: 统一 author 为 pangu 2026-02-03 20:26:45 +08:00
神码-方晓辉 8ba5e3e174 perf: 学校管理页面区域树默认折叠
移除 default-expand-all,减少首次渲染节点数量
2026-02-03 17:43:29 +08:00
神码-方晓辉 d0d0f0ee6d perf: 所有基础数据下拉统一使用 Store 缓存
修改以下组件使用 baseDataStore:
- business/school/components/GradeDialog.vue (年级)
- business/school/components/ClassDialog.vue (班级)
- school/index.vue (区域树)
- school/components/GradeDialog.vue (年级)
- school/components/ClassDialog.vue (年级+班级)
- member/components/MemberDialog.vue (区域树)

登录后预加载数据,后续全部命中缓存
2026-02-03 17:40:59 +08:00
神码-方晓辉 e8489536d6 fix: 每次登录后强制刷新基础数据
fetchXxx(true) 传入 force=true,确保登录后拉取最新数据
2026-02-03 17:36:31 +08:00
神码-方晓辉 81b1d5327b perf: 其他页面使用 Store 缓存基础数据
- EducationDialog.vue: 区域树、学科列表使用 Store
- school/index.vue: 区域树使用 Store

所有基础数据调用统一使用 Store,命中缓存后秒加载
2026-02-03 17:25:10 +08:00
神码-方晓辉 4243f6581d perf: 登录后预加载基础数据,区域管理使用 Store 缓存
- permission.js: 登录后并行预加载年级/学科/区域/班级数据
- region/index.vue: 使用 Store 缓存,避免每次请求 1MB 数据
- 第二次进入页面秒开,无需重复请求
2026-02-03 17:23:27 +08:00
神码-方晓辉 24625133e3 perf: 优化区域管理页面性能
- 使用后端 /region/tree 接口,避免前端递归构建树
- 默认折叠树节点,减少 DOM 渲染
2026-02-03 17:17:28 +08:00
神码-方晓辉 124013703f feat: 基础数据前端缓存 - 使用 Pinia Store 实现
- 新建 baseData Store,缓存年级/学科/区域/班级数据
- 支持 localStorage 持久化,24小时过期
- 编辑/删除操作自动清除对应缓存
- 修改四个管理页面(grade/subject/region/class)使用 Store
2026-02-03 17:14:58 +08:00
神码-方晓辉 bf67282825 feat: 学生管理页面展示多会员绑定信息
- 列表页"归属用户"列:单人显示昵称/手机号,多人显示"N人绑定"并用tooltip展示详情
- 编辑弹窗:使用Tag组件展示所有绑定的会员信息
2026-02-03 17:04:07 +08:00
神码-方晓辉 df1f2932c4 feat: 学生多会员绑定重构 - 支持一个学生被多个会员绑定
主要变更:
1. 新建 pg_member_student 关联表,实现学生与会员的多对多关系
2. 移除 pg_student.member_id 字段
3. 后端服务层全部改用关联表查询和操作
4. H5 接口支持 relation 字段(父亲/母亲/其他)
5. 前端学生选择弹窗显示已绑定会员数量
6. 更新需求文档
2026-02-03 16:56:18 +08:00
神码-方晓辉 729f2c71f1 feat: 会员教育信息重构 - 支持多教育身份管理
主要变更:
1. 去掉身份类型字段,会员与教育信息改为一对多关系
2. 新增 pg_education 表及相关实体、服务
3. 管理后台支持添加、编辑、删除多个教育身份
4. 新增会员时支持一次性保存会员信息、教育身份、亲子关系
5. 修复学生选择弹窗学校年级班级不显示问题
6. 添加区域路径接口用于级联选择器回显
2026-02-03 16:35:57 +08:00
神码-方晓辉 f0d8a6c571 feat: H5教育身份接口增加省市区信息返回
- 修改 H5EducationVo 添加省市区字段
- 修改 H5MemberServiceImpl 的 buildEducationVo 方法,从学校的regionId解析省市区信息
- 保存教育身份时自动从学校获取regionId保存到会员表
- 添加日志记录省市区信息便于调试
- 更新 pangu-project.mdc 文档,添加 build.sh 工具使用说明
- 优化管理后台会员和学生相关组件
2026-02-03 11:53:55 +08:00
神码-方晓辉 dab220d0a2 feat: 添加Swagger UI支持
- pom.xml: 添加springdoc-openapi-starter-webmvc-ui依赖
- application.yml: 添加swagger-ui路径排除配置
- application.yml: 添加H5模块到API分组
- vite.config.js: 添加Swagger代理配置
2026-02-03 09:25:37 +08:00
神码-方晓辉 e8c4f3f568 style: 学生弹窗归属用户改为只读红色标签
- 归属用户字段改为只读展示
- 展示格式:会员昵称(手机号)
- 红色字体显示
- 移除选择/清除按钮
2026-02-02 21:12:20 +08:00
神码-方晓辉 43ee2dbf87 refactor: 删除学生管理中的学科字段
前端:
- 列表页删除学科列
- 编辑弹窗删除学科下拉框

后端:
- PgStudent 实体删除 subjectId 字段
- StudentVo 删除 subjectId 和 subjectName 字段
- Service 层删除学科关联查询

需求文档:
- 删除学生数据项中的学科字段
- 删除表格列定义中的学科列

数据库需执行:ALTER TABLE pg_student DROP COLUMN subject_id;
2026-02-02 21:11:37 +08:00
神码-方晓辉 b5c2692aab feat: 学生导入重新选择文件时自动覆盖之前的记录
在 beforeUpload 中调用 clearFiles() 清空文件列表,
实现"选择即覆盖"效果,无需手动删除再重新选择

同步更新需求文档
2026-02-02 21:04:40 +08:00
神码-方晓辉 e1ea099a38 fix: 修复学生管理左侧树筛选条件未正确传递的问题
问题:点击年级/班级节点时,只传了当前节点ID,未带上父级条件
修复:
1. 参数名改为与后端一致(schoolGradeId、schoolClassId)
2. 点击年级节点时,同时传递 schoolId + schoolGradeId
3. 点击班级节点时,同时传递 schoolId + schoolGradeId + schoolClassId

同步更新需求文档
2026-02-02 21:00:57 +08:00
神码-方晓辉 18b9a09348 fix: 会员列表昵称列自适应宽度填充表格 2026-02-02 20:43:24 +08:00
神码-方晓辉 a384b27033 fix: 优化会员列表页列宽度
- 会员编号:160 → 185(显示完整编号)
- 手机号:150 → 145
- 昵称:min-width 100 → 固定 120(减少浪费空间)
2026-02-02 20:42:49 +08:00
神码-方晓辉 4e54dc8422 fix: 会员管理出生日期只显示年月日(YYYY-MM-DD)
去除时分秒显示,保持格式一致
2026-02-02 20:34:50 +08:00
神码-方晓辉 26efdc42fc feat: 会员管理手机号列添加眼睛按钮切换显示
点击眼睛图标可切换手机号的脱敏/完整显示
2026-02-02 20:33:57 +08:00
神码-方晓辉 cca0902d28 fix: 学生管理出生年月改为出生日期(YYYY-MM-DD)
1. 新增/编辑弹窗:日期选择器从月份改为日期
2. 列表页:出生日期列显示完整日期格式
2026-02-02 20:33:10 +08:00
神码-方晓辉 da75094367 fix: 修复学生导入上传认证失败的问题
使用自定义上传方法(http-request)替代原生action,
通过项目的request工具发送请求,自动走Vite代理并携带token
2026-02-02 20:19:48 +08:00
神码-方晓辉 4eea1eef34 fix: 修复学生导入模板下载功能
使用 axios (request) 替代 fetch,走 Vite 代理正确转发请求
2026-02-02 20:04:14 +08:00
神码-方晓辉 ca433d6ab9 feat: 完善学生导入模板下载功能
1. 后端新增接口 /business/student/template
   - 使用 ExcelUtil 导出模板
   - 包含示例数据方便用户参考

2. 前端修复模板下载:
   - 使用 fetch 下载文件
   - 文字"用户手机号"改为"会员手机号"

3. 新增 StudentImportDto 导入数据对象
   - 字段:姓名、学号、会员手机号、区域、学校、年级、班级、性别、出生年月
2026-02-02 20:02:41 +08:00
神码-方晓辉 6784e32e1e fix: 修复学生管理模块问题
1. 后端修复:
   - 添加 StudentVo 视图类,包含学校名、年级名、班级名、学科名、会员昵称等关联数据
   - Service 返回 StudentVo,关联查询各表数据

2. 前端修复:
   - StudentDialog 改为自获取 schoolTree 和 subjectList
   - 修复字段名适配(studentId/studentName)
   - 编辑时完整回显学校/年级/班级三级路径
   - 添加 MemberSelectDialog 会员选择弹窗

3. ImportDialog 完善:
   - 修复 token 获取方式适配 RuoYi 框架
   - 完善上传进度显示

4. index.vue 修复:
   - 表格列字段名适配后端返回数据
   - 添加日期格式化函数
2026-02-02 19:57:14 +08:00
神码-方晓辉 9883fddb67 fix: 学生管理左侧学校树字段映射修复
将 el-tree 的 label 属性从 'label' 改为 'name',
与后端 SchoolTreeNode 返回的字段名保持一致。
2026-02-02 19:49:12 +08:00
神码-方晓辉 2baf792159 feat: 会员管理-添加学生绑定功能
1. 后端新增接口:
   - GET /business/student/available - 查询可绑定的学生列表
   - GET /business/student/byMember/{memberId} - 查询会员已绑定的学生
   - GET /business/member/{memberId}/students - 获取会员已绑定的学生列表
   - POST /business/member/{memberId}/bindStudents - 批量绑定学生到会员
   - POST /business/member/unbindStudent/{studentId} - 解绑学生
   - GET /business/school/grade/{schoolGradeId}/classes - 获取年级下的班级列表

2. 业务规则实现:
   - 教师身份只能绑定同校学生(schoolId相同)
   - 家长身份可绑定任意学生
   - 一个学生只能归属一个会员

3. 前端功能:
   - 新增StudentSelectDialog学生选择器组件
   - 支持按姓名、学号搜索
   - 支持多选绑定
   - MemberDialog集成学生选择器

4. 修复问题:
   - 修复会员编辑时学校信息(区域/年级/班级)回显问题
   - 修复班级列表接口404问题
2026-02-02 19:41:24 +08:00
神码-方晓辉 d28b68ef46 feat: 学校管理-展开行时自动选中左侧对应区域
展开学校/年级节点时,左侧区域树自动高亮选中该学校所属的区域
2026-02-02 19:16:56 +08:00
神码-方晓辉 c4b4bf410d fix: 删除操作改为级联删除,有子级时给出提示
根据原型说明:删除时提示是否有子级,确认后级联删除
- 删除学校:提示有N个年级、N个班级,确认后级联删除
- 删除年级:提示有N个班级,确认后级联删除
- 前端改为 confirm 提示,后端支持级联删除
- 修复会员模块 BCrypt 依赖问题(改用 Hutool)
2026-02-02 19:11:30 +08:00
神码-方晓辉 5ef8420ace fix: 学校管理列表树优化
1. 默认折叠:移除 default-expand-all
2. 修复折叠展开联动问题:row-key 改为 type_id 组合,保证唯一性
3. 删除提示优化:
   - 有子级时显示具体数量(如"3个年级、5个班级")
   - 有子级时弹出 alert 提示"请先删除子级",而不是直接删除
2026-02-02 19:04:17 +08:00
神码-方晓辉 10469f6517 fix: 修复编辑学校时所属区域不回显问题
原 getRegionIdPath 函数假设区域ID按层级编码,实际不是
改为递归遍历区域树查找目标节点,返回从根到目标的完整路径
2026-02-02 17:54:24 +08:00
神码-方晓辉 40fe55b42a feat: 新增年级/班级时已添加的选项禁用显示
- 新增年级弹窗:已挂载的年级显示为灰色不可选(已添加)
- 新增班级弹窗:已挂载的班级显示为灰色不可选(已添加)
- 从树形数据中获取已有年级/班级的ID列表传递给弹窗
2026-02-02 17:48:59 +08:00
神码-方晓辉 20d9fd24d1 feat: 学校管理列表"学校类型"列改为"类型"列
- 用于区分树形层级节点类型:学校/年级/班级
- 使用不同颜色的 el-tag 标签区分显示
- 同步更新需求文档中的字段说明
2026-02-02 17:45:44 +08:00
神码-方晓辉 b42aab4a8f feat: 重构学校管理模块 - 按需求文档实现树形展示
根据需求文档完全重构学校管理页面:
- 按区域树形展示学校、年级、班级结构
- 新增后端接口 /business/school/tree 返回树形数据
- 新增后端接口删除年级/班级
- 前端使用树形表格展示层级结构
- 弹窗标题按需求文档:编辑-学校、新增-年级、新增-班级
- 操作按钮:学校(编辑/新增年级/删除)、年级(新增班级/删除)、班级(删除)
- 删除时提示是否有子级
2026-02-02 17:41:22 +08:00
神码-方晓辉 bb14acd923 feat: 完善学校管理模块
- 后端:学校新增时自动生成学校编码(格式:SCH + 年份后两位 + 6位序号)
- 前端:列表页显示学校编码列
- 前端:编辑弹窗显示学校编码(只读)
- 前端:优化年级/班级选项数据格式转换
2026-02-02 17:31:27 +08:00
神码-方晓辉 50e291d2b4 fix: 完善学校管理模块
- 后端:学校列表查询时填充区域名称
- 前端:学校类型显示转换(数字转文字)
- 前端:学校类型选项值修正为数字
2026-02-02 17:27:00 +08:00
神码-方晓辉 31322a9ecc fix: 修复角色管理菜单权限树加载问题
- 前端:修复菜单树和部门树数据路径(response.data.menus)
- 后端:角色菜单树只返回可见菜单(visible='0')
2026-02-02 17:20:01 +08:00
神码-方晓辉 ec2d69a09f feat: 完善应用管理模块前后端
- 后端:添加重置密钥接口和API列表接口
- 后端:新增 IPgApiDictService 服务
- 前端:修复API路径(/api -> /business)
- 前端:修复字段名映射(contactName -> contactPerson)
- 前端:添加 SecretDialog 密钥弹窗组件
- 数据:初始化应用数据和API字典数据
2026-02-02 17:11:06 +08:00
神码-方晓辉 bd14bb36c4 feat: 完善学校管理模块(根据需求文档)
后端修改:
1. PgRegionController: 新增 /tree 接口用于获取区域树
2. PgRegion: 添加 children 字段支持树形结构
3. PgRegionService: 实现 selectTree 方法构建树形数据
4. PgSchoolController: 新增学校年级/班级管理接口
   - GET /{schoolId}/grades: 获取学校的年级列表
   - POST /grade: 为学校批量添加年级
   - POST /class: 为年级批量添加班级
5. PgSchoolService: 实现年级班级挂载逻辑
6. PgSchoolGrade: 添加 gradeName 字段用于显示

前端修改:
1. school.js API: 修正路径 /api → /business
2. index.vue: 修正删除接口的 ID 字段(id → schoolId)
3. SchoolDialog.vue: 修正表单字段名
4. GradeDialog.vue: 修正 API 调用和数据格式
5. ClassDialog.vue: 重写支持选择学校已挂载的年级

@author pangu
2026-02-02 16:32:33 +08:00
神码-方晓辉 5ae8cf726c fix: 修复基础数据页面API路径和字段名
1. 修复所有页面的删除API路径:/api/xxx → /business/xxx
2. 修复年级管理页面字段名:
   - name → gradeName
   - code → gradeCode
   - sort → orderNum
   - id → gradeId
3. 修复班级管理页面字段名:className, classCode, classId
4. 修复学科管理页面字段名:subjectName, subjectCode, subjectId
5. 修复区域管理页面字段名:regionName, regionCode, regionId

@author pangu
2026-02-02 16:18:27 +08:00
神码-方晓辉 0e75c175b5 feat: 从 git 历史迁移业务管理前端页面
从 commit 0b7d625 恢复并迁移以下页面:

基础数据管理:
- 年级管理 (business/base/grade)
- 班级管理 (business/base/class)
- 学科管理 (business/base/subject)
- 区域管理 (business/base/region)

业务功能:
- 学校管理 (business/school) + 3个组件
- 会员管理 (business/member) + 1个组件
- 学生管理 (business/student) + 2个组件
- 应用管理 (business/application) + 1个组件

API 路径修改:/api/xxx → /business/xxx

@author pangu
2026-02-02 16:04:47 +08:00
神码-方晓辉 91a62b00d4 fix: 修复前端路由接口路径适配 RuoYi-Vue-Plus
- 更新 getRouters 接口路径: /getRouters -> /system/menu/getRouters
- 适配 RuoYi-Vue-Plus 5.5.3 的 API 规范
2026-02-02 15:43:04 +08:00
神码-方晓辉 d99646c00d refactor: 升级后端至 RuoYi-Vue-Plus 5.5.3
主要变更:
- Spring Boot 2.7.18 → 3.5.9
- 认证框架: Spring Security → Sa-Token
- 缓存: 新增 Redisson 支持
- 数据访问: JdbcTemplate → MyBatis-Plus
- 新增工作流引擎 Warm-Flow
- 新增 API 文档 SpringDoc
- 新增多租户、OSS、定时任务等功能

前端适配:
- 更新 API 路径 (/auth/login, /auth/code 等)
- 添加 clientid header
- 适配新的响应数据结构

注意:数据库已使用 RuoYi-Vue-Plus 的 SQL 重建
2026-02-02 15:36:13 +08:00
神码-方晓辉 7753ddbfbd fix: 优化部门管理页面表格布局
- 部门名称列使用 min-width 自动扩展填充
- 调整排序列和操作列宽度
- 消除右侧空白区域
2026-02-02 14:49:34 +08:00
神码-方晓辉 4e43376ef9 refactor: 项目目录重构,登录和验证码功能正常
1. 重构目录结构
   - 后端代码移至 backend/ 目录
   - 前端代码移至 frontend/ 目录
   - 删除根目录旧模块(pangu-admin, pangu-common 等)

2. 统一 API 规范(若依做法)
   - 前端 /dev-api 代理去掉前缀
   - 后端 Controller 无 /api 前缀
   - 添加 API 接口规范到项目规则

3. 功能验证
   - 登录功能正常
   - 验证码生成和校验正常
   - 系统管理模块正常
2026-02-02 14:32:22 +08:00