feat: 员工自助注册+审核流程

- 新增 registration_packages 表:管理员配置注册套餐(名称/角色)
- AuthController 新增 register() 和 registrationPackages() 公开接口
- UserController 新增 approve() / reject() 审核接口
- StoreController 新增 publicList() 公开门店列表
- 前端 /register 注册页:选门店→选岗位套餐→填信息→提交
- 前端 system/registration-packages:套餐 CRUD
- 用户管理页:待审核状态展示 + 通过/拒绝快捷操作
- 登录页底部加「申请注册」跳转链接
- 路由白名单加 /register
This commit is contained in:
li
2026-03-14 17:39:50 +08:00
parent 4a68855a88
commit ee2b1757d0
105 changed files with 7859 additions and 2469 deletions
+121
View File
@@ -0,0 +1,121 @@
# 前后端接口联调检查报告
> 生成时间:2026-03-14
> 检查范围:前端 `src/api/*.js` ↔ 后端 `routes/api.php`
---
## 总体评估
| 模块 | 状态 | 备注 |
|------|------|------|
| 系统设置 | ✅ 完全匹配 | |
| CRM | ✅ 完全匹配 | |
| 房务 Room | ✅ 完全匹配 | |
| 护理 Care | ✅ 已修复 | resolve→handle别名修复;healthMetric.delete移除 |
| 月子餐 Meal | ⚠️ 部分匹配 | getDetail不存在后端路由(见下) |
| 服务产康 Service | ✅ 已修复 | complete方法移除,统一用finish |
| 月嫂 Nanny | ✅ 完全匹配 | |
| 进销存 Inventory | ✅ 已修复 | stock/transfers/checks 3个Controller已创建,迁移已执行 |
| 财务 Finance | ✅ 已修复 | paymentApi.confirm→audit |
| 人事 HR | ✅ 完全匹配 | |
| 办公协同 Office | ✅ 完全匹配 | 审批流引擎已升级 |
| 报表 Report | ✅ 完全匹配 | |
| 知识库 KB | ✅ 完全匹配 | |
---
## 已修复问题
### ✅ care.js — careExceptionApi.resolve 路径修复
- **问题**:前端调用 `PUT /care/exceptions/{id}/resolve`,后端只有 `/handle`
- **修复**:将 `resolve` 方法改为指向 `/handle` 的别名
### ✅ care.js — healthMetricApi.delete 移除
- **问题**:前端调用 `DELETE /care/health-metrics/{id}`,后端无此路由
- **修复**:移除该方法(健康指标不支持前端删除)
### ✅ finance.js — paymentApi.confirm 改名
- **问题**:前端调用 `PUT /finance/records/{id}/confirm`,后端路由为 `/audit`
- **修复**:方法改为 `audit`,路径对齐
### ✅ service.js — serviceExecutionApi.complete 移除
- **问题**:前端有 `complete` 方法调用 `/complete`,后端无此路由(只有 `/finish`
- **修复**:移除 `complete`,使用 `finish` 统一
---
## 已补充后端(2026-03-14 完成)
### ✅ inventory — 库存台账 (stock)
- `StockController` 已创建,基于 `inventories` 表聚合,支持 `low_stock` 过滤
- 路由:`GET /inventory/stock`, `GET /inventory/stock/export`
### ✅ inventory — 调拨管理 (transfers)
- `TransferOrderController` 已创建,`transfer_orders` 表已迁移
- confirm 时自动更新双仓库库存(事务保护)
- 路由:GET/POST/GET{id}/confirm/cancel
### ✅ inventory — 盘点管理 (checks)
- `InventoryCheckController` 已创建,`inventory_checks` 表已迁移
- complete 时按实际数量修正 inventories 表(事务保护)
- 路由:GET/POST/GET{id}/complete
---
## 其他注意事项
### meal.js — mealReviewApi.getDetail
- 后端 `/meal/reviews` 只有 `GET list``POST create`,无 `GET {id}`
- 前端 `getDetail` 方法存在但暂时用不到(reviews 页面未调用),低优先级
### request.js baseURL
- 配置 `baseURL: '/api/v1'` ✅ 与后端路由前缀一致
### 认证
- 所有请求通过 `Authorization: Bearer {token}` 传递,与 Sanctum 配置一致 ✅
---
## 全链路修复记录(2026-03-14
### P0 — 运行时必崩(已修复)
| 文件 | 问题 | 修复 |
|------|------|------|
| `views/finance/payments/index.vue` | `paymentApi.confirm` 不存在 | 改为 `paymentApi.audit` |
| `views/service/executions/index.vue` | `serviceExecutionApi.complete` 不存在 | 改为 `serviceExecutionApi.finish` |
| `views/meal/reviews/index.vue` | `mealReviewApi.getDetail` 不存在且后端无路由 | 直接用行数据 `row` 展示详情 |
| `views/care/health-metrics/index.vue` | `healthMetricApi.delete` 不存在 | 改为本地 filter 移除 |
### P1 — 系统模块整体404(已修复)
| 文件 | 问题 | 修复 |
|------|------|------|
| `api/system.js` - `dictApi` | 全部使用 `/dict-types`,后端路由是 `/dictionaries` | 重写 dictApi 路径,item 操作签名适配 |
| `api/system.js` - `userApi.resetPassword` | POST `/reset-password`,后端是 PUT `/password` | 改为 `put` + 正确路径 |
| `api/system.js` - `userApi.updateStatus` | PATCH,后端是 PUT | 改为 `put` |
| `api/system.js` - `roleApi.assignPermissions` | POST,后端是 PUT | 改为 `put` |
| `api/system.js` - `roleApi.getPermissions` | 后端无此子路由 | 删除此方法 |
### P2 — except(['show']) 导致404(已修复)
| 文件 | 问题 | 修复 |
|------|------|------|
| `api/system.js` - `departmentApi` | `getDetail`/`getTree` 后端无路由 | 删除;页面改用行数据 + `getList`+本地buildTree |
| `api/system.js` - `positionApi` | `getDetail` 后端无路由 | 删除;页面改用行数据 |
| `api/system.js` - `menuApi` | `getDetail`/`getTree` 后端无路由 | 删除;页面改用行数据 + `getList`+本地buildTree |
| `api/system.js` - `permissionApi` | `getDetail`/`getTree` 后端无路由 | 删除;roles页改用 `getList`+本地buildTree |
| `api/system.js` - `logApi` | `getDetail` 后端无路由 | 删除此方法 |
### 页面联动修复
- `views/system/departments/index.vue`: `getTree``getList`+`buildTree``getDetail` → 用行数据
- `views/system/menus/index.vue`: `getTree``getList`+`buildTree``getDetail` → 用行数据
- `views/system/positions/index.vue`: `getDetail` → 用行数据
- `views/system/users/index.vue`: `departmentApi.getTree``getList`(平铺列表)
- `views/system/roles/index.vue`: `permissionApi.getTree``getList`+`buildPermTree``getPermissions``getDetail.permissions`
- `views/system/dictionaries/index.vue`: 适配新 dictApi 签名(路径/参数全部对齐)
| 优先级 | 任务 | 状态 |
|--------|------|------|
| P1 | 执行 migration: `php artisan migrate`(审批节点字段扩展) | ✅ 已完成 |
| P2 | 创建 inventory transfers/checks 后端 Controller + Migration | ✅ 已完成 |
| P3 | 完善 inventory stock 聚合查询接口 | ✅ 已完成 |
| P4 | 补充 meal/reviews/{id} 详情接口(低优) | ⏳ 待处理 |