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