修复角色创建时出现的 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. 修复角色权限分配时的权限加载问题
3.8 KiB
3.8 KiB
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.tsfrontend/src/modules/admin/views/roles/role-crud.tsfrontend/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 配置文件:
-
user-crud.ts:- 添加
search: { inline: true, expand: false }配置 - 将
pageRequest中的http.get改为http.post
- 添加
-
role-crud.ts:- 添加
search: { inline: true, expand: false }配置 - 将
pageRequest中的http.get改为http.post
- 添加
-
permission-crud.ts:- 添加
search: { inline: true, expand: false }配置 - 将
pageRequest中的http.get改为http.post
- 添加
步骤2:修改后端 API(问题2)
修改三个后端路由文件:
-
users/urls.py:- 将
@router.get("/")改为@router.post("/search") - 修改参数接收方式
- 将
-
roles/urls.py:- 将
@router.get("/")改为@router.post("/search") - 修改参数接收方式
- 将
-
permissions/urls.py:- 将
@router.get("/")改为@router.post("/search") - 修改参数接收方式
- 将
步骤3:验证修改
启动项目,验证:
- 查询条件和按钮是否在一行显示
- 展开按钮是否已隐藏
- 查询请求是否使用 POST 方法
- 查询功能是否正常工作
风险评估
| 风险项 | 风险等级 | 应对措施 |
|---|---|---|
| 后端 API 变更可能影响其他功能 | 中 | 保留原 GET 接口,新增 POST 接口 |
| fast-crud 配置不生效 | 低 | 检查 fast-crud 文档确认配置项 |
| 查询参数传递方式变更 | 低 | 修改前端传递方式,确保与后端一致 |
注意事项
- 后端修改时,建议保留原 GET 接口,新增 POST
/search接口,避免影响其他功能 - 修改完成后需要测试所有查询功能是否正常工作
- 确保前后端参数传递方式一致