From d543b868b11638cd55b2d7d0b2fbeaa6e4091aaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E7=A0=81-=E6=96=B9=E6=99=93=E8=BE=89?= Date: Tue, 3 Feb 2026 17:56:38 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0H5=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=8F=98=E6=9B=B4=E8=AE=B0=E5=BD=95=EF=BC=88?= =?UTF-8?q?=E9=99=84=E5=BD=95C=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 注册流程简化 - 教育身份改为数组 - 基础数据前端缓存策略 --- docs/会员教育信息重构方案.md | 93 ++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/docs/会员教育信息重构方案.md b/docs/会员教育信息重构方案.md index 6d76733..08837b1 100644 --- a/docs/会员教育信息重构方案.md +++ b/docs/会员教育信息重构方案.md @@ -723,3 +723,96 @@ ALTER TABLE pg_student DROP COLUMN member_id; 变更前:会员 --1:N--> 学生(通过 pg_student.member_id) 变更后:会员 --N:M--> 学生(通过 pg_member_student 关联表) ``` + +--- + +## 附录C:H5 前端同步变更 + +> 完成时间:2026-02-03 +> 项目:user_authentication_center_front + +### C.1 变更概述 + +H5 前端同步适配后端「会员教育信息重构」和「学生多会员绑定」变更。 + +### C.2 注册流程简化 + +删除注册页面的身份类型选择步骤: + +| 变更前 | 变更后 | +|--------|--------| +| 步骤1: 基本信息 → 步骤2: 身份选择 → 步骤3: 详细信息 | 仅基本信息,注册后跳转用户中心 | + +**涉及文件**: +- `views/register/index.vue` - 删除身份选择和详细信息步骤 + +### C.3 教育身份改为数组 + +| 文件 | 变更 | +|------|------| +| `stores/user.ts` | 删除 `identityType`,`education: any` → `educations: any[]` | +| `api/user.js` | 接口路径 `/h5/member/education` → `/h5/member/educations` | +| `views/userCenter/index.vue` | 列表展示多教育身份,支持删除指定 ID | + +**接口变更**: + +```javascript +// 变更前 +POST /h5/member/education // 新增(覆盖式) +GET /h5/member/education // 获取单个 +DELETE /h5/member/education // 删除 + +// 变更后 +POST /h5/member/educations // 新增 +PUT /h5/member/educations/{id} // 修改 +GET /h5/member/educations // 获取列表 +DELETE /h5/member/educations/{id} // 删除指定 +PUT /h5/member/educations/{id}/default // 设为默认 +``` + +### C.4 基础数据前端缓存 + +新建 `stores/baseData.ts` 实现区域和学科数据的前端缓存: + +```typescript +// 缓存结构 +{ + regionTree: [], // 区域树 + subjects: [], // 学科列表 + expire: timestamp, // 过期时间(24小时) +} + +// 存储位置 +localStorage.setItem('h5:baseData', JSON.stringify(data)) +``` + +**数据流**: + +``` +用户登录成功 + ↓ +强制刷新基础数据(fetchRegionTree(true), fetchSubjects(true)) + ↓ +存入 Pinia Store + localStorage + ↓ +后续页面从 Store 读取,秒加载 +``` + +**涉及文件**: + +| 文件 | 变更 | +|------|------| +| `stores/baseData.ts` | **新建** - 基础数据 Store | +| `views/login/index.vue` | 登录成功后调用 `fetchRegionTree(true)` 和 `fetchSubjects(true)` | +| `components/TeacherIdentityForm.vue` | 区域和学科使用 Store 缓存 | +| `components/ParentChildrenForm.vue` | 区域使用 Store 缓存 | + +### C.5 缓存策略说明 + +| 数据 | 是否缓存 | 原因 | +|------|----------|------| +| 区域树 `/h5/base/regions` | ✅ 缓存 | 数据量大且变化少 | +| 学科列表 `/h5/base/subjects` | ✅ 缓存 | 基础数据,变化少 | +| 学校列表 `/h5/base/schools` | ❌ 不缓存 | 依赖区域动态查询 | +| 年级列表 `/h5/base/grades` | ❌ 不缓存 | 依赖学校动态查询 | +| 班级列表 `/h5/base/classes` | ❌ 不缓存 | 依赖学校+年级动态查询 |