Commit Graph

448 Commits

Author SHA1 Message Date
chengkai3 4445217815 fix:[FL-22][角色管理页面:搜索表单布局需对齐用户管理]
将角色管理页面搜索表单的样式从 Tailwind CSS className 改为内联 style,与用户管理页面保持一致。

修改内容:
- web/src/app/admin/roles/page.tsx:486
  将 className="min-w-[260px]" 改为 style={{ width: 260 }}

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:51:25 +08:00
chengkai3 b5601d5cd7 fix:[FL-17][修正:卡片视图滚动容器改为页面Card的body]
根据用户反馈修正滚动容器位置,从 .admin-users-card-view 改为 .admin-users-page-card 的 .ant-card-body

变更点:
1. CSS 修改:移除 .admin-users-card-view 的 overflow 属性(已经在 .ant-card-body 设置)
2. JS 修改:将滚动事件监听从卡片视图容器改为页面Card的body元素
3. Ref 修改:pageCardRef 引用页面Card,通过 querySelector 获取其 .ant-card-body 子元素

Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:28:10 +08:00
chengkai3 721720bf9e fix:[FL-16][修复删除关键字时数据不回显的问题]
修复卡片视图中逐个字母删除关键字时,接口返回数据但页面不回显的问题。

问题原因:
在状态更新函数中使用函数式更新器检查 cardViewPage === 1,可能导致闭包问题或状态更新时机不当,使得删除字符时的数据更新无法正确触发。

解决方案:
将 cardViewPage === 1 的检查移到状态更新函数外部,对于第一页直接调用 setAllLoadedUsers(users),避免使用函数式更新器,确保状态能够立即同步更新。

改动:
- 第一页:直接设置状态 setAllLoadedUsers(users)
- 后续页:使用函数式更新器追加新数据

这样确保无论是输入还是删除字符,第一页的数据都能正确更新显示。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:27:43 +08:00
chengkai3 6218b61ca3 fix:[FL-17][用户管理页面卡片视图滚动优化]
修改卡片视图滚动行为,使卡片列表容器自身滚动而非整个页面滚动

变更点:
1. CSS 修改:为 .admin-users-card-view 添加 overflow-y: auto 和 overflow-x: hidden
2. JS 修改:将滚动事件监听从 window 改为卡片视图容器 cardViewContainerRef
3. 重构:使用容器的 scrollTop/scrollHeight/clientHeight 替代 window 的对应属性

Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:07:26 +08:00
chengkai3 ccb1b36640 fix:[FL-16][修复卡片视图关键字过滤时偶发的数据不显示问题]
修复卡片视图中关键字过滤时,接口返回数据但页面偶尔不显示的问题。

问题原因:
更新 allLoadedUsers 的 effect 有条件 `users.length > 0`,导致当数据暂时为空或正在加载时,effect 不会执行,即使后续有数据也无法更新显示。

解决方案:
1. 移除 `users.length > 0` 条件,让 effect 在非加载状态下总是执行
2. 对于第一页,直接设置为 users(即使为空)
3. 对于后续页,只有 users 有数据时才追加,避免追加空数组

这样确保无论数据状态如何变化,allLoadedUsers 都能正确更新。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:00:05 +08:00
chengkai3 b4900ffd8a style:[FL-16][将滚动条移至ant-card-body层级]
将滚动条从卡片内容区域移至 ant-card-body 层级,使过滤表单始终可见,只滚动卡片列表内容。

改动:
1. 在 .admin-users-page-card > .ant-card-body 添加 overflow-x: hidden 和 overflow-y: auto
2. 从 .admin-users-card-view-content 移除 overflow 属性

效果:当卡片内容较多时,滚动条出现在卡片主体区域,过滤表单保持固定。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 14:34:46 +08:00
chengkai3 7c5b6ac3e2 style:[FL-16][移除卡片视图顶部外边距]
卡片视图容器移除 mt-4 类,去掉顶部 margin,使卡片列表与过滤表单之间更加紧凑。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 14:25:49 +08:00
chengkai3 c9cb5a570f style:[FL-16][卡片视图角色标签去除边框]
卡片视图中的角色标签改为无边框样式,使界面更加简洁。

