BookSystem/.trae/documents/bug_fix_plan.md
jayhgq 6f4ace886f fix(roles): 修复角色创建时 model_dump 错误
修复角色创建时出现的 AttributeError: 'dict' object has no attribute 'model_dump' 错误,将 role_data.model_dump() 改为 dict(role_data) 以兼容 Pydantic v1 和 v2。

同时优化了搜索布局和样式,确保查询条件和按钮在同一行显示:

1. 修改 admin-crud.css 添加搜索区域不换行样式
2. 调整 role-crud.ts 中的 search 配置
3. 将 GET 查询接口改为 POST /search 方式
4. 修复角色权限分配时的权限加载问题
2026-05-09 17:59:10 +08:00

122 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Bug 修复计划
## 问题描述
### 问题1查询条件布局优化
前端页面中用户、角色、权限的页面中查询条件和查询、重置按钮需要放到一行,并且去掉展开按钮。
### 问题2查询方法修改
查询目前使用 GET 方法进行的,需要改为 POST 方法。
## 项目结构分析
```
frontend/
└── src/
└── modules/
└── admin/
├── views/
│ ├── users/
│ │ ├── UserManage.vue # 用户管理页面
│ │ └── user-crud.ts # 用户 CRUD 配置
│ ├── roles/
│ │ ├── RoleManage.vue # 角色管理页面
│ │ └── role-crud.ts # 角色 CRUD 配置
│ └── permissions/
│ ├── PermissionManage.vue # 权限管理页面
│ └── permission-crud.ts # 权限 CRUD 配置
└── api/
└── http.ts # HTTP 请求封装
```
## 修复方案
### 问题1查询条件布局优化
在 fast-crud 中,可以通过配置 `search` 属性来控制搜索表单的布局:
| 配置项 | 值 | 说明 |
|--------|-----|------|
| `show` | `true` | 显示搜索表单 |
| `inline` | `true` | 查询条件和按钮在一行 |
| `expand` | `false` | 隐藏展开按钮 |
需要修改的文件:
- `frontend/src/modules/admin/views/users/user-crud.ts`
- `frontend/src/modules/admin/views/roles/role-crud.ts`
- `frontend/src/modules/admin/views/permissions/permission-crud.ts`
### 问题2查询方法修改
需要同时修改前端和后端:
**前端修改**
-`pageRequest` 中的 `http.get` 改为 `http.post`
- 将查询参数从 URL 参数改为请求体
**后端修改**
-`/users/`、`/roles/`、`/permissions/` 的 GET 请求改为 POST 请求
- 修改参数接收方式,从 Query 参数改为请求体
需要修改的文件:
- 前端:`user-crud.ts`、`role-crud.ts`、`permission-crud.ts`
- 后端:`users/urls.py`、`roles/urls.py`、`permissions/urls.py`
## 修改步骤
### 步骤1修改前端 CRUD 配置问题1+问题2
修改三个 CRUD 配置文件:
1. `user-crud.ts`:
- 添加 `search: { inline: true, expand: false }` 配置
-`pageRequest` 中的 `http.get` 改为 `http.post`
2. `role-crud.ts`:
- 添加 `search: { inline: true, expand: false }` 配置
-`pageRequest` 中的 `http.get` 改为 `http.post`
3. `permission-crud.ts`:
- 添加 `search: { inline: true, expand: false }` 配置
-`pageRequest` 中的 `http.get` 改为 `http.post`
### 步骤2修改后端 API问题2
修改三个后端路由文件:
1. `users/urls.py`:
-`@router.get("/")` 改为 `@router.post("/search")`
- 修改参数接收方式
2. `roles/urls.py`:
-`@router.get("/")` 改为 `@router.post("/search")`
- 修改参数接收方式
3. `permissions/urls.py`:
-`@router.get("/")` 改为 `@router.post("/search")`
- 修改参数接收方式
### 步骤3验证修改
启动项目,验证:
1. 查询条件和按钮是否在一行显示
2. 展开按钮是否已隐藏
3. 查询请求是否使用 POST 方法
4. 查询功能是否正常工作
## 风险评估
| 风险项 | 风险等级 | 应对措施 |
|--------|----------|----------|
| 后端 API 变更可能影响其他功能 | 中 | 保留原 GET 接口,新增 POST 接口 |
| fast-crud 配置不生效 | 低 | 检查 fast-crud 文档确认配置项 |
| 查询参数传递方式变更 | 低 | 修改前端传递方式,确保与后端一致 |
## 注意事项
1. 后端修改时,建议保留原 GET 接口,新增 POST `/search` 接口,避免影响其他功能
2. 修改完成后需要测试所有查询功能是否正常工作
3. 确保前后端参数传递方式一致