Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 50s
更新了前端构建产物包括JavaScript、CSS和HTML文件,主要涉及以下变更: 1. 新增了多个组件和工具函数,包括异常页面组件、iframe组件等 2. 更新了活动管理、产品管理、优惠券管理等业务模块 3. 优化了构建配置和依赖管理 4. 修复了一些样式和功能问题 5. 更新了测试相关文件 同时更新了部分后端服务接口和测试用例。这些变更主要是为了支持新功能和改进现有功能的用户体验。
65 lines
2.5 KiB
Markdown
65 lines
2.5 KiB
Markdown
# 实时奖品价格统计功能 - 需求对齐文档
|
||
|
||
## 项目概述
|
||
在盲盒游戏管理后台的创建活动向导页面中,实现实时统计所有奖品总价格的功能模块。
|
||
|
||
## 原始需求
|
||
用户需要在添加奖品时动态计算所有奖品的价值,并提供一个价值统计显示。
|
||
|
||
## 需求理解与边界确认
|
||
|
||
### 功能边界
|
||
- **页面范围**: 仅限于创建活动向导的第三步"添加奖品"页面
|
||
- **触发时机**: 用户添加、修改、删除奖品时实时计算
|
||
- **显示位置**: 奖品工具栏区域,与现有统计信息并列
|
||
- **数据范围**: 仅统计当前活动期数内的奖品
|
||
|
||
### 技术边界
|
||
- **技术栈**: Vue 3 + TypeScript + Element Plus + SCSS
|
||
- **状态管理**: 使用Vue的响应式系统(computed)
|
||
- **性能要求**: 计算响应时间 < 100ms,支持50个奖品同时计算
|
||
- **精度要求**: 精确到小数点后两位,支持千分位显示
|
||
|
||
### 数据模型分析
|
||
基于现有代码分析,奖品数据结构:
|
||
```typescript
|
||
interface Reward {
|
||
product_id: number
|
||
product_name: string
|
||
product_price: number // 商品单价
|
||
quantity: number // 奖品数量
|
||
weight: number // 权重
|
||
level: number // 等级
|
||
is_boss: number // 是否Boss奖品
|
||
}
|
||
```
|
||
|
||
### 现有功能分析
|
||
1. **已有价格计算**: 代码中已存在`totalCost`计算属性(第505-511行)
|
||
2. **已有价格缓存**: 使用`priceCache`缓存商品价格(第481行)
|
||
3. **已有统计显示**: 工具栏已显示"总计:X 个奖品"(第195行)
|
||
|
||
### 需求澄清
|
||
1. **价格来源**: 商品价格来自商品库的`product.price`字段
|
||
2. **计算逻辑**: 单价 × 数量,累加所有奖品
|
||
3. **显示格式**: ¥1,234.56(货币符号+千分位+两位小数)
|
||
4. **更新频率**: 每次奖品数据变更时立即更新
|
||
|
||
### 疑问与确认
|
||
1. **货币格式**: 确认使用人民币符号"¥",格式为"¥1,234.56"
|
||
2. **空值处理**: 当商品无价格时按0计算
|
||
3. **性能优化**: 使用computed缓存计算结果,避免重复计算
|
||
4. **视觉样式**: 与现有统计信息保持一致的风格
|
||
|
||
### 验收标准
|
||
- ✅ 实时响应奖品列表变化
|
||
- ✅ 准确计算所有奖品总价格
|
||
- ✅ 显示格式符合货币规范
|
||
- ✅ 性能满足响应时间要求
|
||
- ✅ 与现有UI风格保持一致
|
||
|
||
## 项目特性规范
|
||
- **响应式**: 使用Vue computed实现响应式计算
|
||
- **可维护**: 代码结构清晰,逻辑分离
|
||
- **可扩展**: 易于添加新的统计维度
|
||
- **高性能**: 避免不必要的重渲染和计算 |