为 Tag 组件添加 bordered={false} 属性。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 13:51:48 +08:00
chengkai3 e073a52b80 feat:[FL-16][卡片视图优化过滤表单显示]
卡片视图模式下,简化过滤表单展示:
1. 仅显示关键字搜索输入框
2. 隐藏状态过滤下拉框
3. 移除"关键词"标签
4. 输入框占满整行宽度

表格视图保持原有的完整过滤表单(关键词+状态)。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 13:48:09 +08:00
chengkai3 0bf84ccbe3 fix:[FL-16][修复用户启用后页面状态不刷新问题]
将 refreshData 函数中的 invalidateQueries 改为 refetchQueries,确保启用/禁用用户操作后立即强制重新获取数据并更新页面状态。

问题原因:invalidateQueries 只是将查询标记为过期,不会立即触发重新获取,在某些情况下可能导致页面状态不及时更新。

解决方案:使用 refetchQueries 强制立即重新获取数据,确保启用和禁用操作后页面状态都能及时刷新。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 13:43:46 +08:00
chengkai3 ad02f9eb3a fix:[FL-16][修复卡片视图初始渲染问题]
修复卡片视图模式下,页面初次加载时接口返回数据但页面不渲染的问题。

问题原因:重置效果的条件判断(viewMode === "card")导致在表格视图模式下切换过滤条件时不会重置状态,当切回卡片视图时会使用旧的状态数据。

