deotalandAi/.trae/documents/Implement Role Badge for Us...

64 lines
2.5 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.

## 实施方案
### 概述
将当前的绿色圆点在线状态指示器替换为角色标识,为'free'(免费会员)和'creator'(达人会员)用户显示不同样式的标识。
### 所需更改
1. **更新 AppSidebar.vue 模板**
- 将第39行和第52行的 `<div class="online-status"></div>` 元素替换为角色标识组件
- 添加硬编码的角色属性(默认为'free')用于演示
2. **更新角色显示逻辑**
- 修改 `getRoleDisplayName` 函数,添加'free'和'creator'角色的映射
- 根据需要为新角色添加翻译
3. **更新样式**
- 移除旧的 `.online-status` CSS 类
- 为角色标识添加新的 CSS 样式,为'free'和'creator'角色设计不同样式
- 确保角色标识在用户头像上正确定位
4. **测试实现**
- 验证角色标识在折叠和展开的侧边栏模式下都能正确显示
- 检查'free'和'creator'角色的不同样式是否可见
- 确保布局在不同屏幕尺寸下保持响应式
### 实现细节
#### 模板更改
- 第39行`<div class="online-status"></div>` 替换为角色标识
- 第52行`<div class="online-status"></div>` 替换为角色标识
- 添加硬编码的 `userRole` 属性,设置为'free'或'creator'
#### 角色映射更新
- 更新 `getRoleDisplayName` 函数,包括:
```javascript
const roleMap = {
'free': '免费会员',
'creator': '达人会员',
'admin': t('roles.admin'),
'viewer': t('roles.viewer')
}
```
#### CSS 更改
- 移除第450行的 `.online-status` 类定义
- 添加新的 CSS 类用于角色标识:
- `.role-badge`:所有角色标识的基础样式
- `.role-badge.free`:免费会员的样式
- `.role-badge.creator`:达人会员的样式
- 使用 `position: absolute` 和适当的 `bottom`/`right` 值确保正确定位
### 预期行为
- 当用户为'free'角色时,标识将显示特定样式(例如灰色背景,简单设计)
- 当用户为'creator'角色时,标识将显示不同样式(例如紫色背景,特殊设计)
- 角色标识的位置与当前在线状态圆点相似
- 标识在折叠和展开的侧边栏模式下都可见
### 技术考虑
- 角色目前硬编码用于演示,但可以轻松连接到 auth store 中的实际用户角色
- 实现保持与现有代码库的向后兼容性
- 响应式设计在所有屏幕尺寸下都能保持
- 样式遵循项目现有的设计系统
该方案将为免费会员和达人会员创建清晰的视觉区分,通过提供即时的角色识别来改善用户体验。