9.7 KiB
按钮位置统一调整执行文档
一、目的
将 \产品影响因素分析\ 和 \产品开发流程\ 实训页面的工具栏按钮(素材按钮 + 导出按钮)从 \workbench-head\ 内移到 \ ask-header\ 同级别的 \ ask-action-strip\ 区域,参考页面 \新产品需求调研\ 的标准布局。
二、参考页面结构
ew-product-survey.vue\ 的标准布局:
\\html
七、删除下方步骤中重复的"提交任务"按钮
问题描述
顶部 \TrainingTaskToolbar\ 组件已包含"提交任务"按钮,但 Step 4 步骤下方也出现了相同的按钮,导致按钮重复。
调整方案
| 按钮 | 位置 | 操作 |
|---|---|---|
| "提交任务" | 顶部 \TrainingTaskToolbar\ | 保留 |
| "提交任务" | 步骤下方 | 删除(重复) |
| "清空填写"/"清空本步" | 步骤下方 | 保留 |
删除前必须检查的事项
重要:删除按钮前,必须确认该按钮绑定的 \submitTraining\ 方法名是否与顶部组件一致,避免误删导致提交功能失效。
检查清单
-
确认方法名一致性:
- 检查步骤内按钮绑定的提交方法名(如 @click="submitTraining"\)
- 对比 \TrainingTaskToolbar\ 组件内部的提交方法名
- 两者方法名必须一致才能安全删除重复按钮
-
检查功能绑定:
- 确认删除后提交功能的调用链路是否完整
- 确保顶部组件的提交方法与当前页面的数据状态关联正确
-
保留清空功能:
- "清空填写"/"清空本步"按钮不调用提交方法,可以保留
具体修改
\product-development-factors.vue\(第133行附近)
当前代码: \\html
修改为: \\html
\product-development-process.vue\(第170行附近)
当前代码: \\html
修改为: \\html
调整对照表
| 文件 | 位置 | 操作 | 保留功能 |
|---|---|---|---|
| \product-development-factors.vue\ | Step 4 下方 task-actions | 删除"提交任务"按钮 | "清空填写"按钮 |
| \product-development-process.vue\ | Step 4 下方 task-actions | 删除"提交任务"按钮 | "清空本步"按钮 |
执行检查清单
- 确认步骤内按钮绑定的 @click="submitTraining"\ 与 \TrainingTaskToolbar\ 组件内的提交方法名一致
- 确认顶部 \TrainingTaskToolbar\ 的提交功能正常可用
- 确认删除后"清空填写"/"清空本步"按钮仍然保留
- 删除重复的"提交任务"按钮代码
- 测试提交功能是否正常工作
八、产品发布渠道评估 + 产品问题诊断与迭代 调整
8.1 diagnosis.vue(产品问题诊断与迭代)
问题描述
TrainingTaskToolbar 组件嵌套在 task-header 内,导致工具栏随头部一起有边框和背景,不符合标准布局。
调整方案
将 TrainingTaskToolbar 从 task-header 内移到 task-header 同级的独立 task-action-strip 区域。
具体修改
当前代码(第19-20行):
<section class="task-header">
...
<TrainingTaskToolbar class="diagnosis-toolbar" :task-key="TASK_KEY" :on-submit="submitTask" :on-reset="resetTraining" :on-export="exportTrainingOutcome" />
</section>
修改为:
<section class="task-header">
...
</section>
<section class="task-action-strip">
<TrainingTaskToolbar :task-key="TASK_KEY" :on-submit="submitTask" :on-reset="resetTraining" :on-export="exportTrainingOutcome" />
</section>
CSS 调整
删除旧的 .diagnosis-toolbar 样式,替换为:
/* 操作工具栏横条:内联布局,去掉悬浮和边框 */
.task-action-strip {
margin: 0;
padding: 10px 16px;
:deep(.training-task-toolbar) {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: flex-end;
gap: 8px;
}
}
响应式样式更新(720px断点):
@media (max-width: 720px) {
.task-action-strip {
:deep(.training-task-toolbar) { justify-content: stretch; }
:deep(.training-task-toolbar > *) { flex: 1 1 auto; }
}
}
调整对照表
| 文件 | 修改项 | 操作 |
|---|---|---|
| diagnosis.vue | 模板结构 | 将 TrainingTaskToolbar 从 task-header 内移到 task-action-strip |
| diagnosis.vue | CSS 样式 | 删除 .diagnosis-toolbar,新增 .task-action-strip |
8.2 promotion.vue(产品发布渠道评估)
问题描述
TrainingTaskToolbar 已有独立的 task-action-strip 区域,但缺少回调属性,导致点击"提交任务"按钮时无法正确调用页面内的提交方法。
调整方案
添加 :on-submit、on-reset 和 :on-export 回调属性,并实现对应的方法。
具体修改
1. 导入 deleteStudentTrainingAnswer
import { deleteStudentTrainingAnswer, getStudentTrainingAnswer, saveStudentTrainingAnswer, ... } from "@/api/studentTrainingAnswer";
2. 添加回调方法
async function submitTask() { return submitEvaluation(); }
async function resetTraining() {
if (saving.value || validating.value) return;
try {
await deleteStudentTrainingAnswer(TASK_KEY);
restoreBudget();
syncStrategyRows();
restorePerformance();
restoreEvaluation();
ElMessage.success("已清空全部实训步骤,可以重新开始");
} catch (error) {
ElMessage.error("重新实训失败,请稍后重试");
}
}
function exportOutcome() { ElMessage.info("导出功能正在开发中"); }
3. 更新 TrainingTaskToolbar 模板
<TrainingTaskToolbar :task-key="TASK_KEY" :on-submit="submitTask" :on-reset="resetTraining" :on-export="exportOutcome" />
调整对照表
| 文件 | 修改项 | 操作 |
|---|---|---|
| promotion.vue | 导入 | 添加 deleteStudentTrainingAnswer |
| promotion.vue | 方法 | 添加 submitTask、resetTraining、exportOutcome |
| promotion.vue | 模板 | 更新 TrainingTaskToolbar 添加回调属性 |
8.3 test/index.vue(产品发布渠道评估)
问题描述
该页面原本使用 TrainingMaterialButton 组件而非标准的 TrainingTaskToolbar,导致缺少"提交任务"、"重新实训"和"导出实训成果"等按钮功能,不符合统一规范。
调整方案
将 TrainingMaterialButton 替换为 TrainingTaskToolbar,并添加对应的回调方法。
具体修改
1. 替换导入
// 替换前
import TrainingMaterialButton from "@/views/components/TrainingMaterialButton.vue";
// 替换后
import TrainingTaskToolbar from "@/views/components/TrainingTaskToolbar.vue";
2. 添加导入
import { deleteStudentTrainingAnswer, ... } from "@/api/studentTrainingAnswer";
3. 添加回调方法
async function submitTask() { return validateRankingStep(); }
async function resetTraining() {
if (saving.value || validating.value) return;
try {
await deleteStudentTrainingAnswer(TASK_KEY);
weightRows.value = defaultWeightRows();
channelRows.value = defaultChannelRows();
scoreRows.value = [];
rankingRows.value = [];
coreChannelAnalysis.value = "";
activeStep.value = 1;
ElMessage.success("已清空全部实训步骤,可以重新开始");
} catch (error) {
ElMessage.error("重新实训失败,请稍后重试");
}
}
function exportOutcome() { ElMessage.info("导出功能正在开发中"); }
4. 更新模板
<!-- 替换前 -->
<section class="task-action-strip">
<TrainingMaterialButton ... />
</section>
<!-- 替换后 -->
<section class="task-action-strip">
<TrainingTaskToolbar :task-key="TASK_KEY" :on-submit="submitTask" :on-reset="resetTraining" :on-export="exportOutcome" />
</section>
5. CSS 样式更新
- 移除
.material-button相关样式 - 更新
.task-action-strip为 TrainingTaskToolbar 布局样式 - 添加
.task-toolbar-button和.task-toolbar-button--submit按钮样式
调整对照表
| 文件 | 修改项 | 操作 |
|---|---|---|
| test/index.vue | 导入 | 替换 TrainingMaterialButton 为 TrainingTaskToolbar,添加 deleteStudentTrainingAnswer |
| test/index.vue | 方法 | 添加 submitTask、resetTraining、exportOutcome |
| test/index.vue | 模板 | 更新 task-action-strip 使用 TrainingTaskToolbar |
| test/index.vue | CSS | 更新 task-action-strip 和按钮样式 |