解决方案:移除 viewMode 的条件判断,确保无论当前视图模式如何,过滤条件变化时都会正确重置卡片视图状态。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 13:37:56 +08:00
chengkai3 31b686543d fix:[FL-16][用户管理页面优化]
1. 去掉搜索按钮,输入关键字时自动触发查询(500ms防抖)
2. 修复卡片视图展示时出现的横向滚动条问题

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 13:25:48 +08:00
chengkai3 c529c40739 [fix]:[FL-15][强制覆盖卡片背景色以适配暗黑主题]
添加!important规则确保暗黑主题下卡片标题和内容区域正确显示深色背景

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 13:05:38 +08:00
chengkai3 83a03194ca refactor:[FL-11][卡片视图仅显示编辑按钮]
- 卡片右上角只显示编辑按钮和三个点菜单
- 删除按钮移至三个点菜单中,作为第一项
- 删除操作使用 Modal.confirm 进行确认

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 13:04:02 +08:00
chengkai3 51cb711b4c refactor:[FL-11][将卡片操作按钮移至右上角]
- 将编辑、删除、三个点按钮从卡片底部移至右上角
- 使用 Card 组件的 extra 属性放置按钮
- 移除底部的 admin-users-user-card-actions 区域

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 12:45:51 +08:00
chengkai3 dfa97df8d1 [fix]:[FL-15][用户管理页面的卡片视图无法适配暗黑主题]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 12:42:19 +08:00
chengkai3 e1925c06b2 [feat]:[FL-12][卡片视图改用无限滚动加载]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 12:37:41 +08:00
chengkai3 0ccfbf7d8a refactor:[FL-11][调整卡片操作按钮交互方式]
- 将操作按钮移回卡片底部右下角
- 编辑和删除改为图标按钮(EditOutlined、DeleteOutlined)
- 保留三个点菜单按钮
- 移除卡片点击编辑功能
- 所有按钮使用 type="text" 样式

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 12:35:35 +08:00
chengkai3 c0cd5f3684 fix:[FL-13][移除用户管理卡片视图中用户ID的复制按钮]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 12:32:45 +08:00
chengkai3 e6ed5ec88b fix:[FL-11][修复卡片头部点击事件冲突]
- 点击卡片标题区域不再触发编辑模态框
- 点击右上角三个点按钮不再同时触发编辑和菜单展开
- 通过 stopPropagation 阻止事件冒泡到卡片的 onClick 处理器

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 11:15:08 +08:00
chengkai3 2d10ba765b [feat]:[FL-12][分页组件固定在右下角,按钮无边框,单行展示]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 11:14:10 +08:00
chengkai3 6cd959c528 refactor: use backend API for user ID uniqueness validation
- Add GET /api/v1/users/check-id/{user_id} endpoint for real-time validation
- Replace frontend local validation with debounced API calls (500ms)
- Support exclude_user_id parameter for edit scenarios
- Add UserIdCheckResponse schema
- Maintain format validation (alphanumeric + underscore) on frontend
- Clean up timeout on component unmount

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 11:04:39 +08:00
chengkai3 46fb766861 [feat]:[FL-12][用户管理页面卡片视图优化2]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 11:02:13 +08:00
chengkai3 a5315c92d6 feat:[FL-11][用户管理页面卡片视图优化]
- 卡片视图支持点击卡片直接进入编辑模式
- 移除卡片底部的编辑、删除按钮
- 保留右上角更多操作菜单(分配角色、禁用/启用、重置密码)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 10:56:21 +08:00
chengkai3 64b6409725 [fix]:[FL-10][用户管理页面卡片视图时,角色放在邮箱上面]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 10:52:32 +08:00
chengkai3 bfb3ad9cb8 feat:[FL-9][用户管理页面的角色信息展示中文]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 10:51:26 +08:00
chengkai3 3789411570 fix:[FL-8][用户管理页面操作列宽度调整为180px]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 10:49:19 +08:00
chengkai3 65de32d7f3 feat: 用户管理页面增加角色列展示
在用户列表中增加"角色"列,显示在用户名和邮箱之间。
用户角色使用蓝色标签样式展示,支持多个角色同时显示。
同时在移动端卡片视图中也增加了角色展示。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 10:35:09 +08:00
chengkai3 ee1c534a2d feat: improve user ID validation in user management page
- Add real-time validation for user ID format (letters, numbers, underscore only)
- Add real-time uniqueness check during input (not just on submit)
- Apply validation to both create and edit user modals
- Show inline error messages immediately when validation fails

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 10:33:00 +08:00
chengkai3 9424abaa64 移除用户管理页面编辑用户时的状态表单字段
从编辑用户模态框中移除状态选择器,用户状态现在只能通过操作菜单中的"启用/禁用"选项来修改。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 10:32:21 +08:00
chengkai3 b646f16e85 添加角色分配表单必填校验
- 角色字段标记为必填,显示红色星号
- 点击保存按钮时立即触发校验
- 未选择角色时显示错误提示「请至少选择一个角色」
- 校验失败时不会关闭模态框

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 10:30:37 +08:00
Admin 68a865adb9 [fix]:[FL-208][用户管理页面卡片视图优化]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 10:02:43 +08:00
chengkai3 04d67c3d3d feat: [FL-201] 参考用户管理页面逻辑给菜单管理页面增加卡片视图
- 新增 useMobileDetection hook 引入
- 新增 Dropdown、Typography 和 MoreOutlined 等 UI 组件引入
- 添加 viewMode 状态管理(table/card 切换)
- 新增 renderMenuCard 函数,实现菜单项卡片视图渲染
- 卡片视图支持显示菜单编码、路径、父菜单、排序等信息
- 卡片视图包含编辑和删除操作按钮
- 根据 viewMode 在表格和卡片视图之间切换显示
- 卡片视图使用响应式布局(Row/Col)适配不同屏幕
- 移动端自动切换为卡片视图

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 13:49:59 +08:00
chengkai3 c6aed6c139 feat:[FL-200][参考用户管理页面逻辑给角色管理页面增加卡片视图]
- 引入 useMobileDetection hook 实现移动端自动切换视图
- 添加 viewMode 状态管理表格和卡片视图切换
- 实现 renderRoleCard 函数展示角色卡片
- 卡片视图显示角色名称、编码和绑定菜单信息
- 支持编辑和删除操作按钮
- 移动端默认使用卡片视图,桌面端默认使用表格视图

Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 13:34:11 +08:00
chengkai3 83e1508b2f fix:[FL-196][去掉用户管理页面的视图切换按钮]
- 移除视图切换按钮组件
- 保留根据设备类型自动切换视图的逻辑(浏览器用表格,手机用卡片)
- 清理未使用的图标导入(AppstoreOutlined, TableOutlined)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 13:07:09 +08:00
chengkai3 172e124d4d feat:[FL-194][用户管理页面的视图开关优化]
将视图切换按钮从卡片标题区移至搜索栏右侧,移除按钮文字仅保留图标,优化页面布局。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 12:04:29 +08:00
chengkai3 a332ba58ba [fix]:[FL-190][系统接口中的stacktrace信息不要直接展示到页面给用户看]
- 后端:在 exception_handlers.py 添加文档注释,明确说明 stacktrace 字段仅供开发调试使用
- 前端:在 api.ts 添加 ApiErrorResponse 类型定义和文档注释,明确 readApiError 函数只提取 detail 字段展示给用户
- stacktrace 在 debug 模式下会返回给浏览器(可在开发者工具中查看),但前端不会展示到页面上

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 10:19:25 +08:00
chengkai3 33db320c0e feat:[FL-189][给用户管理增加卡片视图]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 10:10:01 +08:00
chengkai3 5796797120 fix:[FL-188][菜单管理页面关键字过滤后查不到数据时分页组件不要隐藏]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 10:04:18 +08:00
chengkai3 af14490042 fix: [FL-186][菜单管理页面输入关键字时不要触发查询动作]
将关键字输入与实际查询参数分离,用户在输入框中输入时不会立即触发API请求。
只有在点击「搜索」按钮或按下Enter键时才执行查询。

