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

3.8 KiB
Raw Blame History

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.tsrole-crud.tspermission-crud.ts
  • 后端:users/urls.pyroles/urls.pypermissions/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. 确保前后端参数传递方式一致