Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 40s
feat(pay): 添加支付API基础结构 feat(miniapp): 创建支付测试小程序页面与配置 feat(wechatpay): 配置微信支付参数与证书 fix(guild): 修复成员列表查询条件 docs: 更新代码规范文档与需求文档 style: 统一前后端枚举显示与注释格式 refactor(admin): 重构用户奖励发放接口参数处理 test(title): 添加称号效果参数验证测试
40 lines
2.8 KiB
Markdown
40 lines
2.8 KiB
Markdown
## 问题定位
|
||
- 奖品页 `web/admin/src/views/activity/rewards/index.vue` 在工具栏下方无条件渲染了批量抽奖对话框:`<BatchDrawDialog :activity="currentActivity" />`。
|
||
- 该子组件内部以 `props.activity !== null` 控制 `v-model`,而当前页的 `currentActivity` 始终返回对象(非 null),导致对话框初始即打开,表现为点击“新增奖励”时出现“批量抽奖”。
|
||
|
||
## 修复方案
|
||
- 直接移除奖品页中的 `BatchDrawDialog` 渲染(该页仅做奖励 CRUD,模拟批量抽奖逻辑属于活动管理页/模拟页)。
|
||
- 若保留(备选):使用受控显示状态,改为 `<BatchDrawDialog v-model="showBatchDrawDialog" :activity="showBatchDrawDialog ? currentActivity : null" />`,并提供单独按钮触发。默认 `showBatchDrawDialog=false`。
|
||
- 采用“移除”方案,影响文件:`web/admin/src/views/activity/rewards/index.vue`(删除组件引用与相关变量)。
|
||
|
||
## 奖品列表优化
|
||
- 新增展示:
|
||
- “剩余/总量”列:`quantity / original_qty`
|
||
- “期望概率”列:基于总权重 `sumWeight` 本地计算 `weight/sumWeight*100`,保留两位小数。
|
||
- Boss 标签保持,但列名更明确为“Boss”。
|
||
- 汇总信息:表头上方显示“奖品总数 / 总权重”。
|
||
- 交互优化:
|
||
- 编辑校验完善(名称、商品、权重、数量、原始数量、等级为必填/大于零)。
|
||
- 删除增加二次确认弹窗。
|
||
- 过滤与排序(前端本地):
|
||
- 过滤项:名称(模糊)、等级(S/A/B/C)、是否 Boss。
|
||
- 默认排序:按等级(S→C)+ `sort`。
|
||
- 数据加载优化:商品列表一次加载并缓存,避免重复请求。
|
||
|
||
## 具体改动
|
||
- 修改文件:`web/admin/src/views/activity/rewards/index.vue`
|
||
- 删除 `<BatchDrawDialog :activity="currentActivity" />` 与相关 `currentActivity` 计算属性。
|
||
- 在 `columns` 增加 `剩余/总量`、`期望概率` 两列(期望概率通过本地计算得到)。
|
||
- 在顶部新增汇总区域(使用 `computed` 基于 `data` 计算)。
|
||
- 增加简单的本地过滤控件(`ElInput`/`ElSelect`),对展示数据做 `computed` 过滤与排序。
|
||
- 删除与批量抽奖相关的无用状态(如 `showSimDialog`)。
|
||
- 删除按钮文案更明确:`批量新增奖励` → `新增奖励`。
|
||
- 不改后端接口;所有优化为前端表现层。
|
||
|
||
## 验收
|
||
- 进入“奖励”页,点击“新增奖励”只弹奖励编辑对话框,不再出现批量抽奖对话框。
|
||
- 列表显示“剩余/总量”、“期望概率”,汇总信息正确;过滤与排序生效。
|
||
- 构建通过,交互校验正常,删除有确认提示。
|
||
|
||
## 风险与回滚
|
||
- 风险低,仅前端视图改动;如需回滚,保留原组件引用并恢复初始布局即可。 |