改动点:
- 新增activeKeyword和activeStatusFilter状态用于存储实际查询参数
- 修改loadMenus依赖为activeKeyword和activeStatusFilter
- 新增handleSearch函数,在点击搜索时更新查询参数
- 为关键字输入框添加onPressEnter支持

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 08:41:13 +08:00
chengkai3 e47fd7e855 fix:[FL-183][菜单管理页面优化]
- 移除排序方式过滤表单和重置筛选按钮
- 新增主题色搜索按钮,查询需手动触发
- 修复表单值变化触发两次查询的问题
- 输入关键字时不再自动触发查询

Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 08:25:51 +08:00
chengkai3 4a97c4f80c fix:[FL-182][菜单列表改名菜单管理]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 08:20:33 +08:00
chengkai3 5f10af0b30 fix:[FL-181][用户管理页面去掉操作列固定]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 08:07:22 +08:00
chengkai3 cb1c883ce7 feat:[FL-179][角色管理页面所有角色都要支持删除]
移除了对admin和user角色的删除限制,现在所有角色都可以删除。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 08:06:44 +08:00
chengkai3 aecf0ca396 fix: [FL-178][缩小角色管理页面表格列宽度]
- 角色编码列宽从180px缩小到140px
- 角色名称列宽从180px缩小到140px
- 菜单列最大宽度从420px缩小到300px
- 操作列宽从160px缩小到140px
- 移除表格横向滚动配置(x: 1400),使表格自适应容器宽度

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 08:06:19 +08:00
chengkai3 b1f3785f77 fix:[FL-180][角色管理页面新增编辑表单宽度调整]
移除角色管理页面 Modal 的 width={760} 属性,使其使用默认宽度,与用户管理页面保持一致

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 08:05:51 +08:00
chengkai3 84e74fda3f fix:[FL-177][去掉主题中的紧凑主题]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 00:35:03 +08:00
chengkai3 6519fee729 [feat]:[FL-172][用户管理页面新增用户时邮箱放最后,且不要必填]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 00:34:20 +08:00
chengkai3 e37ecac9af fix:[FL-175][角色管理页面搜索无结果时显示分页组件]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 00:30:46 +08:00
chengkai3 31d65094b1 fix:[FL-176][用户管理页面用户列表改成用户管理]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-18 00:29:02 +08:00