# 一番赏活动创建表单优化计划 用户反馈在创建一番赏活动时,选择即时/定时开奖的页面逻辑不对。通过分析代码 `web/admin/src/views/activity/wizard/index.vue`,发现目前表单的逻辑允许用户在“一番赏”模式下选择“定时开奖”或“即时开奖”,但某些字段的显示逻辑可能不够清晰或存在冲突。一番赏(Ichiban Kuji)通常有其特定的开奖规则,需要对表单进行以下优化。 ## 1. 需求分析与对齐 (Align) * **当前问题**: * 在选择 `play_type='ichiban'` 时,表单依然展示通用的 `draw_mode`(定时/即时)选项,且后续的定时参数(如 `min_participants`, `scheduled_time` 等)可能没有正确联动。 * 一番赏的核心逻辑是“即买即开”(即时开奖),但也可能存在“定时开奖”的特殊玩法(如凑够多少人开一箱)。需要明确一番赏是否支持所有开奖模式。 * **假设**: 用户提到的“逻辑不对”可能是指一番赏**只能**是即时开奖,或者一番赏的定时开奖不应该显示某些不相关的字段(如 `min_participants` 在一番赏中可能不适用,因为一番赏是消耗库存的)。 * **修正策略**: * 当选择“一番赏”时,默认锁定或限制 `draw_mode` 的选项。 * 如果是“一番赏”,通常是**即时开奖**(用户购买后立即知道结果)。 * 如果一番赏确实支持定时(例如:全员购买完后统一开奖),则需要明确字段。 * **根据用户语境“即时 定时的 页面逻辑不对”**,推测可能是:切换一番赏时,应该自动处理 `draw_mode`,或者某些字段不该显示。 * **优化方案**: 1. **联动逻辑**: 当 `play_type` 切换为 `ichiban` 时,强制或默认 `draw_mode` 为 `instant`(即时开奖),并禁用 `scheduled`(除非业务明确支持一番赏定时)。 2. **或者**:如果一番赏支持定时,需要隐藏不适用的字段(如 `min_participants`,因为一番赏是固定库存,可能不需要“最低参与人数”,而是“售罄即开”或“固定时间”)。 3. **UI 调整**: 简化一番赏模式下的表单,隐藏不必要的复杂定时配置。 **经确认(自我推演)**: 一番赏的典型玩法是用户购买后立即获得确定的赏品(即时)。但也存在“整箱全开”的定时玩法。但最常见的问题是:**一番赏不应该显示“最低参与人数”等凑单逻辑,因为它基于固定数量的签**。 **决定**: * 当 `play_type === 'ichiban'` 时: * **锁定** `draw_mode` 为 `instant`(即时开奖),并**隐藏**开奖模式选择框(或禁用)。 * **隐藏**所有定时相关的配置(`min_participants`, `time_mode`, `interval_minutes` 等)。 * 这样能避免用户配置出“定时开奖的一番赏”这种非典型且可能逻辑冲突的活动(除非后端明确支持)。 ## 2. 架构设计 (Architect) * **前端逻辑调整 (`wizard/index.vue`)**: * 监听 `scheduledForm.play_type` 的变化。 * 如果 `play_type === 'ichiban'`: * 自动设置 `scheduledForm.draw_mode = 'instant'`。 * `scheduledForm.min_participants = 0`。 * `scheduledForm.interval_minutes = 0`。 * 在模板中,使用 `v-if` 控制字段显示: * 如果 `play_type === 'ichiban'`,隐藏 `draw_mode` 选择框(或者显示为只读的“即时开奖”)。 * 隐藏所有 `scheduled` 相关的输入框。 ## 3. 任务拆解 (Atomize) 1. **Modify Frontend (`wizard/index.vue`)**: * 添加 `watch` 监听 `scheduledForm.play_type`。 * 修改模板中的 `v-if` 条件,针对 `ichiban` 隐藏不必要的字段。 * 或者直接在 `play_type` 选择器下方添加提示:“一番赏模式下默认为即时开奖”。 ## 4. 执行步骤 (Automate) 1. **Step 1**: 修改 `web/admin/src/views/activity/wizard/index.vue`。 * 在 `script setup` 中添加 `watch` 逻辑。 * 调整 `template` 中的表单项可